Guia: instalar y usar Micropython en ESP8266

Holi :3

Hoy vamos a instalar y usar micropython con nuestro favorito el ESP8266, bienvenidos :D.

Materiales necesarios:

Python 2.7.
Cualquier placa basada en ESP8266(NodeMCU, wemos, huzza), con 512kb de flash para que sea funcional, pero no soportara el sistema de archivos(guardar, leer archivos dentro de la memoria) si tienes uno de 1 MB si podras acceder al sistema de archivos. Yo tengo ambos asi que vamos a ver que es lo que sucede.
ESPTOOLFirmware actualizado de micropython
Minicom o putty

Python:

Python es un lenguaje de programacion de alto nivel de proposito general, es muy bonito y facil de aprender incluso ya muchas universidades y centros educativos alrededor del mundo lo usan para enseñar principios de programacion, es sumamente pontente y facil de usar como habia dicho anteriormente, para instalarlo nos vamos a la pagina oficial de Python:
https://www.python.org/
DeepinScreenshot20170323172502
Click en descargar:
DeepinScreenshot20170323172713
descargamos python 2.7.x (al momento de escribir esta guia esta en 2.7.13). Dependiendo de tu sustema operativo(funciona con windows, linux y mac), asi mismo lo instalas en el caso de linux ya trae por defecto python 2.7 y python 3.
DeepinScreenshot20170323172852
Una vez instalado vamos a la terminal y escribimos python le damos enter y nos tiene que salir una ventana asi:
DeepinScreenshot20170323173115

Exiito, ya tenemos instalado python en nuestro sistema operativo 😀

ESPTOOL:

Es una herramienta escrita en python para subir bootloaders o cargadores de arranque  a dispositivos basados en el ESP8266, en la guia anterior utilizamos nodemcu-flasher una herramienta grafica que igual pueden usar en este tutorial pero hoy aprenderemos a usar ESPTOOL una herramienta de linea de comandos.
Instalacion:

En la terminal escribimos:

pip install esptool

en Linux o mac necesitamos permisos de administrador entonces usamos

Sudo pip install esptool

Mas informacion acerca de la herramienta en el repositorio oficial

Firmware:

Lo descargamos de la pagina oficial de micropython:
si tienen un ESP9266 con 1024 kb de flash necesitan la versio estable, o el daily.
Si tienen un ESP8266 con 512kb necesitan la daily de 512KB que esta mas abajo.
Esta de mas escribir  que debe ser la ultima version jajaja, pero lo escribire, Descarguen la ultima version :V
DeepinScreenshot20170323174649

Ahora ponemos nuestro dispositivo en modo flash, el GPIO0 a negativo y reiniciamos el dispositivo

Instalacion:

Comandos en la terminal.

esptool.py --port /dev/ttyUSB0 erase_flash

en el caso de mi computadora mi puerto es /dev/ttyUSB0, pero en mac o windows será diferente asi que cuidado con eso.

Este es un error por no ponerlo en modo flash.
DeepinScreenshot20170323180905

Al hacerlo bien saldra algo asi:
DeepinScreenshot20170323181224

Mas comandos:

esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect 0 archivo.bin

de nuevo verificamos que todo este bien con el puerto y el nombre del archivo.

DeepinScreenshot20170323182117

Listo, si se dan cuenta a mi me aparece que el tamaño de mi memoria flash es de 8m entonces tengo un monton de espacio 🙂 tengo el de 1024 kb, pero si pongo uno de 512 me sale el siguiente error

DeepinScreenshot20170323193332

Pero si le subimos o cargamos el firmware para 512kb estar todo bien 🙂
DeepinScreenshot20170323213632

Muy bien ahora ya tenemos instalado micropython en nuestros ESP8266. Que alegria jajaja
Tenemos corriendo micropython desde que se enciende y la manera de comunicarse con él es por medio de comunicacion serial asi que lo haremos con minicom(linux) o putty para windows(no uso mac asi que algo parecido a putty tendran que usar).

MINICOM:

Instalacion:

Sudo apt-get install minicom

Configuracion:

minicom -s

DeepinScreenshot20170323214333
Nos movemos con las flechitas del teclado hay  hasta llegar a Serial port setup, que dejarlo de la siguiente manera:
DeepinScreenshot20170323214420

Guaramos y automaticamente podremos ingresar a minicom para hablar con nuestro dispositivo 😀
DeepinScreenshot20170323214658

Si presionamos reset del esp8266 nos saldra de esta manera y ya sabemos que esta todo bien instalado 😀
DeepinScreenshot20170323214855

DeepinScreenshot20170323214749

para salir de minicom le presionamos CTRL+a luego presionamos z luego x, luego enter y ya.

Blink

Ahora nada mas queda empezar a escribir las lineas de codigo para que se ejecuten.

import machine
import time
led = machine.Pin(2, machine.Pin.OUT)
while True:
    led.high()
    time.sleep(1)
    led.low()
    time.sleep(1)

 

Conectarse a wifi

import network
 wifi = network.WLAN(network.STA_IF)
wifi.connect("SSID","PASSWORD")
wifi.ifconfig()
DeepinScreenshot20170323223619

Funcion conectarse a wifi

def conectar():
    import network
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    if not wlan.isconnected():
        print('Conectando a la red...')
        wlan.connect('essid', 'password')
        while not wlan.isconnected():
            pass
    print('configuracion de red:', wlan.ifconfig())

MQTT:

Nuestro protocolo favorito MQTT, en este caso usaremos una libreria llamada umqtt 😀 esta la version simple y la version robusta. usaremos la version simple ahora.

Suscribirse:

from umqtt.simple import MQTTClient
def callback_function(topic,msg):
    print((topic,msg))
cliente = MQTTClient("id","broker")
cliente.set_callback(callback_function)
cliente.connect()
cliente.subscribe(b"hola")
while True:
cliente.check_msg()

DeepinScreenshot20170324000253

 

Publicar:
Este es mas sencillo.

from umqtt.simple import MQTTClient
cliente = MQTTClient("themicrofcontrol","45.55.156.117")
cliente.connect()
cliente.publish(b"themicrofcontrol",b"hola mundo")
cliente.disconnect()

DeepinScreenshot20170323232310DeepinScreenshot20170323232353

Estos son los ejemplos que considere son los mas oportunos para empezar a aprender. les dejo la documentacion para poder seguir con ello 😀
http://docs.micropython.org/en/latest/esp8266/esp8266/quickref.html
Nos vemos en otra entrada Amigos 😀
y recuerden Solo necesitan una excusa para cambiar el mundo.

Saludos especiales para el hackerspace San Salvador, con ellos tuve el primer contacto con micropython, Joksan, Mario, Karla sigan asi

6 Comments

Add yours →

  1. Saludos, gracias por el tutorial pero tengo un problema con esto. La cosa es la siguiente, hice todos los pasos en teoría al ejecutar el comando para grabar el firmware al módulo lo completa sin errores pero al conectarme por putty o por el esplorer no muestra nada de información y sólo garabatos, alguna posible solución?
    Gracias

    Me gusta

    • Hola si verifica que la transmision este en 115200 o 9600 baudios

      Me gusta

      • Saludos, gracias por responder pero lo hice en 115200 y 9600, estos son los resultados
        Pero al usar putty o esplorer, el esp8266 no responde.

        PS C:\> esptool.py –port COM4 –baud 9600 write_flash –flash_size=detect 0 esp8266-20171101-v1.9.3.bin
        esptool.py v2.1
        Connecting….
        Detecting chip type… ESP8266
        Chip is ESP8266
        Uploading stub…
        Running stub…
        Stub running…
        Configuring flash size…
        Auto-detected Flash size: 4MB
        Flash params set to 0x0040
        Compressed 600888 bytes to 392073…
        Wrote 600888 bytes (392073 compressed) at 0x00000000 in 412.4 seconds (effective 11.7 kbit/s)…
        Hash of data verified.

        Leaving…
        Hard resetting…

        Me gusta

      • Hola estas seguro que tu esp8266 tiene suficiente memoria ?

        Me gusta

      • Saludos, pude hacerlo.
        En la página oficial recomiendan otra opción para algunas variantes de nodemcu (podrías agregarla), también pude hacerlo con una aplicación gráfica llamada «nodemcu flasher»

        Le gusta a 1 persona

  2. Lo agregaremos
    Gracias Leonardo
    Saludos

    Me gusta

Deja un comentario