Учебное пособие по MicroPython MQTT на основе Raspberry Pi

Raspberry Pi, разработанная Raspberry Pi Foundation в Великобритании, представляет собой материнскую плату для микрокомпьютера на базе ARM. Он предоставляет интерфейс USB и интерфейс Ethernet для подключения клавиатуры, мыши и сетевого кабеля. Материнская плата имеет основные функции ПК, в то время как Raspberry Pi имеет встроенный Wi-Fi, Bluetooth и множество GPIO и широко используется в обучении, домашних развлечениях, IoT и т. д.

MicroPython — это полная программная реализация языка программирования Python 3, написанная на C и оптимизированная для полного компилятора Python и системы выполнения, работающей поверх аппаратного обеспечения MCU (блока микроконтроллера), предоставляющая пользователю интерактивную подсказку (REPL) для немедленного выполнения. поддерживаемые команды. В дополнение к выбранным основным библиотекам Python, MicroPython включает модули, которые предоставляют программистам доступ к низкоуровневому оборудованию, и представляет собой упрощенную реализацию языка Python 3, включающую небольшую часть стандартной библиотеки Python, оптимизированную для работы на микроконтроллерах и в ограниченных средах. .

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

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

Настройка среды

  1. Установите МикроПитон

Этот проект использует MicroPython для разработки, вы можете использовать следующую команду для его установки.

sudo apt-get update
# Install MicroPython
sudo apt-get -y install micropython

После завершения установки выполните micropython в терминале, и если возвращается MicroPython xxx (x означает число), установка выполнена успешно.

МикроПитон

  1. Установите клиентскую библиотеку MQTT.

Чтобы легко подключиться к серверу MQTT, нам нужно установить umqtt.simple библиотека.

micropython -m upip install umqtt.simple

Подключение к брокеру MQTT

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

  • Маклер: broker.emqx.io
  • TCP-порт: 1883
  • Порт веб-сокета: 8083

Откройте любой редактор, введите следующий код и сохраните его как файл sub.py:

# sub.py
import time
from umqtt.simple import MQTTClient

SERVER="broker.emqx.io"
ClientID = f'raspberry-sub-{time.time_ns()}'
user = "emqx"
password = "public"
topic = "raspberry/mqtt"
msg = b'{"msg":"hello"}'

def sub(topic, msg):
    print('received message %s on topic %s' % (msg, topic))

def main(server=SERVER):
    client = MQTTClient(ClientID, server, 1883, user, password)
    client.set_callback(sub)
    client.connect()
    print('Connected to MQTT Broker "%s"' % (server))
    client.subscribe(topic)
    while True:
        if True:
            client.wait_msg()
        else:
            client.check_msg()
            time.sleep(1)

if __name__ == " __main__":
    main()

Публиковать

Откройте любой редактор, введите следующий код и сохраните его как файл pub.py:

# pub.py
import time
from umqtt.simple import MQTTClient

server="broker.emqx.io"
ClientID = f'raspberry-pub-{time.time_ns()}'
user = "emqx"
password = "public"
topic = "raspberry/mqtt"
msg = b'{"msg":"hello"}'

def connect():
    print('Connected to MQTT Broker "%s"' % (server))
    client = MQTTClient(ClientID, server, 1883, user, password)
    client.connect()
    return client

def reconnect():
    print('Failed to connect to MQTT broker, Reconnecting...' % (server))
    time.sleep(5)
    client.reconnect()

try:
    client = connect()
except OSError as e:
    reconnect()

while True:
  print('send message %s on topic %s' % (msg, topic))
  client.publish(topic, msg, qos=0)
  time.sleep(1)

В приведенных выше кодах мы вызываем функцию publish() для отправки сообщения в тему raspberry/mqtt. Параметр QoS — еще одна функция MQTT. Чтобы узнать больше о QoS, см. Введение в MQTT QoS (качество обслуживания). В этом примере мы устанавливаем его на 0.

Тестирование

Мы используем Клиентский инструмент MQTT 5.0 — MQTT X выполнить следующие тесты.

  1. Откройте терминал, запустите код MicroPython и прослушайте сообщения.
micropython sub.py

сабвуфер микропитона

  1. Используйте клиент MQTT X для подключения к серверу MQTT и отправки сообщений в тему. raspberry/mqtt.

Клиентский инструмент MQTT

  1. Проверьте информацию о терминале Raspberry Pi, и вы увидите, что сообщения публикации MQTT X были успешно получены.

Получать MQTT-сообщения

Тестовая публикация

  1. Подписаться на raspberry/mqtt раздел в клиенте MQTT X.

  2. Запустите код MicroPython в терминале и опубликуйте сообщение.

micropython pub.py

Публикация сообщений MQTT

  1. В клиенте MQTT X просмотрите сообщения, отправленные Raspberry Pi.

MQTT X подписаться

Это простой пример программирования с помощью MicroPython на Raspberry Pi. Мы реализовали простой тестовый клиент на MicroPython. umqtt.simple, и завершил соединение и отправку и получение сообщений между клиентом и сервером MQTT. Самым большим преимуществом MQTT является то, что он предоставляет надежные службы обмена сообщениями в режиме реального времени для подключенных удаленных устройств с очень небольшим количеством кода и ограниченной пропускной способностью, в то время как Raspberry Pi — это небольшой аппаратный модуль с низким уровнем нагрева, низким энергопотреблением и относительно комплексным аппаратным модулем. Сочетание этих двух факторов может помочь вам в разработке более инновационных приложений даже для микроконтроллеров или ограниченных сред.

Первоначально опубликовано на

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *