C'est l'hiver ! Hiver.gif

ENIB 2026 : Sation météo : Différence entre versions

De Les Fabriques du Ponant
Aller à : navigation, rechercher
(étape 2)
(Code Arduino)
 
(45 révisions intermédiaires par 3 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 
Titre de la fiche expérience :
 
Titre de la fiche expérience :
==Description (résumé)==
+
==Introduction==
 +
 
 +
 
 
La station météo est une maquette qui permet à l'utilisateur d'obtenir les informations relatifs à la météo : la température et les conditions climatiques comme le soleil, la pluie, les orages, le brouillard la neige ou juste les nuages.
 
La station météo est une maquette qui permet à l'utilisateur d'obtenir les informations relatifs à la météo : la température et les conditions climatiques comme le soleil, la pluie, les orages, le brouillard la neige ou juste les nuages.
  
Ligne 12 : Ligne 14 :
 
  - Des leds matricielles (minimum 7 en longueur par 5 en largeur)
 
  - Des leds matricielles (minimum 7 en longueur par 5 en largeur)
 
  - Des planches en bois (ou quelque chose de solide, découpable et gravable)
 
  - Des planches en bois (ou quelque chose de solide, découpable et gravable)
- Une résistance de 330 Ω
 
 
  - Une carte esp32
 
  - Une carte esp32
 
  - Des câbles connexion
 
  - Des câbles connexion
 +
- un bout de papier calque
 +
- Des boutons poussoir
 +
- du fil pour impression 3D
 +
- tube de colle pour pistoler a colle
  
==Outils nécessaire==
+
Schéma du résultat :
• Découpe laser
 
• Imprimante 3D
 
• Règle
 
  
==Erreur possible et solution==
+
[[Fichier:Schéma montage.jpeg|300px]]
  
Un problème que l'on a eu au début était d'avoir l'affichage de la température en inversé ou mirroir
+
==Outils nécessaire==
 
+
- Découpeuse laser
 
+
- Imprimante 3D
[[Fichier:Code pas bon.png|500px]] [[Fichier:001.jpg|150px]]
+
- Règle
 
+
- Pistolet a colle
 
 
Pour l'inverser après plusieurs recherche nous avons décider de nous aider avec l'IA. Le problème était qu'il fallait inverser le X dans la fonction XY(). Pour ce fairer on à rajouter la ligne
 
x = (WIDTH -1) -x;
 
 
 
 
 
[[Fichier:0010.jpg|150px]] [[Fichier:Code corrigé.png|500px]]
 
  
 
==fichiers à joindre==
 
==fichiers à joindre==
code, ficher d'impression 3D, de découpe laser ou vinyle, ...
+
===Diaporama de présentation===
 +
[[Fichier:Diapo presentation station meteo.pdf]]
 +
===Découpe laser===
 +
[[Media:StationMétéoV2.svg]]
 
===Code Arduino===
 
===Code Arduino===
 
[[Fichier:Code station météo esp32.pdf|300px]]
 
[[Fichier:Code station météo esp32.pdf|300px]]
 +
 +
Version avec bouton poussoir :
 +
[[Fichier:Code final station météo esp32.pdf]]
  
 
==étapes de fabrication==
 
==étapes de fabrication==
Ligne 44 : Ligne 46 :
  
 
===étape 1===
 
===étape 1===
Regrouper le materiel.
+
Regrouper le matériel.
Tester le materiel.
+
Tester le matériel.
Tester le code.
+
Procéder au câblage si joint.
Commencé la constuction de la structure.
+
 
 +
[[Fichier:Cablage station meteo ENIB 2026V1.png|200px]]
 +
 
 +
Vérifier si le code compile le code.
 +
 
 +
Maintenant, on va commencer la construction de la structure.
  
 
===étape 2===
 
===étape 2===
- découpe de la structure grâce au fichier Inkscape sur une découpeuse laser
+
- découpe de la structure grâce au fichier Inkscape sur une découpeuse laser
- vérification de l'échelle de la structure
+
- vérification de l'échelle de la structure
 +
 
 
===étape 3===
 
===étape 3===
 
- imprimer le support (une grille de 10 par 10) pour la matrice led
 
- imprimer le support (une grille de 10 par 10) pour la matrice led
 
===étape 4===
 
===étape 4===
- découper le papier calque pour qu'il corresponde au support
+
- découper le papier calque pour qu'il corresponde au support
- coller le support avec la matrice led a la structure précédemment découpée grâce au pistolet a colle
+
- coller le support avec la matrice led a la structure précédemment découpée grâce au pistolet a colle
 +
 
 +
[[Fichier:Assemblage2.jpeg|300px]]
 +
 
 +
===étape 5===
 +
Tester le bon fonctionnement
 +
 
 +
[[Fichier:Test final.jpeg|200px]]  Il s'agit de la maquette en carton, les gravures ne sont pas très visible mais les données sont correctes.
 +
 
 +
Maintenant on veut rajouter un paramètre : la ville.
 +
On veut rajouter 4 boutons qui nous permettrait de sélectionner la ville, on prend Brest, Marseille, Lille et Paris.
 +
 
 +
===étape 6===
 +
On refait un schéma pour y faire correspondre les boutons poussoir
 +
 
 +
[[Fichier:Cablage station meteo ENIB 2026.png|200px]]
 +
 
 +
===étape 7===
 +
Monter et brancher la maquette finale :
 +
 
 +
[[Fichier:Assemblage maquette f.jpg|250px]]
 +
 
 +
===étape 8===
 +
Vérifier le bon fonctionnement.
 +
 
 +
[[Fichier:Maquette finale.jpg|250px]]
 +
 
 +
Petit problème : la led est un peu trop forte
 +
 
 +
 
 +
Pour le résoudre on utilise simplement analogwrite à la place de digitalwrite pour allumer la led.
 +
 
 +
 
 +
Une fois ce problème résolu, vous avez maintenant une station météo fonctionnelle, félicitation.
  
===étape ...===
 
 
===Troubleshouting===
 
===Troubleshouting===
 
Quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?
 
Quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?
 +
 +
==Erreur possible et solution==
 +
 +
Un problème que l'on a eu au début était d'avoir l'affichage de la température en inversé ou miroir.
 +
 +
 +
[[Fichier:Code pas bon.png|500px]] [[Fichier:001.jpg|150px]]
 +
 +
 +
Pour l'inverser après plusieurs recherche nous avons décider de nous aider avec l'IA. Le problème était qu'il fallait inverser le X dans la fonction XY(). Pour ce faire, on a rajouté la ligne
 +
x = (WIDTH -1) -x;
 +
 +
 +
[[Fichier:0010.jpg|150px]] [[Fichier:Code corrigé.png|500px]]
  
 
==Sources et documentation complémentaire==
 
==Sources et documentation complémentaire==
  
* Rédаctiоn et illustratiоn : <br>
+
ESP32 TFT avec LVGL : Station météo :
Pоur tоus vоs trаvauх, qu'ils sоient écrits оu visuels, l'utilisatiоn de l'intеlligеnce artificiеllе générativе, que сe sоit pоur le teхte оu les images, n'еst pas conseillé.
+
https://www.raspberryme.com/esp32-tft-avec-lvgl-station-meteo/#Station_meteo_ESP32_TFT_%E2%80%93_fichier_Weather_imagesh
 +
 
 +
* Transpаrence et dосumеntatiоn : <br>
 +
 
 +
Lors d'utilisation de l'IA :
 +
prompt : aide mappage LED WSP2880 pour une 8x8
 +
Donne les code suivant
 +
 
 +
int XY(int x, int y) {
 +
  x = (WIDTH - 1) - x;  // <-- miroir horizontal corrigé
 +
 
 +
  if (y % 2 == 0) return y * WIDTH + x;
 +
  return y * WIDTH + (WIDTH - 1 - x);
 +
}
 +
 
 +
void drawPixel(int x, int y, CRGB color) {
 +
  if (x < 0 || x >= WIDTH || y < 0 || y >= HEIGHT) return;
 +
  leds[XY(x, y)] = color;
 +
}
  
* Prоgrammаtiоn : <br>
 
En сe qui cоncernе la prоgrаmmatiоn, il est еssentiеl de ne pаs faire dе l'IA vоtrе prеmier rеcоurs. Cоncеntrеz-vоus d'abоrd sur vоtre prоpre lоgiquе, votre experience еt lеs ressоurcеs disponibles.
 
  
* Transpаrence et dосumеntatiоn : <br>
 
Si vоus utilisеz l'IA pоur déblоquer оu améliоrеr une pаrtiе de vоtre cоdе, il est cruciаl de l'indiquеr сlairеmеnt dans vоtre dосumentatiоn tеchniquе.
 
  
* Traçabilité : <br>
+
//---------chiffre 3*5--------
Chаque ехtrait de cоde généré avес l'аidе de l'IA dоit êtrе accоmpagné de la sоurce, ainsi que du prоmpt eхact qui a été utilisé pоur sа créatiоn, afin d'аssurеr une évaluatiоn clаire dе vоtre prоcessus.
+
 
 +
// Police 3x5 : chaque chiffre fait 3 pixels de large sur 5 de haut
 +
const uint16_t digits3x5[10] = {
 +
  0b111101101101111, // 0
 +
  0b010110010010111, // 1
 +
  0b111001111100111, // 2
 +
  0b111001111001111, // 3
 +
  0b101101111001001, // 4
 +
  0b111100111001111, // 5
 +
  0b111100111101111, // 6
 +
  0b111001010010010, // 7
 +
  0b111101111101111, // 8
 +
  0b111101111001111  // 9
 +
};
 +
// Fonction pour dessiner un chiffre 3x5
 +
void drawDigit3x5(int digit, int offsetX, int offsetY, CRGB color) {
 +
  if (digit < 0 || digit > 9) return;
 +
 
 +
  for (int y = 0; y < 5; y++) {
 +
    for (int x = 0; x < 3; x++) {
 +
      // On lit le bit correspondant (14 - position)
 +
      int bitPos = 14 - (y * 3 + x);
 +
      if (digits3x5[digit] & (1 << bitPos)) {
 +
        drawPixel(x + offsetX, y + offsetY, color);
 +
      }
 +
    }
 +
  }
 +
}
 +
 
 +
void drawNumber2Digits(int value, CRGB color) {
 +
  value = constrain(value, 0, 99);
 +
  int dizaine = value / 10;
 +
  int unite = value % 10;
 +
 
 +
  // Si le chiffre est < 10, on peut soit ne rien afficher à gauche, soit un 0
 +
  if (value >= 10) {
 +
    drawDigit3x5(dizaine, 0, 1, color); // Positionné à x=0, y=1 pour centrer verticalement
 +
  }
 +
  drawDigit3x5(unite, 4, 1, color);    // Positionné à x=4, y=1
 +
}
  
 
==Elément de présentation==
 
==Elément de présentation==

Version actuelle datée du 20 janvier 2026 à 16:38

Titre de la fiche expérience :

Introduction

La station météo est une maquette qui permet à l'utilisateur d'obtenir les informations relatifs à la météo : la température et les conditions climatiques comme le soleil, la pluie, les orages, le brouillard la neige ou juste les nuages.

Elle utilise des leds et des planches en bois sur lesquelle sont gravées des pictogramme de météo (soleil, nuage, etc..) placé à coté des leds.

Lequipe .jpeg

Matériel nécessaire

- 8 leds
- Des leds matricielles (minimum 7 en longueur par 5 en largeur)
- Des planches en bois (ou quelque chose de solide, découpable et gravable)
- Une carte esp32
- Des câbles connexion
- un bout de papier calque
- Des boutons poussoir
- du fil pour impression 3D
- tube de colle pour pistoler a colle

Schéma du résultat :

Schéma montage.jpeg

Outils nécessaire

- Découpeuse laser
- Imprimante 3D
- Règle
- Pistolet a colle

fichiers à joindre

Diaporama de présentation

Fichier:Diapo presentation station meteo.pdf

Découpe laser

Media:StationMétéoV2.svg

Code Arduino

Fichier:Code station météo esp32.pdf

Version avec bouton poussoir : Fichier:Code final station météo esp32.pdf

étapes de fabrication

indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)

étape 1

Regrouper le matériel. Tester le matériel. Procéder au câblage si joint.

Cablage station meteo ENIB 2026V1.png

Vérifier si le code compile le code.

Maintenant, on va commencer la construction de la structure.

étape 2

- découpe de la structure grâce au fichier Inkscape sur une découpeuse laser
- vérification de l'échelle de la structure

étape 3

- imprimer le support (une grille de 10 par 10) pour la matrice led

étape 4

- découper le papier calque pour qu'il corresponde au support
- coller le support avec la matrice led a la structure précédemment découpée grâce au pistolet a colle

Assemblage2.jpeg

étape 5

Tester le bon fonctionnement

Test final.jpeg Il s'agit de la maquette en carton, les gravures ne sont pas très visible mais les données sont correctes.

Maintenant on veut rajouter un paramètre : la ville. On veut rajouter 4 boutons qui nous permettrait de sélectionner la ville, on prend Brest, Marseille, Lille et Paris.

étape 6

On refait un schéma pour y faire correspondre les boutons poussoir

Cablage station meteo ENIB 2026.png

étape 7

Monter et brancher la maquette finale :

Assemblage maquette f.jpg

étape 8

Vérifier le bon fonctionnement.

Maquette finale.jpg

Petit problème : la led est un peu trop forte


Pour le résoudre on utilise simplement analogwrite à la place de digitalwrite pour allumer la led.


Une fois ce problème résolu, vous avez maintenant une station météo fonctionnelle, félicitation.

Troubleshouting

Quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?

Erreur possible et solution

Un problème que l'on a eu au début était d'avoir l'affichage de la température en inversé ou miroir.


Code pas bon.png 001.jpg


Pour l'inverser après plusieurs recherche nous avons décider de nous aider avec l'IA. Le problème était qu'il fallait inverser le X dans la fonction XY(). Pour ce faire, on a rajouté la ligne x = (WIDTH -1) -x;


0010.jpg Code corrigé.png

Sources et documentation complémentaire

ESP32 TFT avec LVGL : Station météo : https://www.raspberryme.com/esp32-tft-avec-lvgl-station-meteo/#Station_meteo_ESP32_TFT_%E2%80%93_fichier_Weather_imagesh

  • Transpаrence et dосumеntatiоn :

Lors d'utilisation de l'IA : prompt : aide mappage LED WSP2880 pour une 8x8 Donne les code suivant

int XY(int x, int y) {

  x = (WIDTH - 1) - x;   // <-- miroir horizontal corrigé
  if (y % 2 == 0) return y * WIDTH + x;
  return y * WIDTH + (WIDTH - 1 - x);

}

void drawPixel(int x, int y, CRGB color) {

  if (x < 0 || x >= WIDTH || y < 0 || y >= HEIGHT) return;
  leds[XY(x, y)] = color;

}


//---------chiffre 3*5--------

// Police 3x5 : chaque chiffre fait 3 pixels de large sur 5 de haut const uint16_t digits3x5[10] = {

 0b111101101101111, // 0
 0b010110010010111, // 1
 0b111001111100111, // 2
 0b111001111001111, // 3
 0b101101111001001, // 4
 0b111100111001111, // 5
 0b111100111101111, // 6
 0b111001010010010, // 7
 0b111101111101111, // 8
 0b111101111001111  // 9

}; // Fonction pour dessiner un chiffre 3x5 void drawDigit3x5(int digit, int offsetX, int offsetY, CRGB color) {

 if (digit < 0 || digit > 9) return;
 
 for (int y = 0; y < 5; y++) {
   for (int x = 0; x < 3; x++) {
     // On lit le bit correspondant (14 - position)
     int bitPos = 14 - (y * 3 + x);
     if (digits3x5[digit] & (1 << bitPos)) {
       drawPixel(x + offsetX, y + offsetY, color);
     }
   }
 }

}

void drawNumber2Digits(int value, CRGB color) {

 value = constrain(value, 0, 99);
 int dizaine = value / 10;
 int unite = value % 10;
 // Si le chiffre est < 10, on peut soit ne rien afficher à gauche, soit un 0
 if (value >= 10) {
   drawDigit3x5(dizaine, 0, 1, color); // Positionné à x=0, y=1 pour centrer verticalement
 }
 drawDigit3x5(unite, 4, 1, color);     // Positionné à x=4, y=1

}

Elément de présentation

Présentation station météo (2).jpg

ne pas modifier sous cette ligne