Оглавление:
- Шаг 1. Спецификация оборудования и программного обеспечения
- Шаг 2: Создание адаптивного портала
- Шаг 3. Предоставление учетных данных Wi-Fi и UbiDots
- Шаг 4: Публикация показаний датчика в UbiDots
- Шаг 5: Визуализация данных
- Шаг 6: Общий код
Видео: UbiDots-Подключение ESP32 и публикация данных с нескольких датчиков: 6 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
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
Основная проблема возникает при управлении учетными данными 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
- Планировщик заданий
Рекомендуемые:
IOT - Публикация данных в Thingspeak с помощью ESP8266: 3 шага
IOT | Публикуйте данные в Thingspeak с помощью ESP8266: в настоящее время IoT является тенденцией, и многие машины имеют данные для загрузки через облако и анализа данных. Маленькие датчики обновляют данные в облаке, а исполнительный механизм на другом конце воздействует на него. Я собираюсь объяснить один из примеров IoT. Я эту статью и
Интерфейс нескольких ЖК-дисплеев с Arduino Uno с использованием общей линии передачи данных: 5 шагов
Интерфейс нескольких ЖК-дисплеев с Arduino Uno с использованием общей линии передачи данных: Сегодня в этой инструкции я собираюсь показать вам, как подключить несколько ЖК-модулей 16x2 к плате Arduino Uno, используя общую линию данных. Самое интересное в этом проекте то, что он использует общую строку данных и отображает разные данные в электронном
Arduino Uno + SIM900 + DHT22 + Thingspeak [ENG / PL] ДАННЫЕ НЕСКОЛЬКИХ ДАТЧИКОВ !: 3 шага
Arduino Uno + SIM900 + DHT22 + Thingspeak [ENG / PL] ДАННЫЕ С НЕСКОЛЬКИМИ ДАТЧИКАМИ !: Привет, я увидел, что нет информации о том, как отправлять данные с нескольких датчиков с помощью Arduino Uno с модулем SIM900. Поэтому я сделал краткую инструкцию по подключению и настройке Arduino UNO с датчиком SIM900 и DHT22. Данные DHT22 (темперамент
Публикация данных беспроводного датчика давления с помощью MQTT: 7 шагов
Публикация данных беспроводного датчика давления с помощью MQTT: ESP32 и ESP 8266 - очень знакомые SoC в области Интернета вещей. Это своего рода благо для проектов Интернета вещей. ESP 32 - это устройство со встроенным Wi-Fi и BLE. Просто укажите свой SSID, пароль и конфигурации IP и интегрируйте их в
IoT Made Simple: мониторинг нескольких датчиков: 7 шагов
IoT Made Simple: мониторинг нескольких датчиков: несколько недель назад я опубликовал здесь руководство по мониторингу температуры с помощью DS18B20, цифрового датчика, который обменивается данными по шине 1-Wire, отправляя данные через Интернет с помощью NodeMCU и Blynk: IoT Made Simple : Мониторинг температуры AnywhereBu