MicroPython ve
světě IoT zařízení
Vladan Laxa
@naPyvo 25.10.2018
• Vladan Laxa
• Systems Engineer / Consultant
• Latraxa.cz
• VMware VCP 2,3,4,5,6,6.5 (2006 – 2019)
• 15 years in IT
• vlaxa@latraxa.cz
• @latraxa
• #automateitall
• https://github.com/vlaxa
Informace o mě
latraxa.cz
• Kompletní reimplementace Python3
• Designed pro efektivní využití prostředků
• Designed to run bare metal
• Obsahuje:
• Compiler, runtime a REPL (Read Evaluate Print Loop)
• Podporuje základní knihovny (moduly)
• Obvykle začínají na „u“ help(‘modules‘)
• https://github.com/micropython/micropython-lib
• Extra moduly pro ovládání hardware
• Damien George
• http://micropython.org/unicorn/
MicroPython je
latraxa.cz
MicroPython Unicorn
latraxa.cz
MicroPython vývojové desky
latraxa.cz
• PyCom WiPy 3.0
• Pyboard
• BBC Micro:bit
• NodeMCU ESP8266
• OpenMV Cam H7
• Sparkfun ESP32 Thing
• Teensy 3.2
• Adafruit Trinket M0
• Espressif ESP32
• https://pycom.io/product/wipy-3-0/
• Wi-Fi a Bluetooth
• https://docs.pycom.io/datasheets/develo
pment/wipy3
• Deep sleep 19.7 µA
• 4MB RAM
• 8MB Flash
• 3.5 – 5.5V
• Varianty s LoRa, Sigfox, LTE
• $25
PyCom WiPy 3.0
latraxa.cz
PyCom WiPy 3.0
latraxa.cz
• STM32F405RG
• https://micropython.org
• 168 MHz Cortex M4 with HW FP
• http://docs.micropython.org/en/lates
t/pyboard/quickref.html
• 1024 KiB flash ROM a 192 KiB RAM
• Micro SD card slot
• 3-axis accelerometer (MMA7660)
• http://micropython.org/live/
• 3.6 – 16V
• $37
Pyboard
latraxa.cz
Pyboard
latraxa.cz
• Nordic nRF51822
• https://microbit.org
• 32bit Cortex M0
https://microbit.org/code/
• 256kB flash a 16 kB RAM
• Magnetometr + Akcelerometr
• 5x5 LED
• $15
BBC Micro:bit
latraxa.cz
BBC Micro:bit
latraxa.cz
• STM32H743V
• https://www.kickstarter.com/projects
/1798207217/openmv-cam-h7-
machine-vision-w-micropython
• ARM Cortex M7 400 MHz
https://openmv.io/products/openmv-
cam-h7
• 1 MB RAM a 2 MB flash
• Micro SD
• $49
OpenMV Cam H7
latraxa.cz
OpenMV Cam H7
latraxa.cz
• ESP8266
• http://nodemcu.com/index_en.html
• ESP-12E
• WiFi
• 5V > 3.3V převodník
• CH340G
• $2.5
NodeMCU ESP8266
latraxa.cz
• Nainstalujeme nástroj esptool:
• pip install esptool
• Stáhneme firmware MicroPython z http://micropython.org/download#esp8266
• Instalaci firmware provedeme následovně:
• sudo esptool.py --port /dev/tty.wchusbserial1420 erase_flash
• sudo esptool.py --port /dev/tty.wchusbserial1420 --baud 460800 write_flash --flash_size=detect --
flash-mode dio 0 esp8266-20180511-v1.9.4.bin
• Kontrola
• import esp
• esp.check_fw()
NodeMCU – flash MicroPythonu
latraxa.cz
• Další užitečné je zjištění velikosti flash a MAC adresy:
• sudo esptool.py --port /dev/tty.wchusbserial1420 flash_id
• sudo esptool.py --port /dev/tty.wchusbserial1420 read_mac
• Připojení provedeme skrz sériovou konzoli:
• picocom --b 115200 --flow n /dev/tty.wchusbserial1410
• Nebo alternativa:
• screen /dev/tty.wchusbserial1410 115200
Připojení na NodeMCU
latraxa.cz
• Import knihovny Výstup
pin.value(0)
• Vstup Blikání LED
• Pin.IN – konfiguruje pro čtení
• Pin.OUT – pro zápis PWM (Pulse Width Modulation) frekvence (freq) v Hz, střída (duty) 0-1024
NodeMCU – hrátky s MicroPython
latraxa.cz
• MicroPython
• https://github.com/frenzymadness/p
yconcz18_workshop/blob/master/W
orkshop.md
• DS18B20
NodeMCU ESP8266
latraxa.cz
Programování kódu – import a config
latraxa.cz
Programování kódu – funkce
latraxa.cz
Programování kódu – hlavní program
latraxa.cz
• Nainstalujeme nástroje Ampy (Adafruit Micro Python tool)
• pip install adafruit-ampy
• Soubor nahrajeme
• ampy –p /dev/tty.wchusbserial1410 put scripts/DS18B20.py main.py
• Při bootu spouští boot.py následně se vykoná obsah souboru main.py
• Pozor, nelze nahrávat souboru, pokud máme aktivní připojení skrz
sériovou konzoli
• http://docs.micropython.org/en/v1.9/micropython-esp8266.pdf
NodeMCU – nahrání kódu na desku
latraxa.cz
• upip on bare metal upip.install(…)
• Moduly pro IoT: uasyncio, umqtt
• ujson.load, uzlib.DecompIO
• Xtensa (ESP8266) native emitter a inline assembler
• Soft IRQ handlers skrze micropython.schedule()
• https://forum.micropython.org
MicroPython tips
latraxa.cz
• Používat krátké názvy proměnných
• Upřednostňovat lokální proměnné (uvnitř funkce)
před globálními
• Snažit se vyhnout alokaci paměti a používat stack
• Používat funkce + preload a cache module
• Nepoužívat * a ** argumenty
• Dekorátor @micropython.native
• Dekorátor @micropython.viper (přímý zápis do
GPIO registrů)
• Dekorátor @micropython.asm_thumb (in-line
assembler in python syntax)
MicroPython optimalizace
latraxa.cz
Užitečné publikace
latraxa.cz
Relax a dejte si pyvo!
latraxa.cz
Děkuji za pozornost
latraxa.cz
• Užijte si zbytek večera
• #pyvo #pivo @naPyvo
• Děkuji
Vladan Laxa
Systems Engineer / Consultant
Latraxa.cz
vlaxa@latraxa.cz
@latraxa
latraxa.cz

MicroPython IoT vlaxa

  • 1.
    MicroPython ve světě IoTzařízení Vladan Laxa @naPyvo 25.10.2018
  • 2.
    • Vladan Laxa •Systems Engineer / Consultant • Latraxa.cz • VMware VCP 2,3,4,5,6,6.5 (2006 – 2019) • 15 years in IT • vlaxa@latraxa.cz • @latraxa • #automateitall • https://github.com/vlaxa Informace o mě latraxa.cz
  • 3.
    • Kompletní reimplementacePython3 • Designed pro efektivní využití prostředků • Designed to run bare metal • Obsahuje: • Compiler, runtime a REPL (Read Evaluate Print Loop) • Podporuje základní knihovny (moduly) • Obvykle začínají na „u“ help(‘modules‘) • https://github.com/micropython/micropython-lib • Extra moduly pro ovládání hardware • Damien George • http://micropython.org/unicorn/ MicroPython je latraxa.cz
  • 4.
  • 5.
    MicroPython vývojové desky latraxa.cz •PyCom WiPy 3.0 • Pyboard • BBC Micro:bit • NodeMCU ESP8266 • OpenMV Cam H7 • Sparkfun ESP32 Thing • Teensy 3.2 • Adafruit Trinket M0
  • 6.
    • Espressif ESP32 •https://pycom.io/product/wipy-3-0/ • Wi-Fi a Bluetooth • https://docs.pycom.io/datasheets/develo pment/wipy3 • Deep sleep 19.7 µA • 4MB RAM • 8MB Flash • 3.5 – 5.5V • Varianty s LoRa, Sigfox, LTE • $25 PyCom WiPy 3.0 latraxa.cz
  • 7.
  • 8.
    • STM32F405RG • https://micropython.org •168 MHz Cortex M4 with HW FP • http://docs.micropython.org/en/lates t/pyboard/quickref.html • 1024 KiB flash ROM a 192 KiB RAM • Micro SD card slot • 3-axis accelerometer (MMA7660) • http://micropython.org/live/ • 3.6 – 16V • $37 Pyboard latraxa.cz
  • 9.
  • 10.
    • Nordic nRF51822 •https://microbit.org • 32bit Cortex M0 https://microbit.org/code/ • 256kB flash a 16 kB RAM • Magnetometr + Akcelerometr • 5x5 LED • $15 BBC Micro:bit latraxa.cz
  • 11.
  • 12.
    • STM32H743V • https://www.kickstarter.com/projects /1798207217/openmv-cam-h7- machine-vision-w-micropython •ARM Cortex M7 400 MHz https://openmv.io/products/openmv- cam-h7 • 1 MB RAM a 2 MB flash • Micro SD • $49 OpenMV Cam H7 latraxa.cz
  • 13.
  • 14.
    • ESP8266 • http://nodemcu.com/index_en.html •ESP-12E • WiFi • 5V > 3.3V převodník • CH340G • $2.5 NodeMCU ESP8266 latraxa.cz
  • 15.
    • Nainstalujeme nástrojesptool: • pip install esptool • Stáhneme firmware MicroPython z http://micropython.org/download#esp8266 • Instalaci firmware provedeme následovně: • sudo esptool.py --port /dev/tty.wchusbserial1420 erase_flash • sudo esptool.py --port /dev/tty.wchusbserial1420 --baud 460800 write_flash --flash_size=detect -- flash-mode dio 0 esp8266-20180511-v1.9.4.bin • Kontrola • import esp • esp.check_fw() NodeMCU – flash MicroPythonu latraxa.cz
  • 16.
    • Další užitečnéje zjištění velikosti flash a MAC adresy: • sudo esptool.py --port /dev/tty.wchusbserial1420 flash_id • sudo esptool.py --port /dev/tty.wchusbserial1420 read_mac • Připojení provedeme skrz sériovou konzoli: • picocom --b 115200 --flow n /dev/tty.wchusbserial1410 • Nebo alternativa: • screen /dev/tty.wchusbserial1410 115200 Připojení na NodeMCU latraxa.cz
  • 17.
    • Import knihovnyVýstup pin.value(0) • Vstup Blikání LED • Pin.IN – konfiguruje pro čtení • Pin.OUT – pro zápis PWM (Pulse Width Modulation) frekvence (freq) v Hz, střída (duty) 0-1024 NodeMCU – hrátky s MicroPython latraxa.cz
  • 18.
  • 19.
    Programování kódu –import a config latraxa.cz
  • 20.
    Programování kódu –funkce latraxa.cz
  • 21.
    Programování kódu –hlavní program latraxa.cz
  • 22.
    • Nainstalujeme nástrojeAmpy (Adafruit Micro Python tool) • pip install adafruit-ampy • Soubor nahrajeme • ampy –p /dev/tty.wchusbserial1410 put scripts/DS18B20.py main.py • Při bootu spouští boot.py následně se vykoná obsah souboru main.py • Pozor, nelze nahrávat souboru, pokud máme aktivní připojení skrz sériovou konzoli • http://docs.micropython.org/en/v1.9/micropython-esp8266.pdf NodeMCU – nahrání kódu na desku latraxa.cz
  • 23.
    • upip onbare metal upip.install(…) • Moduly pro IoT: uasyncio, umqtt • ujson.load, uzlib.DecompIO • Xtensa (ESP8266) native emitter a inline assembler • Soft IRQ handlers skrze micropython.schedule() • https://forum.micropython.org MicroPython tips latraxa.cz
  • 24.
    • Používat krátkénázvy proměnných • Upřednostňovat lokální proměnné (uvnitř funkce) před globálními • Snažit se vyhnout alokaci paměti a používat stack • Používat funkce + preload a cache module • Nepoužívat * a ** argumenty • Dekorátor @micropython.native • Dekorátor @micropython.viper (přímý zápis do GPIO registrů) • Dekorátor @micropython.asm_thumb (in-line assembler in python syntax) MicroPython optimalizace latraxa.cz
  • 25.
  • 26.
    Relax a dejtesi pyvo! latraxa.cz
  • 27.
    Děkuji za pozornost latraxa.cz •Užijte si zbytek večera • #pyvo #pivo @naPyvo • Děkuji
  • 28.
    Vladan Laxa Systems Engineer/ Consultant Latraxa.cz vlaxa@latraxa.cz @latraxa latraxa.cz