Sadržaj:

UbiDots-Povezivanje ESP32 i objavljivanje podataka s više senzora: 6 koraka
UbiDots-Povezivanje ESP32 i objavljivanje podataka s više senzora: 6 koraka

Video: UbiDots-Povezivanje ESP32 i objavljivanje podataka s više senzora: 6 koraka

Video: UbiDots-Povezivanje ESP32 i objavljivanje podataka s više senzora: 6 koraka
Video: Домашняя автоматизация своими руками — ESP32, Raspberry Pi, Node Red, MQTT, Умный дом || Проект Интернета вещей. Часть 1. 2024, Studeni
Anonim
UbiDots-Povezivanje ESP32 i objavljivanje podataka s više senzora
UbiDots-Povezivanje ESP32 i objavljivanje podataka s više senzora

ESP32 i ESP 8266 vrlo su poznati SoC u području IoT -a. To su svojevrsna blagodat za IoT projekte. ESP 32 je uređaj s integriranim WiFi -om i BLE -om. Samo dajte svoje SSID, lozinku i IP konfiguracije i integrirajte stvari u oblak. Ovdje, u ovom uputstvu, razmislit ćemo o nekim od osnovnih pojmova IoT -a poput IoT platforme, MQTT -a, zarobljenih portala itd. Pa idemo kroz to

  • IoT arhitektura vrlo jednostavnim riječima sastoji se od ugrađenog uređaja i IoT platforme za stavljanje uređaja u oblak. Ovdje koristimo UbiDots IoT platformu za vizualizaciju podataka senzora.
  • Upravljanje IP postavkama i korisničkim vjerodajnicama može biti glavobolja za korisnika. Što ako korisnik želi promijeniti WiFi vjerodajnice? Što ako korisnik želi promijeniti postavke DHCP -a/statičkog IP -a? Svako bljeskanje ESP32 nije pouzdano, pa čak ni rješenje za ove probleme. Zato ćemo proći kroz zarobljeni portal radi spremanja vjerodajnica za WiFi i drugih konfiguracija.
  • MQTT sada postaje vrlo uobičajen izraz u svijetu IoT -a. nadmašio je zahtjeve i odgovore (HTTP) od strane Publish and Subscribe zbog brze, robusne i vitke arhitekture.

Ovdje, u ovom uputstvu, pokazat ćemo.

  • Davanje vjerodajnica za WiFi i MQTT pomoću Captive Portala.
  • Objavljivanje i pretplata više podataka senzora na UbiDots.
  • Očitavanje podataka senzora s bežičnih senzora temperature i vlažnosti.
  • Hosting web obrasca s ESP32.
  • Čitanje i pisanje s SPIFFS ESP32.

Korak 1: Specifikacija hardvera i softvera

Specifikacije hardvera i softvera
Specifikacije hardvera i softvera
  • ESP32 WiFi/BLE
  • Bežični senzor temperature i vlažnosti

Specifikacije softvera

Arduino IDE

Korak 2: Stvaranje zarobljenog portala

Stvaranje zarobljenog portala
Stvaranje zarobljenog portala
Stvaranje zarobljenog portala
Stvaranje zarobljenog portala
Stvaranje zarobljenog portala
Stvaranje zarobljenog portala

Zarobljeni portal je web stranica koja se prikazuje tek povezanim korisnicima prije nego im se odobri širi pristup mrežnim resursima. Ovdje poslužujemo tri web stranice za odabir između postavki DHCP i statičkih IP adresa. IP adresu ESP -u možemo definirati na dva načina.

  • DHCP IP adresa- to je način dinamičkog dodjeljivanja IP adrese uređaju. Zadana IP adresa ESP -a je 192.168.4.1
  • Statička IP adresa- dodjeljivanje stalne IP adrese našem mrežnom uređaju. za pružanje statičkog IP -a uređaju moramo definirati IP adresu, adresu pristupnika i masku podmreže.

Prva web stranica nalazi se na 192.168.1.77. Ovdje je korisniku omogućen izborni gumb za odabir između postavki DHCP -a i statičkog IP -a. Na sljedećoj web stranici moramo pružiti informacije povezane s IP -om kako bismo nastavili dalje.

