Sadržaj:

Objavljivanje podataka o bežičnom osjetniku tlaka pomoću MQTT -a: 7 koraka
Objavljivanje podataka o bežičnom osjetniku tlaka pomoću MQTT -a: 7 koraka

Video: Objavljivanje podataka o bežičnom osjetniku tlaka pomoću MQTT -a: 7 koraka

Video: Objavljivanje podataka o bežičnom osjetniku tlaka pomoću MQTT -a: 7 koraka
Video: Kako popraviti da nije registrovan na mreži Samsungu | Rješavanje problema glasovnim pozivima mreži 2024, Studeni
Anonim
Objavljivanje podataka o bežičnom osjetniku tlaka pomoću MQTT -a
Objavljivanje podataka o bežičnom osjetniku tlaka pomoću MQTT -a

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čnog osjetnika tlaka i temperature
  • Hosting web obrasca s ESP32.
  • Čitanje i pisanje s SPIFFS ESP32.

Korak 1: Specifikacija hardvera i softvera

Specifikacija hardvera

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

Specifikacije softvera

  • Arduino IDE
  • XCTU
  • Labview Utility

Korak 2: Bežični osjetnici tlaka i temperature

Bežični senzori tlaka i temperature
Bežični senzori tlaka i temperature
Bežični senzori tlaka i temperature
Bežični senzori tlaka i temperature
Bežični senzori tlaka i temperature
Bežični senzori tlaka i temperature

Značajke

  • Bežični osjetnik temperature tlaka industrijskog stupnja za velike udaljenosti
  • Radni raspon 0 do 14000 mbar -40 ° do +85 ° C (-40 ° do 185 ° F)
  • Podesiva rezolucija unutarnjeg proračuna tlaka 0,012 do 0,065 mbar
  • Interna proračunska temperaturna rezolucija koja se može konfigurirati 0,002 do 0,012 ° C
  • Točnost ± 2,5 mbar, ± 2 ° C
  • Izlazi apsolutnog tlaka, relativnog tlaka i relativne promjene visine
  • Domet do daljine 2 milje s 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 osjetnika tlaka 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 sučelja Labview. kliknite ikonu Pokreni na izborniku 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

Koristimo zarobljeni portal za spremanje vjerodajnica za WiFi i lebdenje kroz postavke IP -a. 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 tome 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 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 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 traje 1 sekundu dok ne dosegne vremensko ograničenje 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

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 (); odgoda (1); } if (data [15] == 0x7F) /////// da provjerite jesu li primljeni podaci točni {if (data [22] == 0x06) //////// provjerite vrstu senzora je točan {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]); plovni 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:"); Serijski.ispis (cTemp); Serial.println ("C"); Serial.print ("Apsolutni tlak:"); Serial.println (aps_pritisak); Serial.print ("mbar"); Serial.print ("Relativni tlak:"); Serial.println (rlt_pritisak); 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:"); Serijski.ispis (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 (","); odgoda (1); }}}}

Povezivanje s UbiDots MQTT API

Uključite datoteku zaglavlja za proces MQTT

#uključi

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]; // stvoriti varijablu za pohranu tokena ID tokena

Korak 5: Objavljivanje očitanja senzora na UbiDots

Objavljivanje očitanja senzora na UbiDotsu
Objavljivanje očitanja senzora na UbiDotsu

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 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ć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 senzori tlaka i temperature
  • pubsubclient
  • UbiDots
  • Planer zadataka

Preporučeni: