Note

Bonjour, bienvenue dans la communauté des passionnés de SunFounder Raspberry Pi, Arduino et ESP32 sur Facebook ! Plongez dans l’univers du Raspberry Pi, Arduino et ESP32 avec d’autres passionnés.

Pourquoi nous rejoindre ?

  • Support d’experts : Résolvez les problèmes après-vente et les défis techniques avec l’aide de notre communauté et de notre équipe.

  • Apprendre et partager : Échangez des astuces et des tutoriels pour améliorer vos compétences.

  • Aperçus exclusifs : Accédez en avant-première aux annonces de nouveaux produits et aux avant-premières.

  • Réductions exclusives : Profitez de réductions exclusives sur nos produits les plus récents.

  • Promotions festives et cadeaux : Participez à des concours et des promotions festives.

👉 Prêt à explorer et créer avec nous ? Cliquez sur [Ici] et rejoignez-nous dès aujourd’hui !

Écran MétéoTemps

Ce sketch se connecte à un réseau Wi-Fi, récupère les données météorologiques d’OpenWeatherMap toutes les minutes, obtient l’heure actuelle d’un serveur NTP et affiche le jour, l’heure et les informations météorologiques sur un écran OLED.

Composants nécessaires

Pour ce projet, nous avons besoin des composants suivants.

Il est certainement pratique d’acheter un kit complet, voici le lien :

Nom

ARTICLES DANS CE KIT

LIEN

Elite Explorer Kit

300+

Elite Explorer Kit

Vous pouvez également les acheter séparément à partir des liens ci-dessous.

INTRODUCTION DU COMPOSANT

LIEN D’ACHAT

Arduino Uno R4 WiFi

-

Fils de Liaison

ACHETER

Module d’affichage OLED

ACHETER

Câblage

../_images/06_weather_oled_bb.png

Schéma

../_images/06_weather_oled_schematic.png

OpenWeather

Obtenez des clés API OpenWeather

OpenWeather est un service en ligne, propriété de OpenWeather Ltd, qui fournit des données météorologiques mondiales via API, y compris des données météorologiques actuelles, des prévisions, des nowcasts et des données météorologiques historiques pour n’importe quel emplacement géographique.

  1. Visitez OpenWeather pour vous connecter/créer un compte.

    ../_images/06_owm_1.png
  2. Cliquez sur la page API depuis la barre de navigation.

    ../_images/06_owm_2.png
  3. Trouvez Current Weather Data et cliquez sur Subscribe.

    ../_images/06_owm_3.png
  4. Sous Current weather and forecasts collection, abonnez-vous au service approprié. Dans notre projet, la version gratuite est suffisante.

    ../_images/06_owm_4.png
  5. Copiez la clé depuis la page API keys.

    ../_images/06_owm_5.png
  6. Copiez-la dans le fichier arduino_secrets.h.

    #define SECRET_SSID "<SSID>"        // votre SSID réseau (nom)
    #define SECRET_PASS "<PASSWORD>"    // votre mot de passe réseau
    #define API_KEY "<OpenWeather_API_KEY>"
    #define LOCATION "<YOUR CITY>"
    
  7. Définissez le fuseau horaire de votre emplacement.

    Prenons la capitale de la Suède, Stockholm, comme exemple. Recherchez « stockholm timezone » sur Google.

    ../_images/06_weather_oled_01.png

    Dans les résultats de recherche, vous verrez « GMT+1 », donc vous définissez le paramètre de la fonction ci-dessous à 3600 * 1 secondes.

    timeClient.setTimeOffset(3600 * 1);  // Ajustez pour votre fuseau horaire (c'est +1 heure)
    

Installer la bibliothèque

Pour installer la bibliothèque, utilisez le gestionnaire de bibliothèques Arduino et recherchez « ArduinoMqttClient », « FastLED », « Adafruit GFX » et « Adafruit SSD1306 » et installez-les.

ArduinoJson.h: Utilisé pour gérer les données JSON (données obtenues d’OpenWeatherMap).

NTPClient.h: Utilisé pour obtenir l’heure en temps réel.

Adafruit_GFX.h, Adafruit_SSD1306.h: Utilisé pour le module OLED.

Exécuter le code

Note

  • Vous pouvez ouvrir le fichier 06_weather_oled.ino sous le chemin elite-explorer-kit-main\iot_project\06_weather_oled directement.

  • Ou copier ce code dans Arduino IDE.

Note

Dans le code, le SSID et le mot de passe sont stockés dans arduino_secrets.h. Avant de télécharger cet exemple, vous devez les modifier avec vos propres identifiants WiFi. De plus, pour des raisons de sécurité, assurez-vous que ces informations restent confidentielles lors du partage ou du stockage du code.

Comment ça marche ?

  1. Bibliothèques et définitions :

    1. WiFiS3.h : Probablement une bibliothèque spécifique à un certain module Wi-Fi ou carte pour gérer les connexions Wi-Fi.

    2. ArduinoJson.h : Cette bibliothèque est utilisée pour décoder (et encoder) les données JSON.

    3. arduino_secrets.h : Un fichier séparé où les données sensibles (comme les identifiants Wi-Fi) sont stockées. C’est une bonne pratique de garder les identifiants hors du code principal.

    4. NTPClient & WiFiUdp : Utilisés pour récupérer l’heure actuelle d’un serveur NTP (Network Time Protocol).

    5. Bibliothèques Adafruit : Utilisées pour gérer l’affichage OLED.

    6. Diverses variables globales : Y compris les identifiants Wi-Fi, les détails du serveur et plus, qui seront utilisés tout au long du script.

  2. setup() :

    1. Initialise la communication série.

    2. Vérifie et affiche la version du firmware du module Wi-Fi.

    3. Tente de se connecter au réseau Wi-Fi en utilisant le SSID et le mot de passe fournis.

    4. Affiche le statut du Wi-Fi connecté (SSID, IP, force du signal).

    5. Initialise l’écran OLED.

    6. Démarre le client NTP pour obtenir l’heure actuelle et définit un décalage horaire (dans ce cas, 8 heures, ce qui peut correspondre à un fuseau horaire spécifique).

  3. read_response() :

    1. Lit la réponse du serveur, en recherchant spécifiquement les données JSON (indiquées par { et }).

    2. Si des données JSON sont trouvées, elles sont décodées pour extraire des détails météorologiques tels que la température, l’humidité, la pression, la vitesse du vent et la direction du vent.

    3. Appelle la fonction displayWeatherData pour afficher les informations météorologiques sur l’écran OLED.

  4. httpRequest() :

    1. Ferme toute connexion existante pour s’assurer que le socket du module Wi-Fi est libre.

    2. Tente de se connecter au serveur OpenWeatherMap.

    3. Si connecté, envoie une requête GET HTTP pour récupérer les données météorologiques pour un emplacement spécifique défini par LOCATION (probablement défini dans arduino_secrets.h ou ailleurs).

    4. Enregistre l’heure à laquelle la requête a été effectuée.

  5. loop() :

    1. Appelle la fonction read_response pour traiter les données entrantes du serveur.

    2. Met à jour l’heure depuis le serveur NTP.

    3. Vérifie s’il est temps de faire une autre requête au serveur météorologique (basé sur postingInterval). Si c’est le cas, appelle la fonction httpRequest.

  6. printWifiStatus() :

    1. Le SSID du réseau connecté.

    2. L’adresse IP locale de la carte.

    3. La force du signal (RSSI).

  7. displayWeatherData() :

    1. Efface l’écran OLED.

    2. Affiche le jour actuel de la semaine.

    3. Affiche l’heure actuelle au format HH:MM.

    4. Affiche les données météorologiques fournies (température, humidité, pression et vitesse du vent).