INHOUDSOPGAWE:
- Stap 1: Spesifikasie van hardeware en sagteware
- Stap 2: Skep 'n Captive Portal
- Stap 3: Verskaf WiFi- en UbiDots -geloofsbriewe
- Stap 4: Publiseer sensorlesings aan UbiDots
- Stap 5: Visualisering van die data
- Stap 6: Algehele kode
Video: UbiDots-Koppel 'n ESP32 en publiseer veelvuldige sensorsdata: 6 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:26
ESP32 en ESP 8266 is baie bekend op die gebied van IoT. Dit is 'n soort seën vir die IoT -projekte. ESP 32 is 'n toestel met geïntegreerde WiFi en BLE. Gee net u SSID, wagwoord en IP -konfigurasies en integreer die dinge in die wolk. Hier in hierdie instruksies, sal ons nadink oor 'n paar van die basiese terme van IoT, soos IoT -platform, MQTT, Captive -portale, ens. Laat ons dus daardeur gaan
- Die IoT -argitektuur bestaan in baie eenvoudige woorde uit 'n ingeboude toestel en IoT -platform om die toestel in die wolk te plaas. Hier gebruik ons UbiDots IoT -platform om die sensordata te visualiseer.
- Die bestuur van die IP -instellings en gebruikersbewyse kan 'n hoofpyn vir die gebruiker wees. Wat as die gebruiker die WiFi -geloofsbriewe wil verander? Wat as die gebruiker die DHCP/Statiese IP -instellings wil verander? Elke keer dat die ESP32 flits, is nie betroubaar nie, en selfs nie die oplossing vir hierdie probleme nie. Ons gaan dus deur die gevange portaal om die WiFi -geloofsbriewe en ander konfigurasies te stoor.
- MQTT word nou 'n baie algemene term in die IoT -wêreld. dit het die versoek en antwoorde (HTTP) deur Publiseer en inteken oortref vanweë die vinnige, robuuste en skraal argitektuur.
Hier in hierdie instruksies gaan ons demonstreer.
- Gee WiFi- en MQTT -geloofsbriewe met Captive Portal.
- Publiseer en teken op veelvuldige sensordata op UbiDots in.
- Lees die sensordata van draadlose temperatuur- en humiditeitsensors.
- Die aanbied van 'n webvorm vanaf die ESP32.
- Lees en skryf van SPIFFS ESP32.
Stap 1: Spesifikasie van hardeware en sagteware
- ESP32 WiFi/BLE
- Draadlose temperatuur- en humiditeitsensor
Sagteware spesifikasie
Arduino IDE
Stap 2: Skep 'n Captive Portal
'N Gevange portaal is 'n webbladsy wat aan nuut gekoppelde gebruikers vertoon word voordat hulle breër toegang tot netwerkhulpbronne kry. Hier bedien ons drie webblaaie om tussen DHCP en statiese IP -instellings te kies. ons kan die IP -adres op twee maniere vir ESP definieer.
- DHCP IP-adres- dit is 'n manier om die IP-adres dinamies aan die toestel toe te ken. Die standaard IP -adres van die ESP is 192.168.4.1
- Die statiese IP-adres- die toekenning van 'n permanente IP-adres aan ons netwerkapparaat. Om die statiese IP aan die toestel te verskaf, moet ons die IP -adres, gateway -adres en subnetmasker definieer.
Die eerste webblad word aangebied op 192.168.1.77. Hier word aan die gebruiker die radioknoppies voorsien om te kies tussen DHCP- en statiese IP -instellings. Op die volgende webblad moet ons die IP -verwante inligting verskaf om verder te gaan.
HTML -kode
Die HTML -kode vir webblaaie kan gevind word in hierdie Github -bewaarplek. U kan enige IDE of teksredakteur soos Sublime of notepad ++ gebruik om HTML -webblaaie te maak.
- Maak eers 'n HTML -webblad met twee radioknoppies om tussen DHCP en Statiese IP -instellings te kies.
- Skep nou die knoppie om u antwoord in te dien
- Gee 'n naam aan die radioknoppies.
- Die ESP -webbedienerklas neem hierdie name as argumente en kry die reaksie van die radioknoppies deur hierdie argumente te gebruik
- Voeg nou 'SUBMIT' -knoppie in om die antwoord na die toestel te stuur. Op die ander webblaaie het ons teksblokkies.
- Gee die naamwaarde en invoertipe in die tekskassie en voeg 'n stuurknoppie by om 'SEND' die antwoord in te dien.
- Skep 'n 'RESET' -knoppie om die inhoud van die teksveld terug te stel.
Stap 3: Verskaf WiFi- en UbiDots -geloofsbriewe
Die hoofprobleem kom voor by die bestuur van die WiFi -geloofsbriewe. Alhoewel ons WiFiMulti -biblioteek daarvoor het, kan ons verskeie SSID's en wagwoorde aan die toestel gee, en die toestel kan aansluit by die beskikbare netwerk. Maar wat as die beskikbare netwerk nie in die WiFiMulti -lys is nie. Die heeltyd flits van die ESP32 -toestel is nie 'n betroubare oplossing nie.
Om hierdie probleem op te los, bied ons 'n webblad aan waar die gebruiker die SSID en wagwoord van die beskikbare netwerk kan indien. Dit werk soos volg.
- Die webblad word gehuisves op die statiese IP of DHCP IP soos deur die gebruiker uit die gevangene portaal gekies
- Hierdie webblad bevat teksvelde om SSID, wagwoord en UBIDOTS -token -ID in te voer om die toestel aan UbiDots te koppel.
- Voer die SSID en wagwoord van u plaaslike WiFi in die invoervelde in, voer UbiDot se token -ID in en voer IN
- Hierdie geloofsbriewe word in ESP32 se EEPROM gestoor
- Na 60 sekondes word die toestel outomaties van die AP ontkoppel
- Die volgende keer dat u die toestel aanskakel, hoef die gebruiker nie hierdie prosedure te volg nie. Die toestel sal outomaties die gebruikersbewyse van EEPROM af haal en voortgaan met die publisering van die sensorlesings aan UbiDots.
Stap 4: Publiseer sensorlesings aan UbiDots
Hier gebruik ons draadlose temperatuur- en humiditeitsensors met die ESP 32 -toestel om die temperatuur- en humiditeitsdata te kry. Ons stuur die data na UbiDots met behulp van die MQTT -protokol. MQTT volg 'n publiseer- en intekeningsmeganisme eerder as die versoek en antwoord. Dit is vinniger en betroubaarder as HTTP. Dit werk soos volg.
- Ons maak gebruik van Taakplanner om die taak te skeduleer, soos om data van sensors af te haal, die sensorlesings te publiseer, in te teken op die MQTT -onderwerp.
- Sluit eerstens die koptekstlêers van die taakplanner in, die instansie daarvan en skeduleer die take.
- Ons het twee take geskeduleer wat verwys na twee verskillende beheerbedrywighede.
#definieer _TASK_TIMEOUT#insluit
Skeduler ts;
// --------- Take ------------ // Taak tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL, & taskSensorDisable); Taak tWiFi (10* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable);
Taak 1 is vir die lees van die sensorwaarde wat hierdie taak vir 1 sekonde uitvoer totdat dit 'n time -out van 10 sekondes bereik
- As die taak1 sy tyd bereik het, maak ons verbinding met die plaaslike Wifi- en MQTT -makelaar.
-
Nou is taak 2 geaktiveer en skakel ons taak 1 uit
- Taak 2 is om die sensorgegevens aan UbiDots MQTT -makelaar te publiseer, hierdie taak duur 20 sekondes totdat dit 'n tydsverloop van 20 sekondes bereik
- As die taak 2 sy tyd bereik het, word taak 1 weer aangeskakel en taak 2 is gedeaktiveer. Weereens kry ons die opgedateerde waarde en die proses gaan voort.
Lees die I2C -sensordata
Ons kry 'n raam van 29 byte van die draadlose sensors vir temperatuur en humiditeit. Hierdie raam word gemanipuleer om werklike temperatuur- en humiditeitsdata te kry
uint8_t data [29];
data [0] = Serial1.read (); vertraging (k); // chck vir beginbyte as (data [0] == 0x7E) {terwyl (! Serial1.available ()); vir (i = 1; i <29; i ++) {data = Serial1.read (); vertraging (1); } if (data [15] == 0x7F) /////// om te kontroleer of die gegewens korrek is {if (data [22] == 1) //////// maak seker dat die tipe sensor is dit is korrek {
humiditeit = ((((data [24]) * 256) + data [25]) /100.0); humiditeit /=10,0; cTempint = (((uint16_t) (data [26]) << 8) | data [27]); cTemp = (float) cTempint /100.0; cTemp /= 10,0; fTemp = cTemp * 1.8 + 32; fTemp /= 10,0; battery = ewekansig (100, 327); spanning = battery/100; nodeId = data [16];}
Koppel aan UbiDots MQTT API
Sluit die koplêer vir die MQTT -proses in
#insluit
definieer ander veranderlikes vir MQTT, soos kliëntnaam, makelaarsadres, teken -ID (ons haal die teken -ID van EEPROM af)
#definieer MQTT_CLIENT_NAME "ClientVBShightime123"
char mqttBroker = "things.ubidots.com";
char laai [100]; char onderwerp [150];
// skep veranderlike om teken -ID te stoor
String tokenId;
Skep veranderlikes om verskillende sensor data te stoor en skep 'n char veranderlike om onderwerp te stoor
#define VARIABLE_LABEL_TEMPF "tempF" // Die veranderlike etiket bepaal
char onderwerp1 [100]; char topic2 [100]; char topic3 [100];
publiseer die data na die genoemde MQTT -onderwerp, en die laai sal soos {"tempc": {value: "tempData"}} lyk
sprintf (topic1, "%s", ""); sprintf (topic1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf (loonvrag, "%s", ""); // Maak die loonvrag sprintf skoon (laai, "{"%s / ":", VARIABLE_LABEL_TEMPC); // Voeg die waarde sprintf (payload, "%s {" value / ":%s}", payload, str_cTemp) by; // Voeg die waarde sprintf (payload, "%s}", payload) by; // Sluit die woordeboekhakies Serial.println (loonvrag); Serial.println (client.publish (topic1, payload)? "Gepubliseer": "niepubliseer");
// Doen dieselfde vir ander onderwerpe
client.publish () publiseer die data aan UbiDots
Stap 5: Visualisering van die data
- Gaan na Ubidots en meld aan by u rekening.
- Navigeer na die paneelbord vanaf die blad Data bo -aan.
- Klik nou op die "+" - ikoon om die nuwe widgets by te voeg.
- Kies 'n widget uit die lys en voeg 'n veranderlike en toestelle by.
- Die sensordata kan op die dashboard met behulp van verskillende widgets gevisualiseer word.
Stap 6: Algehele kode
Die Over -kode vir HTML en ESP32 kan gevind word in hierdie GitHub -bewaarplek.
Krediete
- ncd ESP32 breakout board.
- ncd Draadlose temperatuur- en humiditeitsensors.
- kroegondernemer
- UbiDots
- Taak skeduleerder
Aanbeveel:
Verwyder die agtergrond van veelvuldige beelde met Photoshop 2020: 5 stappe
Verwyder die agtergrond van veelvuldige beelde met Photoshop 2020: die agtergrond van 'n prentjie is nou baie maklik! Op hierdie manier kan u Adobe Photoshop 2020 gebruik om die agtergrond van veelvuldige (bondel) beelde met 'n eenvoudige skrif te verwyder
Hoe u Matlab 2016b na Word kan kodeer en publiseer (beginnersgids): 4 stappe
Hoe om Matlab 2016b na Word te kodeer en te publiseer (Beginnersgids): Matlab is 'n hoëprestasie-taalprogram wat gebruik word om tegniese resultate te bereken. Dit het die vermoë om beeldmateriaal, berekeninge en programmering op 'n gebruikersvriendelike manier te integreer. Met hierdie program kan die gebruiker probleme en oplossings publiseer
Veelvuldige USB -poort sonder enige PCB: 4 stappe
Veelvuldige USB -poort sonder enige PCB: dit is my tweede instruksie, en hier deel ek met u 'n projek waar u verskeie USB -poort kan maak om op u rekenaar te gebruik, want as u tuis werk, het u 'n groot probleem om baie te gebruik toestelle, aangesien die meeste toestelle nou
Veelvuldige ATtiny85/13A programmeerder: 6 stappe
Veelvuldige ATtiny85/13A-programmeerder: het u al ooit 'n projek gemaak soos 'n "LDR x Arduino UNO Automatic Light" of soortgelyke wat slegs 2-3 digitale I/O-poorte van u 32-pins mikrokontroller gebruik? Dit is goed as u net 'n bietjie doen prototipe werk, maar wat as u wil finaliseer of vervaardig
Hoe om ESP32 -data met NTP -tydstempel in die IoT -wolk te publiseer: 5 stappe
Hoe om ESP32 -data met NTP -tydstempel in die IoT -wolk te publiseer: in baie toepassings moet gebruikers hul data saam met die plaaslike tydstempel stuur van die waardes wat in die loonvrag na die AskSensors IoT -wolk gestuur moet word. Die tydstempelformaat is UNIX -tydperk: die aantal millisekondes wat sedert Januarie verloop het