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, …
Voici les détails techniques colléctés en vrac depuis le site internet de https://mjrobot.org.
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é.
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/
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
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
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é.
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 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.
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) |
#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.
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