Sadržaj:

Objavljivanje podataka bežičnog senzora pritiska pomoću MQTT: 7 koraka
Objavljivanje podataka bežičnog senzora pritiska pomoću MQTT: 7 koraka

Video: Objavljivanje podataka bežičnog senzora pritiska pomoću MQTT: 7 koraka

Video: Objavljivanje podataka bežičnog senzora pritiska pomoću MQTT: 7 koraka
Video: Ako imate iPhone, OVO MORATE ISPROBATI! 2024, Juli
Anonim
Objavljivanje podataka o bežičnom senzoru pritiska pomoću MQTT -a
Objavljivanje podataka o bežičnom senzoru pritiska pomoću MQTT -a

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 sa bežičnog senzora pritiska i temperature
  • Hostovanje web obrasca sa ESP32.
  • Čitanje i pisanje sa SPIFFS ESP32.

Korak 1: Specifikacija hardvera i softvera

Hardverske specifikacije

  • ESP32 WiFi/BLE
  • Bežični senzor pritiska i temperature

Specifikacije softvera

  • Arduino IDE
  • XCTU
  • Labview Utility

Korak 2: Bežični senzori pritiska i temperature

Bežični senzori pritiska i temperature
Bežični senzori pritiska i temperature
Bežični senzori pritiska i temperature
Bežični senzori pritiska i temperature
Bežični senzori pritiska i temperature
Bežični senzori pritiska i temperature

Karakteristike

  • Industrijski senzor za bežični temperaturni osjetnik za velike udaljenosti
  • Radni opseg 0 do 14000 mbar -40 ° do +85 ° C (-40 ° do 185 ° F)
  • Podesiva rezolucija unutrašnjeg proračuna pritiska 0,012 do 0,065 mbar
  • Podesiva interna kalkulacija Temperaturna rezolucija 0,002 do 0,012 ° C
  • Tačnost ± 2,5 mbar, ± 2 ° C
  • Izlazi apsolutnog pritiska, relativnog pritiska i relativne nadmorske visine
  • Domet do daljine od 2 milje sa antenom na vozilu
  • Vrhunski LOS raspon do 28 milja s visoko pojačanim antenama
  • Sučelje za Raspberry Pi, Microsoft® Azure®, Arduino i još mnogo toga
  • Bežično mrežno umrežavanje pomoću DigiMesh® -a

Konfiguriranje bežičnog senzora pritiska i temperature pomoću Labview Utility -a i XCTU -a

Senzor radi u dva načina rada

  • Način konfiguracije: Konfigurirajte Pan ID, kašnjenje, broj pokušaja itd. Više o ovome izlazi iz okvira ovog uputstva i bit će objašnjeno u sljedećim uputama.
  • Način rada: Uređaj pokrećemo u načinu rada. Za analizu ovih vrijednosti koristimo Labview Utility

Ovo korisničko sučelje Labview prikazuje vrijednosti u lijepim grafikonima. Prikazuje trenutne i prošle vrijednosti. Možete otići na ovu vezu za preuzimanje korisničkog interfejsa Labview. kliknite na ikonu Pokreni u meniju odredišne stranice da biste prešli u način rada.

Korak 3: Povezivanje na WiFi

Povezivanje na WiFi
Povezivanje na WiFi
Povezivanje na WiFi
Povezivanje na WiFi

Zaštitni portal koristimo za spremanje WiFi vjerodajnica i za kretanje kroz IP postavke. Za detaljan uvod na zarobljeničkom portalu možete proći kroz sljedeće upute.

Zaštitni portal daje nam mogućnost izbora između statičkih i DHCP postavki. Samo unesite vjerodajnice poput statičkog IP -a, maske podmreže, pristupnika i bežični pristupnik senzora će se konfigurirati na tom IP -u.

Hostira se web stranica na kojoj se prikazuje popis dostupnih WiFi mreža i RSSI. Odaberite WiFi mrežu i lozinku i unesite submit. Vjerodajnice će se spremiti u EEPROM, a postavka IP -a u SPIFFS. Više o ovome možete pronaći u ovom uputstvu.

Korak 4: Postavljanje UbiDots -a na ESP32

Postavljanje UbiDots -a na ESP32
Postavljanje UbiDots -a na ESP32

Ovdje koristimo bežične senzore tlaka i temperature 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 Scheduler 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

if (Serial1.available ())

{data [0] = Serial1.read (); kašnjenje (k); if (data [0] == 0x7E) {while (! Serial1.available ()); za (i = 1; i <36; i ++) {podaci = Serial1.read (); kašnjenje (1); } if (data [15] == 0x7F) /////// za provjeru ispravnosti prijemnih podataka {if (data [22] == 0x06) //////// provjerite tip senzora je ispravno {int cTemp = ((((podaci [24]) * 256) + podaci [25])); int16_t abs_pressure = (((((uint16_t) (podaci [26]) << 8) | podaci [27])*0,001); int rlt_pressure = ((((podaci [28]) * 256) + podaci [29]) * 0,001); int16_t delta_alt = (((((uint16_t) (podaci [30]) << 8) | podaci [31])*0,01); plovna baterija = ((podaci [18] * 256) + podaci [19]); plivajući napon = 0,00322 * baterija; Serial.print ("Broj senzora"); Serial.println (podaci [16]); Serial.print ("Tip senzora"); Serial.println (podaci [22]); Serial.print ("Verzija firmvera"); Serial.println (podaci [17]); Serial.print ("Temperatura u Celzijusima:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("Apsolutni pritisak:"); Serial.println (aps_pritisak); Serial.print ("mbar"); Serial.print ("Relativni pritisak:"); Serial.println (rlt_pressure); Serial.print ("mbar"); Serial.print ("Delta Altitude:"); Serial.println (delta_alt); Serial.print ("mjerač"); Serial.print ("ADC vrijednost:"); Serial.println (baterija); Serial.print ("Napon baterije:"); Serial.print (napon); Serial.println ("\ n"); if (napon <1) {Serial.println ("Vrijeme za zamjenu baterije"); }}} else {for (i = 0; i <36; i ++) {Serial.print (data ); Serial.print (","); kašnjenje (1); }}}}

Povezivanje na UbiDots MQTT API

Uključite datoteku zaglavlja za MQTT proces

#include

definirati druge varijable za MQTT poput imena klijenta, adrese brokera, ID tokena

#define TOKEN "BBFF-**********************************" // Your Ubidots TOKEN#define MQTT_CLIENT_NAME "****************************"

char mqttBroker = "things.ubidots.com";

nosivost char [100]; char tema [150]; // kreiramo varijablu za pohranu tokena ID tokena

Korak 5: Objavljivanje očitanja senzora na UbiDots

Objavljivanje očitanja senzora na UbiDots -u
Objavljivanje očitanja senzora na UbiDots -u

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

#define VARIABLE_LABEL_TEMPF "tempF" // Dodjeljivanje oznake varijable #definiranje VARIABLE_LABEL_TEMPC "tempC" // Određivanje oznake varijable #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "label" vlažno "//

char topic1 [100];

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

objaviti podatke na spomenutu temu MQTT 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 6: 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 7: 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 pritiska i temperature
  • pubsubclient
  • UbiDots
  • Planer zadataka

Preporučuje se: