Talaan ng mga Nilalaman:
- Hakbang 1: Paano Gumagana ang Digital Notice Board?
- Hakbang 2: Mga Bagay na Kinakailangan:
- Hakbang 3: Disenyo ng GUI para sa Pagpapakita ng Mga Abiso:
- Hakbang 4: Mag-set up ng isang CloudMQTT Account:
- Hakbang 5: Ipinaliwanag ang Final Code ng Raspberry Pi:
- Hakbang 6: Windows PC GUI:
- Hakbang 7: Ipinaliwanag ang Final Code ng Windows PC:
- Hakbang 8: I-set up ang Digital Notice Board:
Video: Digital Notice Board Gamit ang Raspberry Pi at MQTT Protocol: 8 Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:13
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?
- 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:
- Raspberry Pi kasama ang Rasbian OS
- Ipakita gamit ang HDMI port
- Windows PC
- Internet connection
- CloudMQTT account
Hakbang 3: Disenyo ng GUI para sa Pagpapakita ng Mga Abiso:
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:
- 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:
- 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:
Subukan ang Bare Arduino, Gamit ang Software ng Laro Gamit ang Capacitive Input at LED: 4 na Hakbang
Subukan ang Bare Arduino, Gamit ang Software ng Laro Gamit ang Capacitive Input at LED: " Push-It " Interactive na laro gamit ang isang hubad na Arduino board, walang mga panlabas na bahagi o mga kable na kinakailangan (gumagamit ng isang capacitive 'touch' input). Ipinapakita sa itaas, ipinapakita ang pagtakbo nito sa dalawang magkakaibang board. Push-Mayroon itong dalawang layunin. Upang mabilis na maipakita / v
Internet Clock: Ipakita ang Petsa at Oras Gamit ang isang OLED Gamit ang ESP8266 NodeMCU Sa NTP Protocol: 6 na Hakbang
Internet Clock: Display Date and Time With an OLED Gamit ang ESP8266 NodeMCU With NTP Protocol: Kumusta mga tao sa mga itinuturo na ito na magtatayo kami ng isang orasan sa internet na magkakaroon ng oras mula sa internet kaya't ang proyektong ito ay hindi mangangailangan ng anumang RTC upang tumakbo, kakailanganin lamang nito ang isang nagtatrabaho koneksyon sa internet At para sa proyektong ito kailangan mo ng isang esp8266 na magkakaroon ng
Basahin at Isulat Mula sa Serial Port Gamit ang Raspberry Pi Gamit ang Wemos: 5 Hakbang
Basahin at Isulat Mula sa Serial Port Gamit ang Raspberry Pi Gamit ang Wemos: Pakikipag-usap sa isang Raspberry Pi gamit ang isang Wemos D1 mini R2
Hindi gumagana ang NODEMcu Usb Port? I-upload ang Code Gamit ang USB sa TTL (FTDI) Module sa 2 Hakbang lamang: 3 Hakbang
Hindi gumagana ang NODEMcu Usb Port? I-upload ang Code Gamit ang USB sa TTL (FTDI) Module sa Lamang 2 Mga Hakbang: Pagod na sa pagkonekta sa maraming mga wire mula sa USB hanggang TTL module sa NODEMcu, sundin ang itinuturo na ito, upang mai-upload ang code sa 2 hakbang lamang. Kung ang USB port ng Ang NODEMcu ay hindi gumagana, pagkatapos ay huwag panic. Ito lang ang USB driver chip o ang konektor ng USB,
Kontrolin ang Arduino Gamit ang Smartphone Sa pamamagitan ng USB Gamit ang Blynk App: 7 Mga Hakbang (na may Mga Larawan)
Kontrolin ang Arduino Gamit ang Smartphone Sa Pamamagitan ng USB Sa Blynk App: Sa tutorial na ito, matututunan namin kung paano gamitin ang Blynk app at Arduino upang makontrol ang lampara, ang kumbinasyon ay sa pamamagitan ng USB serial port. Ang layunin ng pagtuturo na ito ay upang ipakita ang pinakasimpleng solusyon sa malayo-pagkontrol ng iyong Arduino o c