Table des matières

ESP32 devkit v1

Ici sont rassemblés des informations pour travailler avec un ESP32 devkit. Ce kit a été créé par une boite nommée Espressif. https://www.espressif.com/en/products/hardware/esp32/overview

Avant toute chose, il faut bien vérifier le modèle de l'ESP32 board que vous utilisez, car il existe de noumbreux modèles differents, avec pour chacun un cablage différents.

La version “lolin32” semble être un bon choix pour une carte de developpement, car elle fit mieux sur une breadbord. Il reste une ligne de chaque côté de la breadbord pour connecter des fils. Elle dispose de quoi brancher une batterie et du nécéssaire de recharge de la baterie, et consomme très peu de courant en deepsleep mode. Néansmoins, il semble qu'il faille toujours souder les connecteurs sois même.

Un tuto complet ici : https://mjrobot.org/iot-made-simple-playing-with-the-esp32-on-arduino-ide/. Attenton, votre ESP32 est probablement cablé différement !

Beaucoup de versions sont listés dans ce magnifique document google : vous trouverez forcément chaussures à votre pied. Vous pouvez trier le document par un tas de critères, comme “breadboard friendly”, présence d'un ecran, présence d'un transceiver LoRa, présence d'une gestion de charge de batterie, …

Détails techniques

Voici les détails techniques colléctés en vrac depuis le site internet de https://mjrobot.org.

Fonctionnalités clées

Capteurs

34 ports GPIO

Securité des communications

Performance

Utilisation de l'IDE Arduino

L'installation de la carte sur Arduino IDE est documenté sur le projet github .

Le projet annonce que la plupart du framework arduino est implémenté.

Les premiers pas de max sur l'ESP32 devkit

Mes premiers ESP32 devkit semblent etre des “ESP32 devkit v1”. C'est un terme plutot générique et il existe beaucoup de kit differents avec ce nom. Mon devkit est chiant car il n'est pas breadboard friendly. Lorsque je le monte sur une breadboard, je n'ai accès quà un côté des pins dispositif.

Voici un tuto bien étoffé pour commencer à bricoler rapidement avec le meme ESP32 devkit que le mien : https://mjrobot.org/iot-made-simple-playing-with-the-esp32-on-arduino-ide/

Ports de communications SPI

cf: http://iot-bits.com/esp32/esp32-spi-tutorial-part-1/

Sur l'ESP32, 2 ports SPI sont disponnibles :

Sketch examples pour manipuler les 2 ports SPI hardware : https://github.com/espressif/arduino-esp32/blob/master/libraries/SPI/examples/SPI_Multiple_Buses/SPI_Multiple_Buses.ino

HSPI (SPI2)

VSPI (SPI3)

Notes

Troubleshooting

Pilotage d'un écran TFT 240x240 px : le ST7789

Cablage

Je recommande la lib TFT-eSPI de Bodmer qui permet de driver beaucoup d'écran, et qui est construite sépcifiquement pour les ESP. Elle permet notamment le choix de l'un ou l'autre des 2 ports SPI hardware de l'ESP32. La lib est disponible dans le lib manager arduino ou sur github ici : https://github.com/Bodmer/TFT_eSPI
Je déconseil la lib d'Adafruit qui n'a jamais voulu fonctionner avec un SPI hardware de l'ESP32.
Configuration de la lib TFT-eSPI dans le fichier User_Setup.h :

#define ST7789_DRIVER  
 
#define TFT_WIDTH  240
#define TFT_HEIGHT 240
 
#define TFT_MISO 23
#define TFT_MOSI 19
#define TFT_SCLK 18
#define TFT_CS   -1  // Chip select control pin
#define TFT_DC   15  // Data Command control pin
#define TFT_RST   22  // Reset pin (could connect to RST pin)

Plus de code sur github ici : https://github.com/mxbossard/laperco-capteurs/blob/master/arduino_sketches/screen_test_2/screen_test_2.ino

Les premiers pas de Bjorn sur l'ESP32 devkit

Mon objectif initial est de tester des librairies graphiques en vue d'un futur projet sur ce genre de hardware (teasing de ouf). J'avais sous la main un écran ST7735 (en 128x160px) qui embarque également un port microSD, je l'ai acheté à vil prix chez une grande enseigne française d'électronique. Le module ESP32 m'a été gentiment prêté par Gaziel qui en avait un au fond de son sac. Celui-ci viens du marché chinois des internets et laisse une rangé de libre de chaque coté de la breadboard une fois enfiché.

Hardware

L'écran

l'écran est un 1.8' de chez Joy-it: http://anleitung.joy-it.net/?goods=1-8-tft-lcd-st7735 . Il embarque également un port microSd: une partie de l'adressage du module est consacré au display et l'autre au stockage. On notera que ce module ne possède pas de pin “LED” contrôlant le rétro-éclairage, certains modules concurrents en disposent ce qui permet de piloter la luminosité depuis l'ESP32. Mon module est toujours éclairé au max.

Le montage

Le montage respecte le schéma présenté sur le site Xtronical. Choix moyennement judicieux, on y reviendra dans la partie software. Il diverge dans l'adressage des pins CS, RTS et DC par rapport au montages qu'on peu trouver chez Adafruit par exemple. La connexion à la pin LED à été ignorée sur mon montage.

wiringdiagram.jpg

LCD SCREEN NODEMCU ESP32
5V 3v3
GND GND
LED 5V
SCL (SPI Clock) GPIO18 VSPI SCK (SPI Clock)
SDA (SPI Data) GPIO23 VSPI MOSI (MOSI, Data to Screen)
RS (Register Select) GPIO2 (labelled as DC in Adafruit code)
RST (Screen reset) GPIO4
CS (Chip Select : Defined as Slave Select in SPI) If low this device is active on data lines GPIO5 VSPI SS (Slave Select/ Chip Select)

Software

Les librairies

#define TFT_CS         5
#define TFT_RST        4 // Or set to -1 and connect to Arduino RESET pin
#define TFT_DC         2
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
 
  tft.initR(INITR_BLACKTAB);      // Init ST7735S chip, black tab
  tft.initR(INITR_GREENTAB);      // Init ST7735S chip, green tab
  //  if using a 1.44" TFT:
  tft.initR(INITR_144GREENTAB); // Init ST7735R chip, green tab
  //if using a 0.96" 180x60 TFT:
  tft.initR(INITR_MINI160x80);  // Init ST7735S mini display
  // etc.

Notes

Notes pour l'utilisation du serveur WEB de l'ESP32

Un tuto interessant au sujet de l'outillage pour construire des pages web en économisant l'espace mémoire : https://nathanmcminn.com/2018/09/23/a-modern-micro-web-stack-for-the-esp32/ On y parle notamment de SPIFFS le mini File System disponible pour ESP32. cf : https://github.com/ntmcminn/arduino-examples/blob/master/esp32-ap-mode/esp32-ap-mode.ino