MicroPython flashen op Wemos D1 mini

Last Updated on 12 maart 2022 by Syds

In deze tutorial flashen we MicroPython op een Wemos D1 mini.

Benodigdheden:

  • Wemos D1 mini
  • USB-kabel

Up-and-running

Stap 1. Download laatste versie van Micropython

Je hebt de firmware voor een esp8266 chip nodig, deze vindt je hier: https://micropython.org/download/esp8266/

Kies de meest recente versie van de firmware (niet de OTA compatible versie !), in mijn geval was dat versie v1.18 (2022-01-17).bin. Download de esp8266-20220117-v1.18.bin file.

Stap 2. Erase het flash geheugen van je Wemos D1 mini

Start een cmd prompt en voer het volgende commando uit:

esptool --port <com port> erase_flash

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

C:\Users\spost\python>esptool --port COM3 erase_flash
esptool.py v3.2
Serial port COM3
Connecting....
Detecting chip type... Unsupported detection protocol, switching and trying again...
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 5c:cf:7f:9a:08:65
Uploading stub...
Running stub...
Stub running...
Erasing flash (this may take a while)...
Chip erase completed successfully in 12.2s
Hard resetting via RTS pin...

Het flash geheugen is nu gewist.

Stap 3. Firmware flashen naar Wemos D1 mini

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 Wemos D1 te flashen

esptool --port <com port> --baud 460800 write_flash --flash_size=detect 0 <firmware.bin>

Vervang <com port> door de COM-poort waar je je Wemos D1 mini 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 --port COM3 --baud 460800 write_flash --flash_size=detect 0 esp8266-20220117-v1.18.bin
esptool.py v3.2
Serial port COM3
Connecting....
Detecting chip type... Unsupported detection protocol, switching and trying again...
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 5c:cf:7f:9a:08:65
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Flash will be erased from 0x00000000 to 0x0009bfff...
Flash params set to 0x0040
Compressed 635992 bytes to 418427...
Wrote 635992 bytes (418427 compressed) at 0x00000000 in 9.6 seconds (effective 529.4 kbit/s)...
Hash of data verified.

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

Je Wemos D1 mini 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 Wemos D1 mini

Druk een keer op de [Enter] toets, en de REPL van Python verschijnt. Typ hierin het commando

print("Hello world!")

MicroPython is alive !

Stap 5. WiFi verbinding maken

De Wemos D1 mini 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, op twee verschillende Wemossen uitgeprobeerd en zowel op een mobiele telefoon als laptop uitgeprobeerd. Daarom via de REPL prompt het device op het WiFi netwerk aangesloten. Voer achtereenvolgens de volgende commando’s uit.

>>> import network
>>> wlan = network.WLAN(network.STA_IF)
>>> wlan.active(True)
#5 ets_task(4020f560, 28, 3fffa348, 10)
>>> wlan.connect(<SSID van he 2.4Ghz WiFi netwerk>,<WiFi wachtwoord>)
>>> wlan.ifconfig()
('192.168.2.133', '255.255.255.0', '192.168.2.254', '192.168.2.29')
>>>

Vervang <SSID van he 2.4Ghz WiFi netwerk> en <WiFi wachtwoord> door het SSID en wachtwoord van jou 2.4Ghz WiFi-netwerk. Op de laatste regel vindt je het IP-address van je Wemos D1 mini terug, in mij geval 192.168.2.133.

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/
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 Wemos D1 mini. 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

Voordat we een micropython file kunnen uploaden, dienen we voor de zekerheid eerst nog even de debugmode op de Wemos D1 mini uit te zetten, die doe je binnen de REPL-interface met de volgende commando’s

>>> import esp
>>> esp.osdebug(None)

Je bent nu klaar om je eerste micropython programma te uploaden naar je Wemos D1 mini, 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 Wemos D1 mini is aangesloten, en vervang <Micropython file.py> door de bestandsnaam van je Micropython source code. In mijn geval COM3 respectievelijk “esp8266.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 COM3 put esp8266.py

C:\Users\spost\python>

Open opnieuw PUTTY en maak een seriële verbinding met je Wemos Di mini. 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', 'esp8266.py', 'lib']
>>>

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

>>> import esp8266

Om de code bij het opstarten van de Wemos D1 mini uit te laten voeren die 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 COM3 rm esp8266.py
ampy --port COM3 put main.py

Geef een reactie

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