Tutoriel ESP32 53/55 - Construisez une horloge Internet LCD | Kit d'apprentissage IoT ESP32 de SunFounder

Tutoriel ESP32 53/55 - Construisez une horloge Internet LCD | Kit d'apprentissage IoT ESP32 de SunFounder

Dans ce tutoriel, nous allons construire une horloge LCD connectée à Internet en utilisant le microcontrôleur ESP32 de SunFounder. Cette horloge se synchronisera automatiquement à l'heure actuelle via Internet, affichant l'heure au format 12 heures ou 24 heures, ainsi que le jour de la semaine, la date et le mois. L'utilisation du protocole de temps réseau (NTP) garantit que l'horloge reste précise sans ajustements manuels.

esp32-53-horloge-internet-principale

Ce projet utilise les capacités Wi-Fi intégrées de l'ESP32 pour récupérer l'heure actuelle d'un serveur NTP. Nous allons utiliser un écran à cristaux liquides (LCD) pour afficher l'heure, qui peut être formatée selon les préférences de l'utilisateur. Pour toute clarification sur les étapes, veuillez consulter la vidéo à (dans la vidéo à 00:30).

Matériel expliqué

Les composants principaux de ce projet incluent le microcontrôleur ESP32, un écran LCD 20x4 et une source d'alimentation. L'ESP32 est un microcontrôleur puissant avec Wi-Fi et Bluetooth intégrés, ce qui le rend adapté aux projets IoT. L'écran LCD est utilisé pour afficher l'heure et la date, et il peut être configuré pour différentes tailles d'affichage.

L'afficheur LCD fonctionne via le protocole I2C, ce qui permet la communication sur deux fils (SDA et SCL). Cela simplifie le câblage et réduit le nombre de broches nécessaires sur l'ESP32. La connexion au serveur NTP se fait en utilisant les capacités Wi-Fi de l'ESP32, permettant des mises à jour en temps réel.

  • Assurez-vous que la tension d'alimentation est correcte (5 V).
  • Utilisez des condensateurs de découplage près des broches d'alimentation pour la stabilité.
  • Soyez prudent avec les connexions I2C pour éviter les conflits sur le bus.
  • Vérifiez l'adresse I2C de l'écran LCD (0x27 ou 0x3F).
  • Vérifiez les identifiants Wi-Fi pour une connexion précise.
  • Gérez les ajustements de l'heure d'été dans votre code.
  • Utilisez le bon serveur NTP pour votre emplacement géographique.
  • Toujours effacer l'écran LCD avant de mettre à jour l'affichage.

Instructions de câblage

ESP32-11_LCD-wiring

Pour câbler l'ESP32 avec l'écran LCD, commencez par connecter les broches d'alimentation. Connectez le VCC de l'écran LCD à la broche 5V de l'ESP32 et la broche GND de l'écran LCD à la broche GND de l'ESP32. Pour la communication I2C, connectez la broche SDA de l'écran LCD à la GPIO 21 de l'ESP32 et la broche SCL à la GPIO 22. Assurez-vous que les connexions sont sécurisées pour éviter tout problème de communication.

Lors de la configuration du câblage, utilisez des fils de pont male-femelle pour des connexions faciles. Si votre écran LCD a une adresse I2C ou une configuration de broches différente, ajustez le code en conséquence. Référez-vous à la vidéo (dans la vidéo à 05:30) pour des options de câblage alternatives si nécessaire.

Exemples de code et guide étape par étape

Le code initialise l'écran LCD et configure la connexion Wi-Fi pour récupérer les données temporelles du serveur NTP. Des identifiants clés tels quessidetpasswordsont utilisés pour se connecter au réseau Wi-Fi, tandis quentpServer1etntpServer2spécifiez les serveurs NTP à utiliser.

const char* ssid = "dars";
const char* password = "llllllllllllll";
const char* ntpServer1 = "pool.ntp.org";
const char* ntpServer2 = "time.nist.gov";

Ce fragment montre les identifiants du réseau et les adresses du serveur. Assurez-vous d'entrer votre SSID Wi-Fi et votre mot de passe avec précision, car toute erreur empêchera l'ESP32 de se connecter à Internet.

Dans leprintLocalTime()fonction, l'heure actuelle est formatée pour affichage. La structuretmest utilisé pour stocker des informations temporelles, tandis questrftimeaide à formater le temps en une chaîne lisible.

void printLocalTime() {
  struct tm timeinfo;
  if(!getLocalTime(&timeinfo)) {
    Serial.println("No time available (yet)");
    return;
  }
  char timeHour[5];
  strftime(timeHour, 5, "%H", &timeinfo);

Ce code vérifie si l'heure locale est disponible et récupère l'heure. L'heure formatée est ensuite utilisée pour afficher l'heure actuelle sur l'écran LCD. Si l'heure n'est pas encore disponible, un message est imprimé sur le Moniteur Série.

Enfin, lesetup()La fonction initialise l'affichage LCD et se connecte au Wi-Fi. Elle configure également les paramètres du serveur NTP et définit un rappel pour la synchronisation temporelle.

void setup() {
  Serial.begin(115200);
  lcd.init(); // initialize the lcd 
  lcd.backlight(); // Turns on the LCD backlight.
  Serial.printf("Connecting to %s ", ssid);
  WiFi.begin(ssid, password);

Cet extrait initialise le moniteur série pour le débogage, configure l'écran LCD et tente de se connecter au réseau Wi-Fi spécifié. L'état de la connexion sera imprimé sur le moniteur série, vous permettant de vérifier la connexion.

Démonstration / À quoi s'attendre

Après une configuration réussie, l'écran LCD affichera l'heure actuelle, le jour de la semaine et la date. Vous pouvez vous attendre à ce que l'heure se mette à jour toutes les 5 secondes, grâce à laloop()fonction. Si la connexion au serveur NTP échoue, un message apparaîtra sur le Moniteur Série indiquant que l'heure n'est pas encore disponible (dans la vidéo à 12:00).

Les pièges courants incluent un câblage incorrect, de mauvaises adresses I2C et des identifiants Wi-Fi incorrects. Assurez-vous que toutes les connexions sont sécurisées et que le serveur NTP est accessible depuis votre réseau.

Horodatages vidéo

  • 00:00 Début
  • 2:10 Introduction
  • 5:15 Explication du câblage
  • 7:32 Explication du code Arduino
  • 18:43 Sélection de la carte ESP32 et du port COM dans l'IDE Arduino
  • 20:27 Démonstration de l'horloge Internet

Images

ESP32-11_LCD-wiring
ESP32-11_LCD-wiring
ESP32-11_LCD-wiring-schematic
ESP32-11_LCD-wiring-schematic
esp32-53-internet-clock-main
esp32-53-internet-clock-main
854-ESP32 Tutorial 53/55- Internet Clock
Langue: C++
Copié !

Ce dont vous pourriez avoir besoin

Ressources et références

Fichiers📁

Fichier requis (.h)