Cuprins:
- Pasul 1: Cum funcționează panoul de anunțuri digital?
- Pasul 2: Lucruri necesare:
- Pasul 3: Design GUI pentru afișarea notificărilor:
- Pasul 4: Configurați un cont CloudMQTT:
- Pasul 5: Cod final Raspberry Pi explicat:
- Pasul 6: Windows PC GUI:
- Pasul 7: Codul final al computerului cu Windows explicat:
- Pasul 8: configurați panoul de anunțuri digital:
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
Avizierele sunt aproape folosite peste tot, precum birouri, școli, spitale și hoteluri. Acestea pot fi folosite din nou și din nou pentru a afișa notificări importante sau pentru a promova evenimente sau întâlniri viitoare. Însă anunțul sau reclamele trebuie să fie tipărite pe o hârtie și fixate pe panourile de anunțuri.
În acest Instructable, să învățăm să construim panoul nostru digital cu Raspberry Pi pentru a economisi o mulțime de hârtii și toner!
Pasul 1: Cum funcționează panoul de anunțuri digital?
- Un Raspberry Pi conectat la un afișaj HDMI care este panoul nostru digital de avize.
- Un PC Windows este utilizat pentru a publica notificarea pe panoul de avize digital prin internet.
- Notificarea publicată de PC-ul Windows este primită de Tabloul de anunțuri digital prin intermediul unui broker CloudMQTT.
- Comunicarea dintre PC-ul Windows și panoul de avize digital este realizată prin protocolul MQTT.
Pasul 2: Lucruri necesare:
- Raspberry Pi cu sistemul de operare Rasbian
- Afișaj cu port HDMI
- PC Windows
- Conexiune internet
- Cont CloudMQTT
Pasul 3: Design GUI pentru afișarea notificărilor:
Trebuie să proiectăm 2 interfețe grafice, una pentru Raspberry Pi pentru a afișa notificarea pe afișajul HDMI și alta pentru computerul Windows pentru a publica notificarea către Raspberry Pi prin intermediul brokerului CloudMQTT.
Proiectarea GUI depinde de locul în care urmează să amplasați panoul digital. De exemplu, permiteți-mi să proiectez o interfață grafică pentru Instructables Office pentru a afișa evenimentele și întâlnirile viitoare, astfel încât angajații să poată fi actualizați cu cele mai recente informații.
Este ușor să proiectați o interfață grafică într-un computer cu Windows, așa că permiteți-ne să proiectăm interfața grafică digitală a panoului de anunțuri în computerul cu Windows și să copiem codul în Raspberry Pi.
Software necesar:
Anaconda (care include python 2.7, pachetul Qt Designer și Spyder IDE).
Qt Designer este instrumentul utilizat pentru proiectarea GUI-urilor. Ieșirea Qt Designer va fi un fișier.ui, ulterior acesta poate fi convertit în.py pentru proces ulterior.
Ce se întâmplă în videoclip ?:
- Descărcați Anaconda Windows Installer pentru python 2.7 și instalați-l într-un computer Windows (proces normal de instalare).
- După instalare, puteți găsi instrumentul Qt Designer în „directorul_instalare / Library / bin / designer.exe” (pentru mine este „C: / Anaconda2 / Library / bin / designer.exe”)
- Creați o comandă rapidă pentru „designer.exe” și plasați-o pe desktop.
- deschideți „designer.exe”.
- Creați o nouă fereastră principală.
- Alegeți și plasați aspectele și vizualizările necesare (vizualizare text, vizualizare etichetă etc.).
- Salvați ca fișier Rpi_UI.ui.
- Pentru a-l converti în fișierul.py deschideți promptul cmd în folderul curent în care există fișierul Rpi_UI.ui și tastați următoarea comandă
directory_instalare / Library / bin / pyuic5.bat -x RPi_UI.ui -o RPi_UI.py
pentru mine este, C: / Anaconda2 / Library / bin / pyuic5.bat -x RPi_UI.ui -o RPi_UI.py
această comandă va converti fișierul Rpi_UI.ui în fișierRpi_UI.py și îl va plasa în același director.
- Deschideți fișierul Rpi_UI.py cu Spyder IDE care este inclus în Anaconda.
- Rularea scriptului va afișa interfața grafică pe care am proiectat-o mai devreme.
Apoi, permiteți-ne să configurăm contul CloudMQTT.
Pasul 4: Configurați un cont CloudMQTT:
- Accesați acest link.
- Creați un cont cu e-mail și conectați-vă la contul dvs.
- Creați o nouă instanță (am numit-o TEST_1).
- Deschideți informațiile despre instanță.
- Notați serverul, utilizatorul, parola și portul.
- Consultați CloudMQTT Python Documentation și salvați scriptul ca CloudMQTT.py.
- Exemplul de cod din documentație necesită bibliotecă paho, instalați Paho Python Client folosind instrumentul pip, deschideți solicitarea cmd ca administrator și introduceți următoarea comandă.
pip instala paho-mqtt
Pasul 5: Cod final Raspberry Pi explicat:
Aici, permiteți-mi să explic modul în care am combinat fișierul RPi_UI.py cu CloudMQTT.py și l-am salvat ca RPi_UI.py.
Importați biblioteci, dacă nu este instalat, pur și simplu instalați-l
import paho.mqtt.client ca mqtt
import urlparse from PyQt5 import QtGui, QtWidgets, QtCore from PyQt5. QtCore import QTimer, QTime from threading import Thread import sys import re from google_drive_downloader import GoogleDriveDownloader as gdd import os
Pentru a instala googledrivedownloader, utilizați comanda
pip instalare googledrivedownloader
Initializarea variabilelor,
icon = "[email protected]"
contestImg = "black" meeting1 = "Meeting1:" venue1 = "Time and venue1." întâlnire2 = "Întâlnire2:" locul2 = "Ora și locul2." meeting3 = "Întâlnire3:" locul3 = "Ora și locul3."
Urmat de clasa Ui_MainWindow
clasa Ui_MainWindow (obiect):
def setupUi (self, MainWindow):… def retranslateUi (self, MainWindow):… def _update (self): …
Următoarele linii din funcția setupUi actualizează GUI la fiecare 3 secunde apelând funcția _update
self.retranslateUi (MainWindow)
QtCore. QMetaObject.connectSlotsByName (MainWindow) self.timer = QTimer () self.timer.timeout.connect (self._update) self.timer.start (3000)
Funcția on_message așteaptă mesajul de la broker, odată ce mesajul este primit, acesta descarcă imaginea de pe Google Drive folosind ID-ul link-ului partajabil Google Drive și, de asemenea, modifică valorile variabilelor globale
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) concurs globalImg întâlnire globală1 locație globală1 întâlnire globală2 locație globală2 întâlnire globală3 locație globală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 = cale) contestImg = result.group (1) meeting1 = result.group (2) venue1 = result.group (3) meeting2 = result.group (4) venue2 = result.group (5) meeting3 = result.group (6) locul 3 = result.group (7)
Codul este format din 2 bucle infinite,
rc = mqttc.loop ()
și
sys.exit (app.exec_ ())
Pentru a rula aceste bucle simultan, am folosit conceptul 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 ()
Fresc, am finalizat configurarea Raspberry Pi, apoi permiteți-ne să proiectăm GUI pentru PC-ul Windows pentru a publica mesajul către Raspberry Pi.
Pasul 6: Windows PC GUI:
- Proiectați o interfață grafică pentru Windows și salvați-o ca Windows_UI.ui.
- Convertiți-l într-un fișier python.
- Combinați-l cu fișierul CloudMQTT.py și salvați-l ca Windows_UI.py.
- Funcția fișierului Windows_UI.py este similară cu fișierul RPi_UI.py, singura diferență este că fișierul Windows_UI.py publică mesajul în timp ce RPi_UI.py primește mesajul.
Pasul 7: Codul final al computerului cu Windows explicat:
- Fișierul Windows_UI.py are toate clasele și funcțiile RPi_UI.ui, cu excepția câtorva.
- În loc de funcția on_message, are o funcție on_publish pentru a publica mesajul.
- Următorul cod din funcția retranslateUi apelează funcția de publicare după ce se face clic pe butonul PUBLICARE.
self.pushButton.clicked.connect (self.publish)
- Funcția de publicare concatenează ID-ul link-ului partajabil Google Drive și informațiile despre întâlnire și le publică sub subiectul „notificare”.
- Acest mesaj va fi primit de Raspberry Pi.
Pasul 8: configurați panoul de anunțuri digital:
- Conectați Raspberry Pi la un afișaj HDMI, am folosit televizorul meu Sony ca afișaj digital al panoului de avize.
- Rulați fișierul RPi_UI.py în Raspberry Pi.
- Rulați fișierul Windows_UI.py în computerul Windows.
- Introduceți codul de legătură Google Drive al unei imagini de concurs și anunțul întâlnirii.
- Faceți clic pe butonul PUBLICARE.
- Acum puteți vedea panoul de anunțuri digital actualizat în câteva secunde.
Sugestii:
- Puteți crea numărul dorit de panouri digitale, iar panourile pot fi abonate la diferite subiecte.
- Pentru a face fișierul Windows_UI.py portabil, puteți converti fișierul într-un fișier executabil folosind pyinstaller, astfel încât să puteți rula fișierul executabil în orice PC Windows fără a instala bibliotecile necesare în PC.
Mulțumesc
SABARI KANNAN M