Skip to content

javacasm/micropythonTutorial

Repository files navigation

Tutorial micropython

Tutorial/cookbook de nivel inicial de micropython sobre todo para ESPs

José Antonio Vacas @javacasm

Licencia CC

¿Por qué usar micropython?

Micropython es una versión reducida del lenguaje python, pensado para que pueda ser ejecutado en dispositivos con menor capacidad de almacenamiento y procesamiento, como por ejemplo micro:bit o los distintos ESP

Al ser python un lenguaje interpretado lo que haremos será flasear el dispositivo con un firmware capaz de interpretarlo y al que podremos ir enviando los ficheros .py con el código python

Empezando

Para flashear nuestro ESP8266 necesitamos la herramienta esptool. Nos aseguramos de tener instalado pip para python 3 con (más información sobre le herramienta pip en este enlace)

	sudo apt install python3-pip

y ahora instalamos la herramienta esptool para flashear nuestro dispositivo

	pip3 install esptool

Instalación del firmware micropython (Para los dispositivos esp8266 tenemos que arrancarlo con el pin GPIO00 conectado a GND)

  1. Borramos la flash

     esptool.py  --port /dev/ttyUSB0 erase_flash
    
  2. Descargamos el firmware (para el ESP8266) de http://micropython.org/download#esp8266 teniendo en cuenta la memoria de nuestro dispositivo (512Kb en el ejemplo)

  3. Conectamos nuestra placa por USB y la flasheamos la placa con el firmware

     esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect -fm dio 0 ~/Descargas/esp8266-512k-20191118-v1.11-580-g973f68780.bin
    
  4. Accedemos al prompt de micropython para ver que todo ha ido bien

     screen /dev/ttyUSB0 115200
    

ó

	picocom  /dev/ttyUSB0 -b115200

Esta forma de conexión se denomina REPL ("Read-Eval-Print-Loop"): una shell de python que nos permite trabajar y probar nuestro código de manera interactiva

Incluye algunas de utilidades a las que estamos acostumbrados en las shels, como recuperar los comandos ya usados usando las teclas del curso arriba y abajo o el completado de método y nombre con la tecla TAB. Si queremos pegar código podemos hacerlo pulsando antes Ctrl-E y más opciones

Por defecto todo dispositivo micropython crea una red wifi llamada ESSID MicroPython-xxxxxx con ip 192.168.4.1 y contraseña micropythoN (detalles)

Web_REPL nos permite acceder a una shell REPL vía wifi

Para ESP de al menos 1M (no disponible en los de 512Kb))

  1. Configuramos el acceso con Wep_REPL
import webrepl_setup

Contestamos que queremos activar el acceso pulsando E y establecemos una contraseña de acceso. A partir de ahora quedará activado en cada arranque.

  1. Conectamos a http://micropython.org/webrepl/ para acceder al cliente

  2. Nos conectamos a una red wifi llamada MicroPython_xxxxxx (donde xxxxx es parte de la MAC de nuestro ESP) (vía 192.168.4.1:8266/)

  3. Pulsamos conectar en la consola de webrepl y nos pedirá la contraseña de acceso

  4. Configuramos la conexión a una red wifi determinada (siguiendo las intrucciones de help() y ayudándonos de la tecla TAB para completar) Esta configuración se mantiene después de un reset. Al ser interactivo, cada línea tiene una salida indicando el resultado

import network                              # Importamos el modulo network completo
sta_if = network.WLAN(network.STA_IF)       # Establecemos el modo punto de acceso (AP)
sta_if.active(True)                         # Activamos el wifi
sta_if.scan()                               # Escaneamos las redes disponibles
sta_if.connect("<AP_name>", "<password>")   # Conectamos al AP
sta_if.isconnected()                        # Comprobamos si estamos conectados
sta_if.ifconfig()                           # Vemos la ip ('192.168.1.137', '255.255.255.0', '192.168.1.1', '87.216.1.65')

Controlando un pin

Hay que empezar diciendo que la nomenclatura de los pines utiliza la especificación del fabricante (Normalmente GPIO)

Para activar el led incluido en la placa ESP12 (conectado inversamente al GPIO2)

from machine import Pin     ## Importamos la clase
p2 = Pin(2,Pin.OUT)         ## Usaremos el GPIO02 como salida
p2.on()                     ## Activamos y se apagara el led
p2.off()                    ##

Vamos a usar ahora el relé del shield de wemos

Rele shield

pReleWemos = Pin(5,Pin.OUT)
pReleWemos.on()
pReleWemos.off()  

Ficheros

Podemos ver el contenido del sistema de archivos con

There are two files that are treated specially by the ESP8266 when it starts up: boot.py and main.py. The boot.py script is executed first (if it exists) and then once it completes the main.py script is executed. You can create these files yourself and populate them with the code that you want to run when the device starts up.

import os
os.listdir()

Crear directorios:

os.mkdir('dir')

O borrar archivos

os.remove('data.txt')

Trabajando con ficheros

You can use rshell, ampy, WEB_REPL, etc.

Módulos o librerías

Librerías

Podemos ver los módulos disponibles con

    help('modules')

Y podemos obtener ayuda de objeto concreto con

    help(objeto)

IDEs

uPyCraft

Instalación Tutorial

Descargar uPyCraft

Placas

ESP12

# Ejemplo parpadeo led incluido en la placa (que tiene el estado invertido)

import machine                                                                                                                            
led = machine.Pin(2,machine.Pin.OUT)                                                                                                      
led.off()                                                                                                                                 
led.on()   

Wemos D1 mini

Especificación Wemos D1

Esquema

# Wemos-ESP12 Adapter
# D3 = GPIO0  High = Run Low = Flash
# D4 = GPIO2 Led BuiltIn ESP12
# D0 = GPIO16 Wake	
# A0 = ADC
TX = 1
RX = 3
D1 = 5
D2 = 4
D3 = 0
D4 = 2
D0 = 16
D5 = 14
D6 = 12
D7 = 13
D8 = 15
BUILITIN_LED = 2

Pinout wemos D1

# Ejemplo parpadeo led incluido en la placa (que tiene el estado invertido)

import machine                                                                                                                            
led = machine.Pin(2,machine.Pin.OUT)                                                                                                      
led.off()                                                                                                                                 
led.on()   

NodeMCU

Pinout NodeMCU

# Ejemplo parpadeo led incluido en la placa (que tiene el estado invertido)

import machine                                                                                                                            
led = machine.Pin(2,machine.Pin.OUT)                                                                                                      
led.off()                                                                                                                                 
led.on()   

ESP01 (ESP8266)

Pinout ESP8266

# Ejemplo parpadeo led incluido en la placa (que tiene el estado invertido)

import machine                                                                                                                            
led = machine.Pin(1,machine.Pin.OUT)                                                                                                      
led.off()                                                                                                                                 
led.on()   

Otras placas

Colección de placas

Más detalles sobre las placas

Recursos

Awesome Micropython

Multitud de librerías

Arranque del ESP8266

Especificación del ESP8266

Tutorial de micropython para ESP32

Tutorial de micropython para ESP8266 y ESP32

CircuitPython para ESP8266

Configuración de Wep_REPL

Proyectos con nokia 5110

Termometro

Conway Game of life

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published