Kazalo:

Objavljanje podatkov brezžičnega senzorja tlaka z uporabo MQTT: 7 korakov
Objavljanje podatkov brezžičnega senzorja tlaka z uporabo MQTT: 7 korakov

Video: Objavljanje podatkov brezžičnega senzorja tlaka z uporabo MQTT: 7 korakov

Video: Objavljanje podatkov brezžičnega senzorja tlaka z uporabo MQTT: 7 korakov
Video: Oljčna muha - Spremljanje in načini obvladovanja v letu 2021 2024, November
Anonim
Objavljanje podatkov brezžičnega senzorja tlaka z uporabo MQTT
Objavljanje podatkov brezžičnega senzorja tlaka z uporabo MQTT

ESP32 in ESP 8266 sta zelo znana SoC na področju interneta stvari. To je nekakšen dar za projekte IoT. ESP 32 je naprava z vgrajenim WiFi in BLE. Samo podajte svoje nastavitve SSID, geslo in IP ter stvari vključite v oblak. Tukaj, v tem navodilu, bomo razmislili o nekaterih osnovnih pogojih interneta stvari, kot so platforma IoT, MQTT, zaprti portali itd.

  • Arhitektura IoT z zelo preprostimi besedami je sestavljena iz vgrajene naprave in platforme IoT, ki napravo postavi v oblak. Tukaj uporabljamo platformo UbiDots IoT za vizualizacijo podatkov senzorja.
  • Upravljanje nastavitev IP in uporabniških poverilnic je lahko za uporabnika glavobol. Kaj pa, če želi uporabnik spremeniti poverilnice WiFi? Kaj pa, če želi uporabnik preklopiti nastavitve DHCP/Statični IP? Vsakič utripanje ESP32 ni zanesljivo in niti ni rešitev za te težave. Tako bomo šli skozi zaporni portal, da shranimo poverilnice WiFi in druge konfiguracije.
  • MQTT postaja zelo pogost izraz v svetu IoT. zaradi hitre, robustne in vitke arhitekture je presegel zahteve in odzive (HTTP) s strani Publish and Subscribe.

Tukaj v tem navodilu bomo pokazali.

  • Dajanje poverilnic za WiFi in MQTT z uporabo Captive Portal.
  • Objavljanje in naročanje več podatkov senzorjev na UbiDots.
  • Branje podatkov tipala z brezžičnega senzorja tlaka in temperature
  • Gostovanje spletnega obrazca iz ESP32.
  • Branje in pisanje iz SPIFFS ESP32.

1. korak: Specifikacije strojne in programske opreme

Specifikacije strojne opreme

  • ESP32 WiFi/BLE
  • Brezžični senzor tlaka in temperature

Specifikacije programske opreme

  • Arduino IDE
  • XCTU
  • Pripomoček Labview

Korak: Brezžični senzorji tlaka in temperature

Brezžični senzorji tlaka in temperature
Brezžični senzorji tlaka in temperature
Brezžični senzorji tlaka in temperature
Brezžični senzorji tlaka in temperature
Brezžični senzorji tlaka in temperature
Brezžični senzorji tlaka in temperature

Lastnosti

  • Industrijski senzor za dolgoročni brezžični temperaturni senzor za dolgi doseg
  • Delovno območje 0 do 14000 mbar -40 ° do +85 ° C (-40 ° do 185 ° F)
  • Nastavljiva ločljivost tlaka za notranji izračun 0,012 do 0,065 mbar
  • Nastavljiva temperaturna ločljivost za notranji izračun 0,002 do 0,012 ° C
  • Natančnost ± 2,5 mbar, ± 2 ° C
  • Absolutni tlak, relativni tlak in relativna sprememba nadmorske višine
  • Domet 2-milimetrske proge z vgrajeno anteno
  • Vrhunski doseg LOS do 28 milj z visoko ojačnimi antenami
  • Vmesnik za Raspberry Pi, Microsoft® Azure®, Arduino in drugo
  • Brezžično mrežno omrežje z uporabo DigiMesh®

Konfiguriranje brezžičnega senzorja tlaka in temperature z uporabo Labview Utility in XCTU

Senzor deluje v dveh načinih

  • Konfiguracijski način: Konfigurirajte ID Pan, zakasnitev, število poskusov itd. Več o tem presega obseg tega navodila in bo razloženo v naslednjih navodilih.
  • Način delovanja: Napravo izvajamo v načinu delovanja. Za analizo teh vrednosti uporabljamo pripomoček Labview Utility

Ta uporabniški vmesnik Labview prikazuje vrednosti v lepih grafih. Prikazuje trenutne in pretekle vrednosti. Na to povezavo lahko prenesete uporabniški vmesnik Labview. v meniju ciljne strani kliknite ikono Zaženi, da odprete način delovanja.

3. korak: Povežite se z WiFi

Povezovanje z WiFi
Povezovanje z WiFi
Povezovanje z WiFi
Povezovanje z WiFi

Portal za zaščito uporabljamo za shranjevanje poverilnic WiFi in lebdenje med nastavitvami IP. Za podroben uvod na portalu za ujetnike si oglejte naslednja navodila.

Zaporni portal nam daje možnost izbire med statičnimi in DHCP nastavitvami. Samo vnesite poverilnice, kot so statični IP, maska podomrežja, prehod in brezžični senzorski prehod bo konfiguriran na tem IP -ju.

Gostuje spletna stran, na kateri je seznam z razpoložljivimi omrežji WiFi in RSSI. Izberite omrežje WiFi in geslo ter vnesite submit. Poverilnice bodo shranjene v EEPROM, nastavitev IP pa v SPIFFS. Več o tem najdete v tem navodilu.

4. korak: Nastavitev UbiDots na ESP32

Nastavitev UbiDots na ESP32
Nastavitev UbiDots na ESP32

Tukaj uporabljamo brezžične senzorje tlaka in temperature z napravo ESP 32, da dobimo podatke o temperaturi in vlažnosti. Podatke pošiljamo na UbiDots s protokolom MQTT. MQTT sledi mehanizmu objave in naročnine in ne tej zahtevi in odgovoru. Je hitrejši in zanesljivejši od HTTP. To deluje na naslednji način.

  • Za načrtovanje naloge uporabljamo načrtovalnik opravil, na primer pridobivanje podatkov iz senzorjev, objavo odčitkov senzorjev, naročanje na temo MQTT.
  • Najprej vključite datoteke glave razporejevalnika opravil, njegov primerek in razporedi opravila.
  • Načrtovali smo dve nalogi, ki se nanašata na dve različni operaciji nadzora.

#define _TASK_TIMEOUT#include Scheduler ts; // --------- Opravila ------------ // Task tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL in & taskSensorDisable); Opravilo tWiFi (10* TASK_SECOND, TASK_FOREVER in & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable);

  • Naloga 1 je za branje vrednosti senzorja, ki traja 1 sekundo, dokler ne doseže časovne omejitve 10 sekund.
  • Ko poteče Task1, se povezujemo z lokalnim posrednikom Wifi in MQTT.
  • Zdaj je 2. naloga omogočena in onemogočamo 1.
  • Naloga 2 je za objavo podatkov senzorja posredniku UbiDots MQTT, to opravilo traja 20 sekund, dokler ne doseže časovne omejitve 20 sekund
  • Ko Task2 poteče, se 1. naloga znova omogoči, Task2 pa onemogoči. Tu spet dobivamo posodobljeno vrednost in postopek se nadaljuje.

Branje podatkov senzorja I2C

Od brezžičnih senzorjev temperature in vlažnosti dobimo 29-bajtni okvir. Ta okvir se manipulira, da dobite podatke o dejanski temperaturi in vlažnosti

če (Serial1.available ())

{podatki [0] = Serial1.read (); zamuda (k); if (podatki [0] == 0x7E) {while (! Serial1.available ()); za (i = 1; i <36; i ++) {podatki = Serial1.read (); zamuda (1); } if (data [15] == 0x7F) ///////, da preverite, ali so sprejemljivi podatki pravilni {if (data [22] == 0x06) //////// se prepričajte, da je tip senzorja je pravilen {int cTemp = ((((podatki [24]) * 256) + podatki [25])); int16_t abs_pressure = (((((uint16_t) (podatki [26]) << 8) | podatki [27])*0,001); int rlt_pressure = ((((podatki [28]) * 256) + podatki [29]) * 0,001); int16_t delta_alt = (((((uint16_t) (podatki [30]) << 8) | podatki [31])*0,01); plavajoča baterija = ((podatki [18] * 256) + podatki [19]); plovna napetost = 0,00322 * baterija; Serial.print ("Številka senzorja"); Serial.println (podatki [16]); Serial.print ("Vrsta senzorja"); Serial.println (podatki [22]); Serial.print ("Različica vdelane programske opreme"); Serial.println (podatki [17]); Serial.print ("Temperatura v Celzijusi:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("Absolutni tlak:"); Serial.println (abs_pritisk); Serial.print ("mbar"); Serial.print ("Relativni tlak:"); Serial.println (rlt_pritisk); Serial.print ("mbar"); Serial.print ("Delta Altitude:"); Serial.println (delta_alt); Serial.print ("meter"); Serial.print ("vrednost ADC:"); Serial.println (baterija); Serial.print ("Napetost akumulatorja:"); Serial.print (napetost); Serial.println ("\ n"); if (napetost <1) {Serial.println ("Čas za zamenjavo baterije"); }}} else {for (i = 0; i <36; i ++) {Serial.print (data ); Serial.print (","); zamuda (1); }}}}

Povezovanje z API -jem UbiDots MQTT

Vključite datoteko glave za postopek MQTT

#vključi

določite druge spremenljivke za MQTT, kot so ime odjemalca, naslov posrednika, ID žetona

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

char mqttBroker = "things.ubidots.com";

obremenitev char [100]; char tema [150]; // ustvari spremenljivko za shranjevanje žetona ID žetona

5. korak: objava odčitkov senzorjev v UbiDots

Objavljanje odčitkov senzorjev v UbiDots
Objavljanje odčitkov senzorjev v UbiDots

Ustvarite spremenljivke za shranjevanje različnih podatkov senzorjev in ustvarite spremenljivko char za shranjevanje teme

#define VARIABLE_LABEL_TEMPF "tempF" // Določanje oznake spremenljivke #define VARIABLE_LABEL_TEMPC "tempC" // Določanje oznake spremenljivke #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "label" humid "// Assing

char topic1 [100];

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

objavi podatke na omenjeno temo MQTT, kar bo videti kot {"tempc": {value: "tempData"}}

sprintf (topic1, "%s", ""); sprintf (tema1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf (koristna obremenitev, "%s", ""); // Počisti koristno obremenitev sprintf (koristna obremenitev, "{"%s / ":", VARIABLE_LABEL_TEMPC); // doda vrednost sprintf (koristna obremenitev, "%s {" vrednost / ":%s}", koristna obremenitev, str_cTemp); // doda vrednost sprintf (koristna obremenitev, "%s}", koristna obremenitev); // Zapira slovarske oklepaje Serial.println (koristna obremenitev); Serial.println (client.publish (topic1, koristna obremenitev)? "Objavljeno": "ni objavljeno"); // Enako storite tudi za drugo temo

client.publish () objavi podatke v UbiDots

6. korak: Vizualizacija podatkov

Vizualizacija podatkov
Vizualizacija podatkov
  • Pojdite na Ubidots in se prijavite v svoj račun.
  • Pomaknite se do nadzorne plošče na zavihku Podatki, ki je naveden na vrhu.
  • Zdaj kliknite ikono "+", da dodate nove pripomočke.
  • Izberite gradnik s seznama in dodajte spremenljivko in naprave.
  • Podatke senzorja si lahko ogledate na armaturni plošči z različnimi pripomočki.

7. korak: Splošna koda

Kodo Over za HTML in ESP32 najdete v tem skladišču GitHub.

Krediti

  • ncd ESP32 odklopna plošča.
  • ncd brezžični senzorji tlaka in temperature
  • pubsubclient
  • UbiDots
  • Načrtovalnik opravil

Priporočena: