Sommario:

Bacheca digitale con protocollo Raspberry Pi e MQTT: 8 passaggi
Bacheca digitale con protocollo Raspberry Pi e MQTT: 8 passaggi

Video: Bacheca digitale con protocollo Raspberry Pi e MQTT: 8 passaggi

Video: Bacheca digitale con protocollo Raspberry Pi e MQTT: 8 passaggi
Video: ESP32 и GPS 2024, Dicembre
Anonim
Image
Image
Bacheca digitale con protocollo Raspberry Pi e MQTT
Bacheca digitale con protocollo Raspberry Pi e MQTT

Le bacheche sono utilizzate quasi ovunque, come uffici, scuole, ospedali e hotel. Possono essere utilizzati più e più volte per visualizzare avvisi importanti o pubblicizzare eventi o riunioni imminenti. Ma l'avviso o gli annunci devono essere stampati su un foglio e appuntati sulle bacheche.

In questo Instructable impariamo a costruire la nostra bacheca digitale con Raspberry Pi per risparmiare un sacco di carta e toner!

Passaggio 1: come funziona la bacheca digitale?

Come funziona la bacheca digitale?
Come funziona la bacheca digitale?
  • Un Raspberry Pi collegato a un display HDMI che è la nostra bacheca digitale.
  • Un PC Windows viene utilizzato per pubblicare l'avviso sulla bacheca digitale tramite Internet.
  • L'avviso pubblicato dal PC Windows viene ricevuto dalla bacheca digitale tramite un broker CloudMQTT.
  • La comunicazione tra il PC Windows e la bacheca digitale avviene tramite il protocollo MQTT.

Passaggio 2: cose richieste:

  1. Raspberry Pi con sistema operativo Rasbian
  2. Display con porta HDMI
  3. PC Windows
  4. Connessione internet
  5. Account CloudMQTT

Passaggio 3: progettazione della GUI per la visualizzazione degli avvisi:

Image
Image
Progettazione della GUI per la visualizzazione degli avvisi
Progettazione della GUI per la visualizzazione degli avvisi

Dobbiamo progettare 2 GUI, una per Raspberry Pi per visualizzare l'avviso sul display HDMI e un'altra per PC Windows per pubblicare l'avviso su Raspberry Pi tramite il broker CloudMQTT.

Il design della GUI dipende dal luogo in cui collocherai la bacheca digitale. Ad esempio, permettetemi di progettare una GUI per Instructables Office per visualizzare eventi e riunioni imminenti in modo che i dipendenti possano essere aggiornati con le informazioni più recenti.

È facile progettare una GUI in un PC Windows, quindi progettiamo la GUI della bacheca digitale nel PC Windows e copiamo il codice sul Raspberry Pi.

Software richiesto:

Anaconda (che include Python 2.7, pacchetto Qt Designer e Spyder IDE).

Qt Designer è lo strumento utilizzato per progettare le GUI. L'output di Qt Designer sarà un file.ui, in seguito può essere convertito in.py per ulteriori processi.

Cosa sta succedendo nel video?:

  • Scarica Anaconda Windows Installer per python 2.7 e installalo su un PC Windows (normale processo di installazione).
  • Dopo l'installazione, puoi trovare lo strumento Qt Designer in "installation_directory\Library\bin\designer.exe"(per me è "C:\Anaconda2\Library\bin\designer.exe")
  • Crea un collegamento per "designer.exe" e posizionalo sul desktop.
  • aprire "designer.exe".
  • Crea una nuova finestra principale.
  • Scegli e posiziona i layout e le viste richieste (vista testo, vista etichetta, ecc.).
  • Salva come file Rpi_UI.ui.
  • Per convertirlo in file.py aprire il prompt cmd nella cartella corrente in cui esiste il file Rpi_UI.ui e digitare il seguente comando

directory_installazione\Libreria\bin\pyuic5.bat -x RPi_UI.ui -o RPi_UI.py

per me lo è, C:\Anaconda2\Library\bin\pyuic5.bat -x RPi_UI.ui -o RPi_UI.py

questo comando convertirà il file Rpi_UI.ui in un file Rpi_UI.py e lo collocherà nella stessa directory.

  • Apri il file Rpi_UI.py con Spyder IDE che è incluso in Anaconda.
  • L'esecuzione dello script visualizzerà la GUI che abbiamo progettato in precedenza.

Successivamente, impostiamo l'account CloudMQTT.

Passaggio 4: configura un account CloudMQTT:

Image
Image
  • Visita questo collegamento.
  • Crea un account con E-mail e accedi al tuo account.
  • Crea una nuova istanza (l'ho chiamata TEST_1).
  • Apri le informazioni sull'istanza.
  • Prendere nota del server, dell'utente, della password e della porta.
  • Fare riferimento alla documentazione Python di CloudMQTT e salvare lo script come CloudMQTT.py.
  • Il codice di esempio nella documentazione richiede la libreria paho, installa Paho Python Client utilizzando lo strumento pip, apri il prompt cmd come amministratore e inserisci il seguente comando.

pip install paho-mqtt

Passaggio 5: spiegazione del codice finale Raspberry Pi:

Qui, lascia che ti spieghi come ho combinato il file RPi_UI.py con CloudMQTT.py e l'ho salvato come RPi_UI.py.

Importa librerie, se non è installato installalo

import paho.mqtt.client come 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

Per installare googledrivedownloader, usa il comando

pip installa googledrivedownloader

Inizializzazione delle variabili,

icon = "[email protected]"

contestImg = "black" meeting1 = "Meeting1:" venue1 = "Ora e luogo1." meeting2 = "Meeting2:" venue2 = "Ora e luogo2." meeting3 = "Meeting3:" venue3 = "Ora e luogo3."

A seguire la classe Ui_MainWindow

class Ui_MainWindow(oggetto):

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

Le seguenti righe nella funzione setupUi aggiornano la GUI ogni 3 secondi chiamando la funzione _update

self.retranslateUi (Finestra principale)

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

La funzione on_message attende il messaggio dal broker, una volta ricevuto il messaggio scarica l'immagine dall'unità google utilizzando l'ID del collegamento condivisibile di google drive e modifica anche i valori delle variabili globali

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) global contestImg global meeting1 global venue1 global meeting2 global venue2 global meeting3 global venue3 fileId = "" +result.group(1)+"" percorso = "/home/pi/Desktop/Instructables/RPi UI/ContestImages/"+result.group(1)+".jpg" gdd.download_file_from_google_drive(file_id = fileId, dest_path= percorso) contestImg = risultato.gruppo(1) incontro1 = risultato.gruppo(2) sede1 = risultato.gruppo(3) incontro2 = risultato.gruppo(4) luogo2 = risultato.gruppo(5) incontro3 = risultato.gruppo(6) sede3 = risultato.gruppo(7)

Il codice è composto da 2 loop infiniti,

rc = mqttc.loop()

e

sys.exit(app.exec_())

Per eseguire questi loop contemporaneamente, ho utilizzato il concetto di 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()

Fantastico, abbiamo completato la configurazione di Raspberry Pi, quindi progettiamo la GUI per PC Windows per pubblicare il messaggio sul Raspberry Pi.

Passaggio 6: GUI del PC Windows:

Interfaccia grafica del PC Windows
Interfaccia grafica del PC Windows
  • Progetta una GUI per Windows e salvala come Windows_UI.ui.
  • Convertilo in un file python.
  • Combinalo con il file CloudMQTT.py e salvalo come Windows_UI.py.
  • La funzione del file Windows_UI.py è simile al file RPi_UI.py, l'unica differenza è che il file Windows_UI.py pubblica il messaggio mentre RPi_UI.py riceve il messaggio.

Passaggio 7: spiegazione del codice finale per PC Windows:

  • Il file Windows_UI.py ha tutte le classi e le funzioni di RPi_UI.ui tranne alcune.
  • Invece della funzione on_message, ha una funzione on_publish per pubblicare il messaggio.
  • Il codice seguente all'interno della funzione retranslateUi chiama la funzione di pubblicazione una volta che si fa clic sul pulsante PUBBLICA.

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

  • La funzione di pubblicazione concatena l'ID del collegamento condivisibile di Google Drive e le informazioni sulla riunione e le pubblica sotto l'argomento "avviso".
  • Questo messaggio verrà ricevuto dal Raspberry Pi.

Passaggio 8: impostare la bacheca digitale:

  • Collega il Raspberry Pi a un display HDMI, ho usato la mia TV Sony come display della bacheca digitale.
  • Esegui il file RPi_UI.py nel Raspberry Pi.
  • Esegui il file Windows_UI.py nel PC Windows.
  • Inserisci l'ID del link di Google Drive di un'immagine del concorso e l'annuncio della riunione.
  • Fare clic sul pulsante PUBBLICARE.
  • Ora puoi vedere la bacheca digitale aggiornata in pochi secondi.

Suggerimenti:

  • Puoi creare il numero desiderato di Bacheche Digitali e le Bacheche possono essere sottoscritte a diversi Argomenti.
  • Per rendere portabile il file Windows_UI.py, puoi convertire il file in un file eseguibile utilizzando pyinstaller, in modo da poter eseguire il file eseguibile in qualsiasi PC Windows senza installare le librerie richieste nel PC.

Grazie

SABARI KANNAN M

Consigliato: