Dans ce tutoriel, nous allons apprendre comment utiliser un écran OLED monochrome 0.96” (basé sur le chip SSD1306) avec un module ESP8266 et plus particulièrement le module ESP-01. Nous allons utiliser les 2 ports GPIO disponibles sur l’ESP-01 pour relier l’écran OLED SS1306 via le bus I2C.
Tutoriel actualisé le 6 mai 2020
Pour illustrer cet article, nous allons réaliser un petit projet de scanner WiFi qui se connecte à un réseau WiFi et affiche l’adresse ip attribuée à l’ESP-01 ainsi que la force du signal WiFi sur l’écran OLED.
Si vous débutez avec l’ESP8266 , ces articles peuvent aussi vous intéresser :
Sommaire
Matériel nécessaire pour ce projet
Pour réaliser le montage de ce projet vous aurez besoin du matériel suivant :
Circuit et procédure d’installation du code sur l’ESP-01
La gestion de l’affichage sur l’écran OLED de ce projet est basé sur le travail de . La partie WiFi est gérée grâce à la librairie ESP8266Wifi [Github].
La première étape de ce projet consiste à mettre votre module ESP-01 est en mode bootload. Réalisez le câblage suivant.
Récupérez le code du projet sur le Github de Projets DIY. Ouvrez le fichier ESP01-OLED.ino et modifiez les variables et en fonction de votre réseau WiFi. Téléchargez maintenant la librairie ESP8266Wifi sur Github et installez là en allant dans le menu Croquis -> Inclure une bibliothèque -> Ajouter la bibliothèque .ZIP
/* * Programme de démo d'un scanner WiFi sur un ESP-01 avec un écran OLED I2C SSD1306 * * Librairie nécessaire ESP8266Wifi : https://github.com/ekstrand/ESP8266wifi * Gestion de l'affichage sur l'écran OLED d'après le code source de Dan Bick : https://github.com/esp8266/Basic/blob/master/ESP8266Basic/OLED_Functs.ino * Licence : MIT */ #include "ESP8266WiFi.h" #include WiFiClient client; char buffer[20]; // Buffer pour convertir en chaine de l'adresse IP de l'appareil char bufrssi[4]; // Buffer pour convertir en chaine la force du signal WiFi char* ssid = "SSID"; // Le nom de votre réseau, garder les guillets char* password = "MOT_DE_PASSE";// Le mot de passe pour se connecter à votre réseau WiFi bool Connecte = false; bool affiche = false; // Un booléen pour marquer que l'affichage a déjà été fait #define OLED_address 0x3c // Adresse de l'écran OLED sur le bus I2C extern "C" { #include "user_interface.h" } void setup() { Serial.begin(9600); delay(2000); // Petit délai d'attente // Quelques infos système avcant de démarrer Serial.print("Heap: "); Serial.println(system_get_free_heap_size()); Serial.print("Boot Vers: "); Serial.println(system_get_boot_version()); Serial.print("CPU: "); Serial.println(system_get_cpu_freq()); Serial.println(); Wire.pins(0, 2); // Brochaes sda, scl sur lequel est branché l'écran OLD SD1306 sur l'ESP-01. Wire.begin(); Serial.println("Initialise ecran OLED..."); StartUp_OLED(); clear_display(); sendStrXY(" PROJETS DIY ", 0, 1); // 16 caractères par ligne sendStrXY(" OLED + ESP-01 ", 2, 1); sendStrXY(" DEMARRAGE.... ", 4, 1); delay(2000); Serial.println("Fin du setup"); } void Connexion() // Fonction pour tester la connexion au réseau Wifi { affiche = false; if (WiFi.status() != WL_CONNECTED) { WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(1000); } } } void loop() { Connexion(); if (!client.connected()) { if (!affiche) { affiche = true; clear_display(); // On récupère et on prépare le buffer contenant l'adresse IP attibué à l'ESP-01 IPAddress ip = WiFi.localIP(); String ipStr = String(ip[0]) + '.' + String(ip[1]) + '.' + String(ip[2]) + '.' + String(ip[3]); ipStr.toCharArray(buffer, 20); // On récupère et on prépare le buffer de char contenant la force du signal WiFi long rssi = WiFi.RSSI(); String strRssi; strRssi=String(rssi); strRssi.toCharArray(bufrssi,4); Serial.println(rssi); // On actualise l'affichage sur l'écran OLED sendStrXY("CONNECTE A", 0, 1); sendStrXY((ssid), 3, 1); sendStrXY((bufrssi), 3, 10); sendStrXY("dBm",3,13), sendStrXY((buffer), 6, 1); } } else { clear_display(); sendStrXY(" PROJETS DIY ", 0, 1); sendStrXY(" ECHEC CONNEXION ", 2, 1); sendStrXY(" SSID ", 4, 1); } delay(5000); // Délai de 5s entre chaque scanne }
Choisissez la carte Generic ESP8266 Module et sélectionnez ArduinoISP comme programmeur.
Mettez maintenant votre module ESP8266 sous tension puis appuyez sur téléverser. Si votre câblage est correct, le téléversement démarre après la compilation du programme.
Brancher l’écran OLED SSD1303 et démarrer le scanner WiFi sur l’ESP-01
Maintenant que le programme est installé sur l’ESP8266, coupez l’alimentation du module.
Pour utiliser un écran OLED sur un ESP-01 nous allons utiliser les 2 GPIO disponibles sur le module pour les relier au bus I2C qui équipe le SSD1306. Le branchement est très simple. Retirez le câble reliant le GPIO0 au GND et branchez l’écran OLED I2C ainsi :
SDA GPIO0
SCK GPIO2
GND GND
VCC 3.3V
Vous pouvez inverser le câblage. Dans ce cas, modifiez les paramètres dans le programme et réinstallez ce dernier.
Mettez maintenant sous tension l’ESP-01. Le scanner WiFi va d’abord se connecter au réseau WiFi puis récupérer l’adresse ip attribuée à l’ESP-01 ainsi que la force du signal. Après quelques secondes, vous devriez obtenir ceci :
Avez-vous aimé cet article ?