Talaan ng mga Nilalaman:

Digital Notice Board Gamit ang Raspberry Pi at MQTT Protocol: 8 Hakbang
Digital Notice Board Gamit ang Raspberry Pi at MQTT Protocol: 8 Hakbang

Video: Digital Notice Board Gamit ang Raspberry Pi at MQTT Protocol: 8 Hakbang

Video: Digital Notice Board Gamit ang Raspberry Pi at MQTT Protocol: 8 Hakbang
Video: #Raspberry Pi Device Basics / Raspbian / Raspberry Pi board / GPIO pins 2024, Nobyembre
Anonim
Image
Image
Digital Notice Board Gamit ang Raspberry Pi at MQTT Protocol
Digital Notice Board Gamit ang Raspberry Pi at MQTT Protocol

Paunawa ang mga Board ay halos ginagamit kahit saan, tulad ng opisina, paaralan, ospital, at hotel. Maaari silang magamit nang paulit-ulit upang maipakita ang mahahalagang paunawa o i-advertise ang mga darating na kaganapan o pagpupulong. Ngunit ang abiso o mga patalastas ay dapat na mai-print sa isang papel at mai-pin sa mga board ng paunawa.

Sa Instructable na ito matutunan natin na bumuo ng aming Digital Notice Board na may Raspberry Pi upang makatipid ng maraming mga papel at toner!

Hakbang 1: Paano Gumagana ang Digital Notice Board?

Paano Gumagana ang Digital Notice Board?
Paano Gumagana ang Digital Notice Board?
  • Ang isang Raspberry Pi na konektado sa isang HDMI Display na kung saan ay ang aming Digital Notice Board.
  • Ginagamit ang isang Windows PC upang mai-publish ang paunawa sa Digital Notice Board sa pamamagitan ng internet.
  • Ang abiso na na-publish ng Windows PC ay natanggap ng Digital Notice Board sa pamamagitan ng isang broker ng CloudMQTT.
  • Ang komunikasyon sa pagitan ng Windows PC at ng Digital Notice Board ay nakamit ng MQTT protocol.

Hakbang 2: Mga Bagay na Kinakailangan:

  1. Raspberry Pi kasama ang Rasbian OS
  2. Ipakita gamit ang HDMI port
  3. Windows PC
  4. Internet connection
  5. CloudMQTT account

Hakbang 3: Disenyo ng GUI para sa Pagpapakita ng Mga Abiso:

Image
Image
Disenyo ng GUI para sa Pagpapakita ng Mga Paunawa
Disenyo ng GUI para sa Pagpapakita ng Mga Paunawa

Kailangan naming mag-disenyo ng 2 GUI, isa para sa Raspberry Pi upang maipakita ang abiso sa HDMI Display at isa pa para sa Windows PC upang mai-publish ang abiso sa Raspberry Pi sa pamamagitan ng CloudMQTT broker.

Ang disenyo ng GUI ay nakasalalay sa lugar kung saan mo ilalagay ang Digital Notice Board. Halimbawa, hayaan mo akong mag-disenyo ng isang GUI para sa Instructables Office upang maipakita ang mga darating na kaganapan at pagpupulong upang ma-update ang mga empleyado sa pinakabagong impormasyon.

Madaling mag-disenyo ng isang GUI sa isang Windows PC, kaya't disenyo natin ang Digital Notice Board GUI sa Windows PC at kopyahin ang code sa Raspberry Pi.

Kinakailangan ang software:

Anaconda (na kinabibilangan ng python 2.7, Qt Designer package at Spyder IDE).

Ang Qt Designer ay ang tool na ginamit upang magdisenyo ng mga GUI. Ang output ng Qt Designer ay magiging isang.ui file, sa paglaon maaari itong mai-convert sa.py para sa karagdagang proseso.

Ano ang nangyayari sa video ?:

  • I-download ang Anaconda Windows Installer para sa python 2.7 at i-install ito sa isang Windows PC (normal na proseso ng pag-install).
  • Pagkatapos ng pag-install, mahahanap mo ang tool na Qt Designer sa "install_directory / Library / bin / designer.exe" (para sa akin ito ay "C: / Anaconda2 / Library / bin / designer.exe")
  • Lumikha ng isang shortcut para sa "designer.exe" at ilagay ito sa desktop.
  • buksan ang "designer.exe".
  • Lumikha ng isang bagong Pangunahing Window.
  • Piliin at ilagay ang mga layout at kinakailangang pagtingin (pagtingin sa teksto, view ng label, atbp.).
  • I-save bilang Rpi_UI.ui file.
  • Upang mai-convert ito sa.py file buksan ang cmd prompt sa kasalukuyang folder kung saan mayroon ang Rpi_UI.ui file at i-type ang sumusunod na utos

install_directory / Library / bin / pyuic5.bat -x RPi_UI.ui -o RPi_UI.py

para sa akin ito ay, C: / Anaconda2 / Library / bin / pyuic5.bat -x RPi_UI.ui -o RPi_UI.py

i-convert ng utos na ito ang Rpi_UI.ui file saRpi_UI.py file at ilagay ito sa parehong direktoryo.

  • Buksan ang Rpi_UI.py file gamit ang Spyder IDE na kasama sa Anaconda.
  • Ang pagpapatakbo ng script ay ipapakita ang GUI na dinisenyo namin nang mas maaga.

Susunod, i-set up natin ang CloudMQTT account.

Hakbang 4: Mag-set up ng isang CloudMQTT Account:

Image
Image
  • Bisitahin ang link na ito.
  • Lumikha ng isang account gamit ang E-mail at mag-log in sa iyong account.
  • Lumikha ng bagong halimbawa (Pinangalanan ko ito bilang TEST_1).
  • Buksan ang impormasyon sa Instance.
  • Itala ang Server, Gumagamit, Password, at Port.
  • Sumangguni sa CloudMQTT Python Documentation at i-save ang script bilang CloudMQTT.py.
  • Ang halimbawa ng code sa dokumentasyon ay nangangailangan ng paho library, I-install ang Paho Python Client gamit ang pip tool, buksan ang cmd prompt bilang administrator at ipasok ang sumusunod na utos.

pip install paho-mqtt

Hakbang 5: Ipinaliwanag ang Final Code ng Raspberry Pi:

Dito, hayaan mong ipaliwanag ko kung paano ko pinagsama ang RPi_UI.py file sa CloudMQTT.py at nai-save ito bilang RPi_UI.py.

Mag-import ng mga library, kung hindi ito naka-install i-install lamang ito

i-import ang paho.mqtt.client bilang mqtt

i-import ang urlparse mula sa PyQt5 import QtGui, QtWidgets, QtCore mula sa PyQt5. QtCore import QTimer, QTime mula sa threading import Thread import sys import re mula sa google_drive_downloader import GoogleDriveDownloader bilang gdd import os

Upang mag-install ng googledrivedownloader, gamitin ang utos

pip install googledrivedownloader

Inisyal ang mga variable,

icon = "[email protected]"

contestImg = "black" meeting1 = "Meeting1:" venue1 = "Oras at venue1." meeting2 = "Meeting2:" venue2 = "Oras at venue2." meeting3 = "Meeting3:" venue3 = "Oras at venue3."

Sinusundan ng klase ng Ui_MainWindow

klase Ui_MainWindow (object):

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

Ang mga sumusunod na linya sa pag-setup ng pagpapaandar I-update ang GUI bawat 3 segundo sa pamamagitan ng pagtawag sa _update function

self.retranslateUi (MainWindow)

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

Naghihintay ang pagpapaandar na on_message para sa mensahe mula sa broker, sa sandaling matanggap ang mensahe ay nai-download nito ang imahe mula sa google drive gamit ang google drive sharable link ID at binabago rin ang mga halaga ng mga global variable

def on_message (client, obj, msg):

print (str (msg.payload)) if (str (msg.payload)): noticeReceived = str (msg.payload) resulta = re.search ('% 1 (. *)% 2 (. *)% 3 (. *)% 4 (. *)% 5 (. *)% 6 (. *)% 7 (. *)% 8 ', napansinNatanggap) pandaigdigang paligsahanImg pandaigdigang pagpupulong1 pandaigdigang pagpupulong2 pandaigdigang pandaonan2 pandaigdigang pagpupulong3 pandaigdigang lugar3 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 = path) contestImg = resulta.group (1) meeting1 = resulta.group (2) venue1 = resulta.group (3) pulong2 = resulta.group (4) venue2 = resulta.group (5) pulong3 = resulta.group (6) venue3 = resulta.group (7)

Ang code ay binubuo ng 2 walang katapusang mga loop,

rc = mqttc.loop ()

at

sys.exit (app.exec_ ())

Upang patakbuhin ang mga loop na ito nang sabay-sabay, ginamit ko ang konsepto ng Threading

def sqImport (tId): kung tId == 0: habang 1: rc = 0 habang rc == 0: rc = mqttc.loop () print ("rc:" + str (rc)) kung tId == 1: habang 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 ()

Cool, nakumpleto na namin ang pag-set up ng Raspberry Pi, susunod na idisenyo namin ang GUI para sa Windows PC upang mai-publish ang mensahe sa Raspberry Pi.

Hakbang 6: Windows PC GUI:

Windows PC GUI
Windows PC GUI
  • Magdisenyo ng isang GUI para sa mga bintana at i-save ito bilang Windows_UI.ui.
  • I-convert ito sa isang python file.
  • Pagsamahin ito sa CloudMQTT.py file at i-save ito bilang Windows_UI.py.
  • Ang pag-andar ng Windows_UI.py file ay katulad ng RPi_UI.py file, ang pagkakaiba lamang ay ang Windows_UI.py file ay nai-publish ang mensahe samantalang ang RPi_UI.py ay tumatanggap ng mensahe.

Hakbang 7: Ipinaliwanag ang Final Code ng Windows PC:

  • Ang Windows_UI.py file ay mayroong lahat ng mga klase at pag-andar ng RPi_UI.ui maliban sa ilan.
  • Sa halip na on_message function, mayroon itong on_publish na function upang mai-publish ang mensahe.
  • Ang sumusunod na code sa loob ng pag-andar na retranslateUi ay tumatawag sa pagpapaandar na pag-publish sa sandaling na-click ang pindutang I-PUBLISH.

self.push Button.clicked.connect (self.publish)

  • Ang pag-andar sa pag-publish ay nagtaguyod sa google drive na maibabahaging link ID at ang impormasyon ng pagpupulong at nai-publish ito sa ilalim ng paksang "paunawa".
  • Ang mensaheng ito ay tatanggapin ng Raspberry Pi.

Hakbang 8: I-set up ang Digital Notice Board:

  • Ikonekta ang Raspberry Pi sa isang display na HDMI, ginamit ko ang aking Sony TV bilang Display ng Digital Notice Board.
  • Patakbuhin ang RPi_UI.py file sa Raspberry Pi.
  • Patakbuhin ang Windows_UI.py file sa Windows PC.
  • Ipasok ang link ng link ng Google drive ng isang imahe ng paligsahan at ang anunsyo ng pagpupulong.
  • I-click ang I-PUBLISH button.
  • Maaari mo na ngayong makita ang na-update na Digital Notice Board sa loob ng ilang segundo.

Mga Pahiwatig:

  • Maaari kang lumikha ng nais na bilang ng mga Digital Notice Board at ang mga Board ay maaaring mag-subscribe sa iba't ibang mga Paksa.
  • Upang gawing portable ang Windows_UI.py file, maaari mong mai-convert ang file sa isang maipapatupad na file gamit ang pyinstaller, upang mapatakbo mo ang maipapatupad na file sa anumang Windows PC nang hindi mai-install ang kinakailangang mga aklatan sa PC.

Salamat

SABARI KANNAN M

Inirerekumendang: