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, Juli
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 su vrlo poznati SoC -ovi u oblasti IoT -a. Ovo su neka vrsta blagodati za IoT projekte. ESP 32 je uređaj s integriranim WiFi i BLE. Samo dajte svoje SSID, lozinku i IP konfiguracije i integrirajte stvari u oblak. Ovdje, u ovom uputstvu, razmislit ćemo o nekim od osnovnih termina IoT -a, poput IoT platforme, MQTT -a, Captive 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. Šta ako korisnik želi promijeniti WiFi vjerodajnice? Šta ako korisnik želi promijeniti DHCP/statičku IP postavku? Svako ažuriranje 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 ćemo pokazati.

  • Davanje WiFi i MQTT vjerodajnica pomoću Captive Portala.
  • Objavljivanje i pretplata na više podataka senzora na UbiDots.
  • Očitavanje podataka senzora s bežičnih senzora temperature i vlažnosti.
  • Hostovanje web obrasca sa ESP32.
  • Čitanje i pisanje sa 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: Kreiranje zaštitnog portala

Kreiranje zarobljenog portala
Kreiranje zarobljenog portala
Kreiranje zarobljenog portala
Kreiranje zarobljenog portala
Kreiranje zarobljenog portala
Kreiranje zarobljenog portala

Zaštitni portal je web stranica koja se prikazuje tek povezanim korisnicima prije nego što im se odobri širi pristup mrežnim resursima. Ovdje poslužujemo tri web stranice za odabir između DHCP i Statične IP postavke. IP adresu ESP -a 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. da bismo uređaju dali statičku IP adresu, moramo definirati IP adresu, adresu pristupnika i masku podmreže.

Prva web stranica nalazi se na 192.168.1.77. Ovdje je Korisniku omogućeno radio dugme za odabir između postavki DHCP i Statične IP adrese. Na sljedećoj web stranici moramo pružiti informacije vezane za IP da 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 dugmeta za izbor između DHCP i postavki statičke IP adrese.
  • Sada kreirajte dugme za slanje odgovora
  • Dajte neki naziv dugmadima za izbor.
  • Klasa ESP web servera će uzeti ta imena kao argumente i dobit će odgovor radio dugmadi koristeći te argumente
  • Sada umetnite dugme 'SUBMIT' da pošaljete odgovor na uređaj. Na ostalim web stranicama imamo tekstualne okvire.
  • Okviru za tekst dajte vrijednost imena i vrstu unosa i dodajte dugme za slanje da biste „SUBMIT“poslali odgovor.
  • Kreirajte dugme 'RESET' za resetiranje 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 nastaje pri upravljanju WiFi vjerodajnicama. Iako za to imamo WiFiMulti biblioteku u kojoj možemo dati više SSID -ova i lozinki uređaju, a uređaj će se povezati s dostupnom mrežom. Ali, šta ako dostupna mreža nije na WiFiMulti listi. 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 je smještena na statičkoj IP ili DHCP IP adresi koju je odabrao korisnik sa zaštitnog 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 vašeg lokalnog WiFi -a u polja za unos, Unesite UbiDot ID tokena i unesite SUBMIT
  • Ove vjerodajnice se spremaju u ESPROM ESP32
  • Nakon 60 sekundi uređaj će se automatski prekinuti s pristupnom tačkom
  • Sljedeći put kada uključite uređaj, korisnik ne mora slijediti ovu proceduru, uređaj će automatski preuzeti korisničke vjerodajnice iz 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 umjesto tog zahtjeva i odgovora. Brži je i pouzdaniji od HTTP -a. Ovo funkcionira na sljedeći način.

  • Koristimo Planer zadataka za planiranje zadatka poput preuzimanja 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 radi 1 sekundu dok ne dosegne vremensko ograničenje od 10 sekundi

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

  • Kada Task2 istekne vremensko ograničenje Zadatak 1 je ponovo omogućen, a Task2 onemogućen. Ovdje opet dobivamo ažuriranu vrijednost i proces se nastavlja.

Očitavanje podataka senzora I2C

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

uint8_t podaci [29];

podaci [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 (); kašnjenje (1); } if (data [15] == 0x7F) /////// da provjerite jesu li prijemni podaci tačni {if (data [22] == 1) //////// provjerite tip senzora tacno je {

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 na UbiDots MQTT API

Uključite datoteku zaglavlja za MQTT proces

#include

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čki teret [100]; char tema [150];

// kreiranje varijable za spremanje ID -a tokena

String tokenId;

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

#define VARIABLE_LABEL_TEMPF "tempF" // Dodjeljivanje 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": {vrijednost: "tempData"}}

sprintf (topic1, "%s", ""); sprintf (topic1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf (korisni teret, "%s", ""); // čisti korisnički teret sprintf (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šti kod

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

Krediti

  • ncd ESP32 ploča za razbijanje.
  • ncd Bežični senzori za temperaturu i vlažnost.
  • pubsubclient
  • UbiDots
  • Planer zadataka

Preporučuje se: