Sisällysluettelo:

UbiDots-ESP32: n yhdistäminen ja useiden anturitietojen julkaiseminen: 6 vaihetta
UbiDots-ESP32: n yhdistäminen ja useiden anturitietojen julkaiseminen: 6 vaihetta

Video: UbiDots-ESP32: n yhdistäminen ja useiden anturitietojen julkaiseminen: 6 vaihetta

Video: UbiDots-ESP32: n yhdistäminen ja useiden anturitietojen julkaiseminen: 6 vaihetta
Video: Использование комплекта Wi-Fi Heltec ESP32 OLED 2024, Heinäkuu
Anonim
UbiDots-ESP32: n yhdistäminen ja useiden anturitietojen julkaiseminen
UbiDots-ESP32: n yhdistäminen ja useiden anturitietojen julkaiseminen

ESP32 ja ESP 8266 ovat hyvin tuttuja SoC IoT -alalla. Nämä ovat eräänlainen siunaus IoT -projekteille. ESP 32 on laite, jossa on integroitu WiFi ja BLE. Anna vain SSID, salasana ja IP -määritykset ja integroi asiat pilveen. Tässä tässä ohjeessa pohdimme joitain IoT: n perusehtoja, kuten IoT -alusta, MQTT, vankeusportaalit jne. Joten käydään se läpi

  • IoT -arkkitehtuuri koostuu hyvin yksinkertaisesti sanottuna sulautetusta laitteesta ja IoT -alustasta laitteen asettamiseksi pilveen. Täällä käytämme UbiDots IoT -alustaa visualisoimaan anturitietoja.
  • IP -asetusten ja käyttäjätietojen hallinta voi olla päänsärky käyttäjälle. Mitä jos käyttäjä haluaa muuttaa WiFi -tunnistetietoja? Entä jos käyttäjä haluaa vaihtaa DHCP/Staattinen IP -asetuksia? ESP32: n vilkkuminen joka kerta ei ole luotettava eikä edes ratkaisu näihin ongelmiin. Joten käymme läpi vankeusportaalin tallentaaksemme WiFi -tunnistetiedot ja muut kokoonpanot.
  • MQTT: stä on tulossa hyvin yleinen termi IoT -maailmassa. se on ohittanut julkaisun ja tilauksen pyynnöt ja vastaukset (HTTP) nopean, vankan ja kevyen arkkitehtuurin vuoksi.

Tässä tässä ohjeessa aiomme osoittaa.

  • WiFi- ja MQTT -tunnistetietojen antaminen Captive Portal -palvelun avulla.
  • Useiden anturitietojen julkaiseminen ja tilaaminen UbiDotsiin.
  • Anturitietojen lukeminen langattomista lämpötila- ja kosteusantureista.
  • Verkkolomakkeen ylläpito ESP32: sta.
  • Lukeminen ja kirjoittaminen SPIFFS ESP32: sta.

Vaihe 1: Laitteisto- ja ohjelmistomääritykset

Laitteiston ja ohjelmiston tekniset tiedot
Laitteiston ja ohjelmiston tekniset tiedot
  • ESP32 WiFi/BLE
  • Langaton lämpötila- ja kosteusanturi

Ohjelmiston tiedot

Arduino IDE

Vaihe 2: vangitsevan portaalin luominen

Vankeusportaalin luominen
Vankeusportaalin luominen
Vankeusportaalin luominen
Vankeusportaalin luominen
Vankeusportaalin luominen
Vankeusportaalin luominen

Kytketty portaali on verkkosivu, joka näytetään äskettäin yhdistetyille käyttäjille ennen kuin heille annetaan laajempi pääsy verkkoresursseihin. Tässä palvelemme kolmea verkkosivua, joista voit valita DHCP- tai staattisen IP -asetuksen välillä. voimme määrittää IP -osoitteen ESP: lle kahdella tavalla.

  • DHCP IP-osoite- se on tapa määrittää IP-osoite dynaamisesti laitteelle. ESP: n oletus -IP -osoite on 192.168.4.1
  • Staattinen IP-osoite- pysyvän IP-osoitteen määrittäminen verkkolaitteellemme. jotta voimme tarjota laitteelle staattisen IP -osoitteen, meidän on määritettävä IP -osoite, yhdyskäytävän osoite ja aliverkon peite.

Ensimmäistä verkkosivua isännöidään osoitteessa 192.168.1.77. Tässä käyttäjä voi valita DHCP- ja Staattinen IP -asetusten välillä. Seuraavalla verkkosivulla meidän on annettava IP -tiedot, jotta voimme jatkaa eteenpäin.

HTML -koodi

Verkkosivujen HTML -koodi löytyy tästä Github -tietovarastosta. Voit käyttää mitä tahansa IDE- tai tekstieditoria, kuten Sublime tai muistilehtiö ++ HTML -verkkosivujen luomiseen.

  • Luo ensin HTML -verkkosivu, joka sisältää kaksi valintanappia valitaksesi DHCP- tai Staattiset IP -asetukset.
  • Luo nyt painike lähettääksesi vastauksesi
  • Anna valintanäppäimille jokin nimi.
  • ESP -verkkopalvelinluokka ottaa nämä nimet argumentteiksi ja saa valintanappien vastauksen käyttämällä näitä argumentteja
  • Lisää nyt "Lähetä" -painike lähettääksesi vastauksen laitteelle. Muilla verkkosivuilla on tekstiruutuja.
  • Anna nimen arvo ja syöttötyyppi tekstikenttään ja lisää Lähetä -painike "Lähetä" vastauksen lähettämiseen.
  • Luo RESET -painike nollataksesi tekstikentän sisällön.

Vaihe 3: WiFi- ja UbiDots -käyttöoikeustietojen tarjoaminen

WiFi- ja UbiDots -käyttöoikeustietojen tarjoaminen
WiFi- ja UbiDots -käyttöoikeustietojen tarjoaminen

Suurin ongelma ilmenee WiFi -tunnistetietojen hallinnassa. Vaikka meillä on WiFiMulti -kirjasto, jossa voimme antaa laitteelle useita SSID -tunnuksia ja salasanoja ja laite muodostaa yhteyden käytettävissä olevaan verkkoon. Mutta entä jos käytettävissä oleva verkko ei ole WiFiMulti -luettelossa. ESP32 -laitteen vilkkuminen jatkuvasti ei ole luotettava ratkaisu.

Tämän ongelman ratkaisemiseksi isännöimme verkkosivua, jossa käyttäjä voi lähettää käytettävissä olevan verkon SSID -tunnuksen ja salasanan. Se toimii seuraavasti.

  • Verkkosivua isännöidään staattisella IP- tai DHCP -IP -osoitteella, jonka käyttäjä on valinnut kytkösportaalista
  • Tämä verkkosivu sisältää tekstikenttiä SSID: n, salasanan ja UBIDOTS -tunnuksen syöttämiseksi laitteen yhdistämiseksi UbiDots -laitteeseen.
  • Kirjoita paikallisen WiFi -verkon SSID ja salasana syöttökenttiin, kirjoita UbiDot -tunnuksen tunnus ja kirjoita LÄHETÄ
  • Nämä kirjautumistiedot tallennetaan ESP32: n EEPROM -tiedostoon
  • 60 sekunnin kuluttua laite katkaisee yhteyden AP: hen automaattisesti
  • Seuraavan kerran, kun käynnistät laitteen, käyttäjän ei tarvitse noudattaa tätä menettelyä. Laite hakee käyttäjän tunnistetiedot automaattisesti EEPROMista ja jatkaa anturien lukemien julkaisemista UbiDots -laitteeseen.

Vaihe 4: Anturilukujen julkaiseminen UbiDotsiin

Täällä käytämme langattomia lämpötila- ja kosteusantureita ESP 32 -laitteen kanssa lämpötila- ja kosteustietojen saamiseksi. Lähetämme tiedot UbiDotsille käyttäen MQTT -protokollaa. MQTT noudattaa julkaisu- ja tilausmekanismia pikemminkin kuin pyyntöä ja vastausta. Se on nopeampi ja luotettavampi kuin HTTP. Tämä toimii seuraavasti.

  • Käytämme Tehtävien ajoitus -toimintoa tehtävän ajoittamiseen, kuten tietojen noutamiseen antureista, anturilukemien julkaisemiseen, MQTT -tilaukseen.
  • Sisällytä ensin Task Scheduler -otsikkotiedostot, sen ilmentymä ja aikatauluta tehtävät.
  • Olemme suunnitelleet kaksi tehtävää, jotka viittaavat kahteen eri ohjaustoimintoon.

#define _TASK_TIMEOUT#include

Ajastin ts;

// --------- Tehtävät ------------ // Tehtävä tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL ja & taskSensorDisable); Tehtävä tWiFi (10* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL ja & taskWiFiDisable);

Tehtävä 1 on anturin arvon lukemiseen, tämä tehtävä kestää 1 sekunnin, kunnes se saavuttaa 10 sekunnin aikakatkaisun

  • Kun Task1 saavuttaa aikansa, muodostamme yhteyden paikalliseen Wifi- ja MQTT -välittäjään.
  • Nyt tehtävä 2 on käytössä ja poistamme tehtävän 1 käytöstä

  • Tehtävä 2 on anturitietojen julkaiseminen UbiDots MQTT -välittäjälle, tämä tehtävä kestää 20 sekuntia, kunnes se saavuttaa 20 sekunnin aikakatkaisun
  • Kun tehtävä2 saavuttaa aikakatkaisunsa, tehtävä 1 on jälleen käytössä ja tehtävä 2 on poistettu käytöstä. Täällä taas saamme päivitetyn arvon ja prosessi jatkuu.

I2C -anturitietojen lukeminen

Saamme 29 tavun kehyksen langattomista lämpötila- ja kosteusantureista. Tätä kehystä käsitellään todellisten lämpötila- ja kosteustietojen saamiseksi

uint8_t -tiedot [29];

data [0] = Sarja1.luku (); viive (k); // chck for start byte if (data [0] == 0x7E) {while (! Serial1.available ()); for (i = 1; i <29; i ++) {data = Serial1.read (); viive (1); } if (data [15] == 0x7F) /////// tarkistaaksesi, että recive -tiedot ovat oikein {if (data [22] == 1) //////// varmista, että anturin tyyppi on oikein {

kosteus = (((((tiedot [24]) * 256) + tiedot [25]) /100,0); kosteus /=10,0; cTempint = (((uint16_t) (data [26]) << 8) | data [27]); cTemp = (kelluva) cTempint /100,0; cTemp /= 10,0; fTemp = cTemp * 1,8 + 32; fTemp /= 10,0; akku = satunnainen (100, 327); jännite = akku/100; nodeId = data [16];}

Yhdistetään UbiDots MQTT -sovellusliittymään

Sisällytä MQTT -prosessin otsikkotiedosto

#sisältää

määritä muut muuttujat MQTT: lle, kuten asiakkaan nimi, välittäjän osoite, tunnuksen tunnus (haemme tunnuksen tunnusta EEPROMista)

#define MQTT_CLIENT_NAME "ClientVBShightime123"

char mqttBroker = "things.ubidots.com";

char -hyötykuorma [100]; char -aihe [150];

// luo muuttuja tunnuksen tunnisteen tallentamiseen

Merkkijono tokenId;

Luo muuttujia eri anturitietojen tallentamiseen ja luo char -muuttuja aiheen tallentamiseen

#define VARIABLE_LABEL_TEMPF "tempF" // Muuttujan tunnisteen määrittäminen #define VARIABLE_LABEL_TEMPC "tempC" // Muuttujan tunnisteen määrittäminen #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "kostea muuttuja" // Assing

char topic1 [100]; char topic2 [100]; char topic3 [100];

julkaise tiedot mainitussa MQTT -aiheessa, hyötykuorma näyttää tältä: {"tempc": {value: "tempData"}}

sprintf (aihe1, "%s", ""); sprintf (topic1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf (hyötykuorma, "%s", ""); // Puhdistaa hyötykuorman sprintf (hyötykuorma, "{"%s / ":", VARIABLE_LABEL_TEMPC); // Lisää arvon sprintf (hyötykuorma, "%s {" arvo / ":%s}", hyötykuorma, str_cTemp); // Lisää arvon sprintf (hyötykuorma, "%s}", hyötykuorma); // Sulkee sanaston hakasulkeet Serial.println (hyötykuorma); Serial.println (client.publish (aihe1, hyötykuorma)? "Published": "notpublished");

// Tee sama myös muille aiheille

client.publish () julkaisee tiedot UbiDotsissa

Vaihe 5: Tietojen visualisointi

Tietojen visualisointi
Tietojen visualisointi
Tietojen visualisointi
Tietojen visualisointi
Tietojen visualisointi
Tietojen visualisointi
  • Siirry Ubidotsiin ja kirjaudu tiliisi.
  • Siirry hallintapaneeliin ylhäällä olevasta Tiedot -välilehdestä.
  • Napsauta nyt "+" -kuvaketta lisätäksesi uudet widgetit.
  • Valitse widget luettelosta ja lisää muuttuja ja laitteet.
  • Anturitiedot voidaan visualisoida kojelaudalla eri widgetien avulla.

Vaihe 6: Yleinen koodi

HTML- ja ESP32 -tiedostojen ylikoodi löytyy tästä GitHub -arkistosta.

Laajuus

  • ncd ESP32 katkaisulauta.
  • ncd Langattomat lämpötila- ja kosteusanturit.
  • pubiasiakas
  • UbiDots
  • Tehtävien ajoitus

Suositeltava: