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/
Click en descargar:
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.
Una vez instalado vamos a la terminal y escribimos python le damos enter y nos tiene que salir una ventana asi:
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
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.
Al hacerlo bien saldra algo asi:
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.
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
Pero si le subimos o cargamos el firmware para 512kb estar todo bien 🙂
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
Nos movemos con las flechitas del teclado hay hasta llegar a Serial port setup, que dejarlo de la siguiente manera:
Guaramos y automaticamente podremos ingresar a minicom para hablar con nuestro dispositivo 😀
Si presionamos reset del esp8266 nos saldra de esta manera y ya sabemos que esta todo bien instalado 😀
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()
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()
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()
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
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 gustaMe gusta
Hola si verifica que la transmision este en 115200 o 9600 baudios
Me gustaMe 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 gustaMe gusta
Hola estas seguro que tu esp8266 tiene suficiente memoria ?
Me gustaMe 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»
Me gustaLe gusta a 1 persona
Lo agregaremos
Gracias Leonardo
Saludos
Me gustaMe gusta