Objectif

Construction d’un afficheur météo avec le cahier de charge suivant :

Permettre la lecture des informations jusqu’à trois mètres. D’un coup d’œil on devra être renseigné sur temps qu’il fait.

Affichage de la température intérieure.

Affichage de la température, le taux d’humidité, l’orientation et la vitesse du vent extérieures.

Affichage de la tendance des températures sur les quinze dernières minutes.

Utilisation de peu de composants.

Utilisation d’un afficheur TFT ILI9341 (240×320) en mode SPI

Utilisation du contrôleur Rapsberry pico W.

Pouvoir accéder/modifier le programme facilement une fois le dispositif terminé.

Partie 1 : Composant

Très peu de composants sont nécessaires. J’utilise une planche de prototypage pour démonstration de faisabilité.

– La fonction thermomètre (intérieure) est assurée par le composant DHT11.

– La fonction météo est assurée par le site « openweathermap«. Le site offre gratuitement une clé API d’accès aux données météo en fonction de la localisation. Une URL avec cette clé renvoie toutes les informations sous la forme d’une chaîne de caractères. Cette dernière est exploitée par le programme (voir exemple dans la section bibliographie).

L’alimentation du dispositif se fait par un cordon USB connecté directement au Pico. Un branchement à un PC permet alors d’affiner le programme, apporter des améliorations.

Tous les fichiers (applications et documentation) sont téléchargeables ICI.

Partie 2 : Montage de base

Le montage est simple et ne pose pas de problème. Le boîtier avec sa façade transparente facilite la mise en œuvre.

Partie 3 : L’affichage

Les images décrivent les fonctions affichées. La taille des caractères permet une lisibilité facile et à une distance de 2 à 3 mètres. D’un coup d’œil on est renseigné sur temps qu’il fait. On joue également avec le couleur lorsqu’une valeur dépasse certains seuils (ex blanc pour température extérieure inférieure à 4 degrés). Trois écrans se suivent en séquence pour permettre la visualisation de toutes les informations : températures, vent, état général et humidité.

Partie 2-b : Le programme

L’application comporte plusieurs fichiers.

  • « definitions.h » regroupe les déclarations de variables ainsi que les tableaux de constantes.
    • Constantes liées aux accès internet (WiFi, URL site météo).
    • Traduction du temps qu’il fait et images associées.
    • Positions des éléments graphiques sur l’écran.
    • Diverses variables pour mémoriser des températures.
  • « functions-internet » regroupe les fonctions liées aux relations avec internet.
    • Démarrage WiFi.
    • Appel des informations météo.
    • Extraction des éléments météo et stockage des valeurs.
  • « function-display » contient les fonctions d’affichage pour les trois écrans.
  • « progafftemp2 » le programme principal qui orchestre le tout.

Les schémas montrent le déroulement du programme dans le temps.

Particularités du programme :

  • Utilisation de la bibliothèque « FixedString-main ». Elle offre une utilisation de la mémoire plus sûre, plus simple et plus prévisible que les objets String dynamiques.
  • L’utilisation de pointeurs permet une gestion efficace de la mémoire et une optimisation des performances.
  • Les images utilisées ont été téléchargées du site « openweathermap.org » et adaptés par conversion au format « .c » (cf. bibliographie).

L’application se trouve dans le dossier « progafftemp2 ».

Conclusion

Ce projet ne comporte peu de composants et le montage est facile. L’affichage des données est bien visible et permet d’un coup d’œil de voir l’état de la météo. Comme on peut brancher directement le dispositif sur un PC on pourra adapter le programme selon ses envies. Enjoy it !

Bibliographie

Arduino 2.8″ ILI9341 Tutorial :  http://educ8s.tv/arduino-2-8-ili9341-tutorial

Adafruit GFX Graphics Library : https://learn.adafruit.com/adafruit-gfx-graphics-library/using-fonts

WiFi (Raspberry Pi Pico W) Support : https://arduino-pico.readthedocs.io/en/latest/wifi.html

ArduinoHttpClient library  <== exemples pour inspiration

Openweathermap : https://openweathermap.org/weather-conditions

Image converter : http://www.rinkydinkelectronics.com/t_imageconverter565.php

Exemple d’appel de la fonction météo :

https://api.openweathermap.org/data/2.5/weather?lat=xx.xx&lon=yy.yy&appid=919uif897b48jg375b7e95aa7f38c6e457&units=metric

Les informations en gras sont à fournir.

Exemple de la chaîne de caractères reçue d’openweathermap :

{“coord”:{“lon”:xx.xx,”lat”:yy.yy},”weather”:[{“id”:804,”main”:”Clouds”,”description“:”overcast

clouds”,”icon“:”04n”}],”base”:”stations”,”main”:

{“temp”:2.03,”feels_like“:-4.58,”temp_min”:1.43,”temp_max”:2.96,”pressure”:1018,”humidity“:64,

“sea_level”:1018,”grnd_level”:1002},”visibility”:10000,”wind“:{“speed“:10.8,”deg“:40,”gust“:16.46},

“clouds”:{“all”:100},”dt”:1766599863,”sys”:{“type”:1,”id”:6595,”country”:”xx”,”sunrise”:1766560793,

“sunset”:1766590630},”timezone”:3600,”id”:2973783,”name”:”xy”,”cod”:200}

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *