#4 Curso IoT con Arduino y ESP8266 WiFi: Modulo WiFi ESP8266 (1)

Continuación de la entrada anterior: #3 Curso IoT con Arduino y ESP8266 WiFi: Programación Arduino Pro Mini

5.1) Descripción del modulo

Hasta hace no mucho incluir conectividad WiFi en Arduino salía bastante caro, en torno a los 40€, además de haber pocas opciones para escoger. Sin embargo en la actualidad los módulos han bajado enormemente de precio, en este curso veremos cómo hacer uso del módulo WiFi ESP8266 en su versión de placa 07.

Este módulo WiFi podemos encontrarlo con multitud de formas, esto depende de si el módulo incluye o no antena interna, o un conector para antena externa, o pines o pads para su conexión, o de si incluye conexiones GPIO (pines de entrada y salida propios).

esp8266_models

En total a día de hoy hay hasta 11 modelos distintos, todos ellos cuentan con el mismo SOC encargado de las comunicaciones tanto inalámbricas como Serial. Además del SOC también hay un segundo chip de memoria FLASH de 512KiB o 1MiB, en donde se guarda el firmware, las configuraciones y el código de programación.

Y es que este módulo en realidad es un microcontrolador completo con su memoria, sus pines de entrada y salida, sus comunicaciones Serial, I2C, ISP, WiFi, etc. De hecho este módulo puede ser programado y usado sin necesidad de un Arduino, podríamos conectarle algunos de los sensores que veremos y hacer que tome mediciones y que las mande a algún servidor.

Es por esto y por su precio por lo que este módulo se ha vuelto tan famoso, si te interesa puedes obtener más información en la siguiente página: www.esp8266.com

Por ahora nosotros nos centraremos en usar el ESP8266 como un “simple” módulo WiFi para que nuestro Arduino se comunique con él mediante comandos AT para de este modo configurar el módulo, enviar datos a un servidor o recibir también su respuesta.

 


5.2) Características técnicas y requisitos para su uso

Aun siendo un módulo económico cuenta con un gran potencial, prueba de ello son sus características técnicas en las que podemos apreciar como soporta los estándares WiFi recientes, o una gran cantidad de protocolos de comunicación por cable.

  • Frecuencia de funcionamiento: 2.4Ghz
  • Estándares WiFi soportados: 802.11 b/g/n
  • Protocolos de cifrado soportados: WPA/WPA2
  • Potencia de salida: +19.5dBm en modo 802.11b
  • Wi-Fi Direct (p2p), Soft Access Point
  • Integra pila de protocolos TCP/IP v4
  • Procesador integrado de 32 bits, puede ser utilizado como procesador de aplicaciones
  • Conexiones SDIO 2.0, SPI, UART, I2C
  • Conversor de analógico a digital con resolución de 10-bit
  • Sensor de temperatura integrado
  • Consumo en modo de baja energía: <10 uA
  • Encendido y transferencia de paquetes < 2ms.
  • Rango de temperatura de funcionamiento -40C ~ 125C
  • Voltaje de alimentación de 3.3V a 3.6V, usar una tensión de 5V puede dañar el módulo.
  • Consumo de hasta 300mA durante el arranque.

Características técnicas completas: https://nurdspace.nl/ESP8266

Como podemos ver los dos últimos puntos de la lista se nos indica que el módulo debe alimentarse obligatoriamente con una tensión de entre 3.3 a 3.6V y que puede consumir hasta 300mA. Esto es sumamente importante ya que si la tensión es mayor podemos estropear el módulo, y si la corriente es menor puede no funcionar correctamente e incluso reiniciarse en medio de una conexión.

En el caso del Arduino Pro Mini no contamos con un pin de 3.3V, y aunque lo tuviéramos no nos serviría de nada ya que la corriente suministrada por dicho pin la suele proporcionarla el chip TTL de la placa y por él no puede proporcionar más de 50mA, claramente insuficiente para el módulo WiFi, por lo que vamos a necesitar una fuente de alimentación externa.

Cuando hablamos de que el módulo funciona a 3.3V no es solo la tensión de alimentación, si no que toda la electrónica funciona a esa tensión, eso significa que no podemos conectar nuestro Arduino Pro Mini de 5V directamente pues su pines TX y RX para la comunicación Serial también funcionan a 5V.

Para solventar ese problema serán necesarias 3 resistencias de 1KΩ para montar un divisor de tensión que nos permitirá disminuir la tensión del pin TX del Arduino, el pin que envía los datos, a la tensión requerida del pin RX del módulo ESP8266. El pin TX del módulo puede conectarse directamente pues el Arduino admite hasta 5V, en los próximos apartados se verá el montaje exacto que habrá que realizar.

 


5.2.2) Fuente de alimentación externa

Nos sirve cualquier fuente de alimentación que nos suministre 3.3V y al menos 300mA, aunque recomiendo emplear una que pueda conectarse directamente en la placa de prototipado, concretamente a los carriles laterales de GND y VCC. Para este curso se usara una fuente con reguladores de tensión AMS1117 3.3 y AMS1117 5.0, que suministran una tensión de 3.3 y 5V con una corriente de 1A cada uno de ellos.

También será necesario un transformador de entre 7 y 12V al que conectaremos a la fuente de alimentación, mientras menor sea la tensión (dentro de ese rango) menor será la caída de tensión y menos se calentaran los reguladores de tensión, por ello si no tenemos ninguna fuente aun o tenemos varias mejor decantarse por una de 7 o 9V, si solo tenemos de 12V puede usarse igualmente aunque la fuente de alimentación se calentara un poco pero tampoco se estropeara.

Así es como quedara la fuente de alimentación conectada a la placa de prototipado junto al Arduino Pro Mini. Hay que tener especial cuidado en la orientación de la placa ya que si la tenemos orientada hacia un lado los raíles de alimentación quedaran GND arriba y VCC abajo, sin embargo dándole la vuelta veremos que VCC está arriba y GND abajo, al conectar la fuente de alimentación deben coincidir sus pines GND y VCC con los raíles de la placa de prototipado.

protoboard3

Como puede verse en la imagen superior, la fuente de alimentación tiene unos jumpers que nos permiten elegir la tensión de salida para los raíles superiores e inferiores de la placa de prototipado, podríamos hacer que ambos funcionen a 5V, o ambos a 3.3V o uno de cada. En nuestro caso el carril superior funcionara a 3.3V y el carril inferior a 5V.

Si nos fijamos en los carriles de alimentación justo en el centro la serigrafía azul y roja se corta, eso sucede porque los carriles también están cortados, si queremos continuidad a lo largo de todo el carril será necesario realizar unos puentes con cables o alambres.

Como último apunte sobre la alimentación, durante todo el curso se harán uso de cables rojos para las conexiones de 5V, cables de color naranja para las de 3.3V, y azul para GND.

 


5.2.3) Librería SoftwareSerial (limitaciones, ejemplos de uso)

Puesto que el Arduino Pro Mini solo cuenta con un puerto Serial y necesitamos dos de ellos, uno para la conexión con el PC mediante el adaptador USB y otro para el módulo WiFi ESP8266, tendremos que hacer uso de la librería SoftwareSerial incluida de serie con el IDE de Arduino.

Esta librería nos permite usar cualquier par de pines digitales como puerto Serial emulado por software, de este modo en los pines D0/RX y D1/TX los tendremos conectado el adaptador USB para cargar los sketches, y en los puertos D2 y D3 conectaremos el módulo WiFi.

Usar esta librería es sumamente sencillo pues una vez tengamos creado el objeto SoftwareSerial su uso será idéntico a como haríamos con la librería HardwareSerial para el puerto nativo.

Para poder probar la librería, sin tocar aun el módulo WiFi, vamos a grabar el siguiente código en el Arduino Pro Mini:

Y después desconectaremos el adaptador USB de los pines RX y TX para conectarlo a continuación a los pines D2 y D3, concretamente el pin RX del adaptador hay que conectarlo al pin D3, y el pin LX al pin D2. Si ahora abrimos el monitor Serial del IDE deberíamos de ver lo que el Arduino Pro Mini está imprimiendo con ayuda de la librería SoftwareSerial.

Aunque la librería nos permite usar una velocidad de transmisión similar a la de los puertos nativos: 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 31250, 38400, 57600, y 115200 baudios por segundo, la realidad es que tendremos problemas si superamos los 19200 bps, no por culpa del ESP8266 que no tiene problemas en soportar el máximo, sino por la librería y la emulación del puerto Serial.

Por ello cuando conectemos el ESP8266 tendremos que configurarlo para que funcione a un máximo de 19200 si queremos evitarnos problemas.

Escriba aquí su comentario