Оглавление:

Доска сообщений IoT RPi LED: 3 шага (с изображениями)
Доска сообщений IoT RPi LED: 3 шага (с изображениями)

Видео: Доска сообщений IoT RPi LED: 3 шага (с изображениями)

Видео: Доска сообщений IoT RPi LED: 3 шага (с изображениями)
Видео: Как из планшетного USB-сканера сделать сетевой с помощью Raspberry Pi. Реальный проект 2024, Ноябрь
Anonim
Image
Image
Настройка оборудования
Настройка оборудования

В этом руководстве я сделал светодиодную доску сообщений с подключением к Wi-Fi, используя Raspberry Pi (RPi). Пользователи будут подключаться к веб-серверу Raspberry Pi с помощью своих браузеров для отправки коротких сообщений, которые будут отображаться на светодиодном дисплее 8x8. Поскольку взаимодействие светодиодной матрицы 8x8 с драйвером MAX7219 в Python хорошо задокументировано другими пользователями в Интернете, этот проект фокусируется на создании интерфейса веб-сервера и использовании ZeroMQ Messaging для управления входящими сообщениями.

Обновление: вот следующий проект IoT Decimal / Hexadecimal 8x8 LED Matrix Drawing Board.

(Я являюсь фасилитатором клуба Girls Who Code Club, и я придумала этот простой проект, чтобы научить студентов дизайну веб-интерфейсов и обмену сообщениями.)

Шаг 1. Настройка оборудования

Настройка оборудования
Настройка оборудования
Настройка оборудования
Настройка оборудования

Для этого проекта требуется следующее оборудование:

  • Raspberry Pi
  • Источник питания USB, такой как Anker, с коротким кабелем USB - MicroUSB
  • Матричный модуль MAX7219 с ленточным кабелем (Aliexpress менее 2 долларов)
  • Корпус (я сделал его из картонной коробки и покрасил аэрозольной краской в черный цвет)

Настройка оборудования - самая простая часть. Просто подключите 5-жильный ленточный кабель от светодиодной матрицы к RPi согласно документации библиотеки MAX7219.

LED-> RPi ======== VCC-> GPIO Pin # 2 (5v) GND-> GPIO Pin # 6 (GND) DIN-> GPIO Pin # 19CS -> GPIO Pin # 24CLK-> GPIO Pin # 23

Я использовал двустороннюю ленту из вспененного материала, чтобы прикрепить светодиодный блок к корпусу RPi. Затем я сделал корпус из картонной коробки для размещения RPi и аккумулятора.

Шаг 2: установка программного обеспечения

Настройка программного обеспечения
Настройка программного обеспечения
Настройка программного обеспечения
Настройка программного обеспечения
Настройка программного обеспечения
Настройка программного обеспечения
Настройка программного обеспечения
Настройка программного обеспечения

RPi должен иметь следующее программное обеспечение:

  • Python 3
  • Веб-сервер Apache 2
  • Драйвер Max7219 для Python
  • Обмен сообщениями ZeroMQ

Python 3

В RPi должен быть предварительно установлен Python 3. Хотя мой код написан для Python 3, Python 2 должен работать с небольшими изменениями.

Apache 2

Настройте Apache и включите сценарии Python CGI. Ниже приведены несколько отличных ресурсов по настройке Apache на RPi, поэтому я не буду здесь повторяться. Просто следуйте инструкциям ниже, чтобы настроить Apache и CGI. Убедитесь, что скрипты *.py запускаются из браузера.

  • https://raspberrywebserver.com/cgiscripting/
  • https://www.knight-of-pi.org/apache-web-server-with-cgi-for-python/

Драйвер Max7291

Установите драйвер Max7219, следуя последнему руководству по установке:

https://max7219.readthedocs.io/en/latest/install.html

После установки запустите пример кода matrix_test.py для каждого руководства по установке, чтобы отобразить «Hello World» на светодиодной матрице. Это должно сработать, прежде чем переходить к следующему шагу.

Обмен сообщениями ZeroMQ

Зачем нам нужен обмен сообщениями? Попробуйте запустить приведенный выше пример кода, matrix_test.py, на двух экранах терминала одновременно. Система позволит запускать несколько кодов одновременно, но вы увидите, что сообщения накладываются друг на друга, что нежелательно. В однопользовательской среде это может не быть проблемой, поскольку вы можете убедиться, что одновременно может работать только одна программа. В многопользовательской среде, такой как Интернет, система должна создать очередь FIFO (First-In-First-Out), чтобы убедиться, что только один человек может выполнить код, пока другие ждут. Хотя для этого могут быть другие решения, я решил использовать ZeroMQ для управления очередью FIFO. Код сервера ZeroMQ содержит фактический вызов функции для отображения сообщения на светодиодной матрице по одному, в то время как веб-сервер действует как клиент ZeroMQ для запроса и отправки сообщений на сервер ZeroMQ. Таким образом, хотя несколько пользователей могут отправлять сообщения через веб-страницу одновременно, сервер ZeroMQ будет отображать только одно сообщение за раз.

Для этого проекта мы просто установим пакет Python pyzmq, а не весь пакет ZeroMQ.

запустить:

sudo pip3 установить pyzmq

Прочтите руководство по ZeroMQ на https://zguide.zeromq.org и попробуйте пример сервера и клиента hello world на Python. Скопируйте пример кода Python для сервера и клиента в RPi и убедитесь, что они работают, прежде чем переходить к следующему шагу.

Шаг 3. Настройка веб-страницы

На веб-странице я использовал фреймворк начальной загрузки css / js, чтобы страница выглядела красиво. Это совершенно необязательно.

Загрузите прикрепленный файл led_msg.tar.gz в корень или подкаталог Apache. Чтобы распаковать tar-файл с gzip, запустите:

tar -xzvf led_msg.tar.gz

Это создает следующие файлы:

msg.py (основная программа)

templates / interstitial.html (шаблон html) templates / send_msg.html (шаблон html) static / img / led_150x150-j.webp

При желании установите фреймворк начальной загрузки css / js в статический каталог.

Введите URL-адрес msg.py в вашем браузере и убедитесь, что открылась веб-страница. Не отправляйте пока сообщение !!!

Перед отправкой сообщений необходимо запустить сервер ZeroMQ, чтобы принимать сообщения от клиента веб-страницы и отображать их на светодиодной матрице. На экране ничего не будет отображаться, если сервер ZeroMQ не запущен.

Загрузите прикрепленный код max7219_server.py в свой домашний каталог, а не в корневой каталог Apache, где он может быть выполнен веб-пользователями. Запускаем как root:

sudo python max7219_server.py

Теперь сервер ZeroMQ готов принимать сообщения с веб-страницы. Введите и отправьте простое сообщение с веб-страницы. Если все настроено правильно, вы увидите это сообщение на экране сервера ZeroMQ, а также на светодиодной матрице.

Если вы хотите выключить сервер, просто нажмите Control-C, чтобы закрыть экран сервера.

Вот и все. Надеюсь, вам понравится этот проект так же, как и мне.

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

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