Satura rādītājs:

Bezvadu spiediena sensora datu publicēšana, izmantojot MQTT: 7 soļi
Bezvadu spiediena sensora datu publicēšana, izmantojot MQTT: 7 soļi

Video: Bezvadu spiediena sensora datu publicēšana, izmantojot MQTT: 7 soļi

Video: Bezvadu spiediena sensora datu publicēšana, izmantojot MQTT: 7 soļi
Video: Aqara E1 zigbee - умный выключатель для круглого подрозетника, интеграция в Home Assistant 2024, Novembris
Anonim
Bezvadu spiediena sensora datu publicēšana, izmantojot MQTT
Bezvadu spiediena sensora datu publicēšana, izmantojot MQTT

ESP32 un ESP 8266 ir ļoti pazīstami SoC IoT jomā. Tie ir sava veida svētība IoT projektiem. ESP 32 ir ierīce ar integrētu WiFi un BLE. Vienkārši norādiet savu SSID, paroli un IP konfigurāciju un integrējiet lietas mākonī. Šeit, šajā pamācībā, mēs pārdomāsim dažus IoT pamatnoteikumus, piemēram, IoT platformu, MQTT, nebrīves portālus utt. Tāpēc ļaujiet mums to apskatīt

  • IoT arhitektūra ļoti vienkāršos vārdos sastāv no iegultas ierīces un IoT platformas, lai ievietotu ierīci mākonī. Šeit mēs izmantojam UbiDots IoT platformu, lai vizualizētu sensoru datus.
  • IP iestatījumu un lietotāja akreditācijas datu pārvaldība lietotājam var sagādāt galvassāpes. Ko darīt, ja lietotājs vēlas mainīt WiFi akreditācijas datus? Ko darīt, ja lietotājs vēlas mainīt DHCP/statiskā IP iestatījumus? ESP32 mirgošana katru reizi nav uzticama un pat nav risinājums šīm problēmām. Tāpēc mēs apmeklēsim nebrīvē pieejamo portālu, lai saglabātu WiFi akreditācijas datus un citas konfigurācijas.
  • MQTT tagad kļūst par ļoti izplatītu terminu IoT pasaulē. tā ir pārsniegusi publicēšanas un abonēšanas pieprasījumus un atbildes (HTTP), pateicoties ātrai, stabilai un vienkāršai arhitektūrai.

Šeit, šajā pamācībā, mēs demonstrēsim.

  • WiFi un MQTT akreditācijas datu piešķiršana, izmantojot Captive Portal.
  • Vairāku sensoru datu publicēšana un abonēšana UbiDots.
  • Sensora datu nolasīšana no bezvadu spiediena un temperatūras sensora
  • Tīmekļa veidlapas mitināšana no ESP32.
  • Lasīšana un rakstīšana no SPIFFS ESP32.

1. darbība. Aparatūras un programmatūras specifikācija

Aparatūras specifikācija

  • ESP32 WiFi/BLE
  • Bezvadu spiediena un temperatūras sensors

Programmatūras specifikācija

  • Arduino IDE
  • XCTU
  • Labview utilīta

2. darbība. Bezvadu spiediena un temperatūras sensori

Bezvadu spiediena un temperatūras sensori
Bezvadu spiediena un temperatūras sensori
Bezvadu spiediena un temperatūras sensori
Bezvadu spiediena un temperatūras sensori
Bezvadu spiediena un temperatūras sensori
Bezvadu spiediena un temperatūras sensori

Iespējas

  • Rūpnieciskās klases sensora bezvadu spiediena temperatūras sensors
  • Darbības diapazons no 0 līdz 14000 mbar -40 ° līdz +85 ° C (-40 ° līdz 185 ° F)
  • Konfigurējama iekšējā aprēķina spiediena izšķirtspēja no 0,012 līdz 0,065 mbar
  • Konfigurējama iekšējā aprēķina temperatūras izšķirtspēja no 0,002 līdz 0,012 ° C
  • Precizitāte ± 2,5 mbar, ± 2 ° C
  • Absolūtā spiediena, relatīvā spiediena un relatīvā augstuma maiņas rezultāti
  • 2 jūdžu redzamības diapazons ar borta antenu
  • Izcils LOS diapazons līdz 28 jūdzēm ar augstas stiprības antenām
  • Saskarne ar Raspberry Pi, Microsoft® Azure®, Arduino un citiem
  • Bezvadu tīkla tīklošana, izmantojot DigiMesh®

Bezvadu spiediena un temperatūras sensora konfigurēšana, izmantojot Labview Utility un XCTU

Sensors darbojas divos režīmos

  • Konfigurācijas režīms: konfigurējiet Pan ID, aizkavi, atkārtotu mēģinājumu skaitu utt. Vairāk par šo instrukciju nav ietverta un tiks izskaidrota nākamajā pamācībā.
  • Palaist režīmu: Mēs darbinām ierīci darbības režīmā. Un, lai analizētu šīs vērtības, mēs izmantojam Labview Utility

Šis Labview lietotāja interfeiss parāda vērtības jaukos grafikos. Tas parāda pašreizējās, kā arī pagātnes vērtības. Varat lejupielādēt Labview lietotāja saskarni, noklikšķinot uz šīs saites. lai nokļūtu darbības režīmā, galvenās lapas izvēlnē noklikšķiniet uz ikonas Palaist.

3. darbība: izveidojiet savienojumu ar WiFi

Savienojuma izveide ar WiFi
Savienojuma izveide ar WiFi
Savienojuma izveide ar WiFi
Savienojuma izveide ar WiFi

Mēs izmantojam nebrīvē pieejamo portālu, lai saglabātu WiFi akreditācijas datus un virzītu kursoru, izmantojot IP iestatījumus. Lai iegūtu detalizētu ievadu sagūstītajā portālā, varat izlasīt tālāk sniegtos norādījumus.

Fiksētais portāls dod mums iespēju izvēlēties starp statiskajiem un DHCP iestatījumiem. Vienkārši ievadiet akreditācijas datus, piemēram, statisko IP, apakštīkla masku, vārteju un bezvadu sensora vārteju, kas tiks konfigurēta šajā IP.

Tiek mitināta tīmekļa lapa, kurā ir saraksts ar pieejamajiem WiFi tīkliem un RSSI. Atlasiet WiFi tīklu un paroli un ievadiet Iesniegt. Akreditācijas dati tiks saglabāti EEPROM, un IP iestatījums tiks saglabāts SPIFFS. Vairāk par to var atrast šajā pamācībā.

4. darbība. UbiDots iestatīšana uz ESP32

UbiDots iestatīšana ESP32
UbiDots iestatīšana ESP32

Šeit mēs izmantojam bezvadu spiediena un temperatūras sensorus ar ierīci ESP 32, lai iegūtu temperatūras un mitruma datus. Mēs nosūtām datus uz UbiDots, izmantojot MQTT protokolu. MQTT ievēro publicēšanas un abonēšanas mehānismu, nevis šo pieprasījumu un atbildi. Tas ir ātrāks un uzticamāks par HTTP. Tas darbojas šādi.

  • Mēs izmantojam uzdevumu plānotāju, lai ieplānotu uzdevumu, piemēram, datu iegūšana no sensoriem, sensora rādījumu publicēšana, tēma MQTT abonēšana.
  • Pirmkārt, iekļaujiet uzdevumu plānotāja galvenes failus, tā instanci un plāno uzdevumus.
  • Mēs esam ieplānojuši divus uzdevumus, kas attiecas uz divām dažādām kontroles darbībām.

#define _TASK_TIMEOUT#ietver plānotāju ts; // --------- Uzdevumi ------------ // Uzdevums tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL un & taskSensorDisable); Uzdevums tWiFi (10* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL un & taskWiFiDisable);

  • 1. uzdevums ir sensora vērtības nolasīšanai, šis uzdevums darbojas 1 sekundi, līdz tiek sasniegts taimauts 10 sekundes.
  • Kad Task1 sasniedz savu laiku, mēs izveidojam savienojumu ar vietējo Wifi un MQTT brokeri.
  • Tagad 2. uzdevums ir iespējots, un mēs atspējojam 1. uzdevumu
  • 2. uzdevums ir sensoru datu publicēšana UbiDots MQTT brokerī, šis uzdevums tiek izpildīts 20 sekundes, līdz tiek sasniegts 20 sekunžu taimauts
  • Kad 2. uzdevums ir beidzies, 1. uzdevums ir atkal iespējots un 2. uzdevums ir atspējots. Arī šeit mēs iegūstam atjaunināto vērtību, un process turpinās.

I2C sensora datu nolasīšana

Mēs iegūstam 29 baitu rāmi no bezvadu temperatūras un mitruma sensoriem. Šis rāmis tiek manipulēts, lai iegūtu faktiskos temperatūras un mitruma datus

ja (Serial1.available ())

{dati [0] = Sērijas1.lasījums (); kavēšanās (k); if (dati [0] == 0x7E) {while (! Serial1.available ()); par (i = 1; i <36; i ++) {data = Serial1.read (); kavēšanās (1); } ja (dati [15] == 0x7F) /////// lai pārbaudītu, vai recesīvie dati ir pareizi {if (dati [22] == 0x06) //////// pārliecinieties, vai sensora tips ir pareizs {int cTemp = ((((dati [24]) * 256) + dati [25])); int16_t abs_pressure = (((((uint16_t) (dati [26]) << 8) | dati [27])*0,001); int rlt_spiediens = ((((dati [28]) * 256) + dati [29]) * 0,001); int16_t delta_alt = (((((uint16_t) (dati [30]) << 8) | dati [31])*0,01); pludiņa akumulators = ((dati [18] * 256) + dati [19]); pludiņa spriegums = 0,00322 * akumulators; Serial.print ("Sensora numurs"); Serial.println (dati [16]); Serial.print ("Sensora tips"); Serial.println (dati [22]); Serial.print ("Programmaparatūras versija"); Serial.println (dati [17]); Serial.print ("Temperatūra pēc Celsija:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("Absolūtais spiediens:"); Sērijas.println (abs_spiediens); Serial.print ("mbar"); Serial.print ("Relatīvais spiediens:"); Sērijas.println (rlt_spiediens); Serial.print ("mbar"); Serial.print ("Delta augstums:"); Serial.println (delta_alt); Sērijas nospiedums ("skaitītājs"); Serial.print ("ADC vērtība:"); Serial.println (akumulators); Serial.print ("Akumulatora spriegums:"); Sērijas nospiedums (spriegums); Serial.println ("\ n"); ja (spriegums <1) {Serial.println ("Laiks nomainīt akumulatoru"); }}} cits {par (i = 0; i <36; i ++) {Serial.print (dati ); Serial.print (","); kavēšanās (1); }}}}

Savienojuma izveide ar UbiDots MQTT API

Iekļaujiet galvenes failu MQTT procesam

#iekļaut

definējiet citus MQTT mainīgos, piemēram, klienta vārdu, brokera adresi, marķiera ID

#define TOKEN "BBFF-***********************************" // Jūsu Ubidots TOKEN#define MQTT_CLIENT_NAME "***************************"

char mqttBroker = "things.ubidots.com";

ogļu lietderīgā krava [100]; char tēma [150]; // izveidot mainīgo, lai saglabātu marķiera ID

5. darbība. Sensora rādījumu publicēšana UbiDots

Sensora lasījumu publicēšana UbiDots
Sensora lasījumu publicēšana UbiDots

Izveidojiet mainīgos, lai saglabātu dažādus sensoru datus, un izveidojiet char mainīgo, lai saglabātu tēmu

#define VARIABLE_LABEL_TEMPF "tempF" // Mainīgā etiķetes piešķiršana #define VARIABLE_LABEL_TEMPC "tempC" // Mainīgā etiķetes piešķiršana #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "mitrs mainīgais" // Assing

char tēma1 [100];

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

publicējiet datus minētajā MQTT tēmā, lietderīgā slodze izskatīsies šādi: "tempc": {value: "tempData"}}

sprintf (topic1, "%s", ""); sprintf (topic1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf (lietderīgā slodze, "%s", ""); // Notīra lietderīgo slodzi sprintf (lietderīgā slodze, "{"%s / ":", VARIABLE_LABEL_TEMPC); // Pievieno vērtību sprintf (lietderīgā slodze, "%s {" vērtība / ":%s}", lietderīgā slodze, str_cTemp); // Pievieno vērtību sprintf (lietderīgā slodze, "%s}", lietderīgā slodze); // Aizver vārdnīcas iekavas Serial.println (lietderīgā slodze); Serial.println (client.publish (topic1, payload)? "Published": "notpublished"); // Dariet to pašu ar citu tēmu

client.publish () publicē datus UbiDots

6. darbība: datu vizualizācija

Datu vizualizācija
Datu vizualizācija
  • Dodieties uz Ubidots un piesakieties savā kontā.
  • Augšpusē esošajā cilnē Dati dodieties uz informācijas paneli.
  • Tagad noklikšķiniet uz ikonas "+", lai pievienotu jaunos logrīkus.
  • Sarakstā atlasiet logrīku un pievienojiet mainīgo un ierīces.
  • Sensora datus var vizualizēt informācijas panelī, izmantojot dažādus logrīkus.

7. solis: vispārējais kods

HTML un ESP32 kods Over ir atrodams šajā GitHub krātuvē.

Kredīti

  • ncd ESP32 sadalīšanas panelis.
  • ncd Bezvadu spiediena un temperatūras sensori
  • kroga pasūtītājs
  • UbiDots
  • Uzdevumu plānotājs

Ieteicams: