Beetje Coderen

Les 1 · Module 1 · De ESP32 als sensorknooppunt

Je ESP32 klaarmaken

Je ESP32 flashen, een REPL-verbinding maken en code als bestand op het bordje zetten.

⏱ 60–90 minuten leestijd + oefenen

🎯 Na deze les kun je

  • MicroPython-firmware op een ESP32 zetten
  • met mpremote code uitvoeren en bestanden kopiëren
  • uitleggen wat boot.py en main.py doen

In Een beetje MicroPython leerde je LED's, knoppen en sensoren aansturen. In deze cursus bouw je daarmee één echt IoT-project: een meetstation dat metingen via wifi verstuurt en op een dashboard toont. De eerste les gaat over een betrouwbare werkomgeving, want daar loop je bij IoT het vaakst op vast.

Wat je nodig hebt

  • Een ESP32-ontwikkelbord (bijvoorbeeld ESP32-DevKitC) en een USB-datakabel
  • Python 3 op je computer
  • Later in de cursus: een BME280- of SHT31-sensor en een paar jumperdraden

Firmware flashen

python3 -m venv .venv && source .venv/bin/activate
pip install esptool mpremote
esptool.py --chip esp32 erase_flash
esptool.py --chip esp32 --baud 460800 write_flash -z 0x1000 ESP32_GENERIC-<versie>.bin

Download de firmware van micropython.org/download (kies ESP32_GENERIC). Op Linux heet de poort meestal /dev/ttyUSB0, op macOS /dev/cu.usbserial-… en op Windows COM3 of hoger. esptool zoekt hem meestal zelf.

Uitgewerkt voorbeeld

Verbind met de REPL:

mpremote

Typ:

import sys, machine
print(sys.implementation)
print(machine.freq())

Voorspel eerst: welke kloksnelheid verwacht je? Een ESP32 draait standaard op 160 of 240 MHz, dus je ziet 160000000 of 240000000. Verlaat de REPL met Ctrl+].

Maak op je computer main.py:

from machine import Pin
import time

led = Pin(2, Pin.OUT)   # ingebouwde LED op veel DevKit-bordjes

for i in range(5):
    led.value(not led.value())
    print("knipper", i)
    time.sleep(0.5)

Zet het bestand op het bordje en herstart:

mpremote cp main.py :main.py
mpremote reset
mpremote          # bekijk de uitvoer

boot.py en main.py

Bij het opstarten voert MicroPython eerst boot.py uit (instellingen, later: wifi) en daarna main.py (je programma). Gaat main.py in een oneindige lus, dan kun je hem altijd onderbreken met Ctrl+C in mpremote.

Oefenen

  1. Laat de LED sneller knipperen naarmate i groter wordt.
  2. Gebruik mpremote ls en mpremote cat :main.py om te zien wat er op het bordje staat.
  3. Zet een fout in main.py (bijvoorbeeld een typfout in Pin) en lees de foutmelding in de REPL.

Typische fouten

  • Geen poort gevonden: veel USB-kabels zijn alleen oplaadkabels. Probeer een andere kabel. Op Windows heb je soms een CP210x- of CH340-driver nodig.
  • Permission denied: /dev/ttyUSB0 (Linux): voeg jezelf toe aan de groep dialout en log opnieuw in.
  • LED doet niets: niet elk bordje heeft een LED op pin 2. Zoek de pinout van jouw bordje op.

Samenvatting

Je hebt een werkende keten: firmware, REPL en bestanden op het bordje. In de volgende les deel je je code op in modules, zodat het project overzichtelijk blijft als het groeit.