Начало работы с MQTT и Arduino Uno

Ari Mahpour
|  Создано: 19 Октября, 2021  |  Обновлено: 1 Июля, 2024
Начало работы с MQTT

В современном мире, где устройства, подключенные к сети, стали повсеместными, термин Интернет вещей (IoT) стал фактическим описанием для "устройства, подключенного к интернету". Хотя этот прекрасный акроним с заглавными буквами сам по себе замечателен, в "устройствах, подключенных к интернету", гораздо больше, чем люди осознают. В этой статье я хотел бы глубже погрузиться в один из наиболее распространенных протоколов, используемых в устройствах IoT: протокол передачи телеметрии MQ (MQTT). Мы кратко рассмотрим, что это такое, как это работает и что нового в нем по сравнению с другими используемыми технологиями. Также мы рассмотрим подробный пример использования устройства Arduino.

Что такое MQTT и почему он важен

В типичной клиент-серверной схеме у нас есть поставщик (т.е. сами устройства), который отправляет данные с датчиков на сервер, и потребитель, который запрашивает просмотр этих данных с датчиков с сервера. MQTT не является исключением. Это легковесный протокол, используемый для общения между устройствами. Устройства обычно «публикуют» (т.е. отправляют) данные на «брокер» MQTT (или сервер), которые затем сохраняются для предоставления другим устройствам или веб-приложениям. Другое устройство или веб-приложение «подписывается» на этот набор данных (т.е. запрашивает данные) у брокера MQTT, а затем брокер MQTT доставляет эти данные им. Подумайте об этом действительно как о просто усовершенствованном веб-сервере с двумя основными исключениями:

  1. Данные пакеты очень легковесны (что улучшает скорость, эффективность и стоимость)
  2. MQTT может использовать другие режимы связи, помимо интернета (например, Bluetooth)
Figure 1: MQTT Broker with Devices
Рисунок 1: MQTT-брокер с устройствами

По двум вышеупомянутым причинам MQTT стал очень популярным протоколом среди устройств IoT. Ранее люди использовали запросы HTTP POST/GET для достижения этой формы связи устройство-сервер, но это ограничивало их возможность использовать другие устройства связи, такие как Bluetooth или ZigBee. Поскольку MQTT агностичен в этом отношении, теперь мы можем иметь возможности передачи сообщений внутри сети на основе меш, используя MQTT без подключения к интернету

Начало работы с MQTT

Существует множество способов начать работу с MQTT, включая разработку полного, конечного решения. Чтобы упростить задачу, мы будем использовать бесплатный сервис брокера MQTT, предоставляемый Adafruit в этом примере. Это позволит нам сосредоточиться только на разработке клиентской стороны. Для начала вам понадобится следующее:

  1. Устройство Arduino (В этом примере используется Arduino Uno)
  2. Щит Arduino, поддерживающий подключение к интернету (например, Arduino Ethernet shield) или устройство, совместимое с Arduino на базе Wifi, такое как ESP8266.
  3. Программное обеспечение Arduino IDE
  4. Аккаунт на Adafruit IO.

Прежде чем начать, нам нужно сделать несколько вещей для настройки нашего рабочего пространства. Давайте сначала настроим наше оборудование. Я собираюсь использовать Arduino Uno и Arduino Ethernet Shield, подключенные к моей локальной сети.

Figure 2: Arduino Uno and Arduino Ethernet Shield side by side
Рисунок 2: Arduino Uno и Arduino Ethernet Shield рядом

Нам нужно установить Ethernet Shield поверх Arduino и подключить его к сети вот так:

Figure 3: Arduino Uno and Arduino Ethernet Shield hooked up together and plugged in
Рисунок 3: Arduino Uno и Arduino Ethernet Shield, соединённые вместе и подключенные

После того как мы настроим наше оборудование, давайте откроем Arduino IDE и установим необходимые библиотеки. Откройте Arduino IDE и перейдите в Инструменты > Управление библиотеками…

Figure 4: Manage Libraries menu option
Рисунок 4: Опция меню "Управление библиотеками"

Найдите библиотеку Adafruit MQTT и нажмите установить:

Figure 5: Library Manager
Рисунок 5: Менеджер библиотек

Вас также попросят установить зависимости библиотеки. Продолжайте и нажмите на «Установить все».

Figure 6: Library Dependencies Dialog
Рисунок 6: Диалоговое окно зависимостей библиотек

После установки библиотек поддержки вы можете открыть пример, перейдя в Файл > Примеры > Adafruit MQTT Library > mqtt_ethernet.

Figure 7: Menu navigation for the mqtt_ethernet example
Рисунок 7: Навигация по меню для примера mqtt_ethernet

На этом этапе нам нужно сделать паузу и получить наши учетные данные из нашего аккаунта Adafruit IO. Войдите в Adafruit IO и кликните на "Мой ключ" в верхней части:

Figure 8: My Key Menu Option
Рисунок 8: Опция меню "Мой ключ"

Теперь вернитесь к вашему примеру скетча Arduino mqtt_ethernet и заполните поля AIO_USERNAME и AIO_KEY, используя поля "Имя пользователя" и "Активный ключ", расположенные в вашем аккаунте Adafruit IO. Убедитесь, что ваше устройство подключено, а затем нажмите на Загрузить:

Figure 9: Arduino Sketch ready for the upload
Рисунок 9: Arduino-скетч, готовый к загрузке

Чтобы просмотреть статус устройства (и убедиться, что оно подключено к брокеру MQTT), перейдите в Инструменты > Монитор порта. Вы должны увидеть вывод, который выглядит так:

Figure 10: Serial Monitor output of the Arduino mqtt_ethernet example
Рисунок 10: Вывод серийного монитора примера Arduino mqtt_ethernet

На этом этапе мы подтвердили, что данные успешно отправляются на брокер MQTT. Чтобы посмотреть актуальные данные на сервере, давайте вернемся в наш аккаунт Adafruit IO и кликнем на "Каналы", затем кликнем на "фотоэлемент"

Figure 11: Adafruit IO Feeds
Рисунок 11: Каналы Adafruit IO

Теперь мы получаем живую передачу данных, которые наш Arduino отправляет на брокер MQTT. Мы также можем скачать исторические данные.

Figure 12: Live and historical data sent to the MQTT broker from the Arduino
Рисунок 12: Живые и исторические данные, отправленные на MQTT-брокера с Arduino

Поздравляем! Теперь вы настроили устройство с поддержкой MQTT и опубликовали свои данные на MQTT-брокере. Теперь перейдите к следующему шагу, создав свои собственные пользовательские датчики и публикуя данные на вашем MQTT-брокере.

Заключение

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

Об авторе

Об авторе

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

Связанные ресурсы

Вернуться на главную
Thank you, you are now subscribed to updates.