Съдържание:
- Стъпка 1: Спецификация на хардуера и софтуера
- Стъпка 2: Безжични сензори за налягане и температура
- Стъпка 3: Свързване към WiFi
- Стъпка 4: Настройка на UbiDots на ESP32
- Стъпка 5: Публикуване на показанията на сензорите в UbiDots
- Стъпка 6: Визуализиране на данните
- Стъпка 7: Общ код
Видео: Публикуване на данни за безжичен сензор за налягане с помощта на MQTT: 7 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:52
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 и да задържим курсора на мишката през настройките на IP. За подробно представяне на портала за задържане можете да преминете през следните инструкции.
Порталът за задържане ни дава възможност да избираме между статични и DHCP настройки. Просто въведете идентификационните данни като Static IP, Subnet Mask, gateway и Wireless Sensor Gateway ще бъдат конфигурирани на този IP.
Хоства се уеб страница, където има списък с наличните WiFi мрежи и RSSI. Изберете WiFi мрежата и паролата и въведете submit. Идентификационните данни ще бъдат записани в EEPROM, а настройката за IP ще бъде запазена в SPIFFS. Повече за това може да се намери в тази инструкция.
Стъпка 4: Настройка на 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
Създайте променливи за съхраняване на различни сензорни данни и създайте променлива 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
- Планировчик на задачи
Препоръчано:
Изпращане на данни от безжичен сензор за температура и влажност в Excel: 34 стъпки
Изпращане на данни от безжичен сензор за температура и влажност в Excel: Тук използваме сензора за температура и влажност на NCD, но стъпките остават равни за всеки един от ncd продуктите, така че ако имате други безжични сензори за ncd, можете да наблюдавате освен. Чрез спирането на този текст трябва да
Измерване на количествата вода с помощта на сензор за налягане: 5 стъпки
Измерване на количествата вода с помощта на сензор за налягане: Сензор за налягане е използван за измерване на количеството вода в резервоара
Изпращане на данни от-IOT-безжичен-сензор за температура и влажност-към-MySQL: 41 стъпки
Изпращане на данни от-IOT-безжичен сензор за температура и влажност-към-MySQL: Представяне на сензора за температура и влажност на IoT на NCD за дълги разстояния Разполагащ с обхват до 28 мили и безжична мрежова архитектура, този сензор предава данни за влажност (± 1,7%) и температура (± 0,3 ° C) на определени от потребителя интервали, спящ
UbiDots-Свързване на ESP32 и публикуване на данни от множество сензори: 6 стъпки
UbiDots-Свързване на ESP32 и публикуване на множество сензорни данни: ESP32 и ESP 8266 са много познати SoC в областта на IoT. Това са нещо като благодат за IoT проектите. ESP 32 е устройство с интегриран WiFi и BLE. Просто дайте своя SSID, парола и IP конфигурации и интегрирайте нещата в
Визуализиране на данни за безжичен сензор с помощта на Google Charts: 6 стъпки
Визуализиране на данни от безжичния сензор с помощта на Google Charts: Прогнозният анализ на машините е много необходим, за да се сведе до минимум престоят на машината. Редовните проверки помагат за удължаване на работното време на машината и от своя страна подобряват нейната устойчивост на повреди. Безжичен сензор за вибрации и температура