Оглавление:

UbiDots-Подключение ESP32 и публикация данных с нескольких датчиков: 6 шагов
UbiDots-Подключение ESP32 и публикация данных с нескольких датчиков: 6 шагов

Видео: UbiDots-Подключение ESP32 и публикация данных с нескольких датчиков: 6 шагов

Видео: UbiDots-Подключение ESP32 и публикация данных с нескольких датчиков: 6 шагов
Видео: esp32 работа с двумя ядрами убирает тормоза основного алгоритма при разрыве интернета и подключения 2024, Июль
Anonim
UbiDots-Подключение ESP32 и публикация данных с нескольких датчиков
UbiDots-Подключение ESP32 и публикация данных с нескольких датчиков

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

Шаг 2: Создание адаптивного портала

Создание адаптивного портала
Создание адаптивного портала
Создание адаптивного портала
Создание адаптивного портала
Создание адаптивного портала
Создание адаптивного портала

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

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

Первая веб-страница размещена по адресу 192.168.1.77. Здесь пользователю предоставляются переключатели для выбора между настройками DHCP и статического IP. На следующей веб-странице мы должны предоставить информацию, связанную с IP, чтобы продолжить.

HTML код

HTML-код для веб-страниц можно найти в этом репозитории Github. Вы можете использовать любую IDE или текстовый редактор, например Sublime или notepad ++, для создания веб-страниц HTML.

  • Сначала создайте веб-страницу HTML, содержащую два переключателя для выбора между настройками DHCP и статического IP.
  • Теперь создайте кнопку, чтобы отправить свой ответ
  • Дайте название переключателям.
  • Класс веб-сервера ESP примет эти имена в качестве аргументов и получит ответ переключателей, используя эти аргументы.
  • Теперь вставьте кнопку «ОТПРАВИТЬ», чтобы отправить ответ устройству. На других веб-страницах у нас есть текстовые поля.
  • Укажите значение имени и тип ввода в текстовое поле и добавьте кнопку отправки для отправки ответа «ОТПРАВИТЬ».
  • Создайте кнопку «СБРОС», чтобы сбросить содержимое текстового поля.

Шаг 3. Предоставление учетных данных Wi-Fi и UbiDots

Предоставление учетных данных Wi-Fi и UbiDots
Предоставление учетных данных Wi-Fi и UbiDots

Основная проблема возникает при управлении учетными данными WiFi. Несмотря на то, что у нас есть библиотека WiFiMulti для этого, где мы можем дать устройству несколько SSID и паролей, и устройство подключится к доступной сети. Но что, если доступной сети нет в списке WiFiMulti. Постоянная перепрошивка устройства ESP32 не является надежным решением.

Чтобы решить эту проблему, мы размещаем веб-страницу, на которой пользователь может указать SSID и пароль доступной сети. Это работает следующим образом.

  • Веб-страница размещается на статическом IP или DHCP IP, выбранном пользователем на адаптивном портале.
  • Эта веб-страница содержит текстовые поля для ввода SSID, пароля и идентификатора токена UBIDOTS для подключения устройства к UbiDots.
  • Введите SSID и пароль вашего локального Wi-Fi в поля ввода, введите идентификатор токена UbiDot и введите SUBMIT
  • Эти учетные данные сохраняются в EEPROM ESP32.
  • Через 60 секунд устройство автоматически отключится от точки доступа.
  • В следующий раз, когда вы включите устройство, пользователю не нужно выполнять эту процедуру. Устройство автоматически получит учетные данные пользователя из EEPROM и продолжит публикацию показаний датчика в UbiDots.

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

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

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

#define _TASK_TIMEOUT # include

Планировщик 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-байтовый фрейм от беспроводных датчиков температуры и влажности. Эта рамка используется для получения фактических данных о температуре и влажности

данные uint8_t [29];

данные [0] = Serial1.read (); задержка (k); // проверка для начального байта if (data [0] == 0x7E) {while (! Serial1.available ()); для (я = 1; я <29; я ++) {данные [я] = Serial1.read (); задержка (1); } if (data [15] == 0x7F) /////// для проверки правильности полученных данных {if (data [22] == 1) //////// убедитесь, что тип датчика верно {

влажность = ((((данные [24]) * 256) + данные [25]) /100,0); влажность /=10.0; cTempint = (((uint16_t) (данные [26]) << 8) | данные [27]); cTemp = (float) cTempint /100.0; cTemp / = 10,0; fTemp = cTemp * 1,8 + 32; fTemp / = 10,0; батарея = random (100, 327); напряжение = батарея / 100; nodeId = данные [16];}

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

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

#включают

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

#define MQTT_CLIENT_NAME "ClientVBShightime123"

char mqttBroker = "things.ubidots.com";

полезная нагрузка char [100]; тема char [150];

// создаем переменную для хранения идентификатора токена

String tokenId;

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

#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

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

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

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

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

Кредиты

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

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