sábado, 2 de abril de 2016

¿Qué diferencias hay entre Arduino y el ESP8266?





Hace tiempo os presentamos la principales diferencias entre los tipos de placas Arduino más habituales, que a modo repaso os las resumimos a continuación:

Característica de Arduino
UNO
Mega 2560
Leonardo
DUE
Tipo de microcontrolador
Atmega 328
Atmega 2560
Atmega 32U4
AT91SAM3X8E
Velocidad de reloj
16 MHz
16 MHz
16 MHz
84 MHz
Pines digitales de E/S
14
54
20
54
Entradas analógicas
6
16
12
12
Salidas analógicas
0
0
0
2 (DAC)
Memoria de programa (Flash)
32 Kb
256 Kb
32 Kb
512 Kb
Memoria de datos (SRAM)
2 Kb
8 Kb
2.5 Kb
96 Kb
Memoria auxiliar (EEPROM)
1 Kb
4 Kb
1 Kb
0 Kb

En otra entrada os presentábamos las limitaciones que podíamos encontrar entre ellas en términos de la resolución en voltaje que sus entradas analógicas podían presentar. En esta ocasión os hemos remarcado los datos complementarios a la tabla anterior que nos van a permitir comparar con el módulo ESP8266




Lo primero que vemos que para tener frecuencias de reloj más allá de los 16MHz, debemos abandonar la familia  de microcontroladores AVR y optar por las ARM de 32 bits, en la que no solo mejoramos la velocidad de reloj, sino también la potencia del micro, que pasaría de ser capaz de procesar instrucciones de 8bits a procesar instrucciones de 32bits. Lo que viene a significar más velocidad y más potencia.

Vemos también que además de ello,  el Arduino DUE, ofrece 12bits de resolución en los pines analógicos, será capaz de detectar variaciones de voltaje del orden de 0.8 milivoltios, cosa que con los de 10 bits del resto de la familia Arduino, solo podríamos conseguir detectar fluctuaciones mayores de 4.9 milivoltios.

Pero lo que también vemos es que independientemente de que hayamos mejorado la potencia, la velocidad y la resolución, tenemos un problemilla con su capacidad de conexión a Internet. Algo para lo que tendríamos que requerir hardware adicional. Por ejemplo un Arduino WiFi Shield.


Pues bien es a partir de este punto donde nuestro módulo ESP8266 marca su diferencia.

Aunque parezca un simple circuito integrado, el  ESP8266, es lo que se conoce como un SoC, System on Chip. Un SoC embute todo los circuitos electrónicos requeridos para correr una función completa en un único chip. Por ejemplo, un SoC de un teléfono móvil puede incluir gráficos, audio, video y procesamiento de imágenes de forma compacta un un solo circuito. De este modo, se permite miniaturizar más los terminales, simplificar los diseños y reducir los consumos.


En nuestro caso, podemos ver perfectamente todas las funciones que implementa nuestro ESP8266, echándole un vistazo a la siguiente figura


Donde podemos identificar, que a diferencia de las placas Arduino que presentamos anteriormente, el ESP8266, incluye su propio sistema de recepción y transmisión WiFi, su CPU, su bloque de memoria, así como el resto de bloques asociados a comunicaciones y gestión de GPIOs.

Si esto mismo lo quisiéramos implementar en nuestro Arduino, deberíamos instalarle un shield específico, y aunque las características pudieran parecernos similares, hemos reseñado claramente la ventaja que ESP8266 nos aportaría.


En definitiva la solución Arduino, nos costaría unos 100 euros comparados con los escasos menos de 5 euros de la opción ESP8266.




No por nada, Arduino ha diseñado una nueva solución integrada y compacta con características parecidas. Hablamos del MKR1000.


En próximas entradas os compararemos ambas soluciones.

Y ya sabéis, si tenéis alguna sugerencia o duda, no tenéis más que mandarnos un correo a
e intentaremos responder a vuestra pregunta lo antes que podamos.


2 comentarios:

  1. Tengo un node mcu 8266 12e chino, y tengo muchos problemas con la estabilidad de el microcontrolador, hay alguna manera de no tener que resetearlo a cada momento? He leído que es un problema común.

    ResponderEliminar
    Respuestas
    1. Lo que comentas es bastante común esa versión del ESP8266, y hay dos causas que podrían estar en el origen de estos problemas:
      a.- problemas con la alimentación, o
      b.- problemas con el chip.

      Lo habitual es que sea lo primero, y se hace más evidente cuando utilizas el ESP8266 con varios sensores consumiendo potencia. Así que para evaluar si este es o no tu caso, lo recomendable es:
      a.- Colocar un condensador grande de unos 470uF entre la alimentación y la tierra en tu protoboard. Esto te permitirá tener un colchón de potencia puntual por si todo tu sistema presentara picos de consumo.
      b.- Colocar un condensador de desacoplo entre los pines de alimentación y la tierra de tu ESP8266, tan cerca como te sea físicamente posible colocarlo. En los condensadores de desacoplo la distancia es vital. Distancias grandes provocan inductancias parásitas que generan un fenómeno indeseado llamado "ringing". No te preocupes si te resulta estéticamente feo, lo importante es que esté muy muy cerca al Vcc y al GND de tu módulo.

      Si este parche no te funciona, que normalmente sí lo hace, entonces es más probable que tengas el chip defectuoso. Si fuera así, es casi mejor cambiar el módulo entero, porque a menos que te apetezca el reto, son tan baratos, que la aventura de reemplazar el chip defectuoso definitivamente te costará más que sustituir el módulo completo.

      Esperamos haberte podido ayudar.

      Eliminar