Inhoudsopgave:

THINGSPEAK TEMPERATUUR EN VOCHTIGHEID APP MET ESP8266: 9 stappen
THINGSPEAK TEMPERATUUR EN VOCHTIGHEID APP MET ESP8266: 9 stappen

Video: THINGSPEAK TEMPERATUUR EN VOCHTIGHEID APP MET ESP8266: 9 stappen

Video: THINGSPEAK TEMPERATUUR EN VOCHTIGHEID APP MET ESP8266: 9 stappen
Video: DIY Temperature and Humidity Monitoring | Temperature sensor | Humidity sensor | ESP8266 2024, November
Anonim
THINGSPEAK TEMPERATUUR EN VOCHTIGHEID APP MET ESP8266
THINGSPEAK TEMPERATUUR EN VOCHTIGHEID APP MET ESP8266

Tijdens het sleutelen aan mijn elektronische spullen, kwam ik op het idee om een webgebaseerde weer-app te maken. Deze web-app gebruikt de SHT31-sensor voor het verkrijgen van de realtime temperatuur- en vochtigheidsgegevens. We hebben ons project geïmplementeerd op de ESP8266 WiFi-module. Online of offline! U hoeft zich geen zorgen te maken, of u nu online of offline bent, u krijgt de weersupdates overal en altijd. Deze web-app plaatst gegevens zowel naar de lokale webserver als naar de cloud. Voor cloudactiviteiten gebruiken we de ThingSpeak API. SHT31 gebruikt I2C om de gegevens van de sensor te krijgen.

SHT 31 is een temperatuur- en vochtigheidssensor gemaakt door Sensirion. De SHT31 biedt een hoge mate van nauwkeurigheid rond ±2% RV. Het vochtigheidsbereik ligt tussen 0 en 100% en het temperatuurbereik ligt tussen -40 en 125 °C. Het is veel betrouwbaarder en sneller met een sensorresponstijd van 8 seconden. De functionaliteit omvat verbeterde signaalverwerking en I2C-compatibiliteit. Het heeft verschillende werkingsmodi waardoor het energiezuinig is.

In deze tutorial hebben we de SHT 31 gekoppeld aan het Adafruit Huzzah-bord. Voor het lezen van temperatuur- en vochtigheidswaarden hebben we ESP8266 I2C-schild gebruikt. Deze adapter maakt alle pinnen toegankelijk voor de gebruiker en biedt een gebruiksvriendelijke I2C-omgeving.

Stap 1: Benodigde hardware

Hardware vereist
Hardware vereist
Hardware vereist
Hardware vereist
Hardware vereist
Hardware vereist

Hardware die wordt gebruikt om deze taak te voltooien:

  1. SHT 31
  2. Adafruit Huzzah ESP8266
  3. ESP8266 I2C-adapter
  4. I2C-kabel

Stap 2: Hardwareverbindingen

Hardware-verbindingen
Hardware-verbindingen

Deze stap omvat de handleiding voor het aansluiten van hardware. In dit gedeelte worden in principe de bedradingsverbindingen tussen de sensor en de ESP8266 uitgelegd. De aansluitingen zijn als volgt.

  1. De SHT31 werkt via I2C. De bovenstaande afbeelding toont de verbinding tussen ESP8266 en SHT31-module. We gebruiken hiervoor een I2C-kabel of we kunnen 4 F-naar-F-jumpers gebruiken.
  2. één draad wordt gebruikt voor Vcc, de tweede draad voor GND en andere twee voor respectievelijk SDA en SCL
  3. Volgens de I2C-adapter worden pin2 en pin 14 van een ESP8266-bord respectievelijk als SDA en SCL gebruikt

Stap 3: Code voor taakplanning

Code voor taakplanning
Code voor taakplanning

In deze tutorial voeren we drie bewerkingen uit:

  • Lees de gegevens van SHT11 met behulp van het I2C-protocol
  • host de webserver en plaats de sensormeting op de webpagina
  • post de sensormetingen naar de ThingSpeak API

Om dit te bereiken gebruiken we de TaskScheduler-bibliotheek. We hebben drie verschillende taken gepland die verwijzen naar drie verschillende controleoperaties. dit gaat als volgt

  • Taak 1 is voor het uitlezen van de sensorwaarde. Deze taak duurt 1 seconde totdat de time-out van 10 seconden wordt bereikt.
  • Wanneer Taak1 zijn time-out bereikt, is Taak 2 ingeschakeld en Taak1 uitgeschakeld.
  • We maken verbinding met AP in deze callback. Er worden twee booleaanse variabelen gebruikt om te zorgen voor het schakelen tussen STA en AP
  • In Taak 2 hosten we een webserver op 192.168.1.4. Deze taak wordt elke 5 seconden uitgevoerd totdat de time-out is bereikt die 50 seconden is
  • Wanneer Taak 2 de time-out bereikt, is Taak 3 ingeschakeld en Taak 2 uitgeschakeld.

  • We maken verbinding met STA (lokaal IP) in deze calback. In taak 3 plaatsen we de sensormeting naar de ThingSpeak-API in de cloud
  • Taak 3 wordt elke vijf seconden uitgevoerd totdat de time-out is bereikt, d.w.z. 50 sec
  • Wanneer de Task3 zijn time-out bereikt, wordt Taak 1 weer ingeschakeld en Taak 3 uitgeschakeld.
  • Wanneer er niet wordt teruggebeld of het apparaat inactief is, gaat het naar de lichte slaapstand, waardoor energie wordt bespaard.

ongeldige taakI2CCallback();

void taskI2CDisable(); ongeldige taakAPCallback(); ongeldige taakAPDisable(); ongeldige taakWiFiCallback(); ongeldige taakWiFiDisable(); //Taken voor i2c, webserver hosten en posten op thingspeak Taak tI2C (1 * TASK_SECOND, TASK_FOREVER, &taskI2CCallback, &ts, false, NULL, &taskI2CDisable); Taak tI2C(1 * TASK_SECOND, TASK_FOREVER, &taskI2CCallback, &ts, false, NULL, &taskI2CDisable); Taak tAP(5*TASK_SECOND, TASK_FOREVER, &taskAPCallback, &ts, false, NULL, &taskAPDisable); Taak tWiFi (5* TASK_SECOND, TASK_FOREVER, &taskWiFiCallback, &ts, false, NULL, &taskWiFiDisable); //time-out voor taken tI2C.setTimeout (10 * TASK_SECOND); tAP.setTimeout(50 * TASK_SECOND); tWiFi.setTimeout (50 * TASK_SECOND); // schakel I2C-taak tI2C.enable in ();

Stap 4: Code voor het lezen van temperatuur- en vochtigheidswaarden

Code voor het lezen van temperatuur- en vochtigheidswaarden
Code voor het lezen van temperatuur- en vochtigheidswaarden

We gebruiken de Wire.h-bibliotheek om de temperatuur- en vochtigheidswaarden te lezen. Deze bibliotheek vergemakkelijkt i2c-communicatie tussen de sensor en het masterapparaat. 0x44 is het I2C-adres voor SHT31.

SHT31 werkt in een andere bedrijfsmodus. U kunt daarvoor verwijzen naar de datasheet. We gebruiken 0x2C en 0x06 als respectievelijk MSB en LSB voor single shot operatie.

// I2C taak callback ongeldig taskI2CCallback(){ Serial.println("taskI2CStarted"); niet-ondertekende int root[6]; // begin met verzenden vanaf 0x44; Wire.beginTransmission (Addr); // voor transmissie in één keer met hoge herhaalbaarheid gebruiken we 0x2C(MSB) en 0x06(LSB) Wire.write(0x2C); Draad.schrijven (0x06); // beëindig transmissie Wire.endTransmission (); // verzoek bytes van 0x44 Wire.beginTransmission (Addr); Wire.endTransmission(); Wire.requestFrom(Addr, 6); if(Wire.available() == 6){ //data[0] en data[1] bevat 16 bit temperatuur. root[0] = Wire.read(); root[1] =Draad.lezen(); //data[2] bevat 8 bit CRC root [2] = Wire.read(); //data[3] en data[4] bevatten 16 bit vochtigheid root [3] = Wire.read(); root[4] = Wire.read(); //data[5] bestaat uit 8 bit CRC root [5] = Wire.read(); } int temp = (root[0] * 256) + root[1]; // MSB met 8 bits verschuiven, LSB float toevoegen cTemp = -45,0 + (175,0 * temp / 65535.0); float fTemp = (cTemp * 1.8) + 32,0; // verschuif de MSB met 8 bits voeg LSB eraan toe gedeeld door volledige resolutie en * 100 voor percentage zwevende vochtigheid = (100.0 * ((root [3] * 256,0) + root [4])) / 65535.0; tempC = cTemp; tempF = fTemp; vochtig = vochtigheid; Serial.print("Temperatuur in C:\t"); Serial.println(String(cTemp, 1)); Serial.print("Temperatuur in F:\t"); Serial.println(String(fTemp, 1)); Serial.print("Vochtigheid:\t "); Serial.println (String (vochtigheid, 1)); }

Stap 5: Code voor het hosten van een webserver

Code voor het hosten van een webserver
Code voor het hosten van een webserver
Code voor het hosten van een webserver
Code voor het hosten van een webserver

We hebben een webserver vanaf ons apparaat gehost op een statisch IP-adres.

ESP8266WebServer-bibliotheek wordt gebruikt om de webserver te hosten

  • Eerst moeten we het IP-adres, de gateway en het subnetmasker opgeven om ons statische IP-adres te maken
  • Verklaar nu ssid en wachtwoord voor uw toegangspunt. Maak verbinding met het toegangspunt vanaf elk STA-apparaat
  • host de server op poort 80, wat een standaardpoort is voor internetcommunicatieprotocol, Hypertext Transfer Protocol (HTTP) voer 192.168.1.4 in uw webbrowser in voor de introductie-webpagina en 192.168.1.4/Value voor de webpagina voor het lezen van sensoren

//static IP voor APIPAddress ap_local_IP(192, 168, 1, 4);IPAddress ap_gateway(192, 168, 1, 254); IPA-adres ap_subnet(255, 255, 255, 0); //ssid en AP voor lokale wifi in STA-modus const char WiFissid = "*********"; const char WiFipass = "*********"; //ssid en geef door voor AP const char APssid = "********"; const char APpass = "********"; ESP8266WebServer-server (80); void setup {server.on("/", onHandleDataRoot); server.on("/Value", onHandleDataFeed); server.onNotFound(onHandleNotFound);} void taskAPCallback(){ Serial.println("taskAP begonnen"); server.handleClient(); } void onHandleDataRoot(){ server.send(200, "text/html", PAGE1); } void onHandleDataFeed(){ server.send(200, "text/html", PAGE2); } void onHandleNotFound(){ String message = "Bestand niet gevonden\n\n"; bericht += "URI: "; bericht += server.uri(); bericht += "\nMethode: "; bericht += (server.methode() == HTTP_GET)?"GET":"POST"; bericht += "\nArgumenten: "; bericht += server.args(); bericht += "\n"; server.send(404, "tekst/gewoon", bericht); } void reconnectAPWiFi(){ WiFi.mode(WIFI_AP_STA); vertraging (100); WiFi.verbinding verbreken(); booleaanse status = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet); if(status ==true){ Serial.print("Soft-AP instellen … "); boolean ap = WiFi.softAP(APssid, APpass); if(ap==true){ Serial.print("verbonden met:\t"); //IPAdres mijnIP = WiFi.softAPIP(); Seriële.println(WiFi.softAPIP()); } server.begin();

}

Stap 6: Thingspeak-configuratie

Thingspeak-configuratie
Thingspeak-configuratie
Thingspeak-configuratie
Thingspeak-configuratie
Thingspeak-configuratie
Thingspeak-configuratie

ThingSpeak is een IoT-platform. ThingSpeak is een gratis webservice waarmee u sensorgegevens in de cloud kunt verzamelen en opslaan.

In deze stap geef ik je een korte procedure om je Thing Speak-account in te stellen

  • Meld u aan voor een nieuw gebruikersaccount in ThingSpeak
  • Maak een nieuw kanaal door Kanalen, Mijn kanalen en vervolgens Nieuw kanaal te selecteren
  • Bewerk uw velden
  • Deze velden bevatten uw sensorgegevens
  • Let op de Schrijf API-sleutel en kanaal-ID
  • Op uw Arduino-schets kunt u de ThingSpeak-bibliotheek voor Arduino gebruiken of u kunt de gegevens rechtstreeks POST naar de ThingSpeak-API
  • de volgende stap gaat dieper in op het plaatsen van de inhoud op de Thing Speak API

Stap 7: Code voor het posten van gegevens naar Thing Speak

Code voor het posten van gegevens naar Thing Speak
Code voor het posten van gegevens naar Thing Speak
Code voor het posten van gegevens naar Thing Speak
Code voor het posten van gegevens naar Thing Speak
Code voor het posten van gegevens naar Thing Speak
Code voor het posten van gegevens naar Thing Speak
Code voor het posten van gegevens naar Thing Speak
Code voor het posten van gegevens naar Thing Speak

Hier plaatsen we de sensormetingen op Thing Speak. de volgende stappen zijn nodig om deze taak te voltooien-

  • Maak je account aan in thing speakCreëer kanalen en velden om je sensorgegevens op te slaan
  • we kunnen de gegevens van ESP naar thingSpeak krijgen en posten en vice versa met behulp van GET- en POST-verzoeken naar de api.
  • we kunnen onze gegevens als volgt op ThingSpeak plaatsen:

id taskWiFiCallback(){ WiFiClient wifiClient; if(wifiClient.connect(hostId, 80)){ String postStr = apiKey; postStr +="&field1="; postStr += String (vochtig); postStr +="&field2="; postStr += String (tempC); postStr +="&field3="; postStr += String (tempF); postStr += "\r\n\r\n"; wifiClient.print("POST /update HTTP/1.1\n"); wifiClient.print("Host: api.thingspeak.com\n"); wifiClient.print("Verbinding: sluiten\n"); wifiClient.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n"); wifiClient.print("Content-Type: application/x-www-form-urlencoded\n"); wifiClient.print("Inhoudslengte: "); wifiClient.print(postStr.length()); wifiClient.print("\n\n"); wifiClient.print(postStr); } wifiClient.stop(); }

Stap 8: Algemene code

De algemene code is beschikbaar in mijn GitHub-repository

Stap 9: Tegoeden

  • Arduino JSON
  • ESP826Webserver
  • Taakplanner
  • SHT 31
  • I2C-scan
  • HIH6130 instructables-tutorial
  • Draad
  • NCD.io

Aanbevolen: