ESP8266 - Horloge OLED

Ce tutoriel vous explique comment créer une horloge OLED en utilisant ESP8266, un module RTC et un affichage OLED. Le tutoriel fournit des instructions pour les modules RTC DS3231 et DS1307. En détail :

Vous pouvez choisir entre deux modules RTC : DS3231 et DS1307. Pour plus d'informations, veuillez consulter DS3231 vs DS1307.

Préparation du matériel

1×ESP8266 NodeMCU
1×Câble USB Type-A vers Type-C (pour PC USB-A)
1×Câble USB Type-C vers Type-C (pour PC USB-C)
1×Écran OLED I2C SSD1306 128x64
1×Écran OLED I2C SSD1306 128x32
1×Module horloge temps réel DS3231
1×Optionnel: Real-Time Clock DS1307 Module
1×Pile CR2032
1×Plaque d'essai
1×Fils de connexion
1×Optionnel: 5V Power Adapter for ESP8266
1×Recommandé: Carte d'extension à bornier à vis pour ESP8266
1×Recommandé: Répartiteur d'alimentation pour ESP8266 Type-C

Ou vous pouvez acheter les kits suivants:

1×Kit de Capteurs DIYables (30 capteurs/écrans)
1×Kit de Capteurs DIYables (18 capteurs/écrans)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos d'OLED, des modules RTC DS3231 et DS1307

Si vous n'êtes pas familier avec les OLED, DS3231 et DS1307 (brochage, fonctionnalités, programmation...), les tutoriels suivants peuvent vous aider :

Installer les bibliothèques OLED et RTC

  • Cliquez sur l'icône Libraries dans la barre gauche de l'IDE Arduino.
  • Recherchez “SSD1306” et trouvez la bibliothèque SSD1306 d'Adafruit.
  • Ensuite, appuyez sur le bouton Install pour terminer l'installation.
Bibliothèque OLED ESP8266 NodeMCU
  • Vous serez invité à installer des dépendances de bibliothèque supplémentaires.
  • Pour les installer toutes en une fois, cliquez sur le bouton Install All.
Bibliothèque de capteurs Adafruit GFX pour ESP8266 NodeMCU
  • Recherchez « RTClib » et localisez la bibliothèque RTC d'Adafruit. Cette bibliothèque est compatible avec les DS3231 et DS1307.
  • Appuyez sur le bouton Install pour installer la bibliothèque RTC.
Bibliothèque RTC ESP8266 NodeMCU

Lire l'heure depuis le module RTC DS3231 et l'afficher sur l'OLED

Schéma de câblage

Schéma de câblage ESP8266 NodeMCU DS3231 OLED

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Pour plus d'informations, consultez Brochage ESP8266. et Comment alimenter l'ESP8266..

Code ESP8266 - DS3231 et OLED

/* * Ce code ESP8266 NodeMCU a été développé par newbiely.fr * Ce code ESP8266 NodeMCU est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp8266/esp8266-oled-clock */ #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <RTClib.h> #define OLED_WIDTH 128 // OLED display width, in pixels #define OLED_HEIGHT 64 // OLED display height, in pixels Adafruit_SSD1306 oled(OLED_WIDTH, OLED_HEIGHT, &Wire, -1); // // create SSD1306 display object connected to I2C RTC_DS3231 rtc; String time; void setup() { Serial.begin(9600); // initialize OLED display with address 0x3C for 128x64 if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F("SSD1306 allocation failed")); while (true); } delay(2000); // wait for initializing oled.clearDisplay(); // clear display oled.setTextSize(1); // text size oled.setTextColor(WHITE); // text color oled.setCursor(0, 10); // position to display // SETUP RTC MODULE if (! rtc.begin()) { Serial.println("Couldn't find RTC"); Serial.flush(); while (true); } // automatically sets the RTC to the date & time on PC this sketch was compiled rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); time.reserve(10); // to avoid fragmenting memory when using String } void loop() { DateTime now = rtc.now(); time = ""; time += now.hour(); time += ':'; time += now.minute(); time += ':'; time += now.second(); oled_display_center(time); } void oled_display_center(String text) { int16_t x1; int16_t y1; uint16_t width; uint16_t height; oled.getTextBounds(text, 0, 0, &x1, &y1, &width, &height); // center the display both horizontally and vertically oled.clearDisplay(); // clear display oled.setCursor((OLED_WIDTH - width) / 2, (OLED_HEIGHT - height) / 2); oled.println(text); // text to display oled.display(); }

Étapes rapides

Pour commencer avec ESP8266 sur Arduino IDE, suivez ces étapes :

  • Consultez le tutoriel Installation du logiciel ESP8266. si c'est la première fois que vous utilisez ESP8266.
  • Câblez les composants comme indiqué dans le schéma.
  • Connectez la carte ESP8266 à votre ordinateur à l'aide d'un câble USB.
  • Ouvrez Arduino IDE sur votre ordinateur.
  • Choisissez la bonne carte ESP8266, comme (par exemple NodeMCU 1.0 (Module ESP-12E)), et son port COM respectif.
  • Copiez le code et ouvrez-le avec Arduino IDE.
  • Cliquez sur le bouton Upload dans Arduino IDE pour envoyer le code à l'ESP8266.
  • Placez le capteur dans de l'eau chaude et froide, ou tenez-le dans votre main.
  • Consultez le résultat sur l'OLED.

Lire l'heure depuis le module RTC DS1307 et l'afficher sur l'OLED

Schéma de câblage

Schéma de câblage ESP8266 NodeMCU DS1307 OLED

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Code ESP8266 - DS1307 et OLED

/* * Ce code ESP8266 NodeMCU a été développé par newbiely.fr * Ce code ESP8266 NodeMCU est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp8266/esp8266-oled-clock */ #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <RTClib.h> #define OLED_WIDTH 128 // OLED display width, in pixels #define OLED_HEIGHT 64 // OLED display height, in pixels Adafruit_SSD1306 oled(OLED_WIDTH, OLED_HEIGHT, &Wire, -1); // // create SSD1306 display object connected to I2C RTC_DS1307 rtc; String time; void setup() { Serial.begin(9600); // initialize OLED display with address 0x3C for 128x64 if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F("SSD1306 allocation failed")); while (true); } delay(2000); // wait for initializing oled.clearDisplay(); // clear display oled.setTextSize(1); // text size oled.setTextColor(WHITE); // text color oled.setCursor(0, 10); // position to display // SETUP RTC MODULE if (! rtc.begin()) { Serial.println("Couldn't find RTC"); Serial.flush(); while (true); } // automatically sets the RTC to the date & time on PC this sketch was compiled rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); time.reserve(10); // to avoid fragmenting memory when using String } void loop() { DateTime now = rtc.now(); time = ""; time += now.hour(); time += ':'; time += now.minute(); time += ':'; time += now.second(); oled_display_center(time); } void oled_display_center(String text) { int16_t x1; int16_t y1; uint16_t width; uint16_t height; oled.getTextBounds(text, 0, 0, &x1, &y1, &width, &height); // center the display both horizontally and vertically oled.clearDisplay(); // clear display oled.setCursor((OLED_WIDTH - width) / 2, (OLED_HEIGHT - height) / 2); oled.println(text); // text to display oled.display(); }

Étapes rapides

  • Câblez les composants comme indiqué dans le schéma.
  • Connectez la carte ESP8266 à votre ordinateur à l'aide d'un câble USB.
  • Ouvrez Arduino IDE sur votre ordinateur.
  • Choisissez la bonne carte ESP8266, telle que (par exemple NodeMCU 1.0 (Module ESP-12E)), et son port COM respectif.
  • Copiez le code et ouvrez-le dans Arduino IDE.
  • Cliquez sur le bouton Upload pour transférer le code vers l'ESP8266.
  • Placez le capteur dans de l'eau chaude et froide ou tenez-le dans votre main.
  • Consultez le résultat sur l'OLED.

Vidéo

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !