Arduino Mega + ESP8266 en un único dispositivo


Hoy vamos a ver un dispositivo interesante, un Mega R3 ATmega2560 y WiFi ESP8266 con memoria de 32Mb, en una única placa de desarrollo.

El ESP8266 es uno de los procesadores más populares y la opción más sencilla para conseguir conectividad WiFi en nuestros proyecto. Desde su apareción tanto el, como su hermano mayor el ESP32 han conseguido una gran popularidad.

El ESP8266 incluye procesador de 80Mhz y 4MB de Flash. Sin embargo, su mayor defecto es la escasez de pines. Si tenemos en cuenta los que no son usables por estar comprometidos con otros usos, nos quedan únicamente 5 pines realmente disponibles para usar.

Por contra, el Mega dispone de una cantidad ingente de pines, proporcionando 54 GPIO, 16 entradas analógicas, 14 salidas PWM y 4 UART y 256kB memoria.

Anuncio:

Tener estos dos MCU en una misma placa nos permite tener disponibles la gran cantidad de pines que nos proporciona un Arduino mega, a la vez que la conectividad WiFi y la potencia de cálculo del ESP8266.

En esta placa, ambos procesadores puede funcionar juntos o por separado. Pueden comunicarse entre ellos o con el USB. Para ello a bordo tienen el convertidor de serie USB CH340G.

La configuración de la comunicación UART de ambos procesadores es muy sencilla. Para ello se dispone de unos DIP y un switch integrados en la placa, según la siguiente tabla.

Conexión Pin
1 2 3 4 5 6 7
ATmega2560 <-> ESP8266 ON ON OFF OFF OFF OFF OFF
USB <-> ATmega2560 OFF OFF ON ON OFF OFF OFF
USB <-> ESP8266 (Actualiza firmware) OFF OFF OFF OFF ON ON ON
USB <-> ESP8266 (Comunicación) OFF OFF OFF OFF ON ON OFF
Todos independientes OFF OFF OFF OFF OFF OFF OFF

Más, un modo adicional en el que interviene un switch en la placa.

Conexión 1 2 3 4 5 6 7 Switch2
USB <-> ATmega2560 <-> ESP8266 ON ON ON ON OFF OFF OFF A RXD3 / TXD3

En conclusión, una placa muy interesante que nos permite juntar lo mejor de dos mundos, y que podemos encontrar en vendedores de eBay o AliExpress por unos 11€.

Anuncio:

Previous Cómo usar OpenCV en .NET con OpenCVSharp
Next Cómo y por qué usar clases abstrastas en Arduino