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.
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
-
Projets avec M5Stack
-
Un projet ici avec boitier openscad : https://tinkerman.cat/post/m5stack-node-things-network
- https://github.com/xoseperez/m5stack-rfm95/blob/master/enclosure/m5stack-rfm95-bottom.stl
- https://github.com/xoseperez/m5stack-rfm95/tree/master/enclosure
-
https://github.com/xoseperez/m5stack-rfm95/blob/master/enclosure/m5stack-rfm95.scad
-
Pour écran du M5Stack : cf Micropython compilé avec Driver C intégré. : https://github.com/russhughes/ili9342c_mpy/tree/main/examples/M5STACK
Note : à priori le ILI9341 devrait fonctionner avec.