Tabla de contenido:

Introducción a Python para ESP8266 y ESP32: 6 pasos
Introducción a Python para ESP8266 y ESP32: 6 pasos

Video: Introducción a Python para ESP8266 y ESP32: 6 pasos

Video: Introducción a Python para ESP8266 y ESP32: 6 pasos
Video: #2 MicroPython - Salidas Digitales (Blink) | Introducción a MicroPython ESP8266 y ESP32 para IoT 2024, Noviembre
Anonim
Introducción a Python para ESP8266 y ESP32
Introducción a Python para ESP8266 y ESP32

Fundamento

El ESP8266 y su hermano mayor menor ESP32 son microchips Wi-Fi de bajo costo con pila TCP / IP completa y capacidad de microcontrolador. El chip ESP8266 llamó la atención de la comunidad de fabricantes por primera vez en 2014. Desde entonces, el bajo precio (<5 USD), su capacidad Wi-Fi, una memoria flash incorporada de 1 o 4 MB y una variedad de desarrollos disponibles placas, ha convertido al chip ESP en uno de los microcontroladores más populares para proyectos de bricolaje WiFi e IoT.

MicroPython es una implementación sencilla y eficiente del cada vez más popular lenguaje de programación Python que incluye un pequeño subconjunto de la biblioteca estándar de Python y está optimizado para ejecutarse en microcontroladores.

La combinación de estos dos es una opción muy interesante para proyectos de bricolaje, tanto para principiantes como para usuarios más avanzados.

El proyecto MiPy-ESP

En 2015, mis primeros proyectos con ESP8266 comenzaron con el chip ESP-01 usando Arudions para ejecutar comandos de chip AT a través de una conexión en serie. Después de eso, durante los siguientes años apliqué el núcleo Arduino para ESP8266 para programar los chips con el lenguaje C ++. Esto funciona bien, pero para un entusiasta de Python, mi descubrimiento de la implementación de MicroPython de Python 3 fue una gran noticia.

El proyecto MiPy-ESP es un marco flexible que aplica MicroPython para proyectos de Python IoT de pila completa en los microcontroladores de la familia ESP.

El marco es desarrollado por el Equipo de Desarrolladores de Software del Comité Técnico de LeGarage (LG-TC-SWDT-01) con el objetivo de reemplazar el código basado en C ++ ya establecido para nuestras aplicaciones de microcontroladores.

El proyecto proporciona características básicas como

  • Procedimientos de conexión a la red
  • Servidor web de punto de acceso a chip (para conexión wifi y servicio de páginas web de chip para E / S de datos)
  • Funcionalidades MQTT
  • Registro / depuración
  • Programación de eventos del microcontrolador
  • Rutinas de E / S de hardware

Con un script de código compacto principal (main.py), todos con configuración global (config.py).

Este código de microcontrolador se ejecuta con un mantenimiento sólido de las conexiones de chip a la red WiFi y los corredores de MQTT. Los módulos MicroPython existentes para varios hardware se pueden integrar fácilmente en el sistema.

El marco MiPy-ESP se ha convertido en la columna vertebral de todos nuestros proyectos de IoT de electrónica para pasatiempos que involucran microcontroladores de la familia ESP. Se ha probado en varias placas de la familia ESP, como las placas NodeMCU, Wemos y Lolin.

El siguiente tutorial es una guía sobre cómo comenzar con los microcontroladores de la familia ESP y MicroPython utilizando el marco MiPy-ESP.

Paso 1: La placa Wemos D1 Mini ESP8266

La placa Wemos D1 Mini ESP8266
La placa Wemos D1 Mini ESP8266
La placa Wemos D1 Mini ESP8266
La placa Wemos D1 Mini ESP8266
La placa Wemos D1 Mini ESP8266
La placa Wemos D1 Mini ESP8266
La placa Wemos D1 Mini ESP8266
La placa Wemos D1 Mini ESP8266

El marco MiPy-ESP funciona con la mayoría de los microcontroladores basados en ESP8266.

La mini placa de desarrollo Wemos D1 se basa en el chip ESP-8266EX. En un espacio de 2,5 x 3,5 cm, cuenta con 4 MB de memoria flash, 11 pines de entrada / salida digital, todos los pines admiten interrupción, PWM, I2C, SPI, serie y 1 entrada analógica con entrada máxima de 3,3 V, puede funcionar con 5 V de potencia, tiene conexión micro USB y es compatible con protoboard. El bajo precio y su pequeño tamaño la han convertido en mi tabla ESP favorita.

Además, la versión D1 mini pro de la placa viene con la opción de conectar una antena externa, aumentando significativamente el rango de conexión (rango de +100 m). Además, la placa también viene con una variedad de placas de extensión listas para usar con un tamaño compacto similar.

Paso 2: prepararse para MicroPython en el chip ESP

Preparándose para MicroPython en el Chip ESP
Preparándose para MicroPython en el Chip ESP

En este primer paso,

  • Conecte la placa ESP a través de USB a su computadora
  • Instale el software Esptool para flashear el chip
  • Borrar la memoria del chip
  • Actualice el chip con el firmware MicroPython
  • Instale Rshell para habilitar la interacción de la línea de comandos con su chip
  • Instale mpy-cross (para la compilación de archivos.py en binarios)

Conectar la placa a su computadora a través de USBBoards con un puerto serie USB incorporado hace que el UART esté disponible para su PC y es la opción más fácil para comenzar. Para placas sin conexión USB, se puede usar un módulo FTDI con USB a serie para conectar los pines GPIO para flashear conectados al mundo exterior, pero esto no se trata en este tutorial.

Para MicroPython que usa el código MiPy-ESP, el requisito mínimo para el tamaño de la memoria flash del chip es 1 MB. También hay una compilación especial para placas con 512kB, pero no tiene soporte para un sistema de archivos, del cual depende MiPy-ESP.

Cuando se usa un cable USB, la placa se alimenta de su computadora mientras está conectada. Esto también permite programar y depurar a través de la conexión en serie. Cuando se carga el código del proyecto y se implementa su proyecto, se aplica energía externa a los pines de la fuente de alimentación de la placa.

Instalación de Esptool Puede encontrar información sobre el software Esptool en el repositorio de Esptool GitHub. Si desea utilizar Windows / Linux / OSX (MAC), el enlace anterior también cubre eso. El paquete Python se puede instalar mediante

pip instalar esptool

Para los usuarios de Linux, los paquetes de Esptool se mantienen para Debian y Ubuntu, y también se pueden instalar con

sudo apt instalar esptool

Borrado de la memoria flash ESP Con Esptool, borra la memoria flash ESP con el comando

esptool.py --port / dev / ttyUSB0 erase_flash

Descarga del firmware de MicroPyton El firmware de MicroPython reside en un archivo.bin que se puede descargar del sitio web de MicroPython.

La rama principal del proyecto actual del repositorio ha sido probada y está operativa con Micropython v.1.12. Para garantizar el éxito con el marco MiPY-ESP, descargue el archivo 'esp8266-20191220-v1.12.bin' de este enlace y escriba el firmware en el chip mediante el comando:

esptool.py --port / dev / ttyUSB0 --baud 460800 write_flash --flash_size = detectar 0 esp8266-20191220-v1.12.bin

Instalación de Rshell El paquete Rshell permite la interacción de la línea de comandos con su entorno MicroPython instalado en el chip. Se puede encontrar en este enlace. Rshell es un shell simple que se ejecuta en el host y utiliza RAW-REPL de MicroPython para enviar fragmentos de python al pyboard para obtener información del sistema de archivos y copiar archivos desde y hacia el sistema de archivos de MicroPython. REPL son las siglas de Read Evaluate Print Loop, y es el nombre que se le da al indicador interactivo de MicroPython al que puede acceder en el ESP8266. Usar REPL es, con mucho, la forma más fácil de probar su código y ejecutar comandos. Instale Rshell con el comando:

sudo pip instalar rshell

Instalación del compilador mpy-cross MicroPython se puede aplicar con archivos ascii.py cargados en el sistema de archivos del chip. MicroPython también define el concepto de archivos.mpy, que es un formato de archivo contenedor binario que contiene código precompilado y que se puede importar como un módulo.py normal. Al compilar archivos.py en.mpy, habrá más memoria RAM disponible para su código en ejecución, y esto es necesario para tener un módulo central funcional del marco MiPy-ESP.

Para la implementación del código MiPy-ESP, el compilador cruzado mpy-cross MicroPython compila los scripts.py en.mpy antes de cargar el chip. Instale el paquete mpy-cross siguiendo las instrucciones de este enlace. Alternativamente, el comando mpy-cross puede instalarse mediante el comando pip de Python o ejecutarse desde la ruta de la carpeta mpy-cross si clona el repositorio de MicroPython desde GitHub aquí.

¡Ahora tiene MicroPython y todas las herramientas necesarias instaladas para comenzar a construir su primer proyecto MiPy-ESP

Paso 3: Introducción a MiPy-ESP

Introducción a MiPy-ESP
Introducción a MiPy-ESP

En este paso

Descargue el marco MyPy-ESP

Descarga del marco MiPy-ESP El proyecto MiPy-ESP se puede encontrar en GitHub en este repositorio de código. Desde GitHub puede descargar la estructura de archivos del repositorio o clonarlo en su computadora

clon de git

Con el repositorio de código instalado en su computadora, ahora tiene todos los módulos de código que necesita para construir un proyecto ESP IoT listo para usar. Más detalles sobre la caja de herramientas en el siguiente paso.

Paso 4: Arquitectura del marco MiPy-ESP

La arquitectura del marco MiPy-ESP
La arquitectura del marco MiPy-ESP

En este paso

aprender sobre el flujo de trabajo del código MiPy-ESP

Arquitectura de código MiPy-ESP

Todos los módulos del marco de Python se encuentran en la carpeta / src del repositorio de código MiPY-ESP. La carpeta src / core contiene los módulos principales que se incluyen en cada proyecto. La carpeta src / drivers tiene una selección de módulos para que varios hardware se conecten a su chip. La carpeta src / utilities contiene módulos de utilidades opcionales para incluir en su proyecto.

Los archivos main.py y config.py se encuentran en la carpeta src /. Estos son los archivos principales que debe editar para crear su proyecto:

config.py:

Este archivo es el archivo de configuración global de su proyecto. Tiene varias configuraciones, todas con comentarios descriptivos en el archivo.

main.py:

Este es el script principal para el bucle de código del microcontrolador. Contiene el código específico de la aplicación en el marco. Tras el arranque del chip, main.py se ejecuta e importa todos los módulos dependientes del proyecto con entradas dadas desde el archivo config.py. El diagrama de flujo anterior muestra el diseño del script main.py.

La figura anterior describe el flujo de trabajo de main.py:

  1. Al arrancar, el código intenta conectar el chip a la red Wi-Fi. Las redes aplicadas anteriormente y sus contraseñas (encriptadas en el chip) se almacenan en la memoria flash. Los SSID de red y sus contraseñas se pueden proporcionar en el archivo wifi.json en el formato {" SSID1 ":" Contraseña "," SSID ":" Contraseña2 "}. Las redes dadas en este archivo se almacenan, las contraseñas se cifran y el archivo se elimina al arrancar.
  2. Si no se encuentran redes conocidas, el código configura un servidor web de punto de acceso (AP). El SSID y la contraseña del servidor de chip AP se establecen en el archivo config.py. Al iniciar sesión en el chip SSID, se ofrece una página web para el inicio de sesión del chip en Wi-Fi en 192.168.4.1 Las redes detectadas se muestran en un menú, o el SSID se puede ingresar manualmente (redes ocultas) junto con la contraseña de Wi-Fi. Tras la conexión exitosa del chip a Wi-Fi, el servidor AP se apaga y el código main.py continúa con los siguientes pasos.
  3. En la sección Configuración de main.py,

    • Se definen funciones para trabajos y devoluciones de llamada (etc. devoluciones de llamada MQTT) y eventos regulares.
    • Se establecen diferentes trabajos cronometrados para ejecutar funciones.
    • Se establece el cliente broker MQTT
  4. El código luego entra en el circuito principal del microcontrolador,

    • Comprobación continua de las conexiones de la red y del broker MQTT.
    • Suscripciones MQTT,
    • E / S de hardware
    • y trabajos programados.
    • Cuando se pierde la red o la conexión con el agente MQTT, el código intenta restablecerse.

Paso 5: preparación de su código de proyecto

Preparación de su código de proyecto
Preparación de su código de proyecto
Preparación de su código de proyecto
Preparación de su código de proyecto

En este paso

  • aprender sobre la estructura de archivos del repositorio MiPy-ESP
  • prepare su código de proyecto para la carga del chip

Estructura de la carpeta del repositorio La figura anterior describe la estructura de la carpeta del repositorio y enumera los módulos actuales del marco. Su proyecto es etapas en la carpeta src /. Los módulos del marco principal MiPy-ESP residen en src / core, los módulos de utilidades opcionales en src / utilities y los módulos de hardware en src / drivers.

La mayoría de las bibliotecas de hardware de MicroPython disponibles pueden ir a la carpeta de controladores sin ninguna modificación. Todos los controladores actuales se prueban con el marco MiPy-ESP. Con respecto a los módulos en la carpeta utilities /, se agregarán más a medida que cobren vida.

Puesta en escena del código del proyecto El código específico del proyecto debe colocarse en la carpeta src /. Ya están los archivos main.py y config.py que puede editar. También copie las utilidades del proyecto deseadas de src / utilities y src / drivers a src /.

En caso de que desee aprovisionar redes Wi-Fi conocidas y contraseñas al chip, agregue el archivo wifi.json a src /.

Compilar y preparar para cargar Se puede aplicar un Makefile proporcionado para preparar archivos para transferirlos al chip compilando archivos.py en / src, compilando los módulos centrales y transfiriendo los archivos compilados a una nueva carpeta llamada build / mediante el comando

hacer construir

Los archivos en construcción están listos para cargarse en el sistema de archivos del chip. De forma predeterminada, main.py y config.py no se compilan en binario, para poder acceder a ellos fácilmente para inspeccionar los chips implementados. El comando:

hacer limpia

Elimina la carpeta build / y su contenido.

Paso 6: compilar y cargar el código en el microcontrolador

Compilar y cargar el código al microcontrolador
Compilar y cargar el código al microcontrolador
Compilar y cargar el código al microcontrolador
Compilar y cargar el código al microcontrolador

En esta sección

  • cargue los archivos preparados en la compilación / desde la última sección
  • iniciar y monitorear el código en ejecución

Cargar compilación / archivos con Rshell

Cargue todos los archivos en el directorio / build al chip ESP usando Rshell. Con el microcontrolador conectado a USB, desde la carpeta build / inicie Rshell con el comando

rshell -p / dev / ttyUSB0

Luego, inspeccione los archivos del chip (si los hay)

ls / pyboard

Todos los archivos en el chip se pueden eliminar mediante

rm /pyboard/*.*

Copie todos los archivos del proyecto en build / al chip:

cp *. * / pyboard

Luego inicie la terminal interactiva de Python con el comando

responder

Ahora puede invocar comandos de Python o importar módulos y monitorear la salida en serie del chip desde el módulo de registro MiPy-ESP.

Reinicie el chip presionando el botón de reinicio, o desde la línea de comando presionando

importar principal

o

máquina de importación

y luego

machine.reset ()

Dependiendo de su configuración de registro / depuración en el archivo de configuración del proyecto, la respuesta ahora mostrará mensajes de depuración del chip ESP a través de la conexión en serie.

Con suerte, esto debería ayudarlo a comenzar.

Recomendado: