Tabla de contenido:

Flash ESP-01 (ESP8266) sin adaptador USB a serie con Raspberry Pi: 3 pasos
Flash ESP-01 (ESP8266) sin adaptador USB a serie con Raspberry Pi: 3 pasos

Video: Flash ESP-01 (ESP8266) sin adaptador USB a serie con Raspberry Pi: 3 pasos

Video: Flash ESP-01 (ESP8266) sin adaptador USB a serie con Raspberry Pi: 3 pasos
Video: Raspberry Pi Pico con WIFI del ESP8266 (Parte 1 comandos AT) 2024, Mes de julio
Anonim
Flash ESP-01 (ESP8266) sin adaptador USB a serie con Raspberry Pi
Flash ESP-01 (ESP8266) sin adaptador USB a serie con Raspberry Pi

Este Instructable lo guía sobre cómo comenzar a programar su microcontrolador ESP8266 en un módulo WIFI ESP-01. Todo lo que necesita para comenzar (además del módulo ESP-01, por supuesto) es

  • Frambuesa pi
  • Cables de puente
  • Resistencia de 10K

Quería convertir una vieja lámpara de noche en una moderna lámpara de noche LED controlada por Alexa. No hay nada lujoso, simplemente encenderlo / apagarlo usando un comando de voz. Pedí el módulo WIFI ESP-01 más simple, relé y cable con LED en línea, y me olvidé por completo de pedir un adaptador USB a serie para programar el microcontrolador ESP8266. Pero como tenía una Raspberry Pi y tanto la Raspberry Pi como la placa ESP-01 tenían pines UART, pensé que podría usar mi RPi para programar ESP8266 sin el adaptador.

Paso 1: configurar Rapberry Pi

Configurar Rapberry Pi
Configurar Rapberry Pi

Usé Raspberry Pi 3 Model B +, sin embargo, las instrucciones deberían funcionar en otras versiones, especialmente en el modelo B.

Entonces, lo primero es lo primero: necesitamos habilitar UART en Pi.

Ir a los ajustes de configuración de RPi. En la ventana de terminal ejecutar

$ sudo raspi-config

Vaya a 5 Opciones de interfaz, luego seleccione Serie P6. A continuación, se le preguntó: ¿Desea que se pueda acceder a un shell de inicio de sesión a través de la serie? seleccione ya que no queremos usar UART para ejecutar el Pi sin cabeza, sino para comunicarnos con otros dispositivos, por lo tanto, en la siguiente pantalla cuando se le pregunte ¿Desea que se habilite el hardware del puerto serie? Seleccione. Reinicie la Pi cuando se le solicite. UART ahora debería estar habilitado para la comunicación en serie en el pin RX y TX de Raspberry Pi 3. Nota: después de esto, debería aparecer una nueva entrada enable_uart = 1 al final de /boot/config.txt.

Paso 2: Conecte ESP-01 a Raspberry Pi

Conecte ESP-01 a Raspberry Pi
Conecte ESP-01 a Raspberry Pi

Ahora nos ponemos manos a la obra.

En primer lugar, identifique en su RPi 3.3V los pines de alimentación y GND (tierra) para alimentar el microcontrolador ESP8266, los pines TXD (transmisión) y RXD (recepción) para comunicarse, y dos pines de propósito general para operar ESP8266 (pines que se pueden configurar en alto o bajo). Busque la disposición de los pines en pinout.xyz o escriba en el terminal:

$ pinout

En segundo lugar, identifique los pines necesarios en el ESP-01. Pero al principio necesitamos tener conocimiento de los pines ESP-01. Encontré varios recursos útiles disponibles en Internet para ayudarlo en ese sentido. Este es el más corto, mientras que este da una explicación mucho mejor. En resumen: hay 8 pines, necesitaremos 7 de ellos, a saber, pines de alimentación VCC y GND (tierra) para alimentación, pines TXD y RXD para comunicación, y RST (reinicio), CH_PD (Chip Power Down, a veces etiquetado CH_EN o habilitación de chip) y GPIO0 para operar el módulo. Por lo general, ESP8266 funciona en modo normal, pero cuando se carga un código en ESP8266, debe estar en modo flash. Para el modo de funcionamiento normal o normal, el módulo debe estar conectado a la alimentación (obviamente), pero también el pin CH_PD debe estar conectado a VCC a través de un 10K (este valor varía en diferentes recursos, encontré valores de hasta 3K) pull-up Resistencia en el arranque. en el otro lado, para ingresar al modo de programación o parpadeo, debe conectar a tierra el pin GPIO0 en el arranque. Para evitar el flujo de corriente sin restricciones a través de GPIO0 cuando está conectado a tierra, se recomienda conectar GPIO0 a tierra a través de una resistencia de baja resistencia de 300Ω a 470Ω (más sobre esto aquí). El pin RST como su nombre indica restablece (o reinicia) la MCU. Durante el funcionamiento normal, puede conectarse a VCC a través de una resistencia pull-up de 10K, pero debe conectarse a tierra para restablecer el microcontrolador. Si bien siempre es posible usar botones físicos para conectar a tierra los pines RST y GPIO0 (o incluso unir cables manualmente para simular un botón), es una experiencia mucho más agradable usar pines Raspberry Pi para establecer el voltaje alto y bajo en el RST y GPIO0 del módulo. patas. Además, entonces no hay necesidad de resistencias de 10K y 470Ω.

Ahora, siendo conscientes de las peculiaridades de los pines ESP-01, podemos empezar a conectar todo. Puede utilizar la siguiente tabla como referencia junto con el dibujo anterior:

ESP-01 Raspberry Pi

  • VCC (3,3 V) pin n. ° 1 (3,3 V)
  • Patilla GND # 6 (GND)
  • Pin # 10 de TXD (RXD / BCM 15)
  • Pin # 8 de RXD (TXD / BCM 14)
  • Clavija n. ° 1 de CH_PD (3,3 V)
  • Pin # 3 del RST (BCM 2)
  • GPIO 0 pin # 5 (BMC 5)

Conecte el pin VCC el último. La instancia en la que conectó el pin VCC de su módulo Wi-Fi se encenderá. Use screen o minicom para verificar si RPi y ESP8266 pueden comunicarse usando UART (nota: es posible que primero deba instalar screen o minicom, ya que parece que no están instalados en Raspbian de forma predeterminada).

Utilizando Screen Run:

$ sudo screen / dev / serial0 115200

Usando minicom run:

$ sudo minicom -b 115200 -o -D / dev / serial0

Nota: muchos recursos en línea sugieren conectarse a ESP8266 en / dev / ttyAMA0, pero esto no funciona con RPi 3 o posterior (incluido cero W) según la documentación de RPi. Conéctese a través de / dev / serial0 en su lugar o / dev / ttyS0.

Después de ingresar a la pantalla o minicom, use los comandos AT para comunicarse con ESP8266. Escriba AT, luego presione Entrar y luego presione Ctrl + J para enviar el comando. Deberías estar bien en respuesta. La lista de comandos AT disponibles se puede encontrar en espressiff.com o simplemente aquí.

Una vez que los dispositivos estén conectados físicamente y se comuniquen entre sí, podemos ponernos a programar los pines RPi GPIO y, finalmente, el propio ESP8266.

Paso 3: Configuración del software (Python para operar y Arduino IDE para programar)

PARTE 1. Usando Python para cambiar los modos ESP8266

Como se mencionó anteriormente, es conveniente usar los pines GPIO de RPI para cambiar los modos de operación del ESP8266. Escribí dos códigos Python básicos que ponen ESP8266 en modo regular o de programación.

Modo regular: para poner el microcontrolador en modo de operación regular, solo necesitamos encenderlo y conectar CH_PD a través de una resistencia pull-up a VCC, pero para cambiar el MCU de programación al modo normal, necesitamos reiniciarlo (piense en reiniciar). Para hacer eso en RPi, vamos a bajar brevemente el GPIO de RPi conectado al pin RST en ESP-01 (de forma predeterminada, el pin RPi que utilicé para restablecer está configurado en ALTO). ¿Cuán brevemente? Para mí esa es una pregunta especulativa. Puede probar diferentes intervalos de tiempo, pero descubrí que 200 - 500 ms funcionan bien. Escribe comentarios si tienes una mejor idea. Guarde su código como reset.py

#! / usr / bin / python

importar RPi. GPIO como tiempo de importación GPIO GPIO.setmode (GPIO. BOARD) # establece la identificación de GPIO por números de pin físicos resetPin = 3 # identifica el pin físico RPi conectado a ESP8266 RST pin GPIO.setup (resetPin, GPIO. OUT) # set reset pin como salida GPIO.output (resetPin, GPIO. LOW) # caída de voltaje en el pin RST time.sleep (.2) # esperar.2 s GPIO.output (resetPin, GPIO. HIGH) # restablecer el voltaje en el pin RST GPIO. cleanup () # restablecer pines en RPI para evitar futuras advertencias de tiempo de ejecución

  • Modo de programación: para poner el MCU en modo de programación, necesitamos encender el ESP8266 con GPIO0 conectado a tierra, o alternativamente restablecerlo y conectar a tierra GPIO0 mientras arranca (nuevamente, no conozco la duración exacta de las caídas de voltaje, así que no sea estrictamente guiado por valores usados). Guarde el código como flash.py o descárguelo a continuación. La sucesión de acciones es la siguiente:

    • tirar hacia abajo del pin RST
    • tire hacia abajo el pin GPIO0
    • levante el pin RST
    • levante el pin GPIO0

#! / usr / bin / python

importar RPi. GPIO como tiempo de importación GPIO GPIO.setmode (GPIO. BOARD) # establece la identificación GPIO por números de pin físicos resetPin = 3 # identifica el pin físico RPi conectado al pin ESP8266 RST pin flashPin = 5 # identifica el pin físico RPi conectado al pin ESP8266 GPIO0 GPIO.setup (resetPin, GPIO. OUT) # establecer el pin de reinicio como salida GPIO.setup (flashPin, GPIO. OUT) # establecer el pin flash como salida GPIO.output (resetPin, GPIO. LOW) # caída de voltaje en el tiempo del pin RST. sleep (.2) # la necesidad de esta espera es especulativa GPIO.output (flashPin, GPIO. LOW) # caída de voltaje en GPIO0 time.sleep (.2) # la necesidad de esta espera es especulativa GPIO.output (resetPin, GPIO. HIGH) # comience a arrancar ESP8266 time.sleep (.5) # espere a que ESP8266 arranque GPIO.ouput (flashPin. GPIO. HIGH) # restaure el voltaje en GPIO pinGPIO.cleanup () # restablezca los pines en el RPI para evitar futuras advertencias de tiempo de ejecución

En permisos de cambio de terminal:

$ sudo chmod + x flash.py

$ sudo chmod + x reset.py

A partir de ahora, siempre que necesite ingresar al modo de programación, ejecute en la terminal:

$ python /flash.py

después de cargar el código para ingresar al modo de operación normal, ejecute:

$ python /reset.py

En este punto, es posible que también desee actualizar el firmware ESP8266. Hay muchos tutoriales en línea sobre cómo hacer eso, por lo que no entraré en detalles sobre cómo hacerlo.

PARTE 2. Configuración de Arduino IDE

Si ya tiene Arduino IDE instalado, es posible que desee hojear la sección asegurándose de que su IDE esté listo para ESP8266.

En Rapberry Pi puede usar Arduino IDE para programar su ESP8266. Hay dos formas de instalar el IDE en RPi:

  • a través de la línea de comando desde repositorios usando apt-get install
  • descargar e instalar manualmente desde arduino.cc.

Sugiero encarecidamente seguir el último camino. La versión IDE de los repositorios parece estar obsoleta y seguramente tendrá que hacer más antes de estar listo para comenzar a programar ESP8266. Para evitar problemas, vaya a la página de descarga de Arduino.cc y descargue la versión ARM de Linux. A continuación, descomprima e instale: Si el nombre del archivo descargado se parece a esto arduino-X. Y. Z-linuxarm.tar.xz, en la carpeta de descarga ejecute:

$ tar -xvf arduino-X. Y. Z-linuxarm.tar.xz

Esto debería descomprimir el archivo en la carpeta arduino-X. Y. Z. Correr:

$ sudo./arduino-X. Y. Z/install.sh

Esto debería instalar el IDE. Una vez completada la instalación, inicie el IDE.

  • Desde el IDE de Arduino, vaya a Archivo> Preferencias. Busque "URL adicionales de Board Manager" en la parte inferior de la ventana de preferencias. Ingrese https://arduino.esp8266.com/stable/package_esp8266com_index.json en el campo "URL adicionales del administrador de la placa", haga clic en el botón "Aceptar".
  • Vaya a Herramientas> Tablero: XXX> Administrador de tableros. En la ventana use buscar o desplácese hacia abajo, seleccione el menú de la placa ESP8266 y haga clic en instalar. Espere a que se complete la instalación y cierre la ventana.
  • Vaya nuevamente a Herramientas> Tablero: XXX y busque tableros ESP8266. Elija el módulo ESP8266 genérico.

Ahora IDE está listo para programar ESP8266. Escriba o pegue el código deseado en la ventana IDE y guárdelo. Haga clic en Cargar. Desde la terminal, ejecute flash.py, esto debería poner su placa en modo de programación. Espere unos minutos para que el IDE termine de compilar y cargar (nota: ESP-01 generalmente viene con 2 LED, el LED azul parpadeará mientras se carga el código) y ejecute reset.py. Ahora su placa ESP-01 está lista para realizar tareas.

Recomendado: