C'est le printemps ! Fleur.gif

Système d'affichage dynamique

De Les Fabriques du Ponant
Aller à : navigation, rechercher

Description

Dans le cadre du tremplin numérique n°6 nous réalisons un projet professionnel du 22/04/2025 au 28/05/2025. Celui-ci est issu d'un appel à projet lancé par l'association les Petits Débrouillards Grand Ouest (antenne de Brest) aux entreprises locales (plus ou moins) afin que nous (les stagiaires) répondions au mieux aux besoins exprimés.
La commande consiste à fournir un moniteur d'affichage du planning des salles de travail du CARAE afin de savoir rapidement si celles-ci sont réservées ou libres.Le moniteur sera dans un boîtier fixé au mur dans le couloir du CARAE.

Matériel

  • Raspberry Pi Zero 2
  • ESP32 E ink Screen 4.7inch SKU DFR0835
  • Boite : PLA et vis

Budget ≈ 250€

Contraintes

  • Faible consommation électrique
  • Lisibilité des informations : 
    • Status libre/occupée
    • Date
    • Horaires
    • Nom de la personne ayant réservée
  • Sécurité du dispositif
    • mise à jour
    • anti-vol (accroché au mur)
  • Solidité

Problèmes rencontrés

Physique

Problèmes d'alimentations : Prix de la pose de prise de courant à l'IMT

Problèmes d'accès internet : Prix de la pose d'un câble RJ45 POE, problème de sécurité si Wifi

Delai de livraison : Ecran E-ink 10 jours

Code

Raspberry PI :

Esp 32 :

  • Soucis d'import du code de Arduino IDE vers l'esp 32 :

Télécharger le driver de l'ESP32 en DEV mode Impossible d'importer le code -> L'esp32 n'est pas en mode téléchargement. Solution : Appuyer physiquement sur le bouton boot de l'esp32 pendant l'upload du code

  • Compilation du code très long : hardware personnel vetuste -> temps de compilation très long
  • Mémoire limitéd (512ko) -> on déporte un maximum de calculs sur le RaspberryPI (Server side)
  • Interprétation des données reçues sur l'esp : ça marche pas. Solution :
 .as<String> (dans le code arduino) sinon soucis de format (String salle = doc["salle"]["numero"].as<String>();)


  • soucis pour récupérer les infos dans un nested array (3eme niveau) solution :
     for (int i = 0; i <= 3; i++) {
       String reservation = doc["reservations"][i].as<String>();
       String heure = doc["reservations"][i]["heure"].as<String>();
       String nom = doc["reservations"][i]["nom"].as<String>();
       if (reservation == "null") break;
       
  • i = on augmente de manière incrémentale pour chercher chaque "réservations", on va chercher l'élément dans le 3eme niveau de l'objet json.
 ["reservations"](niveau 1)[i](niveau 2)["heure"](niveau3)

Déployement

Le raspberry contient un serveur web (apache) et une application python communiquant via WSGI.
L'ESP32 en tant que client demande (requête http) les éléments à afficher (au format JSON) au serveur. Il se charge ensuite de les afficher sur l'écran e-ink. Le tout en language Arduino.

Serveur : raspberry pi

Configuration Raspberry

todo : fichier à telecharger sur le wiki

Python

todo : fichier à telecharger sur le wiki

Client : ESP32

Programation

Affichage E-INK

Visuel

todo : mettre une image/images format web du dispositif
todo : mettre schema boite
todo : mettre schema technique branchement

License

Ce projet est sous license GNU GPL v3.

Auteurs

- Corto 🍓
- Etienne 🐧
- Jean-Jacques ⭐

Source