0,66" Display Shield am ESP32 D1 Mini und D1 Mini ESP8266 - AZ-Delivery

Introduction

Vous avez peut-être déjà une certaine expérience avec le Mini NodeMCU ESP8266 ou les DevKits ESP32. Dans cet article, je veux vous montrer un autre conseil de développement qui semble avoir donné naissance à un enfant. Il s'agit de la carte de développement ESP32 D1 Mini. Je veux les comparer un peu et tester si le 0.66 OLED Shield est compatible avec les deux Minis. À la fin, je vous montrerai un programme qui vous permet d'afficher à la fois une connexion Bluetooth ou WLAN existante sur l'écran, qui se mettra à jour en cas de changement. Allons-y.

Ce dont nous avons besoin

nombre Composant annotation
1 ESP32 D1 Mini NodeMCU
1 D1 Mini NodeMCU 8266
1 Écran d'écran OLED 0,66 "
PC avec IDE Arduino et connexion Internet
Fer à souder (pour les en-têtes de broches)


Deux fois D1 Mini

Sur la photo suivante, vous pouvez voir la comparaison directe des deux tableaux (vue de dessous). J'ai mis un peu en évidence la désignation de l'épingle de l'ESP32 pour vous montrer comment comprendre l'étiquetage :


J'ai aussi écrit les fonctions de brochage. Les rangées de broches blanches de l'ESP32 correspondent aux broches de l'ESP8266. Les interfaces SPI et I²C sont sur les mêmes broches sur les deux cartes, même si elles sont nommées différemment. L'alimentation électrique et la broche de réinitialisation sont également sur la même position. Les boucliers de l'ESP32 devraient donc s'adapter de la même manière que ceux de la carte ESP8266. A condition que vous puissiez définir vous-même les numéros GPIO pour les bibliothèques correspondantes si nécessaire.

Le bouclier I2C OLED de 0,66


L'écran OLED de 0,66" avec interface I²C a une résolution de 64 x 48 pixels. Il fonctionne avec la puce SSD1306 et peut se connecter au D1 Mini. Comme il est maintenant clair que les broches de l'interface I²C sont à la même position sur les deux cartes, elle devrait y fonctionner de la même manière. Nous pouvons le tester en installant la bibliothèque U8G2 via la gestion de la bibliothèque.

ESP32 et ESP8266

Il faut maintenant souder les têtes de broches aux cartes. Si vous voulez connecter d'autres composants comme des capteurs, des boutons ou des LED en plus de l'écran, vous devez utiliser des connecteurs femelles à longues branches (appelés connecteurs empilables). De cette façon, vous pouvez mettre l'affichage sur le tableau et ensuite les deux sur une Breadboard. Toutes les broches de la ESP8266 sont alors occupées. Ici, nous avons le premier avantage de la ESP32 D1 Mini, car elle a une autre rangée d'épingles de chaque côté.

IMPORTANT! Pour utiliser la ESP32 Mini sur une Breadboard, les en-têtes ne peuvent être soudés vers le bas que sur les rangées intérieures ou extérieures. Les têtes mâles ou femelles peuvent ensuite être soudées au sommet de l'autre rangée.

J'ai mis les têtes femelles sur la ESP8266 avec de longues branches pour pouvoir brancher l'écran et l'utiliser sur une Breadboard. Sur la ESP32, je n'ai fixé que des en-têtes femelles sur le dessus. Je peux alors utiliser les broches des rangées intérieures (également I²C et SPI) uniquement pour l'affichage. Mais vous pouvez voir l'avantage d'avoir plus de GPIO à côté. Vous pouvez utiliser des têtes femelles avec de longues branches pour les rangées de pins intérieures, tout comme avec la ESP8266. Tout dépend de la manière dont vous voulez utiliser les composants.

Note : Lorsque vous branchez l'écran, assurez-vous que les désignations des broches sont du bon côté. Je me suis orienté vers les broches TX et RST.

Ces sources supplémentaires pour l'administrateur du forum doivent être entrées dans les paramètres par défaut:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

et

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

Les deux avec une virgule se sont séparés l'un après l'autre. Si ce n'est pas déjà fait, vous devez installer les bibliothèques appropriées via Outils -> Conseil -> Gestionnaire de Conseil. Recherchez ESP8266 et ESP32 et installez-les. Après l'installation, sélectionnez soit le D1 Mini sous les cartes ESP8266, soit le module de développement ESP32 sous ESP Arduino.

