Устройства IoT могут делать классные вещи, но важной частью уравнения является то, как они общаются. Вы можете управлять этим с помощью модуля ESP-01.
Ограниченный бюджет не обязательно означает, что вы не можете заниматься продвинутыми проектами «сделай сам». Если вы ищете небольшой, доступный и удобный WiFi-модуль для масштабирования ваших IoT-проектов, модуль ESP-01 — отличный выбор. Однако интеграция такого модуля с упрощенным протоколом, таким как MQTT, может быть сложной задачей, особенно если вы новичок в разработке IoT.
Программирование одной только платы ESP-01 может оказаться сложной задачей по сравнению с другими модулями серии ESP8266. Но давайте рассмотрим основы всех аппаратных и программных настроек, необходимых для начала использования модуля, а также как настроить MQTT простым и процедурным способом.
Знакомство с доской
ESP8266 ESP-01 — это небольшой и компактный WiFi-модуль, оснащенный чипом ESP8266EX, который представляет собой высокоинтегрированную SoC, предназначенную для приложений IoT.
Модуль включает в себя однокристальный беспроводной микроконтроллер со стеком протоколов TCP/IP и способен подключаться к беспроводной сети или выступать в роли точки доступа. Модуль ESP-01 также имеет разъем 2x4, который обеспечивает доступ к контактам GPIO, питанию и земле, а также к интерфейсу UART.
Настройка оборудования
Модуль вообще не подходит для макетной платы. Для удобства вы можете купить готовую плату расширения или просто пойти по старинке, используя перемычки и макетную плату.
Существует специальный программатор, плата последовательного модуля ESP8266, которая может упростить процесс программирования. Если вы предпочитаете идти по этому пути, DIYHOBI имеет удобный учебник о том, как прошить программу в модуль ESP-01 с помощью программатора (включая адаптер модуля преобразователя USB в TTL CH340G).
Но вы все равно можете запрограммировать модуль с помощью платы Arduino. Посмотрите на схему ниже для справки.
Хотя это может выглядеть заманчиво, мы, как правило, не рекомендуем подключать модуль напрямую к контакту 3,3 В Arduino, поскольку он требует больше тока, чем обеспечивает контакт. Вместо этого подключите Arduino 5В к стабилизатору напряжения 3,3 В, например LM1117/LD117, затем запитайте модуль WiFi от стабилизатора.
Не подключайте ВКК и CH_PD контакты ESP к 5В пин ардуино. Подключение модуля к 5В мощность может повредить его.
Все конденсаторы есть 10 мкФ а резистор такой 1 К резистор.
Требования к программному обеспечению
Модуль ESP-01 обычно используется с платформой Arduino. Таким образом, настроить программное обеспечение довольно просто, особенно если вы знакомы с Arduino C. Однако, если вы больше знакомы с Raspberry, существует множество IoT-проекты Raspberry Pi можешь попробовать.
Это основные требования:
- Брокер или сервер MQTT (например, Mosquitto или CloudMQTT).
- Arduino IDE с основной библиотекой ESP8266.
- Библиотека PubSubClient для Arduino.
Вы должны помнить, что наличие собственного локального сервера MQTT дает вам гибкость в ваших проектах.
Установка необходимых библиотек
Сначала загрузите и установите Arduino IDE на свой компьютер. После установки откройте Arduino IDE и перейдите к Файл > Настройки.
в Дополнительные URL-адреса диспетчера досок введите следующий URL-адрес:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Нажмите ХОРОШО чтобы закрыть окно настроек.
Далее перейдите к Инструменты > Доска > Менеджер досок.
Затем найдите esp8266 и установите пакет платы esp8266 — он включает все необходимые библиотеки для модуля ESP-01.
Чтобы установить библиотеку PubSubClient, перейдите по ссылке Эскиз > Включить библиотеку > Управление библиотеками.
Искать PubSubClient и нажмите на библиотеку, чтобы установить ее.
После установки всех необходимых библиотек можно приступать к программированию модуля ESP-01. Однако стоит отметить, что вы можете использовать Wi-Fi.ч который входит в библиотеку, или скачать ESPWifi.h библиотека и включите его в свой эскиз.
Установление соединения между ESP-01 и MQTT Broker
Брокер MQTT — это сервер, который действует как посредник между клиентами MQTT. Это позволяет клиентам отправлять и получать сообщения друг от друга с помощью модели публикации-подписки.
Чтобы подключить модуль ESP-01 к брокеру MQTT, вам нужно будет указать IP-адрес и номер порта брокера в своем коде. Вам также потребуется предоставить брокеру уникальный идентификатор клиента, который идентифицирует ваш модуль ESP-01.
Во-первых, включите необходимые библиотеки вверху вашего скетча.
#включать <ESP8266Wi-Fi.час>
#включать <PubSubClient.час>
Затем определите детали подключения WiFi и MQTT.
константауголь*SSID = "ВАШ_SSID";
константауголь* пароль = "ВАШ ПАРОЛЬ";
константауголь* mqtt_сервер = "ВАШ_MQTT_СЕРВЕР";
Не забудьте заменить заполнители своими данными подключения WiFi и MQTT.
После этого создайте WiFi-клиент и подключитесь к локальной сети WiFi:
WiFiClient espClient;
пустотаsetup_wifi(){
задержка (10);
WiFi.begin (ssid, пароль);
пока (WiFi.status() != WL_CONNECTED) {
задержка (500);
}
}
Эту функцию следует вызывать в настраивать() Функция вашего эскиза.
Далее вам нужно создать клиент MQTT и подключиться к вашему брокеру MQTT:
PubSubClient клиент(espКлиент);
пустотавосстановить соединение(){
пока (!client.connected()) {
если (клиент.подключить("ESP01", mqtt_user, mqtt_password)) {
// Подписка на тему
клиент.подписать("тест/тема");
} еще {
задержка (5000);
}
}
}
После того, как вы подключились к своему MQTT-брокеру, вы можете начать публиковать темы и подписываться на них.
Публикация данных из ESP-01 в MQTT Broker
Теперь, когда вы успешно подключили свой модуль ESP01 к брокеру MQTT, давайте посмотрим, как вы можете опубликовать данные из ESP-01 в брокере.
Для публикации данных используйте клиент.опубликовать() функция публикации сообщения в inTopic тема.
клиент.опубликовать("в теме", «Привет от ЭСП-01»);
Это опубликует сообщение «Привет от ESP-01» на inTopic тема.
Вы также можете публиковать данные датчиков из ESP-01 в брокер. Например, если у вас есть датчик температуры, подключенный к вашему ESP-01, вы можете опубликовать данные о температуре в брокере, как показано ниже.
плавать температура = 25.5;
Нить строка температуры = Нить(температура);
уголь температураChar[5];
температураСтрока.toCharArray(температураChar, 5);
клиент.опубликовать("Темп", температураChar);
Это опубликует данные о температуре в Температура тема.
Данные могут публиковаться циклически или через равные промежутки времени, в зависимости от требований вашего проекта. Убедитесь, что вы не перегружаете брокера слишком большим объемом данных и публикуете их через разумные промежутки времени.
Подписка на темы MQTT и получение данных по ESP-01
Чтобы подписаться на тему, используйте клиент.подписать() функция. В нашем случае ниже клиент подписывается на outTopic тема.
клиент.подписать("вне темы");
После того, как вы подписались на тему, вы можете получать сообщения, опубликованные в этой теме, используя клиент.цикл() функция в петля() на скетче ниже:
пустотапетля(){
если (!клиент.связанный()) {
переподключиться();
}
клиент.петля();
}
Это будет постоянно проверять наличие новых сообщений и выполнять функцию обратного вызова при получении нового сообщения.
Для обработки полученных сообщений определите функцию обратного вызова, подобную показанной ниже:
пустотаперезвонить(уголь* тема, байт* полезная нагрузка, без знака инт длина){
// Печатаем полученное сообщение
Серийный.Распечатать("Получено сообщение по теме: ");
Серийный.Распечатать(тема);
Серийный.Распечатать(". Сообщение: ");
для (инт я =0;яСерийный.Распечатать((уголь)полезная нагрузка[я]);
}
Серийный.println();
}
Эта функция будет вызываться при получении нового сообщения в теме, на которую вы подписаны. Он напечатает полученное сообщение в Serial Monitor.
Использование уровней QoS (качества обслуживания) и функций безопасности
Одним из наиболее важных методов, используемых при обработке запросов, является использование уровней QoS (качество обслуживания) для ваших сообщений MQTT. Уровни QoS определяют, как брокер и подписчики должны обрабатывать ваши сообщения. Существует три уровня QoS: 0, 1 и 2.
Уровень QoS 0 наименее надежен, так как сообщения отправляются только один раз и их доставка абоненту не гарантируется. Уровень QoS 1 более надежен, так как сообщения отправляются хотя бы один раз и гарантированно доставляются абоненту хотя бы один раз. Уровень QoS 2 является самым надежным, так как сообщения отправляются ровно один раз и гарантированно доставляются абоненту ровно один раз. То, как ваши устройства взаимодействуют, соответствует другим общие проблемы безопасности Интернета вещей (IoT) и исправления вы хотите оставаться на вершине.
Чтобы использовать уровни QoS, вы можете указать желаемый уровень при публикации сообщений с помощью клиент.опубликовать() функция:
клиент.опубликовать("тема", "Привет, мир!", 1);
Это опубликует сообщение Привет, мир! к тема тема с уровнем QoS 1.
Другой передовой метод использует Последняя воля и завещание (LWT) Сообщения. Сообщения LWT — это сообщения, отправляемые посредником, когда клиент неожиданно отключается. Мы считаем, что это важно для обнаружения автономных устройств или запуска действий при отключении устройства.
Чтобы использовать сообщения LWT, вы можете указать сообщение LWT при подключении к брокеру с помощью клиент.setWill() функция:
клиент.setWill("положение дел", "не в сети", 1, истинный);
Это установит сообщение LWT в не в сети на положение дел тема с уровнем QoS 1 и установленным флагом сохранения истинный.
Подготовьтесь к следующему проекту IoT
Модуль ESP-01 — это доступное и компактное решение для IoT-проектов, и его использование с MQTT может вывести ваш проект на новый уровень. Хотя первоначальная настройка может быть сложной, преимущества MQTT, такие как легкое взаимодействие и высокая масштабируемость, делают его стоящим вложением.