Mise en route d'un core M5 Stack

Présentation

Il s'agit d'un module basé sur un ESP 32

Infos techniques

Avant tout un ESP 32 :

  • Carte propulsée par un ESP32 à 240Mhz avec wifi et Bluetooth
  • RAM : 512 Ko
  • Flash : 4MB à priori
  • 18 GPIO 3.3V sur bornier dont 12 broches analogiques (!) en 12 bits - 3.3V ATTENTION : avec Micropython, on accède en natif que à A3-A5 soit 4 broches analogiques
  • jusqu'à 16 PWM
  • I2C sur bornier SDA (GP21) / SCL (GP22)
  • SPI

Le module "Core" intègre de plus :

  • un écran TFT 320x240 (SPI)
  • lecteur carte SD (SPI)
  • 3 BP en façade
  • Un BP on/off/reset
  • un lipo 110 mAh / 3.7V

Note

L'ESP 32 disposent de 2 modules ESP 32, ADC1 et ADC2. Si le wifi est utilisé, alors ADC2 n'est pas utilisable. C'est pourquoi Micropython n'implémente pas ADC2. On a donc seulement 4 broches analogiques. Si on a besoin de plus, il est facile d'ajouter un multiplexeur analogique ou bien un module analogique i2C. La limitation est la même en C / Arduino car liée à l'ESP 32 lui-même.

https://github.com/micropython/micropython/issues/6219

Brochage

Alim In :

  • 5V sur USB-C

Alim Out :

  • 5V out
  • 3.3V out

Drivers CH3040

Les cartes ESP 32 vont utiliser pour communiquer un driver CH340 qui va fournir un port série au format ttyUSB0 sur Gnu/Linux.

Ces drivers sont directement présents sous Gnu/Linux. Mais doivent à priori être installés sous WIndows et Os X.

Flasher MicroPython

Pour cela on utilise un outil dédié écrit en python, esptool.py et qui s'installe logiquement avec l'installateur python pip :

sudo apt-get install python3-pip
sudo pip3 install esptool

Télécharger la version adaptée de MicroPython : https://micropython.org/download/esp32/ La version générique fonctionne que la carte dispose ou non de SRAM externe.

Noter que l'on dispose aussi d'une version dédiée de MicroPython pour M5Stack, mais elle n'a pas forcément toutes les fonctionnalités utiles, etc.

Ensuite, on peut flasher facilement le firmware micropython dans l'ESP 32. Ouvrir un terminal dans le répertoire où se trouve le binaire puis successivement :

  • on efface la mémoire flash de la carte :
esptool.py --chip esp32 --port /dev/ttyUSB0 erase_flash
  • on flashe micropython :
esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 460800 write_flash -z 0x1000 esp32-20210416-unstable-v1.14-170-ga9bbf7083.bin

Une fois fait, on peut tester que tout est OK en se connectant avec un terminal série sur /dev/ttyUSB0

Avec Thonny par exemple, aller dans Tools > Options > Interpreter > sélectionner la bonne carte

Test de micropython

>>> import machine
>>> machine.freq()
160000000 # 160 Mhz

Sur la broche GP5 on peut faire (connecter une LED) :

>>> from machine import Pin
>>> ledR=Pin(5, Pin.OUT)
>>> ledR.on()
>>> ledR.off()

Note

Le nombre de GPIO disponibles sur bornier est réduit ou plus exactement, on a aussi les broches dites de "Bus" aussi

Aperçu de la carte

Où acheter ?

Liens utiles

Note : à priori le ILI9341 devrait fonctionner avec.