- Qu'est-ce que RTC ??
- Se familiariser avec les écrans OLED:
- Matériel requis:
- Schéma:
- Explication du code:
Dans ce tutoriel, nous allons en apprendre davantage sur l' horloge en temps réel (RTC) et son interface avec les écrans ESP32 et OLED.
Nous utiliserons le module DS3231 RTC pour garder une trace de l'heure correcte et l'afficher sur SPI OLED en utilisant ESP32 comme microcontrôleur. ESP32 est plus qu'un microcontrôleur. Il contient une puce Wi-Fi et Bluetooth et 39 broches GPIO. Il prend en charge tous les protocoles de communication tels que SPI, I2C, UART, etc.
Qu'est-ce que RTC ??
DS3231 est un module RTC (Real Time Clock). Il est utilisé pour maintenir la date et l'heure de la plupart des projets électroniques. Ce module dispose de sa propre alimentation à pile bouton à l'aide de laquelle il maintient la date et l'heure même lorsque l'alimentation principale est coupée ou que le MCU a subi une réinitialisation matérielle. Donc, une fois que nous avons défini la date et l'heure dans ce module, il en gardera toujours une trace. Il existe plusieurs types de circuits intégrés RTC disponibles tels que DS1307, DS3231, etc.
Nous avons précédemment utilisé DS3231 RTC avec Arduino dans les projets ci-dessous:
- Alimentateur automatique pour animaux de compagnie utilisant Arduino
- Enregistreur de données Arduino
Remarque: lorsque vous utilisez ce module pour la première fois, vous devez régler la date et l'heure. Vous pouvez également utiliser RTC IC DS1307, nous avons précédemment utilisé DS1307 avec Arduino.
Se familiariser avec les écrans OLED:
Le terme OLED signifie « diode électroluminescente organique», il utilise la même technologie que celle utilisée dans la plupart de nos téléviseurs, mais a moins de pixels que ceux-ci. C'est vraiment amusant d'avoir ces modules d'affichage cool car cela donnera à nos projets un aspect cool. Nous avons couvert un article complet sur les écrans OLED et ses types ici.
Nous utilisons un écran OLED Monochrome 7 broches SSD1306 0,96 ”. La raison du choix de cet écran est qu'il peut fonctionner sur trois protocoles de communication différents tels que le mode SPI 3 fils, le mode SPI quatre fils et le mode IIC. Ce tutoriel expliquera comment utiliser le module en mode SPI 4 fils car il s'agit du mode de communication le plus rapide et celui par défaut.
Les broches et leurs fonctions sont expliquées dans le tableau ci-dessous.
Code PIN |
Nom de la broche |
Autres noms |
Usage |
1 |
Gnd |
Sol |
Broche de masse du module |
2 |
Vdd |
Vcc, 5 V |
Broche d'alimentation (3-5V tolérable) |
3 |
SCK |
D0, SCL, CLK |
Agit comme la broche de l'horloge. Utilisé pour I2C et SPI |
4 |
SDA |
D1, MOSI |
Broche de données du module. Utilisé pour IIC et SPI |
5 |
RES |
RST, RÉINITIALISER |
Réinitialise le module (utile pendant SPI) |
6 |
DC |
A0 |
Broche de commande de données. Utilisé pour le protocole SPI |
sept |
CS |
Sélection de puce |
Utile lorsque plus d'un module est utilisé sous le protocole SPI |
Dans ce tutoriel, nous allons simplement faire fonctionner le module en mode SPI 4 fils, nous laisserons le reste pour un autre tutoriel.
La communauté Arduino nous a déjà fourni de nombreuses bibliothèques qui peuvent être directement utilisées pour rendre cela beaucoup plus simple. J'ai essayé quelques bibliothèques et j'ai trouvé que la bibliothèque Adafruit_SSD1306 était très facile à utiliser et contenait une poignée d'options graphiques, nous utiliserons donc la même chose dans ce tutoriel. Mais, si votre projet a une contrainte de mémoire / vitesse, essayez d'utiliser la bibliothèque U8g car elle fonctionne plus rapidement et occupe moins de mémoire programme.
Nous avons également interfacé OLED avec Raspberry pi et Arduino.
Matériel requis:
- ESP32
- Module DS3231 RTC
- Module d'affichage OLED 128 × 64 à 7 broches (SSD1306)
- Fils mâle-femelle
- Planche à pain
Schéma:
Le schéma de circuit pour connecter le RTC3231 à la carte ESP est donné ci-dessous:
Le RTC DS3231 IC utilise le mode de communication I2C. Il a des broches SCL, SDA, Vcc et GND qui en sortent. La connexion du module RTC avec ESP32 est donnée ci-dessous:
- SCL de RTC -> SCL de ESP32 c'est-à-dire broche D22
- SDA de RTC -> SDA de ESP32 c.-à-d. Broche D21
- GND de RTC -> GND de ESP32
- Vcc du RTC -> Vcc de l'ESP32
Ici, nous utilisons le mode SPI pour connecter notre module d'affichage OLED 128 × 64 (SSD1306) à ESP32. Donc, il utilisera 7 broches. Les connexions avec ESP32 sont données comme suit:
- Broche CS (sélection de puce) de OLED -> PIN D5 de ESP32
- Broche DC de OLED -> PIN D4 de ESP32
- Broche RES de OLED -> PIN D2 de ESP32
- Broche SDA de OLED -> PIN D23 ie MOSI de ESP32
- Broche SCK de OLED -> PIN D18 ie SCK de ESP32
- Vdd de l'OLED -> Vcc de l'ESP32
- GND de OLED -> GND de ESP32
Vous avez besoin de fichiers carte pour votre ESP32. Vérifiez dans le menu déroulant du gestionnaire de cartes d'Arduino IDE pour le kit de développement ESP32. Si ce n'est pas le cas, suivez les étapes indiquées dans le lien ci-dessous:
circuitdigest.com/microcontroller-projects/getting-started-with-esp32-with-arduino-ide
Vous pouvez également utiliser ESP12 pour ce projet, apprenez ici à utiliser ESP12.
Explication du code:
Le code complet pour ESP32 est donné à la fin de l'article. Ici, nous expliquons quelques parties importantes du code.
Nous avons besoin de plusieurs bibliothèques à utiliser dans notre code qui peuvent être téléchargées à partir des liens ci-dessous:
1. Adafruit_SSD1306:
2. SPI:
3. Adafruit_GFX:
4. RTClib:
Nous avons donc inclus toutes les bibliothèques
#comprendre
Définissez ensuite toutes les broches de l'OLED. Vous n'avez pas besoin de définir des broches pour le module RTC car ces broches sont déjà définies dans la bibliothèque WIRE.
#define OLED_MOSI 23 #define OLED_CLK 18 #define OLED_DC 4 #define OLED_CS 5 #define OLED_RESET 2 Affichage Adafruit_SSD1306 (OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Dans la fonction de configuration , nous appellerons une fonction rtc.adjust (DateTime (__ DATE__, __TIME__)) qui réglera l'heure en fonction de l'heure de notre PC.
void setup () { Serial.begin (9600); if (! rtc.begin ()) { Serial.println ("Impossible de trouver RTC"); tandis que (1); } rtc.adjust (DateHeure (__ DATE__, __TIME__));
Après cela, nous appelons les fonctions d'affichage à afficher sur OLED.
display.begin (SSD1306_SWITCHCAPVCC); display.clearDisplay (); display.setTextColor (BLANC); //display.startscrollright(0x00, 0x0F); // Vous pouvez décommenter cette ligne pour faire défiler votre texte sur oled display.setTextSize (2); display.setCursor (0,5); display.print ("Horloge"); // Ceci affichera l'horloge sur OLED pendant 3 secondes display.display (); retard (3000); }
Puis enfin en fonction de boucle , nous stockerons notre heure dans la variable prédéfinie de DateTime et afficherons l'heure en utilisant des fonctions d'affichage comme setTextSize, setCursor, etc. Réglez-les en fonction de vos besoins et utilisez la fonction display.println pour afficher sur OLED.
void loop () { DateTime now = rtc.now (); display.clearDisplay (); display.setTextSize (2); display.setCursor (75,0); display.println (now.second (), DEC);
C'est ainsi que vous pouvez afficher l'heure sur OLED en utilisant ESP32 et comme vous le savez, ESP est connu pour ses capacités IoT, vous pouvez donc l'utiliser pour publier l'heure sur Internet. Dans le prochain article, nous vous montrerons comment afficher l'heure Internet sur ESP sans utiliser de module RTC.