Göra en arduino wifi air monitor (4 / 7 steg)
Steg 4: kod
Hämta filen AirMonitorServer.ino eller kopiera bara koden nedan, bör det vara de samma (Hämta filen föreslås)
/ * Skapa en WiFi-åtkomstpunkt och tillhandahålla en webbserver för PM2, 5 på den. */
#include #include #include / * ange att dessa ska dina önskade behörigheter. * / const char * ssid = "AirMonitor"; CONST char * lösenord = "inovafitness"; ESP8266WebServer server(80); Detta är en demo för Arduino PM2.5 sensor test / / PM2, 5 sensor är från www.inovafitness.com SDS011 unsigned int Pm25 = 0; //used för följd PM2, 5 unsigned int Pm10 = 0; //used för resultatet pm10 unsigned char Pm25IsNew = 0; //show om pm25 uppdateras void ProcessSerialData() {uint8_t mData = 0; uint8_t jag = 0; uint8_t mPkt [10] = {0}; uint8_t mCheck = 0; medan (Serial.available() > 0) {/ / från www.inovafitness.com / / paket format : AA C0 PM25_Low PM25_High PM10_Low PM10_High 0 0 CRC AB mData = Serial.read(); Delay(2); IF(mData == 0xAA) //head1 ok {fördröjning (400); //wait tills paketet är mottagna mPkt [0] = mData; mData = Serial.read(); if(mData == 0xc0) //head2 ok {mPkt [1] = mData; mCheck = 0; för (jag = 0; jag < 6; i ++) //data recv och crc calc {mPkt [jag + 2] = Serial.read(); delay(2); mCheck += mPkt [jag + 2];} mPkt [8] = Serial.read(); delay(1); mPkt [9] = Serial.read(); om (mCheck == mPkt [8]) //crc ok {Serial.flush(); //Serial.write (mPkt 10); Pm25 = (uint16_t) mPkt [2] | (uint16_t) (mPkt [3] << 8); Pm10 = (uint16_t) mPkt [4] | (uint16_t) (mPkt [5] << 8); IF(Pm25 > 9999) Pm25 = 9999; IF(Pm10 > 9999) Pm10 = 9999; få ett bra paket Pm25IsNew = 1; hemkomst. {}}}}} / * Bara ett litet testmeddelande. Gå till www.inovafitness.com i en webbläsare * ansluten till denna åtkomstpunkt att se den. * / void handleRoot() {char pm25_str [100], char * pm25_format_red = "
Pm2.5=%d.%d
"; char * pm25_format_green = "
Pm2.5=%d.%d
"; char * pm25_format_blue = "
Pm2.5=%d.%d
"; om (Pm25 < 150)//15.0 sprintf (pm25_str, pm25_format_green, Pm25/10,Pm25%10); annars om (Pm25 < 500)//pm2.5 < 50,0 sprintf (pm25_str, pm25_format_blue, Pm25/10,Pm25%10); annan sprintf (pm25_str, pm25_format_red, Pm25/10,Pm25%10); Server.send (200, "text/html", pm25_str); } void setup() {delay(1000); Serial.BEGIN(9600); Serial.println(); Serial.Print ("Konfigurera access point..."); / * Du kan ta bort Lösenordsparametern om du vill att AP att vara öppen. * / WiFi.softAP (ssid, lösenord); Delay(500); Delay(500); medan (WiFi.status()! = WL_CONNECTED) {delay(500); Serial.Print("."); } Serial.println("done"); IP-adress myIP = WiFi.softAPIP(); Serial.Print ("AP IP-adress:"); Serial.println(myIP); Server.on ("/", handleRoot); Server.BEGIN(); Serial.println ("HTTP server började"); } void loop() {server.handleClient(); ProcessSerialData(); }