ESP8266 y ESP32 son soluciones de desarrollo WiFi populares que se pueden programar de diversas formas utilizando diferentes lenguajes de programación. Los lenguajes comunes incluyen secuencias de comandos MicroPython, C, JavaScript y LUA. La elección de firmware y herramientas de software integradas permite programar ESP8266 y ESP32 en diferentes idiomas.
La versatilidad y flexibilidad para programar placas ESP con diferentes firmware, lenguajes de programación y herramientas de software hacen que estas placas sean tan populares. La variedad de firmware y lenguajes de programación también facilita diferentes niveles de funciones de software, soporte comunitario, módulos y herramientas.
Los desarrolladores de software integrado con diferentes experiencias de programación pueden elegir su firmware y lenguaje de programación preferidos para desarrollar proyectos de IoT con ESP8266. (Obtenga más información sobre la programación de placas ESP aquí ).
Una forma común de programar ESP8266 y ESP32 es utilizar C integrado a través de Arduino IDE o Visual Studio Code. Una ventaja de ser compatible con Arduino significa que hay muchas bibliotecas listas para usar y códigos fuente aportados por la comunidad para su reutilización en placas ESP. También es rápido porque no es necesario escribir código desde cero para interconectar la mayoría de los componentes y muchas tareas de programación se resuelven fácilmente.
Comencemos a programar placas ESP a través de Arduino IDE.
ESP8266 frente a ESP32
ESP8266 y ESP32 son placas de desarrollo de la misma familia. ESP32 es el sucesor de ESP8266 y superior a ESP8266 en muchos aspectos. Sin embargo, ambas placas tienen un controlador de 32 bits y funcionan a un voltaje de funcionamiento de 3,3 V (en comparación con los 5 V del Arduino). Ambos también carecen de hardware PWM.
Aquí están las diferencias:
ESP8266 tiene...
- Un Xtensa L106 de 32 bits de un solo núcleo que funciona a 80 MHz de reloj
- Sólo wifi
- Un canal de 20 MHz para WiFi (HT20)
- Dos puertos SPI, 1 puerto I2C, 2I2S y 2 puertos UART
- 17GPIO
- Un único ADC de 10 bits
- Ocho canales PWM de software
ESP32 tiene...
- Un Xtensa LX6 de doble núcleo de 32 bits que funciona a 160 ~ 240 MHz
- WiFi y Bluetooth de alta velocidad, incluidos 4.2 y Low Energy
- Un canal de 40 MHz para WiFi (HT40)
- Los pines sensibles al tacto y el sensor Hall incorporado te despiertan de un sueño profundo
- 512 bytes de memoria flash y 512 KB de SRAM
- Interfaz CAN 2.0, interfaz Ethernet MAC y sensor táctil y efecto Hall
- 34GPIO
- Los GPIO se multiplexan con SPI, I2C y UART (si una función no está definida en el código, los pines predeterminados son GPIO).
- 18 pines analógicos con un canal ADC de 12 bits en cada pin
- 16 canales de software PWM
A pesar de las diferencias entre las dos placas, el IDE de Arduino funciona casi de manera idéntica a cualquiera de ellas. Dado que el ESP8266 es más antiguo que el ESP32, tiene mayor soporte de biblioteca, aunque no es difícil lograr que la mayoría de las bibliotecas funcionen con el ESP32. Es más potente y versátil.
Versiones ESP8266
ESP8266 y ESP32 pueden ser módulos independientes o placas de conexión con chips e interfaces adicionales. Normalmente se utilizan como placas de conexión para diseñar aplicaciones integradas y rara vez como chips simples.
Muchas placas de conexión ESP8266 se dividen en dos categorías: placas de desarrollo con interfaz USB o sin interfaz USB. Hay varios módulos independientes disponibles en la serie ESP-NN (ESP01 a ESP14) del proveedor AI-Thinkers. Otro módulo independiente es el ESP-WROOM-02 de Espressif. Otros proveedores incluyen Wireless-tag, Olimex, Smarttime y Qilianer.
Los módulos independientes sirven como adaptadores de Wi-Fi o placas de desarrollo de microcontroladores habilitados para Wi-Fi. Los módulos varían en tamaño, pines rotos, características expuestas en el chip, tipo de antena y memoria flash.
Un SoC ESP8266 básico requiere una memoria flash externa, circuitos de reinicio y programación, circuitos de habilitación de chip, una fuente de alimentación reguladora de voltaje 3.3 y un adaptador USB a serie. Los recursos necesarios pueden integrarse en un módulo o proporcionarse externamente.
Las placas de desarrollo basadas en ESP8266 están equipadas con todos los circuitos necesarios con o sin interfaz USB para programación. Algunas placas de desarrollo ESP8266 populares están disponibles en Adafruit, SparkFun, NodeMCU y AI Thinkers.
Las categorías ESP8266...
1. Placas de desarrollo con interfaz USB : dispone de una interfaz USB para la programación con todos los circuitos necesarios, no requiriendo un circuito externo para su configuración (como máximo puede ser necesario soldar los pines del header). Los ejemplos incluyen SparkFun ESP8266 Thing, Adafruit Feather HUZZA, SparkFun Blynk Board y ciertas placas AI Thinker ESP-NN.
Cuando estas tarjetas se conectan a una computadora de escritorio mediante un cable USB, aparecen en el administrador de dispositivos de una PC con Windows en el lsusb de un sistema Linux. Disponen de un regulador de 3,3V y se pueden programar directamente a través de la interfaz USB.
2. Placas de desarrollo sin interfaz USB : requieren un adaptador USB a serie para programación y un circuito externo para habilitar el chip y agregar botones de reinicio y programación. Algunas placas tienen un regulador integrado de 3,3V, pero no todas.
El kit ESP-12E o ESP-12E NodeMCU es la placa de conexión ESP8266 más popular.
Configuración de pines ESP8266
ESP-01, el kit ESP8266-12E NodeMCU y Wemos D1 Mini son placas de conexión ESP8266 de uso común.
El ESP-01 tiene el siguiente diagrama de pines...
El kit ESP8266-12E NodeMCU tiene este diagrama de pines...
Wemos D1 Mini tiene el siguiente diagrama de pines...
Placas ESP32
Las placas de conexión ESP32 de uso común incluyen ESP32 DevKit, ESP32 DOIT DEVKIT V1, ESP32 Thing, HUZZAH32, ESP-32S NodeMCU, WEMOS OLED y WEMOS LOLIN32.
Configuración de pines ESP32
ESP32 DOIT DEVKIT V1 es actualmente la placa ESP32 más popular. Viene en dos versiones, una de 30 pines y otra de 36 pines.
La versión de 30 pines tiene este diagrama de pines...
La versión de 36 pines tiene el siguiente diagrama de pines...
Instalación del IDE de Arduino
El IDE de Arduino se puede descargar desde aquí . Arduino IDE 2.0.0 es la última versión. La versión heredada de Arduino IDE 1.8.19 también se puede instalar según sus preferencias. Complete el proceso de instalación según las instrucciones.
Instalación del complemento ESP32 en el IDE de Arduino
ESP-32 es la placa ESP más recomendada para explorar. ESP-32 tiene un procesador potente y una mejor velocidad de reloj. Ofrece WiFi y Bluetooth y tiene más GPIO y periféricos que el ESP8266.
Para trabajar con ESP32 en Arduino IDE, instale su complemento. Vaya a Archivo->Preferencias.
Agregue la siguiente URL al campo "URL adicionales del administrador del tablero".
o
Haga clic en Aceptar. Luego navegue hasta Herramientas->Tablero->Administrador de tableros.
Busque ESP32 e instálelo en Expressif.
Eso es todo. El complemento ESP32 se instalará en el IDE de Arduino en segundos.
Instalación del complemento ESP8266 en el IDE de Arduino
ESP8266 se recomienda para muchos proyectos de hogares inteligentes y IoT. Normalmente, el ESP8266 es suficiente si un proyecto sólo requiere una red WiFi y no implica muchas tareas integradas urgentes. Dado que el ESP8266 cuesta casi la mitad que el ESP32, producir un prototipo con el ESP8266 podría ser mucho más rentable que con el ESP32.
Para instalar el complemento ESP8266 en el IDE de Arduino, navegue hasta Archivo->Preferencias. Agregue la siguiente URL al campo "URL adicionales del administrador del tablero".
Puede agregar soporte para ESP32 y ESP8266 agregando una lista de URL separadas por comas de la siguiente manera...
,
o
,
Haga clic en Aceptar. Luego navegue hasta Herramientas->Tablero->Administrador de tableros. Busque ESP8266 e instálelo a través de la comunidad ESP8266.
Eso es todo. El complemento ESP8266 se instalará en unos segundos en el IDE de Arduino.
Instalación de prueba en ESP8266
Para probar la instalación en el ESP8266, puede utilizar el kit ESP-12E NodeMCU y conectarlo a la computadora mediante un cable Micro-USB. Navegue a Herramientas->Placa->Placas ESP8266. Seleccione NodeMCU 1.0 o NodeMCU 0.9 según su placa ESP12.
Luego seleccione el puerto navegando a Herramientas->Puerto. Copie y pegue el siguiente código en el editor de código...
pasador interior = 2;
configuración vacía {
pinMode(pin, SALIDA);
}
bucle vacío {
escritura digital (pin, ALTO);
retraso(1000);
escritura digital (pin, BAJO);
retraso(1000);
}
Haga clic en el botón "Cargar" y espere hasta que aparezca el mensaje "Carga completa" en la esquina inferior izquierda. Si el código se carga correctamente, el LED de la placa ESP8266 comenzará a parpadear.
Instalación de prueba en ESP32
Para probar el ESP32 en el IDE de Arduino, conecte la placa a su computadora mediante un cable Micro-USB. Vaya a Herramientas-Tablero->ESP32 Arduino. Seleccione DOIT ESP32 DEVKIT V1 o su placa ESP32 específica.
Luego seleccione el puerto.
Abra un boceto de ejemplo navegando a Archivo->Ejemplos->WiFi->WiFiScan. El boceto se abrirá en una nueva ventana. Presione el botón cargar y espere a que el código se compile y cargue.
Abra el monitor serie Arduino IDE a una velocidad de 115.200 bps. Si el boceto se carga correctamente, verá un resultado de verificación similar en Serial Monitor.
Solucion de problemas
Al enviar el boceto a ESP8266 o ESP32, puede encontrar un mensaje de error como "esptool.FatalError: No se pudo conectar a ESP8266: Se agotó el tiempo de espera para el encabezado del paquete" o "Se produjo un error grave: No se pudo conectar a ESP32: Se agotó el límite de tiempo de espera... Conectando…”.
Cualquiera de los mensajes significa que el ESP8266/ESP32 no está en modo flash o de carga adecuado. Para resolver esto, presione y mantenga presionado el botón de inicio/flash en el ESP8266/ESP32 después de seleccionar la placa y el puerto, y luego presione el botón de carga en el IDE de Arduino para cargar el boceto.
Después de ver el mensaje "Conectando..." en el IDE de Arduino, suelte el botón de arranque/flash en el ESP8266/ESP32. Después de que el boceto se haya cargado correctamente en el ESP8266/ESP32, presione el botón de activación en el ESP8266/ESP32. Esto reiniciará la placa ESP8266/ESP32 y ejecutará el boceto cargado.
Esto debe repetirse cada vez que se carga un nuevo boceto en el ESP8266 o ESP32. Se puede evitar repetir esta medida de solución de problemas en el ESP32 pirateando la placa. El ESP32 se puede poner en modo flash/carga automáticamente.
Para hacer esto, debe conectar un capacitor electrolítico de 10 uF entre el pin de habilitación y tierra. Dado que los pines de habilitación y GND están lejos uno del otro en la placa de interrupción, el capacitor se puede conectar entre el pin de habilitación del chip ESP32 y tierra, como se muestra en la imagen a continuación.
Puede probar la configuración en la placa antes de soldar el condensador a la placa como se muestra a continuación.
Asegúrese de que el capacitor esté soldado solo al pin de habilitación y a tierra del chip. No debe soldarse a nada cerca de estos pines. Una vez completado, no necesitará mantener presionado el botón de inicio/flash en el tablero cuando envíe bocetos al ESP32. ESP32 parpadeará y se cargará automáticamente.