Déballage du clone Wemos ESP32 LoLin avec écran OLED monochrome 0.96'' SSD1306 intégré • Domotique et objets connectés à faire soi-même

Victime de son succès, Wemos fait l’objet de nombreux clones (ou fakes comme certains diront !). Après la Wemos 1d mini, c’est au tour de la LoLin32 d’être copiée. Aujourd’hui, nous allons découvrir un clone plutôt sympa d’un fabricant inconnu (pour le moment du moins). Ce fabricant a su copié le meilleur de Wemos en proposant plusieurs cartes d’extension (shields) qui a fait le succès de la d1 mini. Cette LoLin32 construite autour de l’ESP32 (ESP-WROOM-32) d’Espressif embarque un écran OLED monochrome 0.96” (168×64 pixels) très classique. L’écran est piloté par un contrôleur SSD1306 sur le bus I2C.

Déballage du clone de la Wemos LoLin32 avec écran OLED SSD1306

On trouve plusieurs boutiques sur AliExpress qui commercialisent des clones de la Wemos LoLin32 avec écran OLED. J’ai commandé la mienne chez Face-to-Face Electronic. La LoLin32 a été livrée en 3 semaines environ, ce qui est correct pour une livraison en direct de Chine. Elle est livrée dans une petite boite en plastique avec un sur-emballage à bulles. Rien à dire, la carte est parfaitement protégée durant le transport. La carte est livrée avec un jeu de connecteur mâle à souder.

2c6hcizbbdqnc3p0pbjb-7752085

Pour intégrer l’écran OLED, le fabricant à sacrifier plusieurs broches de l’ESP32. Pour comparaison, voici le repérage de quelques cartes de développement ESP32. L’ESP32 dispose de 38 broches. Chaque fabricant expose les broches qu’il souhaite en fonction de la compacité et des fonctions qu’il souhaite mettre en avant. La fabricant de ce clone a voulu conserver l’interface permettant d’ajouter un écran tactiles (Touch 0 à 6). On dispose par la même occasion de 11 entrées analogiques ce qui nous change de la seule entrée des modules ESP8266. L’écran OLED utilise les broches 4 (SDA) et 5 (SCL) pour communiquer sur le bus I2C avec l’ESP32. On dispose enfin de 3 broches délivrant une tension de 3V3, 2 broches 5V et 2 broches GND. Au total (en comptant le bus I2C), on dispose de 19 entrées / sorties alors que l’Arduino Uno en propose 20.

  • Module ESP32 : ESP-WROOM-32 d’Espressif.
    • Microprocesseur dual core cadencé à 240MHz équipé de 4MB de mémoire flash SPI.
    • Support jusqu’à 16MB de mémoire flash
  • Connectivité
    • WiFi 802.11 b/g/n.
      • Sécurité WEP, WPA/WPA2 PSK/Enterprise.
      • Puce cryptographique intégrée prenant en charge les algortithmes AES/SHA2/Elliptical Curve Cryptography/RSA-4096
      • Puissance maximale pour le transfert de données : 19.5 dBm@11b, 16.5 dBm@11g, 15.5 dBm@11n
      • Sensibilité max. de réception : -97 dBm
    • Bluetooth 4.0 LE
  • 32 Entrées/Sorties
    • 26x E/S digitales (3.3V). Toutes les sorties peuvent être PWM
    • 18x entrées analogiques
    • 3x UART
    • 3x SPI
    • 2x I2S
    • 2x DAC
    • 2x I2C
  • Consommation en mode sommeil (Deep Sleep mode) : 5 μA
  • Capteurs intégrés
    • Effet Hall
    • 10x entrées pour interface tactile capacitive

Passons maintenant au test de l’écran OLED. J’ai déjà réalisé plusieurs articles sur les écrans OLED monochrome pilotés par le SSD1306.

J’ai profité de l’occasion pour faire le point sur les nouvelles librairies disponibles depuis le gestionnaire de l’IDE Arduino. Depuis 2016, les choses ont pas mal évoluées. Adafruit et Sparkfun ont beaucoup contribué à l’élaboration des librairies graphiques mais les choses ont beaucoup évoluées depuis avril 2016 et le premier article sur le pilotage d’un écran OLED sur un ESP-01.

Si vous faites une recherche depuis le gestionnaire de librairies de l’IDE Aduino avec le mot clé SSD1306, vous allez trouvez trois nouvelles librairies très intéressantes :

  • Ai_Ardulib_SSD1306 est développée par le fabriquant Canadien Acrobatic (https://acrobotic.com/). Elle est limitée aux écrans SSD1306. Elle supporte les cartes Arduino, Arduino 101, AVR et ESP8266. C’est une librairie très légère surtout orientée vers l’affiche de texte simple.

  • La librairie SSD1306 d’Alexey Dynda est livrée avec le code d’un jeu en bonus. Elle est supportée par les Attiny85, Attiny45, Atmega328p, Atmega168, Atmega2560, Digispark, ESP8266 et les nouveaux ESP32. Elle prend en charge les écrans i2c (128×64, 128×32), spi (128×64) et Nokia 5110 SPI PCD8544 84×48.
  • La librairie ESP8266 Oled SSD1306 développée par Daniel Eichhorn et Fabrice Weinbern du blog Squix. C’est une librairie très complète. Elle est toutefois limitée aux écrans SSD1306 sur bus I2C sur ESP8266 et ESP32. Elle est très simple à mettre en oeuvre mais très puissante.

  • Enfin la librairie U8g2 (et la version légère pour afficher uniquement du texte U8glib) développée par Oliver Kraus. Actuellement, c’est la librairie la plus complète. Elle supporte un nombre impressionnant de contrôleurs d’écran (SSD1325, ST7565, ST7920, UC1608, UC1610, UC1701, PCD8544, PCF8812, KS0108, LC7981, SBN1661, SSD1306, SH1106, T6963, LD7032).

Installer le SDK ESP32 sur l’IDE Arduino

Avant de pouvoir utiliser la LoLin32 OLED, vous devez installer le SDK ESP32 d’Espressif sur l’IDE Arduino. Pour cela, suivez ce tutoriel pour Windows, macOS ou Linux

Installer la librairie ESP8266 Oled SSD1306 et tester l’affichage

Depuis le gestionnaire de librairie, installez la librairie ESP8266 Oled SSD1306. Allez ensuite dans le menu Outils -> Sélectionnez la carte Wemos LoLin32 dans la section ESP32.

Maintenant, depuis le menu Fichier -> Exemples, ouvrez un exemple livré avec la librairie. Il y en a 4 :

  • Clock, une pendule
  • Drawing, pour montrer les différentes primitives disponibles
  • OTADemo, un exemple montrant comment afficher la progression de la mise en jour en WiFi
  • SimpleDemo
  • UiDemo, un exemple avec plusieurs pages d’affichage

Quelque soit l’exemple, vous devez modifier les broches du bus I2C. Les exemples sont livrés prêt à l’emploi pour un ESP8266. Trouvez la ligne SSD1306 display(0x3c, D3, D5) et remplacez D3 pour 5 et D5 par 4

SSD1306  display(0x3c, 5, 4);

L’écran se trouve à l’adresse 0x3c comme c’est souvent le cas pour les écrans OLED 0,96”. Il ne vous reste plus qu’à téléversez le code.

kkhcfth2llteplc8b2yp-9219003

Test avec du code MicroPython

J’en voulu également tester la carte et l’écran avec du code MicroPython. L’installation du firmware MicroPython ne pose aucun problème. Il suffit de bien indiquer que c’est une carte de type ESP32. Vous pouvez utiliser uPiCraft sous Windows par exemple comme nous l’avons vu dans le tutoriel précédent. J’ai ensuite testé le code du tutoriel précédent en branchant un BME280 sur le bus I2C. Malheureusement, soit le scan du bus se bloque, soit aucun matériel I2C n’est détecté. J’ai testé l’astuce décrite par Alberto sur Instructable sans succès. En attendant que je trouve une solution, n’hésitez pas à partager votre solution dans les commentaires.

Pour conclure, ce clone de la Wemos LoLin32 est une carte de bonne qualité. Seul regret, elle n’est pas aussi étroite que la LoLin32 Lite. On ne dispose que d’une seule rangée de broches lorsqu’elle est installée sur une breadboard. Elle fonctionne à merveille depuis l’IDE Arduino. Elle est livrée avec un exemple de la librairie SSD1306 écrite par nos amis suisses du blog Squix pré-installé. Nous la découvrirons plus en détail dans un prochain tutoriel.

Avez-vous aimé cet article ?