HTML kod

HTML kôd za web stranice možete pronaći u ovom Github spremištu. Možete koristiti bilo koji IDE ili uređivač teksta poput Sublime ili notepad ++ za izradu HTML web stranica.

  • Prvo stvorite HTML web stranicu koja sadrži dva radio gumba za odabir između DHCP i postavki statičke IP adrese.
  • Sada stvorite gumb za slanje odgovora
  • Dajte neki naziv radio gumbima.
  • Klasa ESP web poslužitelja uzet će ta imena kao argumente i pomoću tih argumenata dobit će odgovor radijskih gumba
  • Sada umetnite gumb 'SUBMIT' da pošaljete odgovor na uređaj. Na ostalim web stranicama imamo tekstualne okvire.
  • Unesite vrijednost imena i vrstu unosa u tekstualni okvir i dodajte gumb za slanje da biste 'SUBMIT' poslali odgovor.
  • Izradite gumb 'RESET' za poništavanje sadržaja tekstualnog polja.

Korak 3: Pružanje WiFi i UbiDots vjerodajnica

Pružanje WiFi i UbiDots vjerodajnica
Pružanje WiFi i UbiDots vjerodajnica

Glavni problem javlja se tijekom upravljanja vjerodajnicama za WiFi. Iako za to imamo WiFiMulti knjižnicu u kojoj možemo dati više SSID -ova i lozinki uređaju, a uređaj će se povezati s dostupnom mrežom. No, što ako dostupna mreža nije na popisu WiFiMulti. Bljeskanje ESP32 uređaja cijelo vrijeme nije pouzdano rješenje.

Da bismo riješili ovaj problem, hostiramo web stranicu na kojoj korisnik može poslati SSID i lozinku dostupne mreže. Radi na sljedeći način.

  • Web stranica se nalazi na statičkom IP ili DHCP IP -u prema izboru korisnika sa zarobljenog portala
  • Ova web stranica sadrži tekstualna polja za unos SSID -a, lozinke i ID tokena UBIDOTS za povezivanje uređaja s UbiDots -om.
  • Unesite SSID i lozinku lokalnog WiFi -a u polja za unos, unesite ID tokena UbiDota i unesite SUBMIT
  • Ove vjerodajnice spremaju se u ESPROM ESP32
  • Nakon 60 sekundi uređaj će se automatski isključiti iz pristupne točke
  • Sljedeći put kada uključite uređaj, korisnik ne mora slijediti ovaj postupak, uređaj će automatski dohvatiti korisničke vjerodajnice s EEPROM -a i nastaviti s objavljivanjem očitanja senzora na UbiDots.

Korak 4: Objavljivanje očitanja senzora na UbiDots

Ovdje koristimo bežične senzore temperature i vlažnosti s uređajem ESP 32 za dobivanje podataka o temperaturi i vlažnosti. Šaljemo podatke na UbiDots koristeći MQTT protokol. MQTT slijedi mehanizam objavljivanja i pretplate, a ne taj zahtjev i odgovor. Brži je i pouzdaniji od HTTP -a. Ovo funkcionira na sljedeći način.

  • Koristimo Planer zadataka za planiranje zadatka poput dohvaćanja podataka sa senzora, objavljivanja očitanja senzora, pretplate na temu MQTT.
  • Prvo, uključite datoteke zaglavlja Raspoređivača zadataka, njegovu instancu i raspoređuje zadatke.
  • Zakazali smo dva zadatka koji se odnose na dvije različite kontrolne operacije.

#define _TASK_TIMEOUT#include

Planer ts;

// --------- Zadaci ------------ // Taster tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL, & taskSensorDisable); Zadatak tWiFi (10* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable);

Zadatak 1 služi za očitavanje vrijednosti senzora. Ovaj zadatak traje 1 sekundu dok ne dosegne prekid od 10 sekundi

  • Kad Task1 istekne, povezujemo se s lokalnim Wifi i MQTT posrednikom.
  • Sada je omogućen 2. zadatak i onemogućujemo 1. zadatak
  • Zadatak 2 služi za objavljivanje podataka senzora UbiDots MQTT posredniku, ovaj zadatak traje 20 sekundi dok ne dosegne vremensko ograničenje od 20 sekundi

  • Kad Task2 istekne vrijeme, Zadatak 1 je ponovno omogućen, a Task2 onemogućen. Ovdje opet dobivamo ažuriranu vrijednost i proces se nastavlja.

Očitavanje podataka senzora I2C

Od bežičnih senzora temperature i vlažnosti dobivamo okvir od 29 bajtova. Ovim se okvirom manipulira kako bi se dobili stvarni podaci o temperaturi i vlažnosti

uint8_t podaci [29];

data [0] = Serial1.read (); kašnjenje (k); // chck za početni bajt if (data [0] == 0x7E) {while (! Serial1.available ()); za (i = 1; i <29; i ++) {podaci = Serial1.read (); odgoda (1); } if (data [15] == 0x7F) /////// da provjerite jesu li primljeni podaci točni {if (data [22] == 1) //////// provjerite vrstu senzora je točno {

vlažnost = ((((podaci [24]) * 256) + podaci [25]) /100,0); vlažnost /=10,0; cTempint = ((((uint16_t) (podaci [26]) << 8) | podaci [27]); cTemp = (float) cTempint /100.0; cTemp /= 10,0; fTemp = cTemp * 1,8 + 32; fTemp /= 10,0; baterija = slučajna (100, 327); napon = baterija/100; nodeId = podaci [16];}

Povezivanje s UbiDots MQTT API

Uključite datoteku zaglavlja za proces MQTT

#uključi

definirajte druge varijable za MQTT poput imena klijenta, adrese brokera, ID tokena (Dohvaćamo ID tokena iz EEPROM -a)

#define MQTT_CLIENT_NAME "ClientVBShightime123"

char mqttBroker = "things.ubidots.com";

char korisni teret [100]; tema char [150];

// izrada varijable za spremanje ID -a tokena

String tokenId;

Izradite varijable za spremanje različitih podataka senzora i stvorite varijablu char za spremanje teme

#define VARIABLE_LABEL_TEMPF "tempF" // Određivanje oznake varijable #define VARIABLE_LABEL_TEMPC "tempC" // Određivanje oznake varijable #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "label

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

objaviti podatke na spomenutu temu MQTT -a korisni teret će izgledati kao {"tempc": {value: "tempData"}}

sprintf (topic1, "%s", ""); sprintf (topic1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf (korisni teret, "%s", ""); // Čisti sprintf korisnog tereta (korisni teret, "{"%s / ":", VARIABLE_LABEL_TEMPC); // Dodaje vrijednost sprintf (korisni teret, "%s {" vrijednost / ":%s}", korisni teret, str_cTemp); // Dodaje vrijednost sprintf (korisni teret, "%s}", korisni teret); // Zatvara zagrade rječnika Serial.println (korisni teret); Serial.println (client.publish (topic1, korisni teret)? "Objavljeno": "nije objavljeno");

// Učinite isto i za drugu temu

client.publish () objavljuje podatke na UbiDots

Korak 5: Vizualizacija podataka

Vizualizacija podataka
Vizualizacija podataka
Vizualizacija podataka
Vizualizacija podataka
Vizualizacija podataka
Vizualizacija podataka
  • Idite na Ubidots i prijavite se na svoj račun.
  • Idite na nadzornu ploču s kartice Podaci navedene na vrhu.
  • Sada kliknite ikonu "+" za dodavanje novih widgeta.
  • Odaberite widget s popisa i dodajte varijablu i uređaje.
  • Podaci senzora mogu se vizualizirati na nadzornoj ploči pomoću različitih widgeta.

Korak 6: Opći kod

Over kod za HTML i ESP32 može se pronaći u ovom GitHub spremištu.

Zasluge

  • ncd ESP32 ploča za probijanje.
  • ncd Bežični osjetnici temperature i vlage.
  • pubsubclient
  • UbiDots
  • Planer zadataka

Preporučeni: