MicroPython op ESP32 met Windows 10 Linux Subsystem

Ik realiseer me dat de titel van dit bericht weer eens absoluut geen click-bait is. Als je toch verder leest: leuk! 🙂

Voor wie denkt: waar heeft hij het nou weer over, eerst even kort wat uitleg. Zoals je wellicht weet zijn er naast Arduino en Micro:bit tal van andere interessante oplossingen op het gebied van microprocessoren, kleine uitbreidingskaartjes met een chip er op die net als Arduino en Micro:bit gebruikt kunnen worden om sensoren te lezen, randapparaten aan te sturen, maar die vaak een fractie van het geld kosten. Bekendste op dit gebied was ongetwijfeld de ESP8266, als je de link volgt kom je bij een aantal berichten op dit blog daarover. De ESP8266 heeft inmiddels een opvolger, de ESP32. Het heeft even geduurd voordat ook de firmware en ondersteuning voor de chip op orde was, maar inmiddels zijn ontwikkelbordjes met de ESP32 goed en goedkoop te krijgen (zeker via online shops zoals AliExpress). Ook over de ESP32 heb je hier al meer kunnen lezen, de LoPy van Pycom was de eerste ESP32 die ik hier in huis haalde naar aanleiding van de Kickstarter in augustus 2016 alweer. Dat was ook mijn eerste kennismaking met MicroPython. Een programmeertaal die voor mij helemaal niet zo vanzelfsprekend was omdat ik (toen) nog niet eerder met Python geprogrammeerd had.

Sindsdien gebruikte ik MicroPython uitsluitend op de LoPy’s. Want pogingen om het op een ESP8266 handig aan het werken te krijgen waren op niets uitgelopen. Het was simpelweg teveel gedoe om de code te wijzigen.

Bij toeval kwam ik echter op YouTube deze serie instructiefilmpjes tegen:

Ik bekeek hem en was onder de indruk van het gemak waarmee, met dank aan rshell het nu mogelijk was om bestanden te uploaden en wijzigen op de ESP32. Overschakelen naar de REPL, weer terug naar de shell, het ging allemaal heel soepel. En ik had toevallig nog een ESP32 liggen die niks lag te doen.
Ik had hem aangeschaft al node voor LoRaWAN / TTN, maar helaas had ik bij het bestellen niet goed opgelet en een versie op 433Mhz besteld in plaats van op 868Mhz. Je kunt hem hier vinden (even opletten dus!). Je hebt helemaal gelijk als je zegt “maar voor 16 euro kan ik ook een Micro:bit kopen”. Klopt. Maar dat komt door de LoRa-module en het kleine LCD-schermpje. Wil je een gewone ESP32 zonder LoRa-module en zonder LCD, dan kun je er hier al eentje voor minder van 4 euro (incl. verzenden) vinden. En dan heb je dus een microprocessor mét WiFi en BLE en batterij-aansluiting.

Goed, ik ging het proberen. Maar ik wilde het niet op een Raspberry Pi doen, maar in het Linux Subsystem dat ik op Windows 10 heb draaien. Waarom? Omdat ik wilde weten of het nu eindelijk een volwaardig alternatief geworden is. Spoiler: ja, dat is het, maar je moet er wel even wat voor doen.

Boven bij dit bericht kun je zien welke versie van Linux ik geïnstalleerd heb staan. Debian kun je gewoon vanuit de Microsoft Store installeren, je vindt hem hier. Anders dan de Raspberry Pi heeft Debian niet standaard Python 3 geïnstalleerd staan. Die moet dus eerst nog geïnstalleerd worden:
$ sudo apt-get install -y python3
Daarna moet je pip3 installeren:
$ sudo apt-get install -y python3-pip
Het Linux Subsystem heeft toegang tot de poorten op je computer. Maar, in mijn geval werd de aangesloten ESP32 niet getoond als verbonden aan /dev/TTYUSB0 zoals in het filmpje. Door bij Apparaatbeheer te kijken naar een apparaat dat de genoemde CP210x gebruikte kon ik achterhalen dat Windows hem ziet als COM13.

Die COM13 poort kon ik niet zomaar gebruiken vanuit het Linux Subsystem. Hiervoor moest ik eerst het volgende commando uitvoeren:
chmod 666 /dev/ttyS13
Als bij jou het apparaat aan een andere COM-poort gekoppeld wordt moet je /dev/ttyS13 uiteraard ook aanpassen naar het juiste nummer.
Nu kon ik aan de slag.

Één handige tip nog als je vanuit het Linux Subsystem aan de slag gaat en bestanden wilt uitwisselen met de rest van Windows 10. In /mnt zijn ook de schijven in je computer te vinden. Ik had in C:\Temp de map “micropython” aangemaakt. Hier kon ik dus met mijn gewone editor aan en dingen wijzigen. Vanuit het Linux Subsystem is die map te bereiken als /mnt/c/Temp/micropython

De eerste versie van de firmware die ik er op gezet heb is de officiële die ook in de video gebruikt wordt.

(opmerking bij de screenshot: dit was de eerste poging, met “0x0” zoals in de video getoond wordt, dat moet echter “0x1000” zijn!)

De firmware werkt prima. Met behulp van de Adafruit library kun je ook het LCD-scherm gebruiken. Als je de op de ESP32 zet en dan een main.py maakt met deze code:

import machine, ssd1306

i2c = machine.I2C(scl=machine.Pin(22), sda=machine.Pin(21))
oled = ssd1306.SSD1306_I2C(128, 64, i2c)

oled.fill(0)
oled.text('MicroPython on', 0, 0)
oled.text('a ESP32 with', 0, 10)
oled.text('attached SSD1306', 0, 20)
oled.text('OLED display', 0, 30)
oled.show()

Dan werkt het. Ik moest de pin-aanduidingen wijzigen in 22 en 21 voor mijn specifieke board. Dat kan dus variëren.

Inmiddels heb ik de firmware vervangen door de build die je hier kunt vinden. Daar kon ik een versie downloaden die de belangrijkste libraries al aan boord heeft, zoals een FTP-server, een eenvoudige webserver, een Telnet Server, een Mqtt client, mDNS Server, ondersteuning voor Neopixel, ADC, PWM, Onewire/DS18x20, RTC, Timer, UART, I2C, Display module, SSH Module, Curl Module en Thread ondersteuning.
 

Kortom, het is een uitgebreidere, krachtigere versie van de ESP8266 geworden waarbij MicroPython niet langer als een last voelt, maar als een gewoon prima alternatief voor de Arduino IDE en de C-taal die daar gebruikt wordt. Het Linux Subsystem op Windows 10 is daarbij een prima omgeving voor het flashen van nieuwe firmware of voor het bedienen van de ESP32. Het enige waar je daarna over hoeft na te denken is: waar ga ik hem voor inzetten? Als sensor? Als aansturing van devices? Als BLE device? Als ….. ?

Wordt ongetwijfeld vervolgd!

0 0 stemmen
Bericht waardering
4 Reacties
Inline Feedback
Bekijk alle reacties
trackback

MicroPython op ESP32 met Windows 10 Linux Subsystem https://t.co/oP7Yr9d8Y7 @micropython @Windows #ESP32 https://t.co/VeDlRuS9Hw

trackback

MicroPython op ESP32 met Windows 10 Linux Subsystem https://t.co/0Bi3fMybhM

Danny Timmer
Danny Timmer
5 jaren geleden

Leuk stuk! Heb zelf een raspberry Pi en gebruik die als osmc. Een collega van me heeft ook deze chip. Sta op het punt om zelf ook zo’n goedkoop dingetje aan te schaffen. Ik zou er dan MySQL op willen draaien. Hoelang duurde het voordat hij binnen was?