Il est possible que vous deviez d'abord installer les pilotes pour les cartes, afin qu'ils soient reconnus dans votre système d'exploitation. L'installation Windows pour le CP2104 utilisé sur le ESP32 D1 Mini peut être trouvée ici. Pour le D1 Mini ESP8266, vous avez besoin du pilote Windows pour la puce CH340. Vous pouvez le trouver ici. Si tout marche, vous devriez voir un port COM sous Outils -> Port. Vous devrez peut-être le sélectionner à nouveau séparément.

Test d'affichage

Si vous avez installé la bibliothèque U8G2, vous trouverez le plan "HelloWorld" dans les exemples sous full_buffer. Lorsque vous l'ouvrez, vous devez encore commenter la ligne appropriée à l'écran :

U8G2_SSD1306_64X48_ER_F_HW_I2C u8g2 (U8G2_R0, / * réinitialiser = * / U8X8_PIN_NONE);

Si l'affichage est sur la carte, il est réglé dans l'EDI Arduino et le port est sélectionné, puis le programme d'échantillonnage est chargé dans l'ESP. Vous verrez alors probablement un Hello World ! tronqué lorsque tout aura fonctionné.

Comme cet affichage est un peu plus petit, nous devons soit utiliser une fonte plus petite, soit écrire le deuxième mot sur la deuxième ligne :

néant boucle (néant) {
u8g2.clearBuffer (); // efface la mémoire interne
u8g2.setFont (u8g2_font_ncenB08_tr); // choisissez une police appropriée
u8g2.drawStr (0.10, "Bonjour"); // écrire quelque chose dans la mémoire interne
u8g2.drawStr (0,30, "Monde!"); // écrire quelque chose dans la mémoire interne
u8g2.sendBuffer (); // transfert de la mémoire interne vers l'écran
retard (1000);
}

J'ai ensuite branché l'écran sur l'autre ESP, sélectionné la carte appropriée et téléchargé à nouveau le même programme. Cela a fonctionné sans problème :


L'écran est donc compatible avec les deux D1 Mini. Sans breadboard, je peux maintenant connecter plus de composants à l'ESP32, car il y a encore des broches libres des deux côtés.

Similitudes et différences

Sur le plan purement extérieur, nous avons déjà vu les différences. La ESP32 D1 Mini a plus de broches, qui sont également nommées différemment. Il est donc un peu plus large. Sur la carte ESP32, cependant, les broches sont disposées de telle manière que les interfaces et l'alimentation électrique sont dans les mêmes positions que sur la carte ESP8266. Les boucliers devraient donc convenir aux deux variantes.

Mais cela dépend toujours des valeurs intérieures. Le processeur Tensilica L106-32Bit du SoC ESP8266MOD-F12 permet de réaliser des horloges avec un maximum de 160MHz sur un seul processeur. Une puce WiFi est incluse qui prend en charge les spécifications B, G et N. Une mémoire flash de 4 Mo est également incluse. Le ESP32-WROOM-32, en revanche, fonctionne avec deux CPU jusqu'à un maximum de 240MHz.

Cependant, le second processeur est responsable du Wifi et ne doit donc être utilisé que de manière conditionnelle pour les applications multiprocesseurs. Au moins lorsque vous utilisez la connexion réseau. Outre la puce Wifi b/g/n légèrement plus rapide, il existe ici un module Bluetooth 4.2 qui prend en charge le BLE et le mode normal. Je n'ai pas mesuré la consommation d'énergie.

L'ESP32 a vraiment ses avantages. Surtout son design compact, qui est encore plus petit que les autres DevKits, mais qui a les mêmes caractéristiques :

(de gauche à droite: ESP32 Devit C V4, ESP32 NodeMCU, ESP32 D1 Mini NodeMCU)

Vous pouvez également trouver de nombreux détails sur le D1 Mini ESP8266 dans le manuel ou dans l'e-book gratuit. Vous trouverez des informations sur le mini NodeMCU ESP32 D1 sur la page du magasin AZ-Delivery.

Enfin un exemple pratique

En fonction des mini cartes que nous utilisons, nous avons également la possibilité d'utiliser Bluetooth en plus de la connexion Wifi. Disons que nous avons un projet en cours pour lequel nous avons besoin de l'un des petits conseils de développement. Nous avons les deux à disposition et nous voulons utiliser le bouclier d'affichage quel que soit le tableau que nous choisissons. Nous voulons que l'écran indique s'il y a une connexion wifi ou bluetooth. Celui-ci doit être représenté par deux icônes.


Si l'une des connexions est interrompue ou rétablie, l'image correspondante doit également être affichée ou non. Lorsque la connexion Wifi est établie, le logo doit être affiché en animation. Comme l'ESP8266 n'a pas de Bluetooth à bord, nous devons nous assurer que cela est également indiqué sur l'écran.

J'ai écrit un petit programme à cet effet. Elle distingue entre ESP32 et ESP8266. Vous pouvez également utiliser les plus grands tableaux. Elle ne se limite donc pas aux Minis. Cependant, les cartes AVR (Arduino Uno, Nano, Mega, etc.) sont exclues, car la mémoire n'est pas suffisante et il n'y a pas de Wifi ou de Bluetooth.

Le déroulement du programme consiste à initialiser le Wifi, le Bluetooth (si ESP32) et l'affichage. J'ai créé plusieurs images sous forme d'icônes et les ai converties en XBM. Si vous voulez créer vos propres images, vous pouvez le faire avec la fonction d'exportation du programme graphique gratuit GIMP. J'ai utilisé ce site web et j'ai exporté mes PNGs créés vers XBM. Pour le logo Wifi, j'ai créé trois images que j'ai déclarées comme un tableau de matrices bitmap dans l'Arduino Croquis.


Cela me permet de passer en boucle. Cela permet une animation avec un code source plus court. Pour le logo bluetooth, j'ai créé deux réseaux bitmap simples. Une fois avec le logo et une fois avec l'indication "no BT", si aucun bluetooth n'est à bord.

Si le module Dev ESP32 est sélectionné dans le menu "Tools" de l'EDI Arduino, vous trouverez l'élément BluetoothSerial dans les exemples. L'exemple SerialToSerialBT sert de modèle de code source pour l'échange de données entre le PC et ESP32. Sur le smartphone, vous pouvez installer l'application "Serial Bluetooth Terminal". Nous pouvons alors envoyer des messages de chat entre le smartphone et le PC.

À l'exemple, nous devons ajouter un moyen de détecter si le partenaire Bluetooth est connecté ou non. J'ai trouvé une solution à ce problème sur ce site web, que j'ai intégrée dans l'exemple de BluetoothSerial. Une fonction de rappel est mise en place à cet effet :

néant rappeler (esp_spp_cb_event_t un événement, esp_spp_cb_param_t * param) {
  si(événement == ESP_SPP_SRV_OPEN_EVT) {
Serial.println ("Client connecté");
  }
 
  si(événement == ESP_SPP_CLOSE_EVT) {
Serial.println ("Client déconnecté");
  }
}

le dans installer() est initialisé:

SerialBT.register_callback (rappel);

Cela fonctionne alors comme une routine de service d'interruption (ISR). Comme il devrait y avoir très peu de code de programme, je ne changerai qu'une seule variable à cet endroit. Toutes les commandes connexes seront exécutées à l'extérieur.

Pour l'exposition, j'ai utilisé les exemples de la bibliothèque U8G2 comme sources. Pour la connexion wifi, il existe également des exemples.

Vous pouvez télécharger le croquis terminé ici: Téléchargez le programme terminé

J'ai modifié la connexion Wifi pour que l'initialisation ne se fasse pas dans le setup(), mais dans la boucle(). Il faut y distinguer si le programme a été lancé pour la première fois et si le Wifi a été initialisé. Ou si la connexion Wifi existait déjà et qu'une reconnexion doit être effectuée. L'initialisation et l'animation du logo sur l'écran ne sont pas verrouillables.

Nous affichons deux logos sur l'écran. Si l'un des liens est établi ou interrompu, seule la partie affichée doit être modifiée. Il y a un exemple pour montrer la fonction updateDisplayArea(). Mais cela n'a pas fonctionné dans mon cas. Peut-être parce que j'utilise des bitmaps au lieu de textes et de figures géométriques. J'ai donc dû étendre le code source. Elle peut paraître un peu encombrée. Chaque fois que vous montrez un des logos, vous devez demander si l'autre doit également être montré.

N'oubliez pas de saisir vos données WLAN dans la partie supérieure du code source avant de compiler et de télécharger le croquis.

Chargez le programme sur l'ESP32 D1 Mini et ouvrez le moniteur série. Si vous n'avez pas saisi les données WLAN correctes, le programme essaiera en permanence d'établir la connexion. Toutefois, la connexion Bluetooth ne sera pas bloquée. Nous pouvons donc établir la connexion BT sur le smartphone avec l'appareil "ESP32test". Ensuite, nous ouvrons le terminal Bluetooth série et nous nous connectons à l'ESP32.


Sur le PC dans le Serial Monitor, nous devrions obtenir une indication de la réussite de la connexion et l'OLED devrait afficher le logo Bluetooth.


Lorsque nous nous déconnectons, le logo devrait à nouveau disparaître. Nous pouvons désormais échanger des messages texte. Écrivez quelque chose dans l'entrée du Serial Monitor sur le PC, ou dans l'entrée de texte du Serial Bluetooth Terminal. L'ESP32 continuera à essayer d'établir la connexion Wifi. Si vous avez saisi des données wifi correctes, le logo wifi s'affichera en permanence.


Si vous chargez le même programme sur le ESP8266, le message "no BT" doit s'afficher en permanence sur le côté droit de l'écran. L'échange via Bluetooth n'est alors pas possible en raison de l'absence du module Bluetooth.


Bien entendu, les modules Wifi et Bluetooth manquants peuvent être installés à l'extérieur. Cependant, je ne parle ici que des variantes embarquées. J'ai seulement établi la connexion au réseau WLAN, mais je n'ai pas échangé d'autres données. Consultez les exemples de Wifi pour cela.

Vous pouvez désormais consulter et mettre à jour l'état de la connexion Wifi et Bluetooth sur l'écran. Il est possible d'échanger les données des capteurs avec d'autres appareils via les deux connexions. L'OLED vous indiquera si la connexion appropriée existe ou non.

Si vous avez d'autres boucliers pour la D1 Mini ESP8266, ils devraient également pouvoir être utilisés sur la D1 Mini ESP32. Faites attention à l'affectation correcte des broches si elles ne sont pas les broches fixes pour l'interface SPI ou I²C.


Amusez-vous à bricoler.

Andreas Wolter

pour le blog d'AZ-Delivery

 

DisplaysEsp-32Esp-8266Projekte für anfänger

4 commentaires

Peter von Deparade

Peter von Deparade

Befasse mich erst seit kurzem mit dem Arduino aus Interesse und finde diesen Beitrag sehr hilfreich für die nächsten Experimente. Super

Nils Sappok

Nils Sappok

Da ich noch sehr neu an der Sache bin, die Bauteile von letztem Jahr jedoch schon staub sammeln, vielen Dank für diesen Blog!
An das OLED hatte ich mich noch nicht getraut.
Ich habe es erst mal mit dem LCD versucht, da ein CO2-Sensor für meine Frau und meine Tochter als Lehrer sinnvoll ist:
https://www.instructables.com/Corona-Beginners-Arduino-CO2-Measuring-and-Ampel-D/

Ich weiß, dass ich noch so gut wie keine Ahnung habe, aber es hat sehr viel Spass gemacht und auch definitiv Lust auf mehr!
Das CO2-Messgerät mit einem OLED wäre natürlich noch viel cooler und dann noch mit Web-Server-Historie….
Es gibt soooo viele coole Sachen und Möglichkeiten….
….und Ihr macht’s möglich!

Viele Grüße aus Heidelberg,
weiter so und bleibt gesund,
Nils

Claus Kühnel

Claus Kühnel

Toller Beitrag mit grundlegenden Funktionen, die angepasst wieder in eigene Programme übernommen werden können.

Peter Stauffert

Peter Stauffert

Das Battery Shield für D1 Mini funktioniert auch problemlos mit dem ESP32 D1 Mini, damit kann man einen ESP32 D1 Mini auch mit einem LiPo betreiben. Da bei dem Battery Shield auch alle Pins durchgeschleift werden, kann man es auch zwischen den ESP32 D1 Mini und das OLED Display stecken

Laisser un commentaire

Tous les commentaires sont modérés avant d'être publiés

Articles de blog recommandés

  1. ESP32 jetzt über den Boardverwalter installieren - AZ-Delivery
  2. Internet-Radio mit dem ESP32 - UPDATE - AZ-Delivery
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1 - AZ-Delivery
  4. ESP32 - das Multitalent - AZ-Delivery