ESP8266 con MicroPython – Parte 1

El chip ESP8266 es un micro-controlador con Wi-Fi integrado de bajo costo que lo hace ideal para proyectos IoT y MicroPython un lenguaje de programación muy amigable y potente. A continuación te mostramos como combinar ambos.

Este post forma parte de la serie  “Proceso del IoT” específicamente la etapa de producción de datos.

 TL;DR

Si ya sabes mas o menos como es todo y anda directo al instructivo 

Introducción

El ESP8266 es un SOC (System-On-Chip) fabricado por la empresa Espressif. Originalmente apareció como un modulo Wi-Fi para Arduino, pero es una sorpresa saber que es mucho mas poderoso muchas de las distribuciones de Arduino.

Características

  • Procesador L106 de 32-bit RISC (Tensilica Xtensa Diamond Standard 106Micro 80 MHz)
  • Soporte QSPI flash: hasta to 16 MB (512 KB a 4 MB es usualmente incluido en las distribuciones)
  • IEEE 802.11 b/g/n Wi-Fi
  • Un monto de circuitos para Wi-Fi integrados (TR switch, balun, LNA, amplificadorr de potencia)
  • Autenticación WEP , WPA/WPA2 o redes Wi-Fi abiertas
  • 16 pines GPIO
  • SPI ( Serial Peripheral Interface) Interface de periféricos serie
  • I²C (implementado por software)
  • I²S Interface con acceso directo a memoria o DMA (comparte pines con el GPI)
  • UART en pines dedicados y un UART de solo transmisión que se puede habilitar en el GPIO2
  • Conversor analógico digital de 10-bit (esto quiere decir que el rango de valores entre 0-1023)

Muchas placas para elegir

El ES8366 es solo un chip, pero hay muchas placas de desarrollo, nosotros vamos a usar NodeMCU que salió 180.00 ARP (9 USD).

Si bien todas las placas tiene el mismo “cerebro” (el ES8266) varían en :

  • Si tiene puerto USB para programarlo
  • Tamaño de la memoria flash externa, donde se almacenan los programas.

Es mejor que un Arduino?

En costo, capacidad de proceso el ES8266 sale ganado, esto sumado a que ya viene con Wi-Fi integrado. Donde pierde por mucho es en el GPIO.

  • Tiene pocos pines
  • Tiene un solo pin analógico (Arduino Uno tiene 6) y su rango de voltaje es de 0 a 1 Volt (Esto hace que tengamos que poner un divisor de voltaje para la mayoría de los sensores)
  • El voltaje de trabajo es 3.3 (Arduino Uno trabaja con 5v)

Así que, como siempre, depende del uso nos conviene el ES8266 o un Arduino con un shield Wi-Fi. Otra alternativa mas poderosa es su nuevo hermanito el ESP32 que además de Wi-Fi viene con Bluetooth.

MicroPython

MicroPython es una implementación ágil y eficiente del lenguaje de programación Python 3 que incluye un pequeño subconjunto de la biblioteca estándar de Python y está optimizado para ejecutarse en micro-controladores y en entornos restringidos.

Originalmente el ES8266 se programa en LUA, la mayoría de las placas permiten programarlo con e IDE de Arduino.

Nosotros, no conformes con esas dos opciones, te vamos a mostrar como programarlo con MicroPython.

Por que MicroPython?

Porque si… En realidad Python es un gran lenguaje para la gente que recién empieza a programar, a comparación de C o C++ (Es el que usa Arduino) que es mas difícil.

Quienes usan MicroPython?

  • pyboard: La primer placa en implementar micropython
  • BBC micro:bit: Placa de desarrollo para chicos en el Reino Unido
  • ESP8266: El SOC que te contamos mas arriba
  • SAMD21 Placas que usan el Atmel SAMD21 como el Feather M0 y Arduino Zero pueden usar CircuitPython, el un derivado MicroPython escrito por Adafruit.
  • Pycom: Pycom es una empresa que tiene muchas placas, con diversas funcionalidades como WiFI, LORA, Sigfox, etc.

Para mas informacion sobre MicroPython y las placas que lo implementan pueden ver  https://github.com/micropython/micropython .

Tutorial

Ahora si… la posta

Pre requisitos

Pasos

Nosotros estamos utilizando nuestro Raspberry PI para programar nuestra placa NodeMCU, pero incluimos algunas notas para hacerlo en windows.


Instalar el software que necesitamos

sudo pip install esptool adafruit-ampy

En windows hay que remover la palabra sudo


Descargar el firmware (la lista completa de firmware la podes ver en aqui)

 wget http://micropython.org/resources/firmware/esp8266-20171101-v1.9.3.bin

En Windows use la URL para bajarlo desde el navegador


Conectar el NodeMCU al RaspberryPI/PC. Aca tenemos que averiguar que puerto serie le fue asignado a nuestro NodeMCU.

En Linux: hay que ejecutar el comando que lista todos los dispositivos

ls /dev/

 

El puerto debe temer un nombre como ttyUSB**#** siendo # un numero. Desconectamos el NodeMCU, corremos el comando ls /dev/ y vemos que elemento no se lista mas.. Ese el el puerto.

En windows: abrimos el Device Manager, conectamos el nodeMCU y vemos que puerto es el que aparece. Va a tener un nombre como COM3


Borrar la memoria flash

esptool.py --port /dev/ttyUSB0 erase_flash

En windows reemplacen /dev/ttyUSB0 por el COM que corresponda.


Cargar el firmware que descargamos previamente

esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect 0 esp8266-20171101-v1.9.3.bin 

Si da error cambien –baud 460800 a –baud 115200


Finalmente probamos

ampy --port /dev/ttyUSB0 ls

El resultado debe ser

boot.py

Y si hacemos

ampy --port /dev/ttyUSB0 get boot.py

El resultado es algo así:

# This file is executed on every boot (including wake-boot from deepsleep)
#import esp
#esp.osdebug(None)
import gc
#import webrepl
#webrepl.start()
gc.collect()

Paso siguiente: Programa básico en MicroPython

Compartit en: Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInShare on TumblrEmail this to someonePrint this page

Dejá un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *