Πίνακας περιεχομένων:

Πίνακας μηνυμάτων IoT RPi LED: 3 βήματα (με εικόνες)
Πίνακας μηνυμάτων IoT RPi LED: 3 βήματα (με εικόνες)

Βίντεο: Πίνακας μηνυμάτων IoT RPi LED: 3 βήματα (με εικόνες)

Βίντεο: Πίνακας μηνυμάτων IoT RPi LED: 3 βήματα (με εικόνες)
Βίντεο: Νέα Raspberry Pi 3 Tutorial - Πώς να δημιουργήσει για Gaming & Entertainment Έργα 2024, Νοέμβριος
Anonim
Image
Image
Ρύθμιση υλικού
Ρύθμιση υλικού

Σε αυτό το Instructable, έχω φτιάξει έναν πίνακα μηνυμάτων LED συνδεδεμένου wifi χρησιμοποιώντας ένα Raspberry Pi (RPi). Οι χρήστες θα συνδεθούν με τον διακομιστή ιστού του Raspberry Pi χρησιμοποιώντας τα προγράμματα περιήγησής τους για να υποβάλουν σύντομα μηνύματα που θα εμφανίζονται στην οθόνη LED 8x8. Δεδομένου ότι η διασύνδεση μήτρας LED 8x8 με το πρόγραμμα οδήγησης MAX7219 στην Python είναι καλά τεκμηριωμένη από άλλους στο Διαδίκτυο, αυτό το έργο εστιάζει στη δημιουργία μιας διεπαφής διακομιστή ιστού και στη χρήση μηνυμάτων ZeroMQ για τη διαχείριση των εισερχόμενων μηνυμάτων.

Ενημέρωση: Εδώ είναι ένα έργο παρακολούθησης IoT Decimal/Hexadecimal 8x8 LED Matrix Drawing Board

(Είμαι διευκολυντής συλλόγου για Girls Who Code Club και κατέληξα σε αυτό το απλό έργο για να διδάξω στους μαθητές το σχεδιασμό και την αποστολή μηνυμάτων web.)

Βήμα 1: Ρύθμιση υλικού

Ρύθμιση υλικού
Ρύθμιση υλικού
Ρύθμιση υλικού
Ρύθμιση υλικού

Αυτό το έργο απαιτεί το ακόλουθο υλικό:

  • Raspberry Pi
  • Πηγή τροφοδοσίας 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: Ρύθμιση λογισμικού

Ρύθμιση λογισμικού
Ρύθμιση λογισμικού
Ρύθμιση λογισμικού
Ρύθμιση λογισμικού
Ρύθμιση λογισμικού
Ρύθμιση λογισμικού
Ρύθμιση λογισμικού
Ρύθμιση λογισμικού

Το RPi πρέπει να έχει το ακόλουθο λογισμικό:

  • Python 3
  • Apache 2 websever
  • Max7219 πρόγραμμα οδήγησης για Python
  • Μηνύματα ZeroMQ

Python 3

Το RPi θα πρέπει να έχει ήδη προεγκατεστημένο το Python 3. Ενώ ο κωδικός μου είναι γραμμένος για Python 3, το Python 2 θα πρέπει να λειτουργεί με λίγες μικρές αλλαγές.

Apache 2

Εγκαταστήστε το Apache και ενεργοποιήστε την Python CGI scripting. Παρακάτω υπάρχουν δύο υπέροχοι πόροι για τη ρύθμιση του 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/en/latest/install.html

Μετά την εγκατάσταση, εκτελέστε τον παράδειγμα κώδικα, matrix_test.py, ανά εγκατάσταση οδηγό για να εμφανίσετε το "Hello World" στο LED Matrix. Αυτό πρέπει να λειτουργήσει πριν πάτε στο επόμενο βήμα.

Μηνύματα ZeroMQ

Γιατί χρειαζόμαστε μηνύματα; Δοκιμάστε να εκτελέσετε το παραπάνω παράδειγμα κώδικα, matrix_test.py, σε δύο οθόνες τερματικού ταυτόχρονα. Το σύστημα θα επιτρέψει την ταυτόχρονη εκτέλεση πολλών κωδικών, αλλά θα δείτε μηνύματα που αλληλεπικαλύπτονται, κάτι που δεν είναι επιθυμητό. Σε περιβάλλον μεμονωμένου χρήστη, αυτό μπορεί να μην είναι πρόβλημα, καθώς μπορείτε να βεβαιωθείτε ότι μόνο ένα πρόγραμμα θα μπορούσε να εκτελεστεί τη φορά. Σε περιβάλλον πολλών χρηστών, όπως ο ιστός, το σύστημα πρέπει να δημιουργήσει μια ουρά FIFO (Πρώτη-Σε-Πρώτα-Έξω) για να βεβαιωθεί ότι μόνο ένα άτομο θα μπορούσε να εκτελέσει τον κώδικα ενώ άλλα περιμένουν. Παρόλο που μπορεί να υπάρχουν άλλες λύσεις για να το πετύχουμε, αποφάσισα να χρησιμοποιήσω το ZeroMQ για τη διαχείριση της ουράς FIFO. Ο κωδικός διακομιστή ZeroMQ περιέχει την πραγματική κλήση λειτουργίας για να εμφανίζει ένα μήνυμα στη μήτρα LED ένα κάθε φορά, ενώ ο διακομιστής ιστού λειτουργεί ως πελάτης ZeroMQ για να ερωτά και να υποβάλλει μηνύματα στον διακομιστή ZeroMQ. Με αυτόν τον τρόπο, ενώ πολλοί χρήστες μπορούσαν να υποβάλλουν μηνύματα ταυτόχρονα μέσω μιας ιστοσελίδας, ο διακομιστής ZeroMQ θα εμφανίζει μόνο ένα μήνυμα τη φορά.

Για αυτό το έργο, θα εγκαταστήσουμε απλώς το pyzmq πακέτο Python και όχι ολόκληρο το πακέτο ZeroMQ.

τρέξιμο:

sudo pip3 εγκατάσταση pyzmq

Διαβάστε τον οδηγό ZeroMQ στη διεύθυνση https://zguide.zeromq.org και δοκιμάστε το παράδειγμα του hello world server και του πελάτη στην Python. Αντιγράψτε τον παράδειγμα κώδικα Python τόσο για διακομιστή όσο και για πελάτη στο RPi και βεβαιωθείτε ότι λειτουργούν πριν πάτε στο επόμενο βήμα.

Βήμα 3: Ρύθμιση ιστοσελίδας

Στην ιστοσελίδα, χρησιμοποίησα το πλαίσιο εκκίνησης css/js για να κάνω τη σελίδα να φαίνεται όμορφη. Αυτό είναι εντελώς προαιρετικό.

Κατεβάστε το συνημμένο αρχείο led_msg.tar.gz στη ρίζα ή τον υπο-κατάλογο Apache. Για να ξεφορτώσετε το αρχείο tar gzip'd, εκτελέστε:

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

Προαιρετικά, εγκαταστήστε το πλαίσιο εκκίνησης css/js κάτω από τον στατικό κατάλογο.

Εισαγάγετε τη διεύθυνση URL για msg.py το πρόγραμμα περιήγησής σας και βεβαιωθείτε ότι εμφανίζεται η ιστοσελίδα. Μην στείλετε ακόμα μήνυμα !!!

Πριν από την υποβολή μηνυμάτων, ο διακομιστής ZeroMQ πρέπει να ξεκινήσει να δέχεται μηνύματα από τον πελάτη ιστοσελίδας και να τα εμφανίζει στη μήτρα LED. Τίποτα δεν θα εμφανιστεί στην οθόνη εάν ο διακομιστής ZeroMQ δεν εκτελείται.

Κατεβάστε τον συνημμένο κώδικα max7219_server.py στον αρχικό σας κατάλογο, όχι σε Apache root dir όπου θα μπορούσε να εκτελεστεί από χρήστες του διαδικτύου. Εκτελέστε το ως root:

sudo python max7219_server.py

Τώρα ο διακομιστής ZeroMQ είναι έτοιμος να λάβει μηνύματα από την ιστοσελίδα. Εισαγάγετε και υποβάλετε ένα απλό μήνυμα από την ιστοσελίδα. Εάν όλα έχουν ρυθμιστεί σωστά, θα δείτε αυτό το μήνυμα στην οθόνη του διακομιστή ZeroMQ καθώς και στη μήτρα LED.

Εάν θέλετε να τερματίσετε τη λειτουργία του διακομιστή, απλώς κάντε το Control-C για έξοδο από την οθόνη του διακομιστή.

Αυτό είναι. Ελπίζω να απολαύσετε αυτό το έργο όσο και εγώ.

Μια βελτίωση που θα μπορούσατε να κάνετε είναι να κάνετε την επικοινωνία ZeroMQ μεταξύ του διακομιστή και των πελατών ασύγχρονη, έτσι ώστε η ιστοσελίδα να μην περιμένει ενώ εμφανίζονται άλλα μηνύματα. Επίσης, μπορείτε να επισυνάψετε επιπλέον μήτρα LED σε λειτουργία cascade. Το αφήνω σε εσάς.

Συνιστάται: