Оглавление:
- Шаг 1. Как работает цифровая доска объявлений?
- Шаг 2: Необходимые вещи:
- Шаг 3: Дизайн графического интерфейса пользователя для отображения уведомлений:
- Шаг 4: Настройте учетную запись CloudMQTT:
- Шаг 5: Объяснение окончательного кода Raspberry Pi:
- Шаг 6: графический интерфейс ПК с Windows:
- Шаг 7. Объяснение окончательного кода для ПК с Windows:
- Шаг 8: Настройте Цифровую доску объявлений:
Видео: Доска цифровых уведомлений с использованием протокола Raspberry Pi и MQTT: 8 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:52
Доски объявлений используются почти везде, например в офисах, школах, больницах и отелях. Их можно использовать снова и снова, чтобы отображать важные уведомления или рекламировать предстоящие события или встречи. Но уведомление или рекламные объявления должны быть напечатаны на бумаге и прикреплены к доске объявлений.
В этом руководстве давайте научимся создавать нашу цифровую доску объявлений с Raspberry Pi, чтобы сэкономить много бумаги и тонера!
Шаг 1. Как работает цифровая доска объявлений?
- Raspberry Pi подключен к дисплею HDMI, который является нашей цифровой доской объявлений.
- ПК с Windows используется для публикации уведомления на электронной доске объявлений через Интернет.
- Уведомление, опубликованное на ПК с Windows, поступает в Digital Notice Board через брокера CloudMQTT.
- Связь между ПК с Windows и Digital Notice Board осуществляется с помощью протокола MQTT.
Шаг 2: Необходимые вещи:
- Raspberry Pi с ОС Rasbian
- Дисплей с портом HDMI
- ПК с ОС Windows
- Интернет-соединение
- Учетная запись CloudMQTT
Шаг 3: Дизайн графического интерфейса пользователя для отображения уведомлений:
Нам нужно разработать 2 графических интерфейса: один для Raspberry Pi для отображения уведомления на дисплее HDMI и другой для ПК с Windows, чтобы опубликовать уведомление для Raspberry Pi через брокера CloudMQTT.
Дизайн графического интерфейса зависит от того, где вы собираетесь разместить электронную доску объявлений. Например, позвольте мне разработать графический интерфейс для Instructables Office, чтобы отображать предстоящие события и встречи, чтобы сотрудники могли получать самую свежую информацию.
Создать графический интерфейс на ПК с Windows легко, поэтому давайте спроектируем графический интерфейс Digital Notice Board на ПК с Windows и скопируем код на Raspberry Pi.
Требуется программное обеспечение:
Anaconda (который включает python 2.7, пакет Qt Designer и Spyder IDE).
Qt Designer - это инструмент, используемый для разработки графических интерфейсов. Результатом работы Qt Designer будет файл.ui, позже он может быть преобразован в.py для дальнейшей обработки.
Что происходит на видео ?:
- Загрузите установщик Anaconda Windows для python 2.7 и установите его на ПК с Windows (обычный процесс установки).
- После установки вы можете найти инструмент Qt Designer в «каталог_установки / Library / bin / designer.exe» (для меня это «C: / Anaconda2 / Library / bin / designer.exe»)
- Создайте ярлык для «designer.exe» и поместите его на рабочий стол.
- откройте "designer.exe".
- Создайте новое главное окно.
- Выберите и разместите макеты и необходимые виды (текстовый вид, вид метки и т. Д.).
- Сохраните как файл Rpi_UI.ui.
- Чтобы преобразовать его в файл.py, откройте командную строку в текущей папке, в которой существует файл Rpi_UI.ui, и введите следующую команду
каталог_установки / Library / bin / pyuic5.bat -x RPi_UI.ui -o RPi_UI.py
для меня это, C: / Anaconda2 / Library / bin / pyuic5.bat -x RPi_UI.ui -o RPi_UI.py
эта команда преобразует файл Rpi_UI.ui в файл Rpi_UI.py и поместит его в тот же каталог.
- Откройте файл Rpi_UI.py с помощью Spyder IDE, которая включена в Anaconda.
- Запуск сценария отобразит графический интерфейс, который мы разработали ранее.
Затем давайте настроим учетную запись CloudMQTT.
Шаг 4: Настройте учетную запись CloudMQTT:
- Посетите эту ссылку.
- Создайте учетную запись с помощью электронной почты и войдите в свою учетную запись.
- Создайте новый экземпляр (я назвал его TEST_1).
- Откройте информацию об экземпляре.
- Запишите сервер, пользователя, пароль и порт.
- Обратитесь к документации CloudMQTT Python и сохраните скрипт как CloudMQTT.py.
- Для примера кода в документации требуется библиотека paho, установите клиент Paho Python с помощью инструмента pip, откройте командную строку от имени администратора и введите следующую команду.
pip install paho-mqtt
Шаг 5: Объяснение окончательного кода Raspberry Pi:
Здесь позвольте мне объяснить, как я объединил файл RPi_UI.py с CloudMQTT.py и сохранил его как RPi_UI.py.
Импортируйте библиотеки, если они не установлены, просто установите их
импортировать paho.mqtt.client как mqtt
импортировать urlparse из PyQt5 импортировать QtGui, QtWidgets, QtCore из PyQt5. QtCore импортировать QTimer, QTime из потокового импорта Thread import sys import re из google_drive_downloader импортировать GoogleDriveDownloader как gdd import os
Чтобы установить googledvedownloader, используйте команду
pip install googledvedownloader
Инициализация переменных,
icon = "[email protected]"
CompetitionImg = "black" meeting1 = "Meeting1:" Место проведения1 = "Время и место проведения1." Meeting2 = "Встреча2:" Место проведения2 = "Время и место проведения2." meeting3 = "Meeting3:" location3 = "Время и место3."
Далее следует класс Ui_MainWindow
класс Ui_MainWindow (объект):
def setupUi (self, MainWindow):… def retranslateUi (self, MainWindow):… def _update (self):…
Следующие строки в функции setupUi обновляют графический интерфейс каждые 3 секунды, вызывая функцию _update
self.retranslateUi (MainWindow)
QtCore. QMetaObject.connectSlotsByName (MainWindow) self.timer = QTimer () self.timer.timeout.connect (self._update) self.timer.start (3000)
Функция on_message ожидает сообщения от брокера, после того как сообщение получено, она загружает изображение с диска Google, используя идентификатор ссылки общего доступа диска Google, а также изменяет значения глобальных переменных
def on_message (клиент, объект, сообщение):
print (str (msg.payload)) if (str (msg.payload)): noticeReceived = str (msg.payload) result = re.search ('% 1 (. *)% 2 (. *)% 3 (. *)% 4 (. *)% 5 (. *)% 6 (. *)% 7 (. *)% 8 ', noticeReceived) глобальное соревнованиеImg global meeting1 глобальное место проведения1 глобальное собрание2 глобальное место проведения2 глобальное собрание3 глобальное место проведения3 fileId = "" + result.group (1) + "" path = "/ home / pi / Desktop / Instructables / RPi UI / ContestImages /" + result.group (1) + ". jpg" gdd.download_file_from_google_drive (file_id = fileId, dest_path = путь) контестImg = результат.группа (1) встреча1 = результат.группа (2) место проведения1 = результат.группа (3) встреча2 = результат.группа (4) место проведения2 = результат.группа (5) встреча3 = результат.группа (6) площадка3 = result.group (7)
Код состоит из 2-х бесконечных циклов,
rc = mqttc.loop ()
а также
sys.exit (app.exec_ ())
Чтобы запускать эти циклы одновременно, я использовал концепцию Threading.
def sqImport (tId): if tId == 0: while 1: rc = 0 while rc == 0: rc = mqttc.loop () print ("rc:" + str (rc)) if tId == 1: while 1: app = QtWidgets. QApplication (sys.argv) MainWindow = QtWidgets. QMainWindow () ui = Ui_MainWindow () ui.setupUi (MainWindow) MainWindow.show () sys.exit (app.exec_ ()) threadA = Thread (цель = sqImport, args = [0]) threadB = Thread (target = sqImport, args = [1]) threadA.start () threadB.start () threadA.join () threadB.join ()
Круто, мы завершили настройку Raspberry Pi, теперь давайте разработаем графический интерфейс для ПК с Windows, чтобы опубликовать сообщение на Raspberry Pi.
Шаг 6: графический интерфейс ПК с Windows:
- Создайте графический интерфейс для Windows и сохраните его как Windows_UI.ui.
- Преобразуйте его в файл Python.
- Объедините его с файлом CloudMQTT.py и сохраните как Windows_UI.py.
- Функция файла Windows_UI.py аналогична файлу RPi_UI.py, с той лишь разницей, что файл Windows_UI.py публикует сообщение, тогда как RPi_UI.py получает сообщение.
Шаг 7. Объяснение окончательного кода для ПК с Windows:
- Файл Windows_UI.py содержит все классы и функции RPi_UI.ui, за исключением нескольких.
- Вместо функции on_message у него есть функция on_publish для публикации сообщения.
- Следующий код в функции retranslateUi вызывает функцию публикации после нажатия кнопки PUBLISH.
self.pushButton.clicked.connect (самостоятельная публикация)
- Функция публикации объединяет идентификатор ссылки для совместного использования на Google Диске и информацию о встрече и публикует ее в разделе «уведомление».
- Это сообщение получит Raspberry Pi.
Шаг 8: Настройте Цифровую доску объявлений:
- Подключите Raspberry Pi к дисплею HDMI, я использовал свой телевизор Sony в качестве дисплея Digital Notice Board.
- Запустите файл RPi_UI.py в Raspberry Pi.
- Запустите файл Windows_UI.py на ПК с Windows.
- Введите идентификатор ссылки на Google Диск для изображения конкурса и объявления о встрече.
- Щелкните кнопку ПУБЛИКАЦИЯ.
- Теперь вы можете увидеть обновленную электронную доску объявлений в течение нескольких секунд.
Подсказки:
- Вы можете создать желаемое количество электронных досок объявлений, и на них можно будет подписаться на разные темы.
- Чтобы сделать файл Windows_UI.py переносимым, вы можете преобразовать файл в исполняемый файл с помощью pyinstaller, чтобы вы могли запускать исполняемый файл на любом ПК с Windows без установки необходимых библиотек на ПК.
Спасибо
САБАРИ КАННАН М
Рекомендуемые:
Автоматическая кормушка для домашних животных с использованием старых цифровых часов: 10 шагов (с изображениями)
Автоматическая кормушка для домашних животных с использованием старых цифровых часов: Здравствуйте, в этой инструкции я покажу вам, как я сделал автоматическую кормушку для домашних животных, используя старые цифровые часы. Я также вложил видео о том, как я сделал эту кормушку. Это руководство будет участвовать в конкурсе печатных плат, и в качестве одолжения я хотел бы
Понимание ИК-протокола пультов дистанционного управления кондиционера: 9 шагов (с изображениями)
Понимание ИК-протокола пультов дистанционного управления кондиционера: я уже довольно давно изучаю ИК-протоколы. Как отправлять и получать ИК-сигналы. На данный момент остается только ИК-протокол пультов переменного тока. В отличие от традиционных пультов почти всех электронных устройств (например, телевизоров), где
ОСНОВЫ ПРОТОКОЛА СВЯЗИ SPI: 13 шагов
ОСНОВЫ ПРОТОКОЛА СВЯЗИ SPI: когда вы подключаете микроконтроллер к датчику, дисплею или другому модулю, задумывались ли вы когда-нибудь о том, как эти два устройства общаются друг с другом? Что именно они говорят? Как они понимают друг друга? Связь между электронными устройствами
Обратный инжиниринг протокола Ritter 8341C для ESP3866: 5 шагов
Обратный инжиниринг Ritter 8341C Protocol for ESP3866: Hi @ all. Для моей собственной небольшой домашней автоматизации я использую первичные управляемые розетки 433 МГц. У меня есть 3 комплекта с DIP-переключателями для настройки адреса. Они работали нормально. Но какое-то время (год или два) назад я купил набор розеток в " ritter & quo
Инфракрасная плата кодировщика и декодера протокола NEC: 5 шагов
Инфракрасная плата кодера и декодера протокола NEC: принимает необработанный модулированный или демодулированный ИК-сигнал NEC и преобразует его в байты, которые отправляются через последовательный порт. Скорость последовательной передачи данных можно выбрать из двух значений по умолчанию. Режим использования по умолчанию передает последовательность команд с байтом кадра