52
MicroPython y ESP32 Programación simple de Internet de las cosas Víctor R. Ruiz <[email protected]> 25 de noviembre de 2017

MicroPython y ESP32

Embed Size (px)

Citation preview

Page 1: MicroPython y ESP32

MicroPython y ESP32Programación simple

de Internet de las cosas

Víctor R. Ruiz <[email protected]>25 de noviembre de 2017

Page 2: MicroPython y ESP32

Índice

● Internet de las cosas.● Introducción al ESP8266/ESP32.● MicroPython en el ESP32.● Ejemplos de programación.

● Hola mundo.● Conectividad.● Control de LEDs.● Matriz de LEDs WS2812B.● Sensor de temperatura DTH22.● Servidor web con picoweb.

Page 3: MicroPython y ESP32

¿Qué es Internetde las cosas?

Page 4: MicroPython y ESP32

Internet

Page 5: MicroPython y ESP32

Cómo accedemos

Page 6: MicroPython y ESP32

¿Quién produce el contenido?

Page 7: MicroPython y ESP32

¿Quién consume el contenido?

Page 8: MicroPython y ESP32

Internet de las casas cosas

Page 9: MicroPython y ESP32

Cacharros “inteligentes”

Page 10: MicroPython y ESP32

Cacharros “inteligentes”

Page 11: MicroPython y ESP32

“Inteligencia” = Procesador + Internet

Page 12: MicroPython y ESP32

Internet de las cosas

https://www.flickr.com/photos/wilgengebroed/8249565455/

Page 13: MicroPython y ESP32

Ordenadoresvs

microcontroladores

Page 14: MicroPython y ESP32

¿Dónde usas Python?

Page 15: MicroPython y ESP32

Ordenador

Page 16: MicroPython y ESP32

PC vs Microcontrolador

● Muy bajo consumo.

● Monotarea.

● Acceso a dispositivos eléc[tricos|trónicos].

● Barato.

● Potente.

● Sistema operativo multitarea.

● Orientado al usuario.

● Costoso.

Page 17: MicroPython y ESP32

ESP32El microcontrolador de moda

Page 18: MicroPython y ESP32

ESP8266 ESP32→

● Microcontrolador.● Derivado del ESP8266.

● Hasta 240 MHz.● Hasta 520 KB RAM.● Hasta 16 MB flash.● Barato: 4€-10€.

Page 19: MicroPython y ESP32

Conectividad ESP32

● Wifi– Punto de acceso.

– Cliente.

● Bluetooth.● Ethernet [!]● Conexiones TCP/IP.● Cliente web.● Servidor web.● Serie, I2C, SPI...

Page 20: MicroPython y ESP32

Pines del ESP32

https://playelek.com/doit-esp32-devkit-v1/

Page 21: MicroPython y ESP32

ESP8266 ESP32

Microcontrolador Xtensa · 1 núcleo · 32 bits Xtensa · 2 núcleos · 32 bits

Frecuencia 80 MHz 160 MHz

RAM 160 KB 520 KB

Memoria flash 4 MB 16 MB

WiFi 802.11 WEP, WPA

b/g/n b/g/n/e/i

Bluetooth No V4.2 BR/EDR, BLE

GPIO 17 36

A/D 10 bit 12 bit

Voltaje 3.3V 3.3V

Consumo en hibernación

20 μA 2.5 μA

Page 22: MicroPython y ESP32

MicroPython

Page 23: MicroPython y ESP32

MicroPython, la placa

● ARM Cortex M4.● 168 MHz.● 1M ROM/192 KB RAM.● Reloj tiempo real.● 24 pines GPIO.

Page 24: MicroPython y ESP32

MicroPython, el sistema

● Python 3 para microcontroladores.– Firmware.

– Intérprete.

– Librerías.

Page 25: MicroPython y ESP32

● Interpretado.● Fácil aprendizaje.● Orientado a objetos.● Multiplataforma.● Libre.● Gran comunidad.● Muy popular.● De serie: Linux/Mac.

● Basado en Python 3.● Microcontroladores.● Optimizado: poca memoria.

● Diferencias con CPython.

● Subconjunto librerías.

Page 26: MicroPython y ESP32

MicroPython en el ESP32

Page 27: MicroPython y ESP32

MicroPython en el ESP32

● Descargar la imagen para el ESP32.– http://micropython.org/

● Instalar esptool.py en el ordenador.● Instalar la imagen en la placa ESP32.● Acceso a MicroPython por el puerto serie.

Page 28: MicroPython y ESP32

Descarga de MicroPython

Page 30: MicroPython y ESP32

Instalar la imagen en el ESP32

Page 31: MicroPython y ESP32

Terminal serie PC MicroPython→

Page 32: MicroPython y ESP32

MicroPython por terminal serie

Page 33: MicroPython y ESP32

MicroPython por web (ESP8266)

Page 34: MicroPython y ESP32

uPyCraftEntorno de desarrollo para MicroPython

https://github.com/DFRobot/uPyCraft

Page 35: MicroPython y ESP32

Programación en MicroPython

Page 36: MicroPython y ESP32

“Hola mundo”

Page 37: MicroPython y ESP32

Sistema de ficheros

Page 38: MicroPython y ESP32

Ficheros especiales

● boot.py– Se ejecuta al iniciar o reiniciar el ESP32.

● main.py– Se ejecuta después de boot.py.

Page 39: MicroPython y ESP32

Red: Interfaces

>>> import network>>> sta = network.WLAN(network.STA_IF)>>> ap = network.WLAN(network.AP_IF)>>> sta.active()False>>> ap.active()True

Page 40: MicroPython y ESP32

Red: Interfaz de estación (STA)

>>> import network

>>> sta = network.WLAN(network.STA_IF)>>> sta.active(True) # Activar interfaz>>> sta.isconnected() # ¿Estoy conectado?True

>>> sta.connect('essid', 'clave') # Conectar

Page 41: MicroPython y ESP32

Red: Interfaz punto de acceso (AP)

>>> import network

>>> ap = network.WLAN(network.AP_IF)>>> ap.active(True) # Activar interfaz>>> ap.config(essid='esp-molon') # Cambiar ESSID>>> ap.config(password='molar') # Cambiar clave

Page 42: MicroPython y ESP32

Otras librerías

Page 43: MicroPython y ESP32

Máquina: Encender/apagar

Page 44: MicroPython y ESP32

Máquina: Intermitente

Page 45: MicroPython y ESP32

DHT22: Temperatura y humedad

Page 46: MicroPython y ESP32

Neopíxeles

Page 47: MicroPython y ESP32

upip: Librerías externas

Page 48: MicroPython y ESP32

Servidor web

Page 49: MicroPython y ESP32

Web: Encender/apagar LED

Page 50: MicroPython y ESP32

Conclusiones

Page 51: MicroPython y ESP32

ESP32 + MicroPython es...

● Barato.● Es interactivo.● Es accesible.● Es simple.● Es divertido.

https://docs.micropython.org/en/latest/esp8266/esp8266/quickref.html

Page 52: MicroPython y ESP32

[email protected]://github.com/vrruiz

Creative Commons - Atribución 4.0