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

IoT RPi LED հաղորդագրությունների տախտակ. 3 քայլ (նկարներով)
IoT RPi LED հաղորդագրությունների տախտակ. 3 քայլ (նկարներով)

Video: IoT RPi LED հաղորդագրությունների տախտակ. 3 քայլ (նկարներով)

Video: IoT RPi LED հաղորդագրությունների տախտակ. 3 քայլ (նկարներով)
Video: 1. Q Light Controller + Սկսել QLC +- ով: Արշավներ եւ գործառույթներ 2024, Հուլիսի
Anonim
Image
Image
Սարքաշարի տեղադրում
Սարքաշարի տեղադրում

Այս հրահանգում ես պատրաստել եմ wifi- ով միացված LED հաղորդագրությունների տախտակ ՝ օգտագործելով Raspberry Pi (RPi): Օգտագործողները կմիանան Raspberry Pi- ի վեբ սերվերին ՝ օգտագործելով իրենց դիտարկիչները ՝ կարճ հաղորդագրություններ ներկայացնելու համար, որոնք կցուցադրվեն 8x8 LED էկրանին: Քանի որ Python- ում MAX7219 վարորդի հետ 8x8 LED մատրիցի հետ կապը լավ փաստագրված է ինտերնետում, այս նախագիծը կենտրոնանում է վեբ սերվերի ինտերֆեյսի ստեղծման և մուտքային հաղորդագրությունները կառավարելու համար ZeroMQ Messaging- ի վրա:

Թարմացում. Ահա հետագա նախագիծը IoT տասնորդական/տասնվեցական 8x8 LED մատրիցի գծագրման տախտակ

(Ես ակումբի միջնորդ եմ Girls Who Code Club- ի համար և ես հանդես եկա այս պարզ նախագծով ՝ ուսանողներին սովորեցնելու վեբ ինտերֆեյսի ձևավորում և հաղորդագրությունների փոխանցում):

Քայլ 1: Սարքավորման կարգավորում

Սարքաշարի տեղադրում
Սարքաշարի տեղադրում
Սարքաշարի տեղադրում
Սարքաշարի տեղադրում

Այս նախագիծը պահանջում է հետևյալ սարքավորումները.

  • Ազնվամորի Պի
  • USB էներգիայի աղբյուր, ինչպիսին է Anker- ը կարճ USB- ից MicroUSB մալուխով
  • MAX7219 կետային մատրիցային մոդուլ ՝ ժապավենային մալուխով (Aliexpress- ը 2 դոլարից պակաս գնով)
  • Պարիսպ (ես պատրաստեցի ստվարաթղթե տուփից և սև ներկված լակիով)

Սարքավորումների տեղադրումը հեշտ մասն է: Պարզապես միացրեք 5 մետաղալար ժապավենի մալուխը LED մատրիցից RPi մեկ MAX7219 գրադարանի փաստաթղթին:

LED-> RPi ======== VCC-> GPIO Pin #2 (5v) GND-> GPIO Pin #6 (GND) DIN-> GPIO Pin #19CS-> GPIO Pin #24CLK-> GPIO Pin # 23

Ես օգտագործեցի երկկողմանի փրփուր ժապավեն `LED միավորը RPi պատյանին ամրացնելու համար: Այնուհետև ստվարաթղթե տուփից պատրաստեցի պատյան ՝ ինչպես RPi, այնպես էլ մարտկոց պահելու համար:

Քայլ 2: Softwareրագրաշարի տեղադրում

Softwareրագրաշարի տեղադրում
Softwareրագրաշարի տեղադրում
Softwareրագրաշարի տեղադրում
Softwareրագրաշարի տեղադրում
Softwareրագրաշարի տեղադրում
Softwareրագրաշարի տեղադրում
Softwareրագրաշարի տեղադրում
Softwareրագրաշարի տեղադրում

RPi- ն պետք է ունենա հետևյալ ծրագրակազմը.

  • Պիթոն 3
  • Apache 2 վեբ սերվեր
  • Max7219 վարորդ Python- ի համար
  • ZeroMQ հաղորդագրություններ

Պիթոն 3

RPi- ում պետք է Python 3-ն արդեն նախապես տեղադրված լինի: Մինչ իմ կոդը գրված է Python 3 -ի համար, Python 2 -ը պետք է աշխատի մի քանի չնչին փոփոխություններով:

Ապաչի 2

Կարգավորեք Apache- ը և միացրեք Python CGI սկրիպտը: Ստորև բերված են Apache RPi- ով տեղադրելու մի քանի հիանալի ռեսուրսներ, այնպես որ ես այստեղ չեմ կրկնի: Պարզապես հետևեք ստորև ներկայացված ձեռնարկներին ՝ Apache և CGI- ն կարգավորելու համար: Համոզվեք, որ *.py սցենարները գործարկելի են դիտարկիչից:

  • https://raspberrywebserver.com/cgiscripting/
  • https://www.knight-of-pi.org/apache-web-server-with-cgi-for-python/

Max 7291 վարորդ

Տեղադրեք Max7219 վարորդը ՝ հետևելով վերջին տեղադրման ուղեցույցին.

https://max7219.readthedocs.io/hy/latest/install.html

Տեղադրվելուց հետո գործարկեք օրինակ կոդը ՝ matrix_test.py, մեկ տեղադրման ուղեցույց ՝ LED մատրիցի վրա «Hello World» ցուցադրելու համար: Սա պետք է աշխատի մինչև հաջորդ քայլին անցնելը:

ZeroMQ հաղորդագրություններ

Ինչու՞ մեզ պետք է Հաղորդագրություն: Փորձեք գործարկել վերը նշված օրինակի կոդը ՝ matrix_test.py, միաժամանակ երկու տերմինալային էկրանների վրա: Համակարգը թույլ կտա մի քանի կոդ միաժամանակ գործարկել, բայց կտեսնեք, որ հաղորդագրությունները համընկնում են, ինչը ցանկալի չէ: Մեկ օգտագործողի միջավայրում դա կարող է խնդիր չլինել, քանի որ կարող եք համոզվել, որ միաժամանակ կարող է գործարկվել միայն մեկ ծրագիր: Համացանցի նման բազմաբնույթ միջավայրում համակարգը պետք է ստեղծի FIFO (Առաջին-Առաջին-Ելք) հերթ ՝ համոզվելու համար, որ միայն մեկ անձ կարող է կատարել ծածկագիրը, իսկ մյուսները սպասում են: Թեև դրան հասնելու այլ լուծումներ կարող են լինել, ես որոշեցի օգտագործել ZeroMQ- ը ՝ FIFO- ի հերթը կառավարելու համար: ZeroMQ սերվերի ծածկագիրը պարունակում է ֆունկցիայի իրական կանչ ՝ LED մատրիցի վրա հաղորդագրություն ցուցադրելու միաժամանակ, իսկ վեբ սերվերը հանդես է գալիս որպես ZeroMQ հաճախորդ ՝ ZeroMQ սերվերին հաղորդագրություններ հարցնելու և ներկայացնելու համար: Այս կերպ, մինչդեռ մի քանի օգտվողներ կարող էին միաժամանակ ուղարկել հաղորդագրություններ վեբ էջի միջոցով, ZeroMQ սերվերը միաժամանակ կցուցադրի միայն մեկ հաղորդագրություն:

Այս նախագծի համար մենք պարզապես կտեղադրենք Python փաթեթը pyzmq և ոչ թե ամբողջ ZeroMQ փաթեթը:

վազել:

sudo pip3 տեղադրել pyzmq

Կարդացեք ZeroMQ ուղեցույցը https://zguide.zeromq.org կայքում և փորձեք Python- ի ողջույնի սերվերի և հաճախորդի օրինակը: Պատճենեք Python- ի օրինակի ծածկագիրը և՛ սերվերի, և՛ հաճախորդի համար RPi- ում և համոզվեք, որ դրանք աշխատում են մինչև հաջորդ քայլին անցնելը:

Քայլ 3: Վեբ էջի կարգավորում

Վեբ էջում ես օգտագործել եմ bootstrap css/js շրջանակը, որպեսզի էջը գեղեցիկ տեսք ունենա: Սա բոլորովին ընտրովի չէ:

Ներբեռնեք կցված led_msg.tar.gz ֆայլը Apache- ի արմատին կամ ենթատիրակին: Gzip'd tar ֆայլը հեռացնելու համար գործարկեք.

tar -xzvf led_msg.tar.gz

Սա ստեղծում է հետևյալ ֆայլերը.

msg.py (հիմնական ծրագիր)

templates/interstitial.html (html template) templates/send_msg.html (html template) static/img/led_150x150-j.webp

Ընտրովի, տեղադրեք bootstrap css/js շրջանակը ստատիկ գրացուցակի տակ:

Մուտքագրեք msg.py- ն ձեր դիտարկիչի համար և համոզվեք, որ վեբ էջը հայտնվում է: Դեռ հաղորդագրություն մի ուղարկեք !!!

Մինչ հաղորդագրությունները ներկայացնելը, ZeroMQ սերվերը պետք է սկսել ընդունել կայքի հաճախորդի հաղորդագրությունները և դրանք ցուցադրել LED մատրիցով: Ոչինչ չի ցուցադրվի էկրանին, եթե ZeroMQ սերվերը չի աշխատում:

Ներբեռնեք կցված max7219_server.py ծածկագիրը ձեր տնային գրացուցակում, այլ ոչ թե Apache- ի արմատային դիրքում, որտեղ այն կարող է կատարվել վեբ օգտագործողների կողմից: Գործարկեք այն որպես արմատ.

sudo python max7219_server.py

Այժմ ZeroMQ սերվերը պատրաստ է հաղորդագրություններ ստանալ վեբ էջից: Մուտքագրեք և ներկայացրեք մի պարզ հաղորդագրություն վեբ էջից: Եթե ամեն ինչ ճիշտ է կազմված, ապա այդ հաղորդագրությունը կտեսնեք ZeroMQ սերվերի էկրանին, ինչպես նաև LED մատրիցին:

Եթե ցանկանում եք անջատել սերվերը, պարզապես կատարեք Control-C ՝ սերվերի էկրանից դուրս գալու համար:

Վերջ Հուսով եմ, որ դուք նույնպես կվայելեք այս նախագիծը, ինչպես և ես:

Ընդլայնումը, որը կարող եք կատարել, սերվերի և հաճախորդների միջև ZeroMQ հաղորդակցությունն ասինխրոն դարձնելն է, որպեսզի վեբ էջը չսպասի մինչ այլ հաղորդագրությունների ցուցադրումը: Բացի այդ, դուք կարող եք կցել լրացուցիչ LED մատրիցա կասկադի ռեժիմում: Ես դա թողնում եմ ձեզ:

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