Съдържание:

Публикуване на данни за безжичен сензор за налягане с помощта на MQTT: 7 стъпки
Публикуване на данни за безжичен сензор за налягане с помощта на MQTT: 7 стъпки

Видео: Публикуване на данни за безжичен сензор за налягане с помощта на MQTT: 7 стъпки

Видео: Публикуване на данни за безжичен сензор за налягане с помощта на MQTT: 7 стъпки
Видео: Aqara E1 zigbee - умный выключатель для круглого подрозетника, интеграция в Home Assistant 2024, Ноември
Anonim
Публикуване на данни за безжичен сензор за налягане с помощта на MQTT
Публикуване на данни за безжичен сензор за налягане с помощта на MQTT

ESP32 и ESP 8266 са много познати SoC в областта на IoT. Това е нещо като благодат за IoT проектите. ESP 32 е устройство с интегриран WiFi и BLE. Просто дайте вашите SSID, парола и IP конфигурации и интегрирайте нещата в облака. Тук, в тази инструкция, ще разгледаме някои от основните условия на IoT като IoT платформа, MQTT, Captive портали и т.н. Така че нека да преминем през него

  • Архитектурата на IoT с много прости думи се състои от вградено устройство и IoT платформа за поставяне на устройството в облака. Тук използваме UbiDots IoT платформата за визуализиране на сензорните данни.
  • Управлението на IP настройките и потребителските идентификационни данни може да бъде главоболие за потребителя. Ами ако потребителят иска да промени идентификационните данни за WiFi? Ами ако потребителят иска да смени настройките за DHCP/статичен IP? Мигането на ESP32 всеки път не е надеждно и дори не е решение на тези проблеми. Така че ще преминем през портала за задържане, за да запазим идентификационните данни за WiFi и други конфигурации.
  • MQTT сега се превръща в много често срещан термин в света на IoT. той е надминал заявките и отговорите (HTTP) от Publish and Subscribe поради бързата, здрава и чиста архитектура.

Тук, в тази инструкция, ще демонстрираме.

  • Предоставяне на идентификационни данни за WiFi и MQTT чрез Captive Portal.
  • Публикуване и абониране на множество сензорни данни за UbiDots.
  • Четене на данните от сензора от безжичния сензор за налягане и температура
  • Хостинг на уеб формуляр от ESP32.
  • Четене и писане от SPIFFS ESP32.

Стъпка 1: Спецификация на хардуера и софтуера

Спецификация на хардуера

  • ESP32 WiFi/BLE
  • Безжичен сензор за налягане и температура

Спецификация на софтуера

  • Arduino IDE
  • XCTU
  • Помощна програма Labview

Стъпка 2: Безжични сензори за налягане и температура

Безжични сензори за налягане и температура
Безжични сензори за налягане и температура
Безжични сензори за налягане и температура
Безжични сензори за налягане и температура
Безжични сензори за налягане и температура
Безжични сензори за налягане и температура

Характеристика

  • Индустриален сензор за безжичен датчик за налягане с дълъг обхват
  • Работен диапазон 0 до 14000 mbar -40 ° до +85 ° C (-40 ° до 185 ° F)
  • Конфигурируемо вътрешно изчисление Разделителна способност на налягането 0,012 до 0,065 mbar
  • Конфигурируема вътрешна изчислителна температура Разделителна способност 0,002 до 0,012 ° C
  • Точност ± 2,5 mbar, ± 2 ° C
  • Изходи за абсолютно налягане, относително налягане и относителна надморска височина
  • Дълголинейна линия на видимост с бордова антена
  • Превъзходен обхват на LOS до 28 мили с антени с висока печалба
  • Интерфейс към Raspberry Pi, Microsoft® Azure®, Arduino и др
  • Безжична мрежова мрежа с помощта на DigiMesh®

Конфигуриране на безжичен сензор за налягане и температура с помощта на Labview Utility и XCTU

Сензорът работи в два режима

  • Режим на конфигуриране: Конфигурирайте Pan ID, забавяне, брой повторения и т.н. Повече за това е извън обхвата на тази инструкция и ще бъде обяснено в следващата инструкция.
  • Режим на изпълнение: Работим с устройството в режим на изпълнение. И за да анализираме тези стойности, използваме помощната програма Labview

Този потребителски интерфейс на Labview показва стойностите в хубави графики. Той показва текущите, както и миналите стойности. Можете да отидете на тази връзка, за да изтеглите потребителския интерфейс на Labview. щракнете върху иконата Run от менюто на целевата страница, за да преминете към режим Run.

Стъпка 3: Свързване към WiFi

Свързване към WiFi
Свързване към WiFi
Свързване към WiFi
Свързване към WiFi

Използваме портала за задържане, за да запазим идентификационните данни за WiFi и да задържим курсора на мишката през настройките на IP. За подробно представяне на портала за задържане можете да преминете през следните инструкции.

Порталът за задържане ни дава възможност да избираме между статични и DHCP настройки. Просто въведете идентификационните данни като Static IP, Subnet Mask, gateway и Wireless Sensor Gateway ще бъдат конфигурирани на този IP.

Хоства се уеб страница, където има списък с наличните WiFi мрежи и RSSI. Изберете WiFi мрежата и паролата и въведете submit. Идентификационните данни ще бъдат записани в EEPROM, а настройката за IP ще бъде запазена в SPIFFS. Повече за това може да се намери в тази инструкция.

Стъпка 4: Настройка на UbiDots на ESP32

Настройка на UbiDots на ESP32
Настройка на UbiDots на ESP32

Тук използваме безжични сензори за налягане и температура с устройството ESP 32, за да получим данните за температурата и влажността. Изпращаме данните към UbiDots, използвайки протокола MQTT. MQTT следва механизъм за публикуване и абониране, а не тази заявка и отговор. Той е по -бърз и надежден от HTTP. Това работи по следния начин.

  • Ние използваме Task Scheduler за планиране на задачата като извличане на данни от сензори, публикуване на показанията на сензора, абониране за тема MQTT.
  • Първо, включете заглавните файлове на Task Scheduler, негов екземпляр и планира задачите.
  • Планирали сме две задачи, отнасящи се до две различни контролни операции.

#define _TASK_TIMEOUT#include Scheduler ts; // --------- Tasks ------------ // Task tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL, & taskSensorDisable); Задача tWiFi (10* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable);

  • Задача 1 е за отчитане на стойността на сензора, тази задача се изпълнява за 1 секунда, докато достигне таймаута от 10 секунди.
  • Когато Task1 изтече, свързваме се с локален Wifi и MQTT брокер.
  • Сега задача 2 е активирана и деактивираме задача 1
  • Задача 2 е за публикуване на сензорните данни в UbiDots MQTT брокер Тази задача се изпълнява за 20 секунди, докато достигне таймаут от 20 секунди
  • Когато Task2 изтече времето си, Task 1 се активира отново и Task2 е деактивиран. Тук отново получаваме актуализираната стойност и процесът продължава.

Четене на данните от сензора I2C

Получаваме 29-байтова рамка от безжичните сензори за температура и влажност. Тази рамка се манипулира, за да се получат данните за действителната температура и влажност

ако (Serial1.available ())

{данни [0] = Serial1.read (); забавяне (к); if (data [0] == 0x7E) {while (! Serial1.available ()); за (i = 1; i <36; i ++) {данни = Serial1.read (); забавяне (1); } if (data [15] == 0x7F) /////// за да проверите дали данните за получаване са правилни {if (data [22] == 0x06) //////// уверете се, че типът на сензора е правилно {int cTemp = ((((данни [24]) * 256) + данни [25])); int16_t abs_pressure = (((((uint16_t) (данни [26]) << 8) | данни [27])*0,001); int rlt_pressure = ((((данни [28]) * 256) + данни [29]) * 0,001); int16_t delta_alt = (((((uint16_t) (данни [30]) << 8) | данни [31])*0,01); плаваща батерия = ((данни [18] * 256) + данни [19]); плаващо напрежение = 0,00322 * батерия; Serial.print ("Номер на сензора"); Serial.println (данни [16]); Serial.print ("Тип сензор"); Serial.println (данни [22]); Serial.print ("Версия на фърмуера"); Serial.println (данни [17]); Serial.print ("Температура в Целзий:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("Абсолютно налягане:"); Serial.println (абс. Налягане); Serial.print ("mbar"); Serial.print ("Относително налягане:"); Serial.println (rlt_pressure); Serial.print ("mbar"); Serial.print ("Delta Altitude:"); Serial.println (delta_alt); Serial.print ("метър"); Serial.print ("ADC стойност:"); Serial.println (батерия); Serial.print ("Напрежение на батерията:"); Serial.print (напрежение); Serial.println ("\ n"); if (напрежение <1) {Serial.println ("Време за смяна на батерията"); }}} else {for (i = 0; i <36; i ++) {Serial.print (data ); Serial.print (","); забавяне (1); }}}}

Свързване към UbiDots MQTT API

Включете заглавния файл за процеса MQTT

#включва

дефинирайте други променливи за MQTT като име на клиент, адрес на брокер, идентификационен номер на символа

#define TOKEN "BBFF-**********************************" // Вашият Ubidots TOKEN#define MQTT_CLIENT_NAME "****************************"

char mqttBroker = "things.ubidots.com";

полезен товар char [100]; char тема [150]; // създаване на променлива за съхраняване на токен ID на токена

Стъпка 5: Публикуване на показанията на сензорите в UbiDots

Публикуване на сензори на UbiDots
Публикуване на сензори на UbiDots

Създайте променливи за съхраняване на различни сензорни данни и създайте променлива char за съхраняване на тема

#define VARIABLE_LABEL_TEMPF "tempF" // Записване на етикета на променливата #define VARIABLE_LABEL_TEMPC "tempC" // Определяне на етикета на променливата #define VARIABLE_LABEL_BAT "bat" #дефиниране на VARIABLE_LABEL_HUMID "влажен" етикет

char topic1 [100];

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

публикуване на данните към споменатата тема за MQTT полезният товар ще изглежда като {"tempc": {стойност: "tempData"}}

sprintf (topic1, "%s", ""); sprintf (topic1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf (полезен товар, "%s", ""); // Почиства полезния товар sprintf (полезен товар, "{"%s / ":", VARIABLE_LABEL_TEMPC); // Добавя стойността sprintf (полезен товар, "%s {" стойност / ":%s}", полезен товар, str_cTemp); // Добавя стойността sprintf (полезен товар, "%s}", полезен товар); // Затваря скобите на речника Serial.println (полезен товар); Serial.println (client.publish (topic1, полезен товар)? "Published": "notpublished"); // Направете същото и за друга тема

client.publish () публикува данните в UbiDots

Стъпка 6: Визуализиране на данните

Визуализиране на данните
Визуализиране на данните
  • Отидете на Ubidots и влезте в профила си.
  • Придвижете се до таблото за управление от раздела Данни, посочен в горната част.
  • Сега щракнете върху иконата "+", за да добавите новите джаджи.
  • Изберете приспособление от списъка и добавете променлива и устройства.
  • Данните от сензора могат да се визуализират на таблото за управление, като се използват различни приспособления.

Стъпка 7: Общ код

Over кодът за HTML и ESP32 може да бъде намерен в това хранилище на GitHub.

Кредити

  • ncd ESP32 пробивна платка.
  • ncd безжични сензори за налягане и температура
  • pubsubclient
  • UbiDots
  • Планировчик на задачи

Препоръчано: