Съдържание:

Цифрова табла за съобщения, използваща Raspberry Pi и MQTT протокол: 8 стъпки
Цифрова табла за съобщения, използваща Raspberry Pi и MQTT протокол: 8 стъпки

Видео: Цифрова табла за съобщения, използваща Raspberry Pi и MQTT протокол: 8 стъпки

Видео: Цифрова табла за съобщения, използваща Raspberry Pi и MQTT протокол: 8 стъпки
Видео: Что значит? Индикация на приборной панели: восклицательный знак! Volkswagen 2024, Ноември
Anonim
Image
Image
Дигитална дъска за съобщения, използваща Raspberry Pi и MQTT протокол
Дигитална дъска за съобщения, използваща Raspberry Pi и MQTT протокол

Табла за обяви се използват почти навсякъде, като офиси, училища, болници и хотели. Те могат да се използват отново и отново за показване на важни известия или рекламиране на предстоящи събития или срещи. Но обявлението или рекламите трябва да бъдат отпечатани на хартия и залепени върху дъските за обяви.

В тази инструкция нека се научим да изграждаме нашата дъска за цифрови съобщения с Raspberry Pi, за да спестим много хартии и тонер!

Стъпка 1: Как работи таблото за цифрови съобщения?

Как работи таблото за цифрови съобщения?
Как работи таблото за цифрови съобщения?
  • Raspberry Pi, свързан към HDMI дисплей, който е нашата дъска за цифрови съобщения.
  • Компютър с Windows се използва за публикуване на известието на таблото за цифрови съобщения чрез интернет.
  • Съобщението, публикувано от компютъра с Windows, се получава от Съвета за цифрови съобщения чрез брокер CloudMQTT.
  • Комуникацията между компютъра с Windows и таблото за цифрови съобщения се постига чрез протокола MQTT.

Стъпка 2: Необходими неща:

  1. Raspberry Pi с Rasbian OS
  2. Дисплей с HDMI порт
  3. Компютър с Windows
  4. Интернет връзка
  5. Акаунт в CloudMQTT

Стъпка 3: Дизайн на GUI за показване на известия:

Image
Image
GUI дизайн за показване на известия
GUI дизайн за показване на известия

Трябва да проектираме 2 графични интерфейса, един за Raspberry Pi, който да показва известието на HDMI дисплея, а друг за компютър с Windows, за да публикува известието в Raspberry Pi чрез брокер CloudMQTT.

Дизайнът на графичния интерфейс зависи от мястото, където ще поставите таблото за цифрови съобщения. Например, позволете ми да проектирам графичен интерфейс за Office Instructables за показване на предстоящи събития и срещи, така че служителите да могат да бъдат актуализирани с най -новата информация.

Лесно е да се проектира графичен потребителски интерфейс в компютър с Windows, така че нека да проектираме графичния интерфейс на дъската за цифрови съобщения в компютъра с Windows и да копираме кода в Raspberry Pi.

Необходим софтуер:

Anaconda (който включва python 2.7, пакет Qt Designer и Spyder IDE).

Qt Designer е инструментът, използван за проектиране на графични интерфейси. Резултатът от Qt Designer ще бъде.ui файл, по -късно той може да бъде преобразуван в.py за по -нататъшен процес.

Какво се случва във видеото?:

  • Изтеглете Anaconda Windows Installer за python 2.7 и го инсталирайте на компютър с Windows (нормален процес на инсталиране).
  • След инсталацията можете да намерите инструмента Qt Designer в "installation_directory / Library / bin / designer.exe" (за мен това е "C: / Anaconda2 / Library / bin / designer.exe")
  • Създайте пряк път за „designer.exe“и го поставете на работния плот.
  • отворете "designer.exe".
  • Създайте нов главен прозорец.
  • Изберете и поставете оформленията и необходимите изгледи (текстов изглед, изглед на етикет и т.н.).
  • Запазете като Rpi_UI.ui файл.
  • За да го конвертирате в.py файл, отворете cmd подкана в текущата папка, където съществува файл Rpi_UI.ui, и въведете следната команда

директория за инсталиране / Библиотека / 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:

Image
Image
  • Посетете тази връзка.
  • Създайте акаунт с имейл и влезте в него.
  • Създайте нов екземпляр (нарекох го като TEST_1).
  • Отворете информацията за Instance.
  • Забележете сървъра, потребителя, паролата и порта.
  • Вижте документацията за CloudMQTT Python и запишете скрипта като CloudMQTT.py.
  • Примерният код в документацията изисква paho библиотека, Инсталирайте Paho Python Client с помощта на pip tool, отворете cmd подкана като администратор и въведете следната команда.

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 от резба импортиране на импортиране на система за импортиране импортиране от google_drive_downloader импортиране на GoogleDriveDownloader като gdd импортиране os

За да инсталирате googledrivedownloader, използвайте командата

pip install googledrivedownloader

Инициализиране на променливи,

icon = "[email protected]"

CompetImg = "black" meeting1 = "Meeting1:" venue1 = "Час и място1." meeting2 = "Среща2:" venue2 = "Час и място2." meeting3 = "Meeting3:" venue3 = "Час и място3."

Следва класа Ui_MainWindow

клас Ui_MainWindow (обект):

def setupUi (self, MainWindow):… def retranslateUi (self, MainWindow):… def _update (self):…

Следните редове в setupUi на функцията актуализират GUI на всеки 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 drive, а също така променя стойностите на глобалните променливи

def on_message (client, obj, msg):

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 глобална среща1 глобално място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 = път) CompetImg = резултат.група (1) среща1 = резултат.група (2) място1 = резултат.група (3) среща2 = резултат.група (4) място2 = резултат.група (5) среща3 = резултат.група (6) venue3 = резултат.група (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 (target = sqImport, args = [0]) threadB = Thread (target = sqImport, args = [1]) threadA.start () threadB.start () threadA.join () threadB.join ()

Готино, завършихме настройката на Raspberry Pi, след това нека проектираме GUI за компютър с Windows, за да публикуваме съобщението на Raspberry Pi.

Стъпка 6: Графичен интерфейс за компютър с Windows:

GUI за компютър с Windows
GUI за компютър с 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 PC:

  • Файлът Windows_UI.py има всички класове и функции на RPi_UI.ui, с изключение на няколко.
  • Вместо функцията on_message, тя има функция on_publish за публикуване на съобщението.
  • Следният код в рамките на функцията retranslateUi извиква функцията за публикуване след натискане на бутона PUBLISH.

self.pushButton.clicked.connect (self.publish)

  • Функцията за публикуване обединява идентификационния номер на връзката на Google Drive за споделяне и информацията за срещата и я публикува под темата „известие“.
  • Това съобщение ще бъде получено от Raspberry Pi.

Стъпка 8: Настройте цифровата дъска за обяви:

  • Свържете Raspberry Pi към HDMI дисплей, използвал съм телевизора си Sony като дисплей на цифровата дъска за съобщения.
  • Стартирайте файла RPi_UI.py в Raspberry Pi.
  • Стартирайте файла Windows_UI.py на компютъра с Windows.
  • Въведете идентификационния номер на връзката с Google диск на изображение на конкурса и съобщението за срещата.
  • Щракнете върху бутона ПУБЛИКУВАНЕ.
  • Сега можете да видите актуализираната дъска за цифрови съобщения в рамките на няколко секунди.

Съвети:

  • Можете да създадете желания брой табла за цифрови съобщения и дъските могат да се абонират за различни теми.
  • За да направите файла Windows_UI.py преносим, можете да конвертирате файла в изпълним файл с помощта на pyinstaller, така че да можете да стартирате изпълнимия файл във всеки компютър с Windows, без да инсталирате необходимите библиотеки в компютъра.

Благодаря ти

САБАРИ КАНАН М

Препоръчано: