Բովանդակություն:

Թվային ծանուցման տախտակ ՝ օգտագործելով Raspberry Pi և MQTT արձանագրություն. 8 քայլ
Թվային ծանուցման տախտակ ՝ օգտագործելով Raspberry Pi և MQTT արձանագրություն. 8 քայլ

Video: Թվային ծանուցման տախտակ ՝ օգտագործելով Raspberry Pi և MQTT արձանագրություն. 8 քայլ

Video: Թվային ծանուցման տախտակ ՝ օգտագործելով Raspberry Pi և MQTT արձանագրություն. 8 քայլ
Video: Летний Ламповый стрим. Отвечаем на вопросы. 2024, Նոյեմբեր
Anonim
Image
Image
Թվային ծանուցման տախտակ ՝ օգտագործելով Raspberry Pi և MQTT արձանագրություն
Թվային ծանուցման տախտակ ՝ օգտագործելով Raspberry Pi և MQTT արձանագրություն

Iceանուցման տախտակները գրեթե օգտագործվում են ամենուր, ինչպիսիք են գրասենյակները, դպրոցները, հիվանդանոցները և հյուրանոցները: Դրանք կարող են նորից ու նորից օգտագործվել կարևոր ծանուցումներ ցուցադրելու կամ առաջիկա իրադարձությունների կամ հանդիպումների գովազդման համար: Բայց ծանուցումը կամ գովազդը պետք է տպվեն թղթի վրա և ամրացվեն ծանուցման վահանակներին:

Այս Ուղեցույցում եկեք սովորենք կառուցել մեր թվային ծանուցման տախտակը Raspberry Pi- ով ՝ շատ թղթեր և տոնիկ խնայելու համար:

Քայլ 1. Ինչպե՞ս է աշխատում թվային ծանուցման տախտակը:

Ինչպե՞ս է աշխատում թվային ծանուցման տախտակը
Ինչպե՞ս է աշխատում թվային ծանուցման տախտակը
  • Raspberry Pi- ն միացված է HDMI էկրանին, որը մեր թվային ծանուցման տախտակն է:
  • Windows համակարգիչն օգտագործվում է ծանուցումը թվային ծանուցման տախտակին ինտերնետի միջոցով հրապարակելու համար:
  • Windows PC- ի կողմից հրապարակված ծանուցումը Digital Notice Board- ը ստանում է CloudMQTT բրոքերի միջոցով:
  • Windows PC- ի և Digital Notice Board- ի միջև հաղորդակցությունն իրականացվում է MQTT արձանագրության միջոցով:

Քայլ 2: Պահանջվող բաներ

  1. Raspberry Pi Rasbian OS- ով
  2. Displayուցադրել HDMI պորտով
  3. Windows համակարգիչ
  4. Ինտերնետ կապը
  5. CloudMQTT հաշիվ

Քայլ 3. Uանուցումների ցուցադրման GUI ձևավորում

Image
Image
GUI դիզայն `ծանուցումների ցուցադրման համար
GUI դիզայն `ծանուցումների ցուցադրման համար

Մենք պետք է նախագծենք 2 GUI, մեկը Raspberry Pi- ի համար HDMI էկրանին ծանուցումը ցուցադրելու համար, իսկ մյուսը Windows PC- ի համար ՝ Raspberry Pi- ին ծանուցումը CloudMQTT բրոքերի միջոցով հրապարակելու համար:

GUI- ի դիզայնը կախված է այն վայրից, որտեղ դուք տեղադրելու եք թվային ծանուցման տախտակը: Օրինակ, թույլ տվեք նախագծել Instructables Office- ի GUI ՝ առաջիկա իրադարձություններն ու հանդիպումները ցուցադրելու համար, որպեսզի աշխատակիցները կարողանան թարմացվել վերջին տեղեկություններով:

Windows համակարգչի վրա հեշտ է GUI- ի ձևավորում, ուստի թույլ տվեք նախագծել Digital Notice Board GUI- ն 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 / Գրադարան / bin / pyuic5.bat -x RPi_UI.ui -o RPi_UI.py

այս հրամանը կվերածի Rpi_UI.ui ֆայլը toRpi_UI.py ֆայլ և կտեղադրի այն նույն գրացուցակում:

  • Բացեք Rpi_UI.py ֆայլը Spyder IDE- ով, որը ներառված է Անակոնդայում:
  • Սցենարը գործարկելիս կցուցադրվի ավելի վաղ նախագծված GUI:

Հաջորդը, եկեք ստեղծենք CloudMQTT հաշիվը:

Քայլ 4: Ստեղծեք CloudMQTT հաշիվ

Image
Image
  • Այցելեք այս հղումը:
  • Ստեղծեք հաշիվ էլփոստով և մուտք գործեք ձեր հաշիվ:
  • Ստեղծեք նոր օրինակ (ես այն անվանեցի որպես TEST_1):
  • Բացեք Instance- ի տվյալները:
  • Նշեք սերվերը, օգտվողը, գաղտնաբառը և նավահանգիստը:
  • Անդրադարձեք 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- ից

Googledrivedownloader- ը տեղադրելու համար օգտագործեք հրամանը

pip տեղադրել googledrivedownloader

Փոփոխականների սկզբնականացում,

պատկերակ = "[email protected]"

contestImg = "սև" հանդիպում 1 = "Հանդիպում 1." venue1 = "Timeամանակը և վայրը 1": meeting2 = "Հանդիպում 2:" 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 (հիմնական պատուհան)

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

On_message գործառույթը սպասում է միջնորդի հաղորդագրությանը, երբ հաղորդագրությունը ստացվում է, այն ներբեռնում է պատկերը google drive- ից ՝ google drive- ի օգտագործվող հղման ID- ի միջոցով, ինչպես նաև փոխում է գլոբալ փոփոխականների արժեքները:

def on_message (հաճախորդ, 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) գլոբալ մրցույթ 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) հանդիպում 1 = result.group (2) ven11 = result.group (3) meeting2 = result.group (4) ven22 = result.group (5) meeting3 = result.group (6) վայր 3 = արդյունք. խումբ (7)

Կոդը բաղկացած է 2 անվերջ հանգույցից,

rc = mqttc.loop ()

եւ

sys.exit (app.exec_ ())

Այս օղակները միաժամանակ գործարկելու համար ես օգտագործել եմ Threading հասկացությունը

def sqImport (tId). 1 ՝ = 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:

Windows PC GUI
Windows PC GUI
  • Նախագծեք GUI պատուհանների համար և պահեք այն որպես Windows_UI.ui:
  • Փոխարկեք այն պիթոնի ֆայլ:
  • Համակցեք այն 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 ֆունկցիայի մեջ կանչում է հրապարակման գործառույթը ՀՐԱՊԱՐԱԿԵԼ կոճակին սեղմելուց հետո:

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

  • Հրապարակման գործառույթը միավորում է google drive- ի համատեղելի հղման ID- ն և հանդիպման տվյալները և հրապարակում դրանք «ծանուցում» թեմայի ներքո:
  • Այս հաղորդագրությունը կստանա Raspberry Pi- ն:

Քայլ 8. Ստեղծեք թվային ծանուցման տախտակ

  • Միացրեք Raspberry Pi- ն HDMI էկրանին, ես օգտագործել եմ իմ Sony հեռուստացույցը որպես թվային ցուցատախտակի ցուցադրում:
  • Գործարկեք RPi_UI.py ֆայլը Raspberry Pi- ում:
  • Գործարկեք Windows_UI.py ֆայլը Windows համակարգչում:
  • Մուտքագրեք մրցույթի պատկերի Google Drive- ի հղման ID- ն և հանդիպման հայտարարությունը:
  • Կտտացրեք ՀՐԱՊԱՐԱԿԵԼ կոճակին:
  • Այժմ դուք կարող եք տեսնել թարմացված թվային ծանուցման տախտակը մի քանի վայրկյանի ընթացքում:

Հուշումներ

  • Դուք կարող եք ստեղծել թվային ծանուցման վահանակների ցանկալի քանակ, և տախտակները կարող են բաժանորդագրվել տարբեր թեմաների:
  • Windows_UI.py ֆայլը դյուրակիր դարձնելու համար կարող եք ֆայլը վերածել գործարկվող ֆայլի ՝ օգտագործելով pyinstaller, այնպես որ կարող եք գործարկվող ֆայլը գործարկել ցանկացած Windows ԱՀ -ում ՝ առանց համակարգչում անհրաժեշտ գրադարաններ տեղադրելու:

Շնորհակալություն

ՍԱԲԱՐԻ ՔԱՆՆԱՆ Մ

Խորհուրդ ենք տալիս: