ESP8266 es un microcontrolador del fabricante chino Espressif Systems con una interfaz Wi-Fi . Además de Wi-Fi, el microcontrolador se distingue por la ausencia [1] de memoria flash en el SoC, los programas de usuario se ejecutan desde una memoria flash externa con una interfaz SPI .
El microcontrolador atrajo la atención en 2014 debido al lanzamiento de los primeros productos basados en él a un precio inusualmente bajo.
En la primavera de 2016, comenzó la producción del ESP8285, que combina el ESP8266 y una memoria flash de 1 MB. En el otoño de 2015, Espressif presentó el desarrollo de la línea: el chip ESP32 y los módulos basados en él [2] .
El microcontrolador no tiene memoria no volátil de usuario en el chip. El programa se ejecuta desde una ROM SPI externa cargando dinámicamente las secciones requeridas del programa en la caché de instrucciones. La carga está basada en hardware, transparente para el programador. Se admiten hasta 16 MB de memoria de programa externa. Interfaz SPI estándar, doble o cuádruple disponible.
El fabricante no proporciona documentación para los periféricos internos del microcontrolador. En cambio, proporciona un conjunto de bibliotecas a través de cuya API el programador obtiene acceso a los periféricos. Dado que estas bibliotecas utilizan de forma intensiva la RAM del controlador, el fabricante no indica en los documentos la cantidad exacta de RAM en el chip, sino solo una estimación aproximada de la cantidad de RAM que quedará para el usuario después de ensamblar todas las bibliotecas: alrededor de 50 kB. Los entusiastas que han examinado las bibliotecas ESP8266 sugieren que contiene 32 KB de caché de instrucciones y 80 KB de RAM de datos.
Los parámetros eléctricos, pinouts, diagramas de cableado se pueden encontrar en los documentos "0A-ESP8266EX_Datasheet" y "0B-ESP8266__System_Description" del Espressif SDK [4] .
La fuente del programa ejecutable ESP8266 se establece por el estado de los puertos GPIO0, GPIO2 y GPIO15 al final de la señal de reinicio (es decir, encendido). Dos modos son los más interesantes: ejecución de código desde UART (GPIO0 = 0, GPIO2 = 1 y GPIO15 = 0) y desde ROM externa (GPIO0 = 1, GPIO2 = 1 y GPIO15 = 0). El modo de ejecución de código del UART se usa para flashear la memoria flash conectada, y el segundo modo es un trabajador normal.
En la primavera de 2016, Espressif lanzó la producción en masa del chip ESP8285. Ahora, el mismo chip contiene tanto el SoC ESP8266 como 1 MB de memoria flash [5] . La documentación del chip se puede encontrar en el documento "0A-ESP8285__Datasheet".
En el otoño de 2015, Espressif presentó el desarrollo de la línea: el chip ESP32. A principios de 2016, las muestras de ingeniería del nuevo chip se pusieron a disposición de los socios de la empresa para que las probaran; en septiembre de 2016, ESP32 estuvo disponible como un producto completo [6] [7] .
Las herramientas de desarrollo de software (kit de desarrollo de software, SDK) consisten en:
Espressif distribuye gratuitamente su kit de desarrollador. Este paquete incluye el compilador GCC, las bibliotecas Espressif y la utilidad de arranque XTCOM. Las bibliotecas se suministran como bibliotecas compiladas, sin código fuente. Espressif admite dos versiones del SDK, una basada en RTOS y otra basada en devoluciones de llamadas [4] .
Además del SDK oficial, hay varios proyectos de SDK alternativos [8] . Estos SDK utilizan las bibliotecas de Espressif u ofrecen su propio equivalente de ingeniería inversa de las bibliotecas de Espressif.
Para simplificar el uso del microcontrolador en proyectos típicos, es posible usar archivos binarios listos para usar adecuados para cargar directamente en la ROM de los módulos (el llamado firmware ). El firmware listo para usar se puede dividir en varios grupos según el concepto de su uso:
La fuente del programa ejecutable ESP8266 se establece por el estado de los puertos GPIO0, GPIO2 y GPIO15 al final de la señal de reinicio (es decir, encendido). Dos modos son los más interesantes: ejecución de código desde UART (GPIO0 = 0, GPIO2 = 1, GPIO15 = 0) y desde ROM externa (GPIO0 = 1, GPIO2 = 1, GPIO15 = 0). El modo de ejecución de código del UART se utiliza para flashear la memoria flash, y el segundo modo es un trabajador normal.
Hay muchas utilidades para gestionar el proceso de actualización del firmware:
Un flash SPI externo debe tener un encabezado específico para la ejecución correcta del código. La estructura del encabezado se especifica en la documentación de la utilidad XTCOM. En ruso está aquí . Las utilidades de arranque generalmente saben cómo agregarlo al firmware.
Actualización a través de Wi-FiEs posible actualizar el firmware de un dispositivo en funcionamiento a través de Wi-Fi. Para ello, la memoria flash de los programas se divide en varias partes. Uno está asignado al administrador de firmware, los otros dos son para el programa de usuario. Cuando quieren actualizar el firmware, la nueva imagen se carga en una parte libre de la memoria flash. Después de una verificación exhaustiva de la integridad de la imagen recién descargada, el administrador de firmware cambia la bandera, luego de lo cual se libera el área de memoria con el firmware anterior y el código se ejecuta desde el área nueva. En consecuencia, la próxima vez, la actualización se cargará en un área libre de la memoria. Consulte el documento "99C-ESP8266__OTA_Upgrade" del SDK de Espressif [4] para obtener más detalles .
Una aplicación típica del ESP8266 como base de hardware del Internet de las cosas suele implicar la instalación en hogares u oficinas. En este caso, la conexión de red se realiza a una red local de hogar/oficina con acceso a Internet a través de un enrutador . El usuario del dispositivo puede controlarlo mediante una tableta o computadora a través de su red local o de forma remota a través de Internet.
ESP8266 puede funcionar como punto de acceso y estación final. Durante el funcionamiento normal de LAN, el ESP8266 se configura como una estación final. Para ello, el dispositivo necesita configurar el SSID de la red Wi-Fi y, en redes cerradas, la contraseña de acceso. Para la configuración inicial de estos parámetros, el modo de punto de acceso es conveniente. En el modo de punto de acceso, el dispositivo es visible durante una búsqueda de red estándar en tabletas y computadoras. Queda por conectarse al dispositivo, abrir la página HTML de configuración y establecer los parámetros de red, después de lo cual el dispositivo normalmente se conectará a la red local en el modo de estación final.
En el caso de uso puramente local, es posible dejar el dispositivo siempre en modo punto de acceso, lo que reduce el esfuerzo del usuario para configurarlo.
Después de conectarse a una red Wi-Fi, el dispositivo debería recibir los parámetros IP de la red local. Estos parámetros se pueden configurar manualmente junto con la configuración de Wi-Fi, o puede activar cualquier servicio para configurar automáticamente los parámetros de IP (por ejemplo, DHCP ).
Después de configurar los parámetros IP, generalmente se accede al servidor del dispositivo en la red local por su dirección IP, nombre de red (si los nombres son compatibles con alguna tecnología, por ejemplo, NBNS ) o servicio (si es compatible con la búsqueda automática de servicios , por ejemplo ). , a través del protocolo SSDP ).
A menudo se requiere acceso al dispositivo desde Internet. Por ejemplo, un usuario consulta remotamente el estado de su “ hogar inteligente ” desde un teléfono móvil accediendo directamente al dispositivo. En este caso, el dispositivo funciona en modo servidor, al que accede un cliente externo.
Como regla general, un dispositivo basado en ESP8266 se encuentra en la red local de una oficina o un hogar. El acceso a Internet lo proporciona un enrutador conectado por un lado a la red local y por el otro a la red del proveedor de Internet. El proveedor asigna su dirección IP estática o dinámica al enrutador, y el enrutador traduce las direcciones de la red local a la red del proveedor. De forma predeterminada, las reglas de esta traducción brindan visibilidad gratuita de las direcciones de Internet desde la red local, pero no permiten el acceso a las direcciones locales desde Internet. Hay varias formas de sortear esta limitación.
Configuración de NATLa mayoría de los enrutadores modernos le permiten establecer reglas adicionales para traducir direcciones de red entre las redes locales y globales. Por regla general, se utilizan tecnologías de servidor virtual o DMZ para esto . Ambas tecnologías le permiten acceder a un servidor en la red local desde la red global, conociendo solo la dirección IP asignada al enrutador por el proveedor. En el caso de una dirección IP de enrutador estática, a menudo puede ser una solución satisfactoria para un círculo limitado de usuarios del sistema. Sin embargo, este enfoque no siempre es conveniente: debe configurar manualmente el enrutador y averiguar la dirección IP del enrutador, que puede cambiar regularmente. Es relativamente fácil resolver el problema de una dirección IP desconocida utilizando el mecanismo DDNS .
DDNSPara acceder al servidor del dispositivo, el usuario final debe conocer la dirección IP donde se encuentra el dispositivo. Sin embargo, no siempre es posible obtener una dirección IP estática para un dispositivo de un proveedor de Internet y es un inconveniente utilizar dicha dirección. Para resolver este problema, se crearon servicios especiales de Internet bajo el nombre general DNS dinámico . Estos servicios funcionan como servidores especiales con nombres fijos en Internet. El desarrollador configura su propia cuenta con un nombre único en dicho servicio. Prescribe los parámetros de esta cuenta en el dispositivo. Un dispositivo en modo cliente contacta periódicamente al servidor de servicio, diciéndole el nombre de su cuenta y su dirección IP actual. El usuario final en Internet accede al mismo servicio y recibe de él los parámetros IP actuales del dispositivo. En este caso, el dispositivo es visible en la red con un nombre de dominio de tercer nivel, como esp8266.ddns.org.
El principal problema de los servicios DDNS es garantizar la existencia de un servicio en particular. Generalmente, sólo se garantiza un servicio comercial cuando se cobra una tarifa por su uso.
Servicios IoT externosCon el fin de aliviar el problema de hacer que el dispositivo esté disponible en Internet y hacer que la instalación del dispositivo sea fácil para el usuario, se han desarrollado una serie de soluciones. El mecanismo de estas soluciones se basa en la existencia de un servidor especial en Internet, al que se pueden conectar tanto un dispositivo IoT como la tableta/ordenador de un usuario. Al mismo tiempo, el dispositivo funciona en modo cliente, no se requieren configuraciones especiales del enrutador ni habilidades especiales por parte del instalador y el usuario del dispositivo. El intercambio de datos con el dispositivo se lleva a cabo a través de este servicio especial, cuyos parámetros debe ingresar el desarrollador en el dispositivo. La difusión del uso de dichos servicios está restringida por la necesidad de mantener su servicio en Internet durante mucho tiempo o utilizar los servicios de otras personas con perspectivas poco claras de la existencia continua de funciones gratuitas o el pago regular de opciones comerciales.
La aplicación principal del ESP8266 es controlar una variedad de electrodomésticos a través de redes inalámbricas. El concepto de dicho control a menudo se denomina " Internet de las cosas " (IoT, "Internet de las cosas"). El nivel superior de IoT está representado por una variedad de aplicaciones para plataformas populares (Android, iOS, Windows, ...). Estas aplicaciones permiten al desarrollador de instrumentos adaptar la aplicación para controlar su instrumento y proporcionar al usuario una solución completa. Hay varias implementaciones populares del concepto IoT en términos de comunicación de red:
Interesantes proyectos de software de primer nivel con soluciones basadas en ESP8266:
Los primeros y más populares módulos integrados [21] basados en el ESP8266 fueron productos de la empresa china AI-Thinker [22] . Por regla general, estos módulos salen a la venta con firmware que admite comandos AT . Sin embargo, la empresa tiene su propio firmware para la aplicación IoT, algunos módulos pueden venir con él. Desafortunadamente, la compañía solo admite chino, lo que dificulta el uso de su firmware IoT y aplicaciones de Android para la automatización amateur.
Inicialmente, los módulos se suministraron con memoria Flash de 512 kB. Más tarde, el firmware oficial creció y ya no cabe en medio megabyte. Por lo tanto, hoy en día la mayoría de los módulos vienen con memoria Flash de 4 MB.
Módulos pensadores de IANombre | Puertos disponibles | Paso del pasador, mm | conector | Indicación | Antena | Pantalla | Dimensiones, mm | notas |
---|---|---|---|---|---|---|---|---|
ESP-01 | 6 | 2.54 | DIL 2×4 | Sí | traza de placa de circuito impreso | No | 14,3 × 24,8 | GPIO15 (RTS) en cortocircuito a común, no se puede configurar para salida o control de flujo. |
ESP-02 | 6 | 2.54 | 2×4 almenado | No | Conector U-FL | No | 14,2 × 14,2 | |
ESP-03 | diez | 2.0 | 2×7 almenado | No | Cerámico | No | 17,3 × 12,1 | |
ESP-04 | diez | 2.0 | 2×4 almenado | No | Ninguna | No | 14,7 × 12,1 | |
ESP-05 | 3 | 2.54 | 1×5 SIL | No | Conector U-FL | No | 14,2 × 14,2 | |
ESP-06 | once | - | 4×3 dados | No | Ninguna | Sí | 14,2 × 14,7 | No aprobado por la FCC |
ESP-07 | catorce | 2.0 | 2×8 almenado | Sí | Cerámica + conector U-FL | Sí | 20.0×16.0 | No aprobado por la FCC |
ESP-08 | diez | 2.0 | 2×7 almenado | No | Ninguna | Sí | 17.0×16.0 | No aprobado por la FCC |
ESP-09 | diez | - | 4×3 dados | No | Ninguna | No | 10,0 × 10,0 | |
ESP-10 | 3 | 2.54 | 1×5 almenado | No | Ninguna | No | 14,2 × 10,0 | |
ESP-11 | 6 | 1.27 | 1 × 8 almenado | No | Cerámico | No | 17,3 × 12,1 | |
ESP-12 | catorce | 2.0 | 2×8 almenado | Sí | traza de placa de circuito impreso | Sí | 24.0×16.0 | Aprobado por FCC y CE [23] |
ESP-12-E | veinte | 2.0 | 2×8 almenado | Sí | traza de placa de circuito impreso | Sí | 24.0×16.0 | |
ESP-12-F | veinte | 2.0 | 2×8 almenado | Sí | traza de placa de circuito impreso | Sí | 24.0×16.0 | Aprobado por FCC y CE. Rendimiento mejorado de la antena. Flash de 4 MB |
ESP-13 | dieciséis | 0.8 | 2×9 almenado | No | traza de placa de circuito impreso | Sí | 18,0 x 20,0 | Marcado como ″FCC″. El módulo blindado se coloca de lado, en comparación con los módulos ESP-12. |
En la tabla, SIL y DIL indican tiras de clavijas montadas. Almenado: metalización a lo largo del borde del tablero para el montaje en superficie del módulo. Dados: almohadillas debajo del módulo, montaje al estilo de las cajas BGA.
Módulos de otros fabricantesNombre | Puertos disponibles | Paso del pasador, mm | conector | Indicación | Antena | Pantalla | Dimensiones, mm | notas |
---|---|---|---|---|---|---|---|---|
Olimex MOD-WIFI-ESP8266 [24] | 2 | 2.54 | Módulo UEXT | Sí | traza de placa de circuito impreso | No | desconocido | |
Olimex MOD-WIFI-ESP8266-DEV [25] | veinte | 2.54 | 2×11 DIL + almenado | Sí | traza de placa de circuito impreso | No | desconocido | |
Espressif Espressif WROOM-02 [26] | Dieciocho | 2.54 | DIL 2×9 | No | traza de placa de circuito impreso | Sí | 18×29 | Aprobado por la FCC |
SparkFun ESP8266 Cosa [27] WRL-13231 | 12 | 2.54 | 2×10 DIL | Sí | Rastreo de PCB + enchufe U.FL | No | 58x26 | Cargador de batería de iones de litio USB |
ESP-ADC en circuito [28] | Dieciocho | 2.54 | 2x9 DIL | No | Zócalo U.FL | No | 22,9x14,9 | ESP8266EX |
Casi simultáneamente con el ESP8266, apareció toda una línea de soluciones similares de otros fabricantes. Todos utilizan una arquitectura de doble chip con memoria de programa en SPI Flash.
Los entusiastas hicieron un transmisor de televisión con un modulador para el tercer canal de televisión en la interfaz I2S del chip ESP8266 . Esto no requirió ninguna tubería de hardware adicional además de la antena transmisora. Al mismo tiempo, la funcionalidad Wi-Fi se conserva por completo.
Microcontroladores | ||||||||
---|---|---|---|---|---|---|---|---|
Arquitectura |
| |||||||
Fabricantes |
| |||||||
Componentes | ||||||||
Periferia | ||||||||
Interfaces | ||||||||
sistema operativo | ||||||||
Programación |
|
RISC | Arquitecturas de procesador basadas en tecnologías|
---|---|