Table des matières:

Tableau d'affichage LED IoT RPi : 3 étapes (avec photos)
Tableau d'affichage LED IoT RPi : 3 étapes (avec photos)

Vidéo: Tableau d'affichage LED IoT RPi : 3 étapes (avec photos)

Vidéo: Tableau d'affichage LED IoT RPi : 3 étapes (avec photos)
Vidéo: Introduction à Windows 10 IoT et au Raspberry Pi 3 2024, Novembre
Anonim
Image
Image
configuration materielle
configuration materielle

Dans ce Instructable, j'ai fait un babillard LED connecté au wifi à l'aide d'un Raspberry Pi (RPi). Les utilisateurs se connecteront au serveur Web du Raspberry Pi à l'aide de leurs navigateurs pour soumettre de courts messages qui s'afficheront sur l'écran LED 8x8. Étant donné que l'interfaçage d'une matrice LED 8x8 avec le pilote MAX7219 en Python est bien documenté par d'autres sur Internet, ce projet se concentre sur la création d'une interface de serveur Web et l'utilisation de ZeroMQ Messaging pour gérer les messages entrants.

Mise à jour: voici un projet de suivi IoT Decimal/Hexadécimal 8x8 LED Matrix Drawing Board

(Je suis animatrice de club pour Girls Who Code Club et j'ai proposé ce projet simple pour enseigner aux étudiants la conception d'interfaces Web et la messagerie.)

Étape 1: configuration du matériel

configuration materielle
configuration materielle
configuration materielle
configuration materielle

Ce projet nécessite le matériel suivant:

  • Tarte aux framboises
  • Source d'alimentation USB telle que Anker avec un court câble USB vers MicroUSB
  • Module matriciel MAX7219 avec un câble plat (Aliexpress pour moins de 2 $)
  • Boîtier (j'en ai fait un à partir d'une boîte en carton et peint à la bombe en noir)

La configuration matérielle est la partie facile. Connectez simplement un câble plat à 5 fils de la matrice LED au RPi selon la documentation de la bibliothèque MAX7219.

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

J'ai utilisé un ruban mousse double face pour fixer l'unité LED au boîtier RPi. Ensuite, j'ai fabriqué un boîtier à partir d'une boîte en carton pour loger à la fois le RPi et la batterie.

Étape 2: Configuration du logiciel

Configuration du logiciel
Configuration du logiciel
Configuration du logiciel
Configuration du logiciel
Configuration du logiciel
Configuration du logiciel
Configuration du logiciel
Configuration du logiciel

RPi devrait avoir le logiciel suivant:

  • Python 3
  • Serveur Web Apache 2
  • Pilote Max7219 pour Python
  • Messagerie ZeroMQ

Python 3

RPi devrait avoir Python 3 déjà pré-installé. Alors que mon code est écrit pour Python 3, Python 2 devrait fonctionner avec quelques modifications mineures.

Apache 2

Configurez Apache et activez les scripts Python CGI. Vous trouverez ci-dessous quelques excellentes ressources pour configurer Apache sur RPi, je ne vais donc pas répéter ici. Suivez simplement les tutoriels ci-dessous pour configurer Apache et CGI. Assurez-vous que les scripts *.py sont exécutables à partir d'un navigateur.

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

Pilote Max7291

Installez le pilote Max7219 en suivant le dernier guide d'installation:

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

Après l'installation, exécutez l'exemple de code, matrix_test.py, selon le guide d'installation pour afficher "Hello World" sur la matrice LED. Cela doit fonctionner avant de passer à l'étape suivante.

Messagerie ZeroMQ

Pourquoi avons-nous besoin de messagerie ? Essayez d'exécuter l'exemple de code ci-dessus, matrix_test.py, sur deux écrans de terminal simultanément. Le système permettra à plusieurs codes de s'exécuter simultanément, mais vous verrez des messages se chevaucher, ce qui n'est pas souhaitable. Dans un environnement à utilisateur unique, cela peut ne pas être un problème car vous pouvez vous assurer qu'un seul programme peut s'exécuter à la fois. Dans un environnement multi-utilisateurs tel que le Web, le système doit créer une file d'attente FIFO (First-In-First-Out) pour s'assurer qu'une seule personne puisse exécuter le code pendant que les autres attendent. Bien qu'il puisse exister d'autres solutions pour y parvenir, j'ai décidé d'utiliser ZeroMQ pour gérer la file d'attente FIFO. Le code du serveur ZeroMQ contient l'appel de fonction réel pour afficher un message sur la matrice LED un à la fois tandis que le serveur Web agit en tant que client ZeroMQ pour demander et envoyer des messages au serveur ZeroMQ. De cette façon, alors que plusieurs utilisateurs peuvent envoyer des messages via une page Web simultanément, le serveur ZeroMQ n'affichera qu'un message à la fois.

Pour ce projet, nous allons simplement installer le package Python pyzmq et non l'ensemble du package ZeroMQ.

Cours:

sudo pip3 installer pyzmq

Lisez le guide ZeroMQ sur https://zguide.zeromq.org et essayez l'exemple de serveur et client hello world en Python. Copiez l'exemple de code Python pour le serveur et le client dans RPi et assurez-vous qu'ils fonctionnent avant de passer à l'étape suivante.

Étape 3: Configuration de la page Web

Dans la page Web, j'ai utilisé le framework bootstrap css/js pour rendre la page jolie. Ceci est totalement facultatif.

Téléchargez le fichier led_msg.tar.gz joint à la racine ou sous-répertoire Apache. Pour décompresser le fichier tar gzip'd, exécutez:

tar -xzvf led_msg.tar.gz

Cela crée les fichiers suivants:

msg.py (programme principal)

templates/interstitiel.html (modèle html) templates/send_msg.html (modèle html)static/img/led_150x150-j.webp

Éventuellement, installez le framework css/js d'amorçage dans le répertoire statique.

Entrez l'URL de msg.py dans votre navigateur et assurez-vous que la page Web s'affiche. N'envoyez pas encore de message !!!

Avant que les messages puissent être soumis, le serveur ZeroMQ doit être démarré pour accepter les messages du client de la page Web et les afficher sur la matrice LED. Rien ne s'affichera à l'écran si le serveur ZeroMQ n'est pas en cours d'exécution.

Téléchargez le code max7219_server.py joint dans votre répertoire personnel, pas dans le répertoire racine Apache où il pourrait être exécuté par les utilisateurs Web. Exécutez-le en tant que root:

sudo python max7219_server.py

Le serveur ZeroMQ est maintenant prêt à recevoir des messages de la page Web. Entrez et soumettez un message simple à partir de la page Web. Si tout est configuré correctement, vous verrez ce message sur l'écran du serveur ZeroMQ ainsi que sur la matrice LED.

Si vous souhaitez arrêter le serveur, faites simplement Control-C pour quitter l'écran du serveur.

C'est ça. J'espère que vous apprécierez ce projet autant que moi.

Une amélioration que vous pourriez apporter consiste à rendre la communication ZeroMQ entre le serveur et les clients asynchrone afin que la page Web n'attende pas pendant l'affichage d'autres messages. En outre, vous pouvez attacher une matrice LED supplémentaire en mode cascade. Je vous laisse cela.

Conseillé: