Sadržaj:

Digitalna oglasna ploča koja koristi Raspberry Pi i MQTT protokol: 8 koraka
Digitalna oglasna ploča koja koristi Raspberry Pi i MQTT protokol: 8 koraka

Video: Digitalna oglasna ploča koja koristi Raspberry Pi i MQTT protokol: 8 koraka

Video: Digitalna oglasna ploča koja koristi Raspberry Pi i MQTT protokol: 8 koraka
Video: Как превратить Raspberry Pi Pico в ПЛК | Беремиз4Пико 2024, Studeni
Anonim
Image
Image
Digitalna oglasna ploča koja koristi Raspberry Pi i MQTT protokol
Digitalna oglasna ploča koja koristi Raspberry Pi i MQTT protokol

Oglasne ploče gotovo se koriste svugdje, poput ureda, škola, bolnica i hotela. Mogu se koristiti uvijek iznova za prikaz važnih obavijesti ili oglašavanje predstojećih događaja ili sastanaka. No, obavijest ili oglasi moraju se ispisati na papiru i zalijepiti na oglasne ploče.

U ovom Instructableu naučimo izgraditi našu digitalnu oglasnu ploču s Raspberry Pi kako bismo uštedjeli mnogo papira i tonera!

Korak 1: Kako funkcionira digitalna oglasna ploča?

Kako funkcionira digitalna oglasna ploča?
Kako funkcionira digitalna oglasna ploča?
  • Raspberry Pi spojen na HDMI zaslon koji je naša digitalna oglasna ploča.
  • Računalo sa sustavom Windows koristi se za objavljivanje obavijesti na digitalnoj oglasnoj ploči putem interneta.
  • Obavijest koju je objavilo računalo sa sustavom Windows prima Digitalna oglasna ploča putem brokera CloudMQTT.
  • Komunikacija između Windows računala i digitalne oglasne ploče ostvaruje se MQTT protokolom.

Korak 2: Potrebne stvari:

  1. Raspberry Pi sa Rasbian OS -om
  2. Zaslon s HDMI priključkom
  3. Windows računalo
  4. Priključak za internet
  5. CloudMQTT račun

Korak 3: Dizajn grafičkog sučelja za prikaz obavijesti:

Image
Image
GUI dizajn za prikaz obavijesti
GUI dizajn za prikaz obavijesti

Moramo dizajnirati 2 grafička sučelja, jedan za Raspberry Pi za prikaz obavijesti na HDMI zaslonu, a drugi za Windows PC za objavljivanje obavijesti za Raspberry Pi putem brokera CloudMQTT.

Dizajn grafičkog sučelja ovisi o mjestu na koje ćete postaviti digitalnu oglasnu ploču. Na primjer, dopustite mi da dizajniram GUI za Office Instructables za prikaz predstojećih događaja i sastanaka kako bi se zaposlenici mogli ažurirati najnovijim informacijama.

Lako je dizajnirati GUI na Windows računalu, pa dizajnirajmo GUI Digitalne oglasne ploče na Windows PC -u i kopirajmo kôd na Raspberry Pi.

Potreban softver:

Anaconda (koja uključuje python 2.7, paket Qt Designer i Spyder IDE).

Qt Designer je alat koji se koristi za dizajn grafičkih sučelja. Izlaz Qt Designera bit će.ui datoteka, kasnije se može pretvoriti u.py za daljnji proces.

Što se događa u videu?:

  • Preuzmite Anaconda Windows Installer za python 2.7 i instalirajte ga na računalo sa sustavom Windows (uobičajeni postupak instalacije).
  • Nakon instalacije, alat Qt Designer možete pronaći u "installation_directory / Library / bin / designer.exe" (za mene je to "C: / Anaconda2 / Library / bin / designer.exe")
  • Izradite prečac za "designer.exe" i postavite ga na radnu površinu.
  • otvorite "designer.exe".
  • Izradite novi glavni prozor.
  • Odaberite i postavite izglede i potrebne prikaze (prikaz teksta, prikaz naljepnica itd.).
  • Spremi kao datoteku Rpi_UI.ui.
  • Da biste je pretvorili u.py datoteku, otvorite cmd upit u trenutnoj mapi u kojoj postoji datoteka Rpi_UI.ui i upišite sljedeću naredbu

direktorij_instalacije / Knjižnica / bin / pyuic5.bat -x RPi_UI.ui -o RPi_UI.py

za mene jeste, C: / Anaconda2 / Library / bin / pyuic5.bat -x RPi_UI.ui -o RPi_UI.py

ova naredba će pretvoriti datoteku Rpi_UI.ui u datoteku Rpi_UI.py i smjestiti je u isti direktorij.

  • Otvorite datoteku Rpi_UI.py sa Spyder IDE -om koji je uključen u Anacondu.
  • Pokretanje skripte prikazat će GUI koji smo ranije dizajnirali.

Zatim, postavimo CloudMQTT račun.

Korak 4: Postavljanje CloudMQTT računa:

Image
Image
  • Posjetite ovu vezu.
  • Otvorite račun pomoću e-pošte i prijavite se na svoj račun.
  • Izradite novu instancu (nazvao sam je TEST_1).
  • Otvorite podatke o Instanci.
  • Zabilježite poslužitelj, korisnika, lozinku i port.
  • Pogledajte CloudMQTT Python dokumentaciju i spremite skriptu kao CloudMQTT.py.
  • Primjer koda u dokumentaciji zahtijeva paho biblioteku, instalirajte Paho Python Client pomoću alata pip, otvorite cmd upit kao administrator i unesite sljedeću naredbu.

pip install paho-mqtt

Korak 5: Objašnjenje završnog koda Raspberry Pi:

Evo, dopustite mi da objasnim način na koji sam kombinirao datoteku RPi_UI.py s CloudMQTT.py i spremio je kao RPi_UI.py.

Uvezite knjižnice, ako nisu instalirane, samo ih instalirajte

uvoz paho.mqtt.client kao mqtt

uvoz urlparse iz PyQt5 uvoz QtGui, QtWidgets, QtCore iz PyQt5. QtCore uvoz QTimer, QTime iz uvoženja niti Uvoz niti niti uvoz ponovo iz google_drive_downloader uvoz GoogleDriveDownloader kao gdd uvoz os

Da biste instalirali googledrivedownloader, upotrijebite naredbu

pip install googledrivedownloader

Pokretanje varijabli,

icon = "[email protected]"

contestImg = "black" meeting1 = "Meeting1:" venue1 = "Vrijeme i mjesto1." meeting2 = "Sastanak2:" venue2 = "Vrijeme i mjesto2." meeting3 = "Sastanak3:" venue3 = "Vrijeme i mjesto3."

Slijedi klasa Ui_MainWindow

klasa Ui_MainWindow (objekt):

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

Sljedeći retci u setupUi funkcije ažuriraju GUI svake 3 sekunde pozivanjem funkcije _update

self.retranslateUi (Glavni prozor)

QtCore. QMetaObject.connectSlotsByName (MainWindow) self.timer = QTimer () self.timer.timeout.connect (self._update) self.timer.start (3000)

Funkcija on_message čeka poruku od brokera, nakon što je poruka primi, preuzima sliku s google pogona koristeći ID veze za dijeljenje google pogona, a također mijenja i vrijednosti globalnih varijabli

def na_poruku (klijent, obj, poruka):

print (str (msg.payload)) if (str (msg.payload)): noticeReceived = str (msg.payload) result = re.search ('%1 (.*)%2 (.*)%3 (. *)%4 (.*)%5 (.*)%6 (.*)%7 (.*)%8 ', noticeReceived) globalno natjecanjeImg globalni sastanak1 globalno mjesto1 globalni sastanak2 globalno mjesto2 globalno okupljanje3 globalno mjesto3 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 = put) contestImg = rezultat.grupa (1) sastanak1 = rezultat.grupa (2) mjesto1 = rezultat.grupa (3) sastanak2 = rezultat.grupa (4) mjesto2 = rezultat.grupa (5) sastanak3 = rezultat.grupa (6) mjesto 3 = rezultat.grupa (7)

Kod se sastoji od 2 beskonačne petlje,

rc = mqttc.loop ()

i

sys.exit (app.exec_ ())

Da bih istovremeno pokrenuo ove petlje, upotrijebio sam koncept 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 ()

Super, dovršili smo postavljanje Raspberry Pi -a, a zatim dizajnirajmo GUI za Windows PC kako bismo objavili poruku na Raspberry Pi -u.

Korak 6: Windows PC GUI:

Windows GUI za računalo
Windows GUI za računalo
  • Dizajnirajte GUI za Windows i spremite ga kao Windows_UI.ui.
  • Pretvorite ga u python datoteku.
  • Kombinirajte je s datotekom CloudMQTT.py i spremite je kao Windows_UI.py.
  • Funkcija datoteke Windows_UI.py slična je datoteci RPi_UI.py, jedina razlika je u tome što datoteka Windows_UI.py objavljuje poruku dok RPi_UI.py prima poruku.

Korak 7: Objašnjenje završnog koda za Windows PC:

  • Datoteka Windows_UI.py ima sve klase i funkcije RPi_UI.ui, osim nekoliko.
  • Umjesto funkcije on_message, ona ima funkciju on_publish za objavljivanje poruke.
  • Sljedeći kôd unutar funkcije retranslateUi poziva funkciju objavljivanja nakon što pritisnete gumb OBJAVI.

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

  • Funkcija objavljivanja povezuje ID veze za dijeljenje google pogona i podatke o sastanku te ih objavljuje pod temom "obavijest".
  • Ovu poruku primit će Raspberry Pi.

Korak 8: Postavljanje digitalne oglasne ploče:

  • Spojite Raspberry Pi na HDMI zaslon. Koristio sam svoj Sony TV kao zaslon za digitalnu oglasnu ploču.
  • Pokrenite datoteku RPi_UI.py u Raspberry Pi.
  • Pokrenite datoteku Windows_UI.py na računalu sa sustavom Windows.
  • Unesite ID veze Google pogona slike natječaja i najavu sastanka.
  • Pritisnite gumb OBJAVI.
  • Sada možete vidjeti ažuriranu Digitalnu oglasnu ploču u roku od nekoliko sekundi.

Savjeti:

  • Možete stvoriti željeni broj digitalnih oglasnih ploča, a ploče se mogu pretplatiti na različite teme.
  • Da biste datoteku Windows_UI.py učinili prenosivom, datoteku možete pretvoriti u izvršnu datoteku pomoću programa pyinstaller, tako da izvršnu datoteku možete pokrenuti na bilo kojem računalu sa sustavom Windows bez instaliranja potrebnih knjižnica na računalo.

Hvala vam

SABARI KANNAN M

Preporučeni: