ESP-01. Réaliser un affichage avec écran OLED I2C SSD1306 (projet ESP8266)

Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram

Table des matières

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 :

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.

ESP-01 ESP8266 cablage wiring flashing mode_

 

Récupérez le code du projet sur le Github de Projets DIY. Ouvrez le fichier ESP01-OLED.ino et modifiez les variables <ssid> et <password> 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 <Wire.h>

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.

ESP-01 ESP8266 OLED i2C DISPLAY ECRAN

 

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 :

esp-01 esp8266 oled i2c display wifi scanner

Avez-vous aimé cet article ?
[Total: 2 Moyenne: 5]
Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram

Vous avez aimé ce projet ? Ne manquez plus aucun projet en vous abonnant à notre lettre d’information hebdomadaire!

quel modèle esp8266 choisir
Quel modèle d'ESP8266EX choisir en 2020 ?
guide choix esp32 development board
Quel ESP32 choisir en 2020 ?

Vous rencontrez un problème avec ce sujet ?

Peut-être que quelqu’un a déjà trouvé la solution, visitez le forum avant de poser votre question

1 commentaire
  1. Il semble qu’il manque une librairie relative à l’écran OLED (les fonctions StartUp_OLED(), clear_display(), etc. ne sont pas définies !

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Calculateurs
×
Calculateur loi d'Ohm
Tension (U) - en Volt
Courant (I) - en Ampère
Résistance (R) - en Ohms
Puissance (P) - en Watts

Ce calculateur permet de calculer les relations entre le courant, la tension, la résistance et la puissance dans les circuits résistifs.

Saisir au moins deux valeurs puis cliquer sur calculer pour calculer les valeurs restantes. Réinitialisez après chaque calcul.

Rappel sur la Loi d'Ohm
La loi d'Ohm explique la relation entre la tension, le courant et la résistance en déclarant que le courant traversant un conducteur entre deux points est directement proportionnel à la différence de potentiel entre les deux points.
La loi d'Ohm s'écrit U = IR, où U est la différence de tension, I est le courant en ampère et R est la résistance en Ohms (symbole Ω).
Loi d'Ohm (U=RI)
×
Déchiffrer le code couleur d'une résistance à 4 bandes
Bande 1 Bande 2 Multiplicateur Tolérance
   

Résistance:  

1 000 Ω ±5%

Comment déchiffrer le code couleur d'une résistance à 4 anneaux
Formule : ab*cΩ ±d%
Les deux premières bandes (a, b) permettent de déterminer le chiffre significatif. La première bande correspond au chiffre de la dizaine, le second anneau le chiffre de l'unité. Par exemple Brun(1), Noir (0) donne le nombre 10.
La troisième bande (c) est un coefficient multiplicateur. Par exemple, l'anneau rouge est un coefficient multiplicateur de 100, ce qui donne 10 X 100 = 1000Ω.
Le quatrième anneau (d) indique la tolérance de la valeur nominale de la résistance. Par exemple l'anneau Or correspond à ±5%. Donc le fabricant de la résistance s'engage à ce que sa valeur soit comprise entre 950 Ω et 1050 Ω.
Déchiffrer code couleur 4 bandes
×
Déchiffrer le code couleur d'une résistance à 5 bandes
Bande 1 Bande 2 Bande 3 Multiplicateur Tolérance

Résistance:  

1 000 Ω ±5%

Comment déchiffrer le code couleur d'une résistance à 5 anneaux
Formule : abc*dΩ ±e%
Les trois premières bandes permettent de déterminer le chiffre significatif. La première bande correspond au chiffre de la dizaine, le second anneau le chiffre de l'unité. Par exemple Brun(1), Noir (0), Noir (0) donne le nombre 100
La quatrième bande est un coefficient multiplicateur. Par exemple, l'anneau brun correspond au coefficient multiplicateur 10, ce qui donne 100 X 10 = 1000Ω.
Le cinquième anneau indique la tolérance de la valeur nominale de la résistance. Par exemple l'anneau Or correspond à ±5%. Donc le fabricant de la résistance s'engage à ce que la valeur de la résistance soit comprise entre 950 Ω et 1050 Ω.
Déchiffrer code couleur 5 bandes
×
Calculateur de résistance série pour une ou plusieurs LED
Tension d'alimentation en Volt
Tension directe en Volt
Courant en mA
Résistance calculée en Ω
Puissance estimée en W

Ce calculateur permet de déterminer la résistance requise pour piloter une ou plusieurs LED connectées en série à partir d'une source de tension à un niveau de courant spécifié.

Remarque. Il est préférable d'alimenter le circuit avec une puissance nominale comprise entre 2 et 10 fois la valeur calculée afin d'éviter la surchauffe
Couleur Longueur d'onde (nm) Tension (V) pour LED ⌀3mm Tension(V) pour LED ⌀5mm
Rouge 625-630  1,9-2,1 2,1-2,2
Bleu 460-470 3,0-3,2 3,2-3,4
Vert 520-525 2,0-2,2 2,0-2,2
Jaune 585-595 2,0-2,2 3,0-3,2
Blanc 460-470 3,0-3,2 1,9-2,1
Résistance en série pour une ou plusieurs LED
×
Calculateur durée de vie d'une batterie
Capacité de la batterie
Consommation de l'appareil ou objet connecté

Ce calculateur estime la durée de vie d'une batterie, en fonction de sa capacité nominale et du courant ou de la puissance qu'une charge en tire.

La durée de vie de la batterie est une estimation idéalisée. La durée de vie réelle peut varier en fonction de l'état de la batterie, de son âge, de la température, du taux de décharge et d'autres facteurs. C'est le mieux que vous pouvez espérer obtenir.

Autonomie de la batterie = capacité de la batterie en mAh / courant de charge en mA

Durée de vie batterie
Publicité
À lire aussi
Composants
Sur le Forum
Derniers Sujets
Domotique et objets connectés à faire soi-même
Domotique et objets connectés à faire soi-même
Vous avez aimé ce tutoriel

Ne manquez plus les prochains projets

Recevez chaque semaine le récapitulatif des tutoriels et projets.

Vous pouvez vous désabonner à tout moment. 

Shopping cart