INHOUDSOPGAWE:

UbiDots-Koppel 'n ESP32 en publiseer veelvuldige sensorsdata: 6 stappe
UbiDots-Koppel 'n ESP32 en publiseer veelvuldige sensorsdata: 6 stappe

Video: UbiDots-Koppel 'n ESP32 en publiseer veelvuldige sensorsdata: 6 stappe

Video: UbiDots-Koppel 'n ESP32 en publiseer veelvuldige sensorsdata: 6 stappe
Video: Управление 32 серводвигателями с PCA9685 и ESP32 - V4 2024, Julie
Anonim
UbiDots-Koppel 'n ESP32 en publiseer veelvuldige sensordata
UbiDots-Koppel 'n ESP32 en publiseer veelvuldige sensordata

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

Hardeware en sagteware spesifikasie
Hardeware en sagteware spesifikasie
  • ESP32 WiFi/BLE
  • Draadlose temperatuur- en humiditeitsensor

Sagteware spesifikasie

Arduino IDE

Stap 2: Skep 'n Captive Portal

Skep 'n Captive Portal
Skep 'n Captive Portal
Skep 'n Captive Portal
Skep 'n Captive Portal
Skep 'n Captive Portal
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

Verskaf WiFi en UbiDots -geloofsbriewe
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

Visualisering van die data
Visualisering van die data
Visualisering van die data
Visualisering van die data
Visualisering van die data
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: