MicroPython

&

ESP32

Thomas Waldmann

EasterHegg 2018, 2018-04-01

Einordnung ESP32

  • CPU, RAM, Massenspeicher, Durchsatz:
    PC > rpi > ESP32 > Arduino
  • Leistungsaufnahme:
    PC > rpi > ESP32, Arduino
  • Interfaces/Features (Elektronik):
    ESP32, rpi > arduino > PC
  • Komfort beim SW-Entwickeln:
    PC, rpi > ESP32 > arduino
  • Preis:
    PC > rpi > ESP32, arduino

ESP32  Cores / Memory

  • verbesserter Nachfolger des ESP8266
  • 3.3 V,  5 uA ... 260 mA
  • 32bit Microcontroller
  • DualCore 2x 240MHz
  • sep. ULP-Prozessor für SleepMode
  • 520 kiB SRAM ("WROOM"-Modul)
  • +4MiB pSRAM (nur im "WROVER")
  • 4 MiB Flash

ESP32  I/O

  • GPIO, PWM, Touchpad
  • I2C, I2S, SPI, UART, RMT
  • CAN, SDIO, ...
  • DAC / ADC, PreAmp
  • Hall Effect, Temperature
  • WIFI 802.11 b/g/n, WPA2
  • Bluetooth
  • Ethernet*

ESP32 Dev-Boards

  • Welches ESP32-Modul / Chip / Revision?
  • Anzahl I/O-Pins? Breite und Breadboard-Eignung?
  • Zusatz-Hardware?
    • Micro-USB:  USB<->UART,  5V -> 3.3V
    • Li-Akku-Ladeschaltung
    • Ladebuchse oder Akku-Halterung 18650
    • OLED-Display
    • LORA-Funkmodul onboard
    • Modul-Systeme

WeMOS LOLIN32 Pro

TTGO ESP32 LORA

TTGO ESP32 Battery/OLED

Elektrodragon ESP32-Pico-D4

... auf Breadboard

Tulabadi's NODE32pico

Software: ESP32 Toolchain

  • C
    • ESP-IDF ("IoT Development Framework")
    • Arduino Core für Arduino IDE
    • GCC Toolchain
    • Linux, macOS, Windows
  • Lua
  • JavaScript
  • MicroPython!

Python (allgemein)

  • komfortable, meist interpretierte Hochsprache
  • mehrere Implementierungen (in C, RPython, Java, ...)
  • standard heute: CPython 3.x
  • einfach zu lernen und zu benutzen:
    • mächtige Kontrollstrukturen und Datentypen
    • gut ausgebaute Standard-Library
    • automatische, dynamische Speicher-Verwaltung
    • klare, leicht lesbare Syntax, wenig Boilerplate
  • aber: durch Ressourcen-Verbrauch (z.B. RAM) ist das "normale" CPython nicht für MicroController geeignet.

MicroPython

  • Python 3 für MicroController
    • optimiert auf wenig RAM/Flash/CPU-Verbrauch
    • ersetzt teilweise normales Betriebssystem, da sonst keins vorhanden.
    • Libraries für HW-Zugriff oder Zeitkritisches
    • in C erweiterbar (z.B. "C Extensions")
  • Benutzung:
    • interaktiver Interpreter ("REPL"-Console)
    • Source-Code "main.py" auf uC-Dateisystem laden

MicroPython - Tools

  • esptool.py
    • Flash löschen
    • Flash mit MicroPython-Image beschreiben
  • mpy-utils
    • mpy-fuse:
      ESP32 als beschreibbares Dateisystem mounten
    • mpy-upload:
      eine Datei auf ESP32 hochladen
  • Terminal:
    • starten:  screen /dev/ttyUSB0 115200
    • beenden:  Strg-a k
  • http://docs.micropython.org/en/latest/esp8266/

MicroPython Beispielcode

from time import sleep

from machine import Pin

 

led = Pin(12, Pin.OUT)

 

for counter in 1, 2, 3, 4:

    led.value(True)

    sleep(0.1)
    led.value(False)

    sleep(0.1)

Demo - interaktiv

  • screen
  • MicroPython REPL
  • help()
  • GPIO (Pin)
  • PWM
  • TouchPad

Demo - nicht interaktiv

  • ESP32 mounten:
    • mpy-fuse mnt
    • ...
    • fusermount -u mnt
  • Datei-Transfer:
    • mpy-upload FILE
  • Autostart:  boot.py  &  main.py
  • OLED:  Zähler
  • I2C:  Beleuchtungs-Sensor
  • WLAN:  SSID-Scan

Flash Time!

  • Daily Builds der MicroPython ESP32 Firmware
    • können neue Funktionen enthalten
    • aber auch neue Bugs - vorsichtig sein!
       
  • Dateisysteminhalt geht verloren.
     
  • esptool.py --chip esp32 --port /dev/ttyUSB0 erase_flash
     
  • esptool.py --chip esp32 --port /dev/ttyUSB0 write_flash \
    -z 0x1000 esp32_firmware.bin

uPy & ULP Co-Prozessor

  • Assembler-Code auf dem PC übersetzen:
    • binutils-esp32ulp (espressif)
       
  • Assembler-Code auf dem ESP32 (oder PC) übersetzen:
    • https://github.com/ThomasWaldmann/py-esp32-ulp
    • in MicroPython implementiert
    • neu, Alpha-Status, mit Unit/Compat-Tests
       
  • https://github.com/micropython/micropython/pull/3578
    "ports/esp32 add support for the ulp" (load and run)

 

 

Fragen?

(auch gerne danach ausserhalb des Saals)

 

Im Internet:

micropython.org   &   esp32.net

 

Im Stuttgarter Hackerspace:

https://wiki.shackspace.de/project/micropython

 

Kontakt:  Thomas Waldmann  <tw @ waldmann-edv . de>