INHOUDSOPGAWE:
- Stap 1: Hoe werk die digitale kennisgewingbord?
- Stap 2: Vereiste dinge:
- Stap 3: GUI -ontwerp om kennisgewings te vertoon:
- Stap 4: Stel 'n CloudMQTT -rekening op:
- Stap 5: Raspberry Pi Finale kode verduidelik:
- Stap 6: Windows PC GUI:
- Stap 7: Finale kode van Windows PC verduidelik:
- Stap 8: Stel die digitale kennisgewingbord op:
Video: Digitale kennisgewingbord met behulp van Raspberry Pi en MQTT -protokol: 8 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:26
Kennisgewingborde word byna oral gebruik, soos kantoor, skole, hospitale en hotelle. Dit kan telkens gebruik word om belangrike kennisgewings te vertoon of om toekomstige geleenthede of vergaderings te adverteer. Maar die kennisgewing of advertensies moet op 'n papier gedruk word en op die kennisgewingborde vasgemaak word.
In hierdie instruksies, laat ons leer om ons digitale kennisgewingbord met Raspberry Pi te bou om baie papiere en toner te bespaar!
Stap 1: Hoe werk die digitale kennisgewingbord?
- 'N Raspberry Pi wat gekoppel is aan 'n HDMI -skerm, wat ons digitale kennisgewingbord is.
- 'N Windows -rekenaar word gebruik om die kennisgewing op die digitale kennisgewingbord via die internet te publiseer.
- Die kennisgewing wat deur die Windows PC gepubliseer word, word deur die Digital Notice Board deur 'n CloudMQTT -makelaar ontvang.
- Die kommunikasie tussen die Windows -rekenaar en die digitale kennisgewingbord word bereik deur die MQTT -protokol.
Stap 2: Vereiste dinge:
- Framboos Pi met Rasbian OS
- Vertoon met HDMI -poort
- Windows rekenaar
- Internet konneksie
- CloudMQTT -rekening
Stap 3: GUI -ontwerp om kennisgewings te vertoon:
Ons moet 2 GUI's ontwerp, een vir Raspberry Pi om die kennisgewing op die HDMI -skerm te vertoon en 'n ander vir Windows PC om die kennisgewing aan Raspberry Pi te publiseer via CloudMQTT -makelaar.
Die GUI -ontwerp hang af van die plek waar u die digitale kennisgewingbord gaan plaas. Laat ek byvoorbeeld 'n GUI vir Instructables Office ontwerp om komende geleenthede en vergaderings te vertoon sodat die werknemers opgedateer kan word met die nuutste inligting.
Dit is maklik om 'n GUI op 'n Windows -rekenaar te ontwerp, dus laat ons die GUI van die Digital Notice Board in die Windows PC ontwerp en die kode na die Raspberry Pi kopieer.
Sagteware benodig:
Anaconda (wat python 2.7, Qt Designer -pakket en Spyder IDE insluit).
Qt Designer is die instrument wat gebruik word om GUI's te ontwerp. Die uitvoer van die Qt Designer sal 'n.ui -lêer wees, later kan dit omgeskakel word na.py vir verdere proses.
Wat gebeur in die video?:
- Laai Anaconda Windows Installer vir python 2.7 af en installeer dit op 'n Windows -rekenaar (normale installasieproses).
- Na die installasie kan u die Qt Designer -hulpmiddel vind in "installation_directory / Library / bin / designer.exe" (vir my is dit "C: / Anaconda2 / Library / bin / designer.exe")
- Skep 'n kortpad vir "designer.exe" en plaas dit op die lessenaar.
- maak "designer.exe" oop.
- Skep 'n nuwe hoofvenster.
- Kies en plaas die uitlegte en die vereiste aansigte (teksaansig, etiketweergawe, ens.).
- Stoor as 'n Rpi_UI.ui -lêer.
- Om dit in 'n.py -lêer te omskep, open cmd prompt in die huidige gids waar die Rpi_UI.ui lêer bestaan en tik die volgende opdrag
installation_directory / Library / bin / pyuic5.bat -x RPi_UI.ui -o RPi_UI.py
vir my is dit, C: / Anaconda2 / Library / bin / pyuic5.bat -x RPi_UI.ui -o RPi_UI.py
Hierdie opdrag sal die Rpi_UI.ui -lêer omskakel na die lêer RPI_UI.py en dit in dieselfde gids plaas.
- Maak die Rpi_UI.py -lêer oop met Spyder IDE wat by Anaconda ingesluit is.
- Die gebruik van die script sal die GUI wat ons vroeër ontwerp het, vertoon.
Laat ons dan die CloudMQTT -rekening opstel.
Stap 4: Stel 'n CloudMQTT -rekening op:
- Besoek hierdie skakel.
- Skep 'n rekening met e-pos en meld aan by u rekening.
- Skep 'n nuwe instansie (ek noem dit TEST_1).
- Maak die Instansie -inligting oop.
- Let op die bediener, gebruiker, wagwoord en poort.
- Verwys na CloudMQTT Python -dokumentasie en stoor die script as CloudMQTT.py.
- Die voorbeeldkode in die dokumentasie vereis paho -biblioteek, installeer Paho Python -kliënt met behulp van pip -hulpmiddel, open cmd prompt as administrateur en voer die volgende opdrag in.
pip installeer paho-mqtt
Stap 5: Raspberry Pi Finale kode verduidelik:
Laat ek hier verduidelik hoe ek die RPi_UI.py -lêer met die CloudMQTT.py gekombineer en as RPi_UI.py gestoor het.
Voer biblioteke in, installeer dit as dit nie geïnstalleer is nie
voer paho.mqtt.client in as mqtt
invoer urlparse van PyQt5 invoer QtGui, QtWidgets, QtCore van PyQt5. QtCore invoer QTimer, QTime van threading invoer thread import sys import re from google_drive_downloader import GoogleDriveDownloader as gdd invoer os
Gebruik die opdrag om googledrivedownloader te installeer
pip installeer googledrivedownloader
Initialiseer veranderlikes,
icon = "[email protected]"
contestImg = "black" meeting1 = "Meeting1:" venue1 = "Tyd en plek1." meeting2 = "Meeting2:" venue2 = "Tyd en plek2." meeting3 = "Meeting3:" venue3 = "Tyd en plek3."
Gevolg deur die klas Ui_MainWindow
klas Ui_MainWindow (voorwerp):
def setupUi (self, MainWindow): … def retranslateUi (self, MainWindow): … def _update (self): …
Die volgende reëls in die funksie setupUi werk die GUI elke 3 sekondes by deur die _update -funksie te skakel
self.retranslateUi (MainWindow)
QtCore. QMetaObject.connectSlotsByName (MainWindow) self.timer = QTimer () self.timer.timeout.connect (self._update) self.timer.start (3000)
Die on_message -funksie wag op die boodskap van die makelaar, sodra die boodskap ontvang is, laai dit die prent van die Google Drive af met behulp van die skakel -ID van Google Drive en verander dit ook die waardes van die globale veranderlikes
def on_message (kliënt, 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) globale wedstrydImg globale vergadering1 globale venue1 globale vergadering2 globale venue2 globale vergadering3 globale venue3 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 = pad) contestImg = result.group (1) meeting1 = result.group (2) venue1 = result.group (3) meeting2 = result.group (4) venue2 = result.group (5) meeting3 = result.group (6) venue3 = result.group (7)
Die kode bestaan uit 2 oneindige lusse,
rc = mqttc.loop ()
en
sys.exit (app.exec_ ())
Om hierdie lusse gelyktydig te laat loop, het ek die konsep Threading gebruik
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 ()
Cool, ons het die opstelling van die Raspberry Pi voltooi, en laat ons dan 'n GUI ontwerp vir Windows PC om die boodskap aan die Raspberry Pi te publiseer.
Stap 6: Windows PC GUI:
- Ontwerp 'n GUI vir Windows en stoor dit as Windows_UI.ui.
- Skakel dit om in 'n python -lêer.
- Kombineer dit met die CloudMQTT.py -lêer en stoor dit as Windows_UI.py.
- Die funksie van die Windows_UI.py -lêer is soortgelyk aan die RPi_UI.py -lêer; die enigste verskil is dat die Windows_UI.py -lêer die boodskap publiseer, terwyl die RPi_UI.py die boodskap ontvang.
Stap 7: Finale kode van Windows PC verduidelik:
- Die Windows_UI.py -lêer bevat alle klasse en funksies van RPi_UI.ui, behalwe 'n paar.
- In plaas van die on_message -funksie, het dit 'n on_publish -funksie om die boodskap te publiseer.
- Die volgende kode binne die retranslateUi -funksie noem die publiseerfunksie sodra op die PUBLISH -knoppie geklik word.
self.pushButton.clicked.connect (self.publiseer)
- Die publiseerfunksie verbind die skakel -ID met Google Drive en die vergaderingsinligting aanmekaar en publiseer dit onder die onderwerp "kennisgewing".
- Hierdie boodskap sal deur die Raspberry Pi ontvang word.
Stap 8: Stel die digitale kennisgewingbord op:
- Koppel die Raspberry Pi aan 'n HDMI -skerm, ek het my Sony TV gebruik as 'n digitale kennisgewingbord.
- Begin die RPi_UI.py -lêer in die Raspberry Pi.
- Begin die Windows_UI.py -lêer op die Windows -rekenaar.
- Voer die Google Drive -skakel -ID van 'n wedstrydbeeld en die aankondiging van die vergadering in.
- Klik op die PUBLISH -knoppie.
- Nou kan u die opgedateerde digitale kennisgewingbord binne 'n paar sekondes sien.
Wenke:
- U kan die gewenste aantal digitale kennisgewingborde skep, en die borde kan op verskillende onderwerpe ingeteken word.
- Om die Windows_UI.py -lêer draagbaar te maak, kan u die lêer omskep in 'n uitvoerbare lêer met behulp van pyinstaller, sodat u die uitvoerbare lêer op enige Windows -rekenaar kan laat loop sonder om die vereiste biblioteke op die rekenaar te installeer.
Dankie
SABARI KANNAN M
Aanbeveel:
Hoe om 'n analoog horlosie en 'n digitale horlosie met LED -strook te maak met behulp van Arduino: 3 stappe
Hoe om 'n analoog horlosie en 'n digitale horlosie te maak met 'n LED -strook met Arduino: vandag maak ons 'n analoog horlosie & Digitale klok met Led Strip en MAX7219 Dot -module met Arduino. Dit sal die tyd met die plaaslike tydsone regstel. Die analoog horlosie kan 'n langer LED -strook gebruik, sodat dit aan die muur gehang kan word om 'n kunswerker te word
Draadlose kennisgewingbord (Bluetooth): 5 stappe (met foto's)
Draadlose kennisgewingbord (Bluetooth): in hierdie moderne wêreld waar alles gedigitaliseer is, waarom konvensionele kennisgewingbord nie 'n nuwe voorkoms kry nie, laat ons 'n Bluetooth -beheerde kennisgewingbord maak wat baie eenvoudig is. Hierdie opset kan gebruik word in plaas van statiese kennisgewing raad soos in kolleges/in
Beheer oor die hele wêreld met behulp van internet met behulp van Arduino: 4 stappe
Beheer oor die hele wêreld met behulp van internet met behulp van Arduino: Hallo, ek is Rithik. Ons gaan 'n internetbeheerde LED maak met u telefoon. Ons gaan sagteware soos Arduino IDE en Blynk gebruik. Dit is eenvoudig, en as u daarin geslaag het, kan u soveel elektroniese komponente beheer as wat u wil
Monitor versnelling met behulp van Raspberry Pi en AIS328DQTR met behulp van Python: 6 stappe
Monitering van versnelling met behulp van Raspberry Pi en AIS328DQTR Gebruik van Python: Versnelling is eindig, volgens ek volgens sommige wette van die fisika.- Terry Riley 'n Jagluiperd gebruik ongelooflike versnelling en vinnige spoedveranderinge wanneer hy jaag. Die vinnigste wesens aan wal gebruik af en toe sy hoogste tempo om prooi te vang. Die
Maak u kennisgewingbord van u skole werklik opvallend: 4 stappe
Maak u skoolplatform regtig opvallend: maak 'n vervelige ou plakkaat wat opvallend is teen 'n goedkoop prys. Eendag sit ek in die klas en doen my werk (hoes, hoes, praat, hoes) en my wetenskaponderwyser bel my na buite. Bugger, het ek gedink. Maar nee, hy wou eintlik hê ek moet hom bou