Სარჩევი:

IoT RPi LED შეტყობინებების დაფა: 3 ნაბიჯი (სურათებით)
IoT RPi LED შეტყობინებების დაფა: 3 ნაბიჯი (სურათებით)

ვიდეო: IoT RPi LED შეტყობინებების დაფა: 3 ნაბიჯი (სურათებით)

ვიდეო: IoT RPi LED შეტყობინებების დაფა: 3 ნაბიჯი (სურათებით)
ვიდეო: ESP32 Tutorial 5 - LED Fade, control brightness of an LED -ESP32 IoT Learnig kit 2024, ივლისი
Anonim
Image
Image
აპარატურის დაყენება
აპარატურის დაყენება

ამ ინსტრუქციაში, მე გავაკეთე wifi- თან დაკავშირებული LED შეტყობინებების დაფა Raspberry Pi (RPi) გამოყენებით. მომხმარებლები დაუკავშირდებიან Raspberry Pi– ს ვებ სერვერს თავიანთი ბრაუზერების გამოყენებით, რათა წარადგინონ მოკლე შეტყობინებები, რომლებიც გამოჩნდება 8x8 LED ეკრანზე. ვინაიდან პითონში MAX7219 დრაივერთან 8x8 LED მატრიქსთან დაკავშირება კარგად არის დოკუმენტირებული სხვების მიერ ინტერნეტში, ეს პროექტი ორიენტირებულია ვებ სერვერის ინტერფეისის შექმნაზე და ZeroMQ შეტყობინებების გამოყენებაზე შემოსული შეტყობინებების მართვისთვის.

განახლება: აქ არის შემდგომი პროექტი IoT Decimal/Hexadecimal 8x8 LED Matrix Drawing Board

(მე ვარ კლუბის ფასილიტატორი Girls Who Code Club- ისთვის და მე შევიმუშავე ეს მარტივი პროექტი, რომ ასწავლონ სტუდენტებს ვებ ინტერფეისის დიზაინი და შეტყობინებები.)

ნაბიჯი 1: აპარატურის დაყენება

აპარატურის დაყენება
აპარატურის დაყენება
აპარატურის დაყენება
აპარატურის დაყენება

ეს პროექტი მოითხოვს შემდეგ ტექნიკას:

  • ჟოლო პი
  • USB კვების წყარო, როგორიცაა Anker მოკლე USB to 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: პროგრამული უზრუნველყოფის დაყენება

პროგრამული უზრუნველყოფის დაყენება
პროგრამული უზრუნველყოფის დაყენება
პროგრამული უზრუნველყოფის დაყენება
პროგრამული უზრუნველყოფის დაყენება
პროგრამული უზრუნველყოფის დაყენება
პროგრამული უზრუნველყოფის დაყენება
პროგრამული უზრუნველყოფის დაყენება
პროგრამული უზრუნველყოფის დაყენება

RPi– ს უნდა ჰქონდეს შემდეგი პროგრამული უზრუნველყოფა:

  • პითონი 3
  • ვებ - სერვერი Apache 2
  • Max7219 მძღოლი პითონისთვის
  • ZeroMQ შეტყობინებები

პითონი 3

RPi– ს უნდა ჰქონდეს წინასწარ დაინსტალირებული Python 3. სანამ ჩემი კოდი დაწერილია პითონ 3 -ისთვის, პითონი 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/

მძღოლი Max7291

დააინსტალირეთ Max7219 დრაივერი უახლესი ინსტალაციის სახელმძღვანელოს შემდეგ:

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

ინსტალაციის შემდეგ, გაუშვით მაგალითი კოდი, matrix_test.py, თითო ინსტალაციის სახელმძღვანელო, რომ ნახოთ "Hello World" LED მატრიცაზე. ეს უნდა მუშაობდეს შემდეგ საფეხურზე გადასვლამდე.

ZeroMQ შეტყობინებები

რატომ გვჭირდება შეტყობინება? სცადეთ გაუშვათ ზემოთ მოყვანილი მაგალითი კოდი, matrix_test.py, ერთდროულად ორ ტერმინალის ეკრანზე. სისტემა საშუალებას მისცემს მრავალ კოდს ერთდროულად იმუშაოს, მაგრამ თქვენ ნახავთ შეტყობინებების გადაფარვას, რაც არ არის სასურველი. ერთი მომხმარებლის გარემოში, ეს შეიძლება არ იყოს პრობლემა, რადგან თქვენ შეგიძლიათ დარწმუნდეთ, რომ მხოლოდ ერთი პროგრამა შეიძლება გაუშვათ ერთდროულად. მრავალ მომხმარებლის გარემოში, როგორიცაა ვებ, სისტემამ უნდა შექმნას FIFO (პირველი-პირველი-გარეთ) რიგი, რათა დარწმუნდეს, რომ მხოლოდ ერთ ადამიანს შეუძლია კოდის შესრულება, სანამ სხვები დაელოდებიან. მიუხედავად იმისა, რომ შეიძლება იყოს სხვა გადაწყვეტილებები ამის მისაღწევად, მე გადავწყვიტე გამოვიყენო ZeroMQ FIFO რიგის მართვისთვის. ZeroMQ სერვერის კოდი შეიცავს რეალურ ფუნქციის ზარს, რომ ერთდროულად აჩვენოს შეტყობინება LED მატრიცაზე, ხოლო ვებ სერვერი მოქმედებს როგორც ZeroMQ კლიენტი, რათა გამოითხოვოს და წარუდგინოს შეტყობინებები ZeroMQ სერვერზე. ამ გზით, მიუხედავად იმისა, რომ მრავალ მომხმარებელს შეეძლო შეტყობინებების წარდგენა ვებ გვერდის საშუალებით ერთდროულად, ZeroMQ სერვერი აჩვენებს მხოლოდ ერთ შეტყობინებას ერთდროულად.

ამ პროექტისთვის ჩვენ უბრალოდ დავაინსტალირებთ Python პაკეტს pyzmq და არა მთელ ZeroMQ პაკეტს.

გაშვება:

sudo pip3 დააინსტალირეთ pyzmq

წაიკითხეთ ZeroMQ სახელმძღვანელო https://zguide.zeromq.org და სცადეთ გამარჯვების მსოფლიო სერვერისა და კლიენტის მაგალითი პითონში. დააკოპირეთ პითონის მაგალითის კოდი როგორც სერვერისთვის, ასევე კლიენტისთვის 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 ჩარჩო სტატიკური დირექტორიის ქვეშ.

შეიყვანეთ URL msg.py თქვენი ბრაუზერისთვის და დარწმუნდით, რომ გამოჩნდება ვებ გვერდი. ჯერ არ გამომიგზავნოთ შეტყობინება !!!

შეტყობინებების წარდგენამდე, ZeroMQ სერვერმა უნდა დაიწყოს ვებ გვერდის კლიენტისგან შეტყობინებების მიღება და მათი ჩვენება LED მატრიცაზე. არაფერი გამოჩნდება ეკრანზე, თუ ZeroMQ სერვერი არ მუშაობს.

ჩამოტვირთეთ თანდართული max7219_server.py კოდი თქვენს სახლის დირექტორიაში, არა Apache- ის ძირში, სადაც ის შეიძლება შესრულდეს ვებ მომხმარებლების მიერ. გაუშვით როგორც root:

sudo python max7219_server.py

ახლა ZeroMQ სერვერი მზად არის მიიღოს შეტყობინებები ვებ გვერდიდან. შეიყვანეთ და გაგზავნეთ მარტივი შეტყობინება ვებ გვერდიდან. თუ ყველაფერი სწორად არის დაყენებული, თქვენ ნახავთ ამ შეტყობინებას ZeroMQ სერვერის ეკრანზე, ასევე LED მატრიცაზე.

თუ გსურთ სერვერის გამორთვა, უბრალოდ გააკეთეთ Control-C სერვერის ეკრანიდან გასასვლელად.

Ის არის. ვიმედოვნებ, რომ თქვენც ისევე ისიამოვნებთ ამ პროექტით, როგორც მე.

თქვენ შეგიძლიათ გააუმჯობესოთ სერვერსა და კლიენტებს შორის ZeroMQ კომუნიკაცია ასინქრონული, ისე რომ ვებ გვერდი არ დაელოდოს სანამ სხვა შეტყობინებები გამოჩნდება. ასევე, თქვენ შეგიძლიათ დაამატოთ დამატებითი LED მატრიცა კასკადის რეჟიმში. ამას შენზე დავტოვებ.

გირჩევთ: