Πίνακας περιεχομένων:

Boardηφιακός πίνακας ανακοινώσεων χρησιμοποιώντας Raspberry Pi και πρωτόκολλο MQTT: 8 βήματα
Boardηφιακός πίνακας ανακοινώσεων χρησιμοποιώντας Raspberry Pi και πρωτόκολλο MQTT: 8 βήματα

Βίντεο: Boardηφιακός πίνακας ανακοινώσεων χρησιμοποιώντας Raspberry Pi και πρωτόκολλο MQTT: 8 βήματα

Βίντεο: Boardηφιακός πίνακας ανακοινώσεων χρησιμοποιώντας Raspberry Pi και πρωτόκολλο MQTT: 8 βήματα
Βίντεο: Squid game #shorts 2024, Νοέμβριος
Anonim
Image
Image
Digitalηφιακός πίνακας ανακοινώσεων χρησιμοποιώντας Raspberry Pi και πρωτόκολλο MQTT
Digitalηφιακός πίνακας ανακοινώσεων χρησιμοποιώντας Raspberry Pi και πρωτόκολλο MQTT

Οι πίνακες ανακοινώσεων χρησιμοποιούνται σχεδόν παντού, όπως γραφεία, σχολεία, νοσοκομεία και ξενοδοχεία. Μπορούν να χρησιμοποιηθούν ξανά και ξανά για την εμφάνιση σημαντικών ειδοποιήσεων ή τη διαφήμιση μελλοντικών εκδηλώσεων ή συναντήσεων. Αλλά η προκήρυξη ή οι διαφημίσεις πρέπει να τυπωθούν σε χαρτί και να καρφιτσώνονται στους πίνακες ανακοινώσεων.

Σε αυτό το Instructable ας μάθουμε να κατασκευάζουμε τον ψηφιακό πίνακα ανακοινώσεών μας με το Raspberry Pi για εξοικονόμηση πολλών χαρτιών και γραφίτη!

Βήμα 1: Πώς λειτουργεί ο ψηφιακός πίνακας ανακοινώσεων;

Πώς λειτουργεί ο ψηφιακός πίνακας ανακοινώσεων
Πώς λειτουργεί ο ψηφιακός πίνακας ανακοινώσεων
  • Ένα Raspberry Pi συνδεδεμένο με μια οθόνη HDMI που είναι ο ψηφιακός πίνακας ανακοινώσεών μας.
  • Ένας υπολογιστής Windows χρησιμοποιείται για τη δημοσίευση της ειδοποίησης στον ψηφιακό πίνακα ανακοινώσεων μέσω διαδικτύου.
  • Η ειδοποίηση που δημοσιεύεται από τον υπολογιστή με Windows λαμβάνεται από τον Notηφιακό πίνακα ανακοινώσεων μέσω μεσίτη CloudMQTT.
  • Η επικοινωνία μεταξύ του Windows PC και του Digital Notice Board επιτυγχάνεται με το πρωτόκολλο MQTT.

Βήμα 2: Απαιτούμενα πράγματα:

  1. Raspberry Pi με Rasbian OS
  2. Οθόνη με θύρα HDMI
  3. Υπολογιστής Windows
  4. Σύνδεση στο Internet
  5. Λογαριασμός CloudMQTT

Βήμα 3: Σχεδιασμός GUI για την εμφάνιση ειδοποιήσεων:

Image
Image
Σχεδιασμός GUI για την εμφάνιση ειδοποιήσεων
Σχεδιασμός GUI για την εμφάνιση ειδοποιήσεων

Πρέπει να σχεδιάσουμε 2 GUI, ένα για το Raspberry Pi να εμφανίζει την ειδοποίηση στην οθόνη HDMI και ένα άλλο για Windows PC για να δημοσιεύσει την ειδοποίηση στο Raspberry Pi μέσω μεσίτη CloudMQTT.

Ο σχεδιασμός του GUI εξαρτάται από τον τόπο στον οποίο πρόκειται να τοποθετήσετε τον ψηφιακό πίνακα ανακοινώσεων. Για παράδειγμα, επιτρέψτε μου να σχεδιάσω ένα GUI για το Instructables Office για να εμφανίζει προσεχείς εκδηλώσεις και συναντήσεις, ώστε οι εργαζόμενοι να ενημερώνονται με τις πιο πρόσφατες πληροφορίες.

Είναι εύκολο να σχεδιάσετε ένα GUI σε υπολογιστή με Windows, οπότε αφήστε μας να σχεδιάσουμε το GUI του Digital Notice Board στον υπολογιστή με Windows και να αντιγράψουμε τον κώδικα στο Raspberry Pi.

Απαιτείται λογισμικό:

Anaconda (που περιλαμβάνει python 2.7, πακέτο Qt Designer και Spyder IDE).

Το Qt Designer είναι το εργαλείο που χρησιμοποιείται για το σχεδιασμό GUI. Η έξοδος του 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 και πληκτρολογήστε την ακόλουθη εντολή

installation_directory / 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.
  • Η εκτέλεση του σεναρίου θα εμφανίσει το GUI που σχεδιάσαμε νωρίτερα.

Στη συνέχεια, ας δημιουργήσουμε τον λογαριασμό CloudMQTT.

Βήμα 4: Ρύθμιση λογαριασμού CloudMQTT:

Image
Image
  • Επισκεφτείτε αυτόν τον σύνδεσμο.
  • Δημιουργήστε έναν λογαριασμό με E-mail και συνδεθείτε στο λογαριασμό σας.
  • Δημιουργία νέας παρουσίας (το ονόμασα ως TEST_1).
  • Ανοίξτε τις πληροφορίες της παρουσίας.
  • Σημειώστε τον διακομιστή, τον χρήστη, τον κωδικό πρόσβασης και τη θύρα.
  • Ανατρέξτε στο CloudMQTT Python Documentation και αποθηκεύστε το σενάριο ως CloudMQTT.py.
  • Ο παράδειγμα κώδικα στην τεκμηρίωση απαιτεί βιβλιοθήκη paho, Εγκατάσταση του Paho Python Client χρησιμοποιώντας το εργαλείο pip, ανοίξτε την εντολή cmd ως διαχειριστή και εισαγάγετε την ακόλουθη εντολή.

pip εγκατάσταση paho-mqtt

Βήμα 5: Επεξήγηση τελικού κώδικα Raspberry Pi:

Εδώ, επιτρέψτε μου να εξηγήσω τον τρόπο που συνδύασα το αρχείο RPi_UI.py με το CloudMQTT.py και το αποθήκευσα ως RPi_UI.py.

Εισαγάγετε βιβλιοθήκες, εάν δεν είναι εγκατεστημένη, απλώς εγκαταστήστε την

εισαγωγή paho.mqtt.client ως mqtt

εισαγωγή urlparse από PyQt5 εισαγωγή QtGui, QtWidgets, QtCore από PyQt5. QtCore import QTimer, QTime from threading import Εισαγωγή νημάτων sys import re from google_drive_downloader import GoogleDriveDownloader as gdd import os

Για να εγκαταστήσετε το googledrivedownloader, χρησιμοποιήστε την εντολή

pip εγκατάσταση googledrivedownloader

Αρχικοποίηση μεταβλητών,

icon = "[email protected]"

contestImg = "black" meeting1 = "Meeting1:" venue1 = "Timeρα και τόπος1." meeting2 = "Meeting2:" venue2 = "Timeρα και τόπος2." meeting3 = "Meeting3:" venue3 = "Timeρα και τόπος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):

εκτύπωση (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 = διαδρομή) 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)

Ο κώδικας αποτελείται από 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 PC για να δημοσιεύσουμε το μήνυμα στο Raspberry Pi.

Βήμα 6: Windows PC GUI:

GUI Windows PC
GUI Windows PC
  • Σχεδιάστε ένα GUI για παράθυρα και αποθηκεύστε το ως 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 Drive μιας εικόνας διαγωνισμού και την ανακοίνωση της σύσκεψης.
  • Κάντε κλικ στο κουμπί ΔΗΜΟΣΙΕΥΣΗ.
  • Τώρα μπορείτε να δείτε τον ενημερωμένο ψηφιακό πίνακα ανακοινώσεων μέσα σε λίγα δευτερόλεπτα.

Συμβουλές:

  • Μπορείτε να δημιουργήσετε τον επιθυμητό αριθμό ψηφιακών πινάκων ανακοινώσεων και οι πίνακες μπορούν να εγγραφούν σε διαφορετικά θέματα.
  • Για να κάνετε το αρχείο Windows_UI.py φορητό, μπορείτε να μετατρέψετε το αρχείο σε εκτελέσιμο αρχείο χρησιμοποιώντας το pyinstaller, ώστε να μπορείτε να εκτελέσετε το εκτελέσιμο αρχείο σε οποιονδήποτε υπολογιστή Windows χωρίς να εγκαταστήσετε τις απαιτούμενες βιβλιοθήκες στον υπολογιστή.

Σας ευχαριστώ

SABARI KANNAN Μ

Συνιστάται: