Cuprins:

Panou digital cu ajutorul protocolului Raspberry Pi și MQTT: 8 pași
Panou digital cu ajutorul protocolului Raspberry Pi și MQTT: 8 pași

Video: Panou digital cu ajutorul protocolului Raspberry Pi și MQTT: 8 pași

Video: Panou digital cu ajutorul protocolului Raspberry Pi și MQTT: 8 pași
Video: Automatizari fotovoltaice incepatori Ep.1: Instalare și prezentare Solar Assistant 2024, Noiembrie
Anonim
Image
Image
Panou de anunțuri digital folosind protocolul Raspberry Pi și MQTT
Panou de anunțuri digital folosind protocolul Raspberry Pi și MQTT

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?

Cum funcționează panoul de anunțuri digital?
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:

  1. Raspberry Pi cu sistemul de operare Rasbian
  2. Afișaj cu port HDMI
  3. PC Windows
  4. Conexiune internet
  5. Cont CloudMQTT

Pasul 3: Design GUI pentru afișarea notificărilor:

Image
Image
Design GUI pentru afișarea notificărilor
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:

Image
Image
  • 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:

GUI pentru PC Windows
GUI pentru PC Windows
  • 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

Recomandat: