Micropython
El sílice y la serpiente
Por J. Lucas Grillo Lorenzo (aka @enenNN)
¿Qué es micropython?
“Es una implementación del lenguaje de programación
Python 3, que está optimizada para ejecutarse en
microcontroladores.” Wikipedia
micropython.org
¿Qué librerías incluye?
Librerías importables con micropython
● machine Pin, PWM, ADC, UART, Timer, I2C, SPI, WDT
● network (Conectividad WiFi)
● time sleep_ms, etc.
● esp (ESP8266)
Hardware: el hábitat de la pitónida enana
PyBoard
Arduino
BBC Micro bit (2016)
FiPy / GPy (pre-order apr. 2017)
ESP8266
ESP32 (WiFi+BLE)
ESP8266: el hábitat de nuestra pitónida enana
Las placas electrónicas de prototipado Wemos D1 ESP8266 WiFi
Bajo coste - ~4-7€
Bajo consumo - ideal con baterías
Con conectividad WiFi
ESP8266: el hábitat de nuestra pitónida enana
Guía de referencia rápida para los ESP8266
La terminal REPL (Read Evaluate Print Loop)
● “Flashear” Wemos D1 mini con imagen de micropython (1.8.7)
● Comunicación por cable serial ttyUSB
● Interfaz interactiva mediante minicom
● Carga de programas main.py con mpfshell
La terminal REPL (Read Evaluate Print Loop)
● Mediante minicom
● Conecta al puerto /dev/ttyUSB0
● Debe aparecer el prompt de micropython al pulsar <ENTER>:
Welcome to minicom 2.7
OPCIONES: I18n
Compilado en Feb 7 2016, 13:37:27.
Port /dev/ttyUSB0, 13:02:10
Presione CTRL-A Z para obtener ayuda sobre
teclas especiales
>>>
minicom -D /dev/ttyUSB0
Sistema de ficheros interno
● Usando vfs (<TAB> autocompleta)
● Los ESPs con >1MB incluyen un pequeño FS
>>> vfs.
mkfs open listdir mkdir
rmdir chdir getcwd remove
rename stat statvfs umount
Previo a ejercicios: subir programas uPython
Instala la herramienta mpfshell:
virtualenv microenv
source microenv/bin/activate
pip3 install pyserial
pip3 install colorama
pip3 install websocket_client
Previo a ejercicios: subir programas uPython
Carga fichero main.py con mpfshell:
Compruébalo:
mpfshell -n -c "open ttyUSB0; put myscript.py main.py"
mpfshell -n -c "open ttyUSB0"
mpfshell> ls main.py
Básicas sobre una interfaz GPIO
https://docs.micropython.org/en/latest/esp8266/library/machine.html
D0 IO 16
D1 IO 5
D2 IO 4
D3 IO, 0
D4 IO, LED 2
D5 IO, CLK 14
D6 IO, MISO 12
D7 IO, RX, MOSI 13
D8 IO, TX, CS 15
A0 Analog input A0
Interfaz hardware: digital / analógica
from machine import Pin, ADC
led = Pin(5, Pin.OUT)
boton = Pin(4, Pin.IN, Pin.PULL_UP)
sensor = ADC(0)
while True:
print("sensor de luz: {}".format(sensor))
if sensor.read() < 512:
led.low() if boton.value()
else:
led.high()
Regulación de voltaje con modulación PWM
Modulación de pulsos cuadrados PWM
Extras: Flasheando una Wemos D1 mini
Tutorial oficial para programar una placa ESP8266 mediante cable USB
Más detalles en:
Tutorial oficial de micropython ESP8266
● Una terminal mediante WiFi con WebREPL
● Reduciendo consumo
● Dispositivos periféricos 1-wire, I2C
● Optimización de código
Ejercicio: Para quienes deseen optar a ECTS
● Usando micros compatibles que consigas ó http://micropython.org/live/
● Escribe un programa original que haga uso de al menos 3 de las
siguientes características:
○ Salida de mensajes por la termina +1
○ Uno o más dispositivos de salida digital (u opcionalmente usando PWM) +2
○ Al menos:
■ O bien, uno o varios dispositivos de entrada (digital o analógico) +1
■ O un periférico, por ejemplo usando I2C, SPI, 1-wire, etc. +2
○ Al menos:
■ O bien, Timers +1
■ O, RTC u otras funciones de sleep +3
● Extras opcionales: funciones de red,
Turno para preguntas
Gracias por tu atención
Gracias por su atención
Algunas referencias
● Tutorial de micropython ESP8266
● Cargar ficheros y ejecutar código (Guía de Adafruit)
○ mpfshell para ESP8266

Micropython el sílice y la serpiente

  • 1.
    Micropython El sílice yla serpiente Por J. Lucas Grillo Lorenzo (aka @enenNN)
  • 2.
    ¿Qué es micropython? “Esuna implementación del lenguaje de programación Python 3, que está optimizada para ejecutarse en microcontroladores.” Wikipedia micropython.org
  • 3.
    ¿Qué librerías incluye? Libreríasimportables con micropython ● machine Pin, PWM, ADC, UART, Timer, I2C, SPI, WDT ● network (Conectividad WiFi) ● time sleep_ms, etc. ● esp (ESP8266)
  • 4.
    Hardware: el hábitatde la pitónida enana PyBoard Arduino BBC Micro bit (2016) FiPy / GPy (pre-order apr. 2017) ESP8266 ESP32 (WiFi+BLE)
  • 5.
    ESP8266: el hábitatde nuestra pitónida enana Las placas electrónicas de prototipado Wemos D1 ESP8266 WiFi Bajo coste - ~4-7€ Bajo consumo - ideal con baterías Con conectividad WiFi
  • 6.
    ESP8266: el hábitatde nuestra pitónida enana Guía de referencia rápida para los ESP8266
  • 7.
    La terminal REPL(Read Evaluate Print Loop) ● “Flashear” Wemos D1 mini con imagen de micropython (1.8.7) ● Comunicación por cable serial ttyUSB ● Interfaz interactiva mediante minicom ● Carga de programas main.py con mpfshell
  • 8.
    La terminal REPL(Read Evaluate Print Loop) ● Mediante minicom ● Conecta al puerto /dev/ttyUSB0 ● Debe aparecer el prompt de micropython al pulsar <ENTER>: Welcome to minicom 2.7 OPCIONES: I18n Compilado en Feb 7 2016, 13:37:27. Port /dev/ttyUSB0, 13:02:10 Presione CTRL-A Z para obtener ayuda sobre teclas especiales >>> minicom -D /dev/ttyUSB0
  • 9.
    Sistema de ficherosinterno ● Usando vfs (<TAB> autocompleta) ● Los ESPs con >1MB incluyen un pequeño FS >>> vfs. mkfs open listdir mkdir rmdir chdir getcwd remove rename stat statvfs umount
  • 10.
    Previo a ejercicios:subir programas uPython Instala la herramienta mpfshell: virtualenv microenv source microenv/bin/activate pip3 install pyserial pip3 install colorama pip3 install websocket_client
  • 11.
    Previo a ejercicios:subir programas uPython Carga fichero main.py con mpfshell: Compruébalo: mpfshell -n -c "open ttyUSB0; put myscript.py main.py" mpfshell -n -c "open ttyUSB0" mpfshell> ls main.py
  • 12.
    Básicas sobre unainterfaz GPIO https://docs.micropython.org/en/latest/esp8266/library/machine.html D0 IO 16 D1 IO 5 D2 IO 4 D3 IO, 0 D4 IO, LED 2 D5 IO, CLK 14 D6 IO, MISO 12 D7 IO, RX, MOSI 13 D8 IO, TX, CS 15 A0 Analog input A0
  • 13.
    Interfaz hardware: digital/ analógica from machine import Pin, ADC led = Pin(5, Pin.OUT) boton = Pin(4, Pin.IN, Pin.PULL_UP) sensor = ADC(0) while True: print("sensor de luz: {}".format(sensor)) if sensor.read() < 512: led.low() if boton.value() else: led.high()
  • 14.
    Regulación de voltajecon modulación PWM Modulación de pulsos cuadrados PWM
  • 15.
    Extras: Flasheando unaWemos D1 mini Tutorial oficial para programar una placa ESP8266 mediante cable USB
  • 16.
    Más detalles en: Tutorialoficial de micropython ESP8266 ● Una terminal mediante WiFi con WebREPL ● Reduciendo consumo ● Dispositivos periféricos 1-wire, I2C ● Optimización de código
  • 17.
    Ejercicio: Para quienesdeseen optar a ECTS ● Usando micros compatibles que consigas ó http://micropython.org/live/ ● Escribe un programa original que haga uso de al menos 3 de las siguientes características: ○ Salida de mensajes por la termina +1 ○ Uno o más dispositivos de salida digital (u opcionalmente usando PWM) +2 ○ Al menos: ■ O bien, uno o varios dispositivos de entrada (digital o analógico) +1 ■ O un periférico, por ejemplo usando I2C, SPI, 1-wire, etc. +2 ○ Al menos: ■ O bien, Timers +1 ■ O, RTC u otras funciones de sleep +3 ● Extras opcionales: funciones de red,
  • 18.
  • 19.
    Gracias por suatención
  • 20.
    Algunas referencias ● Tutorialde micropython ESP8266 ● Cargar ficheros y ejecutar código (Guía de Adafruit) ○ mpfshell para ESP8266