Servidor API en ESP8266 usando MicroPython

aswini MicroPython es similar a Python 3, pero está diseñado para microcontroladores. MicroPython viene con un ciclo de lectura-evaluación-impresión interactivo (REPL), que es una característica increíble que nos permite conectarnos a un microcontrolador, ejecutar código rápidamente sin necesidad de compilar o cargar código y brinda retroalimentación inmediata. Además, lo que es más importante, el soporte de la comunidad disponible facilita el uso de este firmware.

ESP8266 es un módulo Wi-Fi de bajo costo que es ideal para proyectos de bricolaje que involucran Internet de las cosas (IoT). Como MicroPython es fácil de usar, lo cual es importante para los principiantes, se puede programar fácilmente. Pero el firmware predeterminado de ESP8266 y otras placas ESP Wi-Fi son diferentes. En este proyecto de bricolaje, flasheamos MicroPython en la placa MCU de nodo y usamos MicroPython para programar la placa y controlar su GPIO a través de la red usando el marco Pico.

Actualización del firmware de MicroPython en la placa

Para usar el marco PicoWeb y programar ESP en MicroPython para controlar GIPO en Node MCU, necesitamos borrar el firmware actual en el chip ESP en Node MCU. Podemos descargar el firmware de MicroPython desde su web oficial, que se encuentra en formato .bin. El sitio web oficial para descargar el firmware de MicroPython para la placa es: http://MicroPython.org/download/#esp8266

Después de descargar el firmware, primero debemos borrar el firmware actual. Para eso, estool se usa para borrar o actualizar el nuevo firmware en la placa ESP. Para instalar esptool, abra el símbolo del sistema y ejecute el siguiente comando e instale la herramienta esp:

pip instalar esptool

Ahora, necesitamos conectar Node MCU al sistema e identificar el puerto al que está conectado. Si está utilizando un sistema basado en Linux, el siguiente comando lo ayudará a identificar el puerto:

dmesg | tty grep

A continuación, debemos limpiar la placa antes de actualizar el firmware de MicroPython con la siguiente sintaxis. Tenga en cuenta que el puerto identificado en el paso anterior se usa en la sintaxis como –p.

~/.local/bin/esptool.py -p /dev/ttyUSB0

borrar_flash

Ahora, podemos actualizar el firmware de MircoPython y abrir la carpeta donde se descargó el firmware de MicroPython. Luego, copie la ruta y el nombre de archivo de ese archivo de firmware .bin y actualícelo en la placa MCU del nodo usando el siguiente comando. (Debe cambiar la ruta y el nombre de archivo del firmware en el comando).

~/.local/bin/esptool.py – puerto /dev/tty

USB0 – baudios 460800 escribir_flash – flash_

tamaño = detectar 0 esp8266-20210202-v1.14.bin

Nota. esp8266-20210202-v1.14.bin es el nombre del firmware descargado, que debe reemplazarse con el nombre del archivo de firmware en su sistema.

¡Vaya! El tablero está listo, por lo que podemos ingresar al indicador REPL y explorar. Pero para ingresar al indicador REPL necesitamos otra herramienta CLI, llamada picocom, que se puede instalar a través del siguiente comando:

sudo apt-get install picocom

Luego, use la sintaxis a continuación, que mostrará información en el tablero ESP. Presione ctl+B para ingresar al indicador REPL.

picocom /dev/ttyUSB0 -b115200

El comando para reiniciar la placa desde el indicador REPL es ctl+D

Empujar el archivo de su sistema a la placa requerirá la herramienta cli adafruit-ampy. Para instalarlo en su sistema, use la siguiente sintaxis:

pip instalar adafruit-ampy

pip install adafruit-ampy – actualizar

Nota. En algunos casos, es posible que tenga problemas con picocom. En ese caso, puede usar cualquier terminal serial y monitor para instalar el framework pico. Además, después de actualizar MicroPython, es posible que la placa a veces no se conecte a Wi-Fi e Internet y muestre un error. En ese caso, debe seguir las instrucciones proporcionadas en la sección de configuración de la red a continuación.

Conexión y funcionamiento
Fig. 1: Conexión y funcionamiento

Configurar la red y conectarse a Wi-Fi

Abra el terminal serie y dé los comandos que se mencionan a continuación para conectarse a la red Wi-Fi:

importar red

sta_if = red.WLAN(red.STA_IF)

ap_if = red.WLAN(red.AP_IF)

sta_if.activo(Verdadero)

sta_if.conectar(‘ ‘, ‘

key>’) # Reemplace el SSID con su

Nombre y clave de la red Wi-Fi con su

contraseña de red

sta_if.isconnected()

sta_if.ifconfig()

Ahora, con el MCU de nodo conectado a Wi-Fi, podemos verificar su dirección IP usando el siguiente comando y anotar la dirección IP:

sta_if.ifconfig()

Da una salida como:

(‘192.168.0.2’, ‘255.255.255.0’,

‘192.168.0.1’, ‘8.8.8.8’)

Configuración del marco PicoWeb de MicroPython

Ahora estamos listos para instalar PicoWeb, que es un marco micro web para MicroPython. Si está familiarizado con el marco web Flask en Python, lo encontrará similar para trabajar. Dos características importantes de PicoWeb son:

  1. Asíncrono, lo que significa que puede manejar múltiples solicitudes simultáneas.
  2. Uso de memoria pequeño.

Para instalar el marco en Node MCU, clone el repositorio en una ubicación en su sistema usando el código:

$ git clonar https://github.com/

peterhinch/MicroPython-muestras

Dependencias del framework PicoWeb

Para instalar el marco en la placa, primero debemos instalar algunas dependencias. Abra el indicador REPL, como se mencionó anteriormente, e instale los paquetes como se menciona a continuación:

$ importar upip

$upip.install(‘MicroPython-uasyncio’)

$ upip.install(‘MicroPython-ulogging’)

$upip.install(‘MicroPython-pkg_resources’)

$ upip.install(‘utemplate’)

Salga de REPL, usando ctl+A+X, y copie algún archivo del sistema local a la placa. Vaya a la carpeta donde se descarga el repositorio PicoWeb de git, busque los archivos __init__.py y utils.py. Copie estos archivos en el directorio PicoWeb de la pizarra. Para ello, utilice la otra herramienta cli, adafruil-ampy, que se instaló anteriormente.

Paso 1. Cree el directorio PicoWeb usando el código:

$ ampy – puerto /dev/ttyUSB0 mkdir picoweb

Paso 2. Copie los archivos del sistema local al directorio PicoWeb en el tablero usando el código:

$ ampy – puerto /dev/ttyUSB0 poner __init.py

/picoweb/__init__.py

$ ampy – puerto /dev/ttyUSB0 poner utils.py

/picoweb/utils.py

Creación de puntos finales de API utilizando el marco PicoWeb

Ahora, necesitamos crear la secuencia de comandos de Python con el nombre main.py, que se realizará en dos pasos. Primero, conectándose al Wi-Fi disponible y, segundo, creando el punto final de la API para controlar el estado del pin GPIO de la placa. También crearemos un punto de acceso (AP) para la placa, de modo que si no hay Wi-Fi disponible, aún podemos conectarnos al AP de la placa y controlar el estado de los pines GPIO.

sudo nano main.py

Ahora, copie el siguiente código en el archivo main.py:

importar picoweb

importar red

desde pin de importación de máquina

tiempo de importación

ip=[]

app = picoweb.WebApp(__nombre__)

#crear el punto de acceso

ap = red.WLAN(red.AP_IF)

ap.activo(Verdadero)

ap.config(essid=’espAP’,

contraseña=’espAPcontraseña’)

miip = ap.ifconfig()

imprimir (miip)

#conectarse a las redes wifi disponibles

estación = red.WLAN(red.STA_IF)

estación.activa (Verdadero)

station.connect(“wifi-network-name”,

”wifi-red-contraseña”)

myip2 = estación.ifconfig()

imprimir (miip2)

def qs_parse(qs):

parámetros =

ampersandSplit = qs.split(“&”)

para elemento en ampersandSplit:

divisiónigual = elemento.split(“=”)

parámetros[equalSplit[0]]=

división igual[1]

parámetros de retorno

#crear el punto final de API para controlar el

pin proporcionado como parámetro en la llamada a la API

@app.ruta(“/pin_ctl”)

índice de definición (requerido, resp):

cadena de consulta = req.qs

parámetros = qs_parse(cadena de consulta)

imprimir (parámetros)

x= int(parámetros[‘pin’])

pin = máquina.Pin(x, máquina.Pin.SALIDA)

pin.valor(0)

tiempo.dormir(0.5)

pin.valor(1)

tiempo.dormir(0.5)

pin.valor(0)

tiempo.dormir(0.5)

pin.valor(1)

tiempo.dormir(0.5)

rendimiento de picoweb.start_

respuesta

rendimiento de resp.awrite («hecho»)

si __nombre__ == “__principal__”:

aplicación.ejecutar(depurar=Verdadero,host=”0.0.0.0”,

puerto=80)

Presione ctrl+x y luego Y para guardar el código. Copie este archivo main.py en la placa Node MCU usando la siguiente sintaxis:

amplio – puerto /dev/ttyUSB0 poner main.py

Conexión y operación desde cualquier lugar

Conecte el LED al pin GPIO de Node MCU para probar la API.

Inicie sesión en la página de inicio de Wi-Fi y verifique la dirección IP asignada al dispositivo. Ingrese la dirección en cualquier navegador y agregue al final el pin que desea controlar como parámetro, como el ejemplo a continuación:

$http://192.168.1.14/pin_ctl?pin=3

Para controlar el LED, podemos conectarlo a GPIO 10 en el diagrama del circuito y ejecutar la siguiente URL en el navegador web:

http://192.168.1.14/pin_ctl?pin=10

Descargar código fuente


Alegría Maitra es Arquitecto Técnico Senior en Hexaware Technologies. Es un entusiasta de la tecnología y colaborador de código abierto.



Fuente del artículo

Deja un comentario