Micropython flashen op Seeed studio Xiao ESP32C3

Last Updated on 29 januari 2023 by Syds

In deze tutorial flashen we MicroPython op een Seeed studio Xiao ESP32C3 microcontroller.

Benodigdheden:

  • Seeed studio Xiao ESP32C3
  • USB-C kabel

Stap 1. Download laatste versie van Micropython

Je hebt de firmware voor een Seeed studio Xiao ESP32C3 microcontroller nodig, hiervoor gebruiken de generieke firmware voor een ESP32C3 met USB, deze vindt je hier: http://www.micropython.org/download/esp32c3-usb/

Kies de meest recente versie van de firmware, in mijn geval was dat v1.19.1 (2022-06-18) .bin. Download de v1.19.1 (2022-06-18) .bin file.

Stap 2. Erase het flash geheugen van je Seeed studio Xiao ESP32C3

Start een cmd prompt en voer het volgende commando uit:

esptool --chip esp32C3 --port <com port> erase_flash

Vervang <com port> door de com-poort waar je je ESP32C3 op aangesloten hebt. Weet je niet op welke com-poort je de ESP32 hebt aangesloten, kijk dan ingeval van Windows in Apparaatbeheer -> Poorten (COM & LPT) en zoek naar “Serieel USB-apparaat”. Hierachter staat de com-poort, in mijn geval COM7. In geval van Linux kun je het commando dmesg uitvoeren om te achterhalen op welke tty-device je ESP32 is aangesloten. Dit geeft de volgende output:

C:\Users\spost>esptool.py --chip esp32c3 --port COM7 erase_flash
esptool.py v4.3
Serial port COM7
Connecting...
Chip is ESP32-C3 (revision v0.4)
Features: WiFi, BLE
Crystal is 40MHz
MAC: 34:85:18:04:49:38
Uploading stub...
Running stub...
Stub running...
Erasing flash (this may take a while)...
Chip erase completed successfully in 17.2s
Hard resetting via RTS pin...

Het flash geheugen is nu gewist.

Noot 29-1-2023: Vandaag de ESP32C3 opnieuw geflashed, moest nu de boot-button ingedrukt houden terwijl ik de USB kabel aansloot om de ESP32C3 in bootloader mode te krijgen.

Stap 3. Firmware flashen naar de Seeed studio Xiao ESP32C3

Zoek de in stap 1. gedownloade firmware file op, waarschijnlijk onder Downloads. In mijn geval bevindt de file zich in de map C:\Users\spost\Downloads. Ga naar die directory met het volgende commando:

cd C:\Users\spost\Downloads

Voer hier het volgende commando uit om de MicroPython firmware naar je ESP32C3 te flashen

esptool --chip esp32C3 --port <com port> --baud 115200 write_flash -z 0x0 <firmware.bin>

Vervang <com port> door de COM-poort waar je je ESP32C3 op het aangesloten, en verander <firmware.bin> in de naam van de file die je in stap 1 hebt gedownload. Het commando geeft de volgende output:

C:\Users\spost\Downloads>esptool.py --chip esp32c3 --port COM7 --baud 115200 write_flash -z 0x0 esp32c3-usb-20220618-v1.19.1.bin
esptool.py v4.3
Serial port COM7
Connecting...
Chip is ESP32-C3 (revision v0.4)
Features: WiFi, BLE
Crystal is 40MHz
MAC: 34:85:18:04:49:38
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Flash will be erased from 0x00000000 to 0x0015dfff...
Compressed 1431808 bytes to 868690...
Wrote 1431808 bytes (868690 compressed) at 0x00000000 in 19.6 seconds (effective 584.5 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

Je Seeed studio Xiao ESP32C3 is nu geflashed met de laatste versie van MicroPython. We gaan nu een klein testje uitvoeren.

Stap 4. Hello world ! test

Open Putty en maak een seriële verbinding met de Seeed studio Xiao ESP32C3.

De REPL van Micropython verschijnt. Typ hierin het commando

Performing initial setup
>>> print("Hello world!")

MicroPython is alive !

Stap 5. WiFi verbinding maken

De ESP32C3 toont zichzelf op het WiFi netwerk als een access point. Maak met je telefoon of laptop verbinding met de accesspoint met de naam “MicroPython-xxxxxx”, in mijn geval “MicroPython-9a0865”. Het wachtwoord is “micropythoN”. Vervolgens kun je in je browser het ip-address “192.168.4.1” openen. Bij mij werkte die methode echter niet. Daarom via de REPL prompt het device op het WiFi netwerk aangesloten. Voer achtereenvolgens de volgende commando’s uit. Vervang <SSID van he 2.4Ghz WiFi netwerk> en <WiFi wachtwoord> door het SSID en wachtwoord van jou 2.4Ghz WiFi-netwerk.

>>> import network
>>> wlan = network.WLAN(network.STA_IF)
>>> wlan.active(True)
True
>>> wlan.connect("<SSID van he 2.4Ghz WiFi netwerk>", "<WiFi wachtwoord>")
>>> wlan.ifconfig()
('0.0.0.0', '0.0.0.0', '0.0.0.0', '0.0.0.0')
>>>

Oeps, dat werkt niet. Blijkbaar onvoldoende bereik zonder de antenne, daarom eerst maar de antenne er op geklikt en opnieuw geprobeerd.

MicroPython v1.19.1 on 2022-06-18
>>> import network
>>> wlan = network.WLAN(network.STA_IF)
>>> wlan.active(True)
True
>>> wlan.connect("<SSID van he 2.4Ghz WiFi netwerk>", "<WiFi wachtwoord>")
>>> wlan.ifconfig()
('192.168.2.105', '255.255.255.0', '192.168.2.254', '192.168.2.29')
>>>

Op de laatste regel vindt je het IP-address van je ESP32C3 terug, in mij geval 192.168.2.105.

Stap 6. Extra modules installeren

Eigen of publieke micropython modules kun je installeren met het commando upip. Om bijvoorbeeld de module “micropython-time”, wat een equivalent is voor de python module “time”, te installeren voer je achtereenvolgende volgende commando’s uit

>>> import upip
>>> upip.install("micropython-time")
Installing to: /lib/
Warning: micropython.org SSL certificate is not validated
Installing micropython-time 0.5 from https://micropython.org/pi/time/time-0.5.tar.gz
Installing micropython-ffilib 0.1.3 from https://micropython.org/pi/ffilib/ffilib-0.1.3.tar.gz
>>> import time
>>>

Stap 7. MicroPython files laden en uitvoeren

Natuurlijk wil je je eigen gemaakte MicroPython code, of code die je ergens op bijv. github hebt gevonden, runnen op je ESP32C3. Er zijn tools ontwikkeld die je daarbij helpen. Een daarvan is ampy, deze gebruik ik in deze tutorial. Installeer ampy als volgt. Open een CMD prompt op je laptop, en voer het volgende commando uit:

C:\Users\spost\python>pip install adafruit-ampy
Collecting adafruit-ampy
  Downloading adafruit_ampy-1.1.0-py2.py3-none-any.whl (16 kB)
Requirement already satisfied: pyserial in c:\users\spost\appdata\local\programs\python\python310\lib\site-packages (from adafruit-ampy) (3.5)
Collecting click
  Downloading click-8.0.4-py3-none-any.whl (97 kB)
     ---------------------------------------- 97.5/97.5 KB ? eta 0:00:00
Collecting python-dotenv
  Downloading python_dotenv-0.19.2-py2.py3-none-any.whl (17 kB)
Collecting colorama
  Downloading colorama-0.4.4-py2.py3-none-any.whl (16 kB)
Installing collected packages: python-dotenv, colorama, click, adafruit-ampy
Successfully installed adafruit-ampy-1.1.0 click-8.0.4 colorama-0.4.4 python-dotenv-0.19.2

Je bent nu klaar om je eerste micropython programma te uploaden naar je ESP32C3, terug naar de CMD prompt voer je het volgende commando uit

ampy --port <COM port> put <Micropython file.py>

Vervang <COM-port> door de COM-poort waarop je ESP32C3 is aangesloten, en vervang <Micropython file.py> door de bestandsnaam van je Micropython source code. In mijn geval COM7 respectievelijk “wifi.py” uit de directory C:\Users\spost\python>. Zorg er wel voor dat je je PUTTY sessie hebt beëindigt, anders blokkeert deze je COM-poort.

C:\Users\spost\python>ampy --port COM7 put wifi.py

Open opnieuw PUTTY en maak een seriële verbinding met je ESP32C3. Als je onderstaande commando’s uitvoert in de RPEL interface zie je dat je MicroPython source file is toevoegd aan de lijst met bestanden.

>>> import os
>>> os.listdir()
['boot.py', 'lib', 'wifi.py']
>>>

Je voert nu de MicroPython code uit met het commando import, dus:

>>> import wifi

Om de code bij het opstarten van de ESP32 uit te laten voeren dien je je MicroPython source code bestandsnaam te veranderen in “main.py”, en deze up te loaden met ampy. Bijvoorbeeld nadat je de filenaam op je laptop of linux systeem hebt aangepast.

ampy --port COM7 rm wifi.py
ampy --port COM7 put main.py

Stap 8. Bluetooth verbinding maken

Voor het maken van een bluetoothverbinding gebruiken we een voorbeeldapplicatie van de MicroPython github site. Download de files “ble_advertising.py” en “ble_uart_peripheral.py” vanaf deze site, eventueel m.b.v. knippen en plakken in notepad. Upload beide files naar de ESP32C3 m.b.v. de volgende commando’s:

ampy --port COM7 put ble_advertising.py
ampy --port COM7 put ble_uart_peripheral.py

Maak m.b.v. Putty een connectie met de ESP32C3, toets op de repl prompt de volgende commando’s:

MicroPython v1.19.1 on 2022-06-18
>>> import ble_uart_peripheral
>>> ble_uart_peripheral.demo()

Een handige app om de connectie te testen is de app “Bluetooth terminal“, je kunt deze downloaden vanuit Google Play.

Open de app en kies binnen het menu voor devices, kies voor het tab “Bluetooth LE” en druk op SCAN. Als alles goed gaat staat daar een bluetooth devices tussen met de naam “mpy_uart”:

Druk hier op, en er wordt verbinding gemaakt met de ESP32C3. Op het scherm komen nu regels met datum-tijd en een getal, er is connectie en het werkt ! Toets op de onderste regel wat in, bijvoorbeeld de tekst “test” en druk op het pijtlje rechts. Deze tekst wordt nu naar de ESP32C3 gestuurd.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *