Оглавление:

Публикация данных беспроводного датчика давления с помощью MQTT: 7 шагов
Публикация данных беспроводного датчика давления с помощью MQTT: 7 шагов

Видео: Публикация данных беспроводного датчика давления с помощью MQTT: 7 шагов

Видео: Публикация данных беспроводного датчика давления с помощью MQTT: 7 шагов
Видео: как передать температуру на сервер по WIFI и сохранить температуру в базе данных. 2024, Ноябрь
Anonim
Публикация данных беспроводного датчика давления с помощью MQTT
Публикация данных беспроводного датчика давления с помощью MQTT

ESP32 и ESP 8266 - очень знакомые SoC в области Интернета вещей. Это своего рода благо для проектов Интернета вещей. ESP 32 - это устройство со встроенным Wi-Fi и BLE. Просто укажите свой SSID, пароль и конфигурации IP и интегрируйте все в облако. Здесь, в этом руководстве, мы обсудим некоторые из основных терминов IoT, таких как платформа IoT, MQTT, Captive Portals и т. Д. Итак, давайте рассмотрим это.

  • Проще говоря, IoT-архитектура состоит из встроенного устройства и платформы IoT для размещения устройства в облаке. Здесь мы используем платформу UbiDots IoT для визуализации данных датчиков.
  • Управление настройками IP и учетными данными пользователя может быть головной болью для пользователя. Что делать, если пользователь хочет изменить учетные данные WiFi? Что делать, если пользователь хочет переключить настройки DHCP / статического IP? Постоянная перепрошивка ESP32 ненадежна и даже не является решением этих проблем. Итак, мы пройдем через портал авторизации, чтобы сохранить учетные данные WiFi и другие конфигурации.
  • MQTT теперь становится очень распространенным термином в мире Интернета вещей. он превзошел запросы и ответы (HTTP) при публикации и подписке из-за быстрой, надежной и экономичной архитектуры.

Здесь, в этом руководстве, мы собираемся продемонстрировать.

  • Предоставление учетных данных WiFi и MQTT с помощью Captive Portal.
  • Публикация и подписка нескольких данных датчиков на UbiDots.
  • Считывание данных датчика с беспроводного датчика давления и температуры
  • Размещение веб-формы из ESP32.
  • Чтение и запись из SPIFFS ESP32.

Шаг 1. Спецификация оборудования и программного обеспечения

Спецификация оборудования

  • ESP32 WiFi / BLE
  • Беспроводной датчик давления и температуры

Спецификация программного обеспечения

  • IDE Arduino
  • XCTU
  • Утилита Labview

Шаг 2: Беспроводные датчики давления и температуры

Беспроводные датчики давления и температуры
Беспроводные датчики давления и температуры
Беспроводные датчики давления и температуры
Беспроводные датчики давления и температуры
Беспроводные датчики давления и температуры
Беспроводные датчики давления и температуры

Функции

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

Настройка беспроводного датчика давления и температуры с помощью Labview Utility и XCTU

Датчик работает в двух режимах

  • Режим конфигурации: настройте идентификатор панорамирования, задержку, количество повторных попыток и т. Д. Более подробная информация об этом выходит за рамки данной инструкции и будет объяснена в следующей инструкции.
  • Рабочий режим: мы запускаем устройство в рабочем режиме. И для анализа этих значений мы используем служебную программу Labview.

Этот пользовательский интерфейс Labview показывает значения в красивых графиках. Он показывает как текущие, так и прошлые значения. Вы можете перейти по этой ссылке, чтобы загрузить пользовательский интерфейс Labview. щелкните значок «Выполнить» в меню целевой страницы, чтобы перейти в режим выполнения.

Шаг 3. Подключение к Wi-Fi

Подключение к Wi-Fi
Подключение к Wi-Fi
Подключение к Wi-Fi
Подключение к Wi-Fi

Мы используем захватывающий портал для сохранения учетных данных WiFi и для наведения курсора на настройки IP. Для подробного ознакомления с адаптивным порталом вы можете ознакомиться со следующими инструкциями.

Адаптивный портал дает нам возможность выбирать между статическими настройками и настройками DHCP. Просто введите учетные данные, такие как статический IP-адрес, маска подсети, шлюз, и шлюз беспроводного датчика будет настроен на этом IP-адресе.

Размещается веб-страница, на которой отображается список доступных сетей Wi-Fi и RSSI. Выберите сеть Wi-Fi и пароль и введите "Отправить". Учетные данные будут сохранены в EEPROM, а настройки IP будут сохранены в SPIFFS. Подробнее об этом можно прочитать в этой инструкции.

Шаг 4: Настройка UbiDots на ESP32

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

Здесь мы используем беспроводные датчики давления и температуры с устройством ESP 32 для получения данных о температуре и влажности. Мы отправляем данные в UbiDots по протоколу MQTT. MQTT следует за механизмом публикации и подписки, а не за запросом и ответом. Это быстрее и надежнее, чем HTTP. Это работает следующим образом.

  • Мы используем планировщик задач для планирования таких задач, как получение данных с датчиков, публикация показаний датчиков, подписка на тему MQTT.
  • Во-первых, включите файлы заголовков планировщика заданий, его экземпляр и составьте расписание задач.
  • Мы запланировали две задачи, относящиеся к двум различным операциям контроля.

#define _TASK_TIMEOUT # include Scheduler ts; // --------- Задачи ------------ // Задача 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 достигает своего тайм-аута, мы подключаемся к локальному Wi-Fi и брокеру MQTT.
  • Теперь задача 2 включена, и мы отключаем задачу 1.
  • Задача 2 предназначена для публикации данных датчика в брокере UbiDots MQTT. Эта задача выполняется в течение 20 секунд, пока не истечет время ожидания в 20 секунд.
  • Когда Task2 достигает своего тайм-аута, Task 1 снова включается, а Task2 отключается. Здесь мы снова получаем обновленное значение, и процесс продолжается.

Чтение данных датчика I2C

Мы получаем 29-байтовый фрейм от беспроводных датчиков температуры и влажности. Этот кадр используется для получения фактических данных о температуре и влажности

если (Serial1.available ())

{данные [0] = Serial1.read (); задержка (k); если (данные [0] == 0x7E) {в то время как (! Serial1.available ()); для (я = 1; я <36; я ++) {данные [я] = 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 (abs_pressure); Serial.print («мбар»); Serial.print («Относительное давление:»); Serial.println (rlt_pressure); Serial.print («мбар»); Serial.print ("Дельта-высота:"); Serial.println (delta_alt); Serial.print («метр»); Serial.print ("Значение АЦП:"); Serial.println (аккумулятор); Serial.print («Напряжение аккумулятора:»); Serial.print (напряжение); Serial.println ("\ п"); if (Voltage <1) {Serial.println («Пора заменить батарею»); }}} else {для (я = 0; я <36; я ++) {Serial.print (данные [я]); Serial.print (","); задержка (1); }}}}

Подключение к UbiDots MQTT API

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

#включают

определить другие переменные для MQTT, такие как имя клиента, адрес брокера, идентификатор токена

#define TOKEN "BBFF - ***********************************" // Ваш ЖЕТОН Ubidots # определить MQTT_CLIENT_NAME "****************************"

char mqttBroker = "things.ubidots.com";

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

Шаг 5: Публикация показаний датчика в UbiDots

Публикация показаний датчиков в UbiDots
Публикация показаний датчиков в UbiDots

Создайте переменные для хранения различных данных датчиков и создайте символьную переменную для хранения темы

#define VARIABLE_LABEL_TEMPF "tempF" // Назначение метки переменной # define VARIABLE_LABEL_TEMPC "tempC" // Назначение метки переменной #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "влажная метка" //

char topic1 [100];

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

опубликуйте данные в упомянутой теме MQTT, полезная нагрузка будет иметь вид {"tempc": {value: "tempData"}}

sprintf (topic1, "% s", ""); sprintf (topic1, «% s% s», «/v1.6/devices/», DEVICE_LABEL); sprintf (полезная нагрузка, "% s", ""); // Очищает полезную нагрузку sprintf (payload, "{"% s / ":", VARIABLE_LABEL_TEMPC); // Добавляет значение sprintf (payload, "% s {" value / ":% s}", payload, str_cTemp); // Добавляет значение sprintf (payload, "% s}", payload); // Закрываем словарные скобки Serial.println (payload); Serial.println (client.publish (topic1, payload)? "Опубликовано": "не опубликовано"); // Сделайте то же самое и для другой темы

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

Шаг 6: Визуализация данных

Визуализация данных
Визуализация данных
  • Зайдите в Ubidots и войдите в свою учетную запись.
  • Перейдите на панель управления с вкладки «Данные», расположенной вверху.
  • Теперь щелкните значок «+», чтобы добавить новые виджеты.
  • Выберите виджет из списка и добавьте переменную и устройства.
  • Данные датчиков можно визуализировать на панели управления с помощью различных виджетов.

Шаг 7: Общий код

Код Over для HTML и ESP32 можно найти в этом репозитории GitHub.

Кредиты

  • Коммутационная плата ncd ESP32.
  • Беспроводные датчики давления и температуры ncd
  • pubsubclient
  • UbiDots
  • Планировщик заданий

Рекомендуемые: