Iniziamo una serie di articoli che trattano la scheda Espressif ESP32
Dopo aver analizzato negli articoli precedenti MicroPython per ESP8266, in questo incominciamo a trattare MicroPython su ESP32.
Di seguito viene mostrato come generare l’immagine MicroPython partendo dal codice sorgente per la scheda ESP32.
Il sistema operativo è Debian 9, già incontrato in precedenza per le utility esptool ed Adafruit-ampy
MicroPython – Python su dispositivi embedded
Collegarsi con l’utenza scelta su Debian 9, sviluppo nel nostro caso; sotto la home creare la cartella Micropython e successivamente la cartella esp32
1 2 3 4 |
mkdir Micropython cd Micropython mkdir esp32 cd esp32 |
Il github di MicroPython è presente al link
Le istruzioni per l’ ESP32 sono presenti al link
Clonare il repository
1 |
git clone https://github.com/micropython/micropython |
Accedere in micropython/ports/esp32
1 |
cd micropython/ports/esp32 |
Eseguire
1 |
make |
Il comando rilascia l’hash del github dell’ espidf supportato.
Al momento della nostra compilazione il risultato è il seguente
1 2 3 4 5 6 |
viluppo@debian9:~/Micropython/esp32/micropython/ports/esp32$ make Use make V=1 or set BUILD_VERBOSE in your environment to increase build verbosity. The ESPIDF variable has not been set, please set it to the root of the esp-idf repository. See README.md for installation instructions. Supported git hash: 3ede9f011b50999b0560683f9419538c066dd09e Makefile:34: *** ESPIDF not set. Stop. |
Ritornare nella cartella /home/sviluppo/Micropython/esp32 e clonare ESPIDF
1 2 |
git clone https://github.com/espressif/esp-idf.git cd esp-idf |
Eseguire il checkout con l’hash ricavato sopra
1 |
git checkout 3ede9f011b50999b0560683f9419538c066dd09e |
Eseguire
1 |
git submodule update --init |
Installare il cross compilatore come indicato al link
Seguendo le indicazioni del link sopra riportato, si procede quindi ad installare i prerequisiti
1 |
sudo apt-get install git wget make libncurses-dev flex bison gperf python python-serial |
Scaricare il cross compilatore
1 2 |
cd /home/sviluppo/Micropython/esp32 wget https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz |
Creare la cartella esp sotto /home/sviluppo/Micropython/esp32
1 2 3 |
cd /home/sviluppo/Micropython/esp32 mkdir esp cd esp |
Scompattare il cross compilatore in esp
1 |
tar -zxvf ../xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz |
Esportare nel PATH la cartella dei binari del cross compilatore
1 |
export PATH=/home/sviluppo/Micropython/esp32/esp/xtensa-esp32-elf/bin:$PATH |
Accedere in
1 |
/home/sviluppo/Micropython/esp32/micropython/ports/esp32/ |
Creare il file makefile con all’interno
1 2 3 4 5 6 7 |
ESPIDF = /home/sviluppo/Micropython/esp32/esp-idf #PORT = /dev/ttyUSB0 #FLASH_MODE = qio #FLASH_SIZE = 4MB #CROSS_COMPILE = xtensa-esp32-elf- include Makefile |
Accedere alla cartella micropython presente in /home/sviluppo/Micropython/esp32
1 |
cd micropython |
Eseguire
1 |
git submodule update --init |
per aggiungere le dipendenze esterne.
Si compila il cross compilatore MicroPython
1 2 3 |
make -C mpy-cross git submodule init lib/berkeley-db-1.xx git submodule update |
Si compila infine l’immagine per l’esp32 con il comando
1 2 |
cd ports/esp32 make |
Il firmware è generato nella cartella ports/esp32/build con il nome firmware.bin.
Procedere al caricamento del firmware con i comandi
1 |
make erase |
Nel nostro caso il deploy ha avuto esito positivo con il comando
1 |
make deploy |
E’ possible caricare l’immagine firmware.bin con i comandi
1 |
esptool.py --chip esp32 --port /dev/ttyXXX --baud 921600 erase_flash |
1 |
esptool.py --chip esp32 --port /dev/ttyXXX --baud 921600 write_flash -z --flash_mode "dio" --flash_freq "40m" --flash_size detect 0x1000 firmware.bin |
dove in /dev/ttyXXX va inserito il riferimento alla porta seriale cui è connesso l’ESP32.
Nel prossimo articolo compileremo il firmware nodemcu per ESP32