WiFi en Arduino UNO R3

Este contenido es un complemento práctico para los contenidos teóricos de los temas 4. Fundamentos de Computación Física, 5. Internet de las Cosas y 6. Robótica, de la asignatura Computación y Robótica de 2º y 3º de ESO.

Tabla de contenidos

🛠️ Materiales:

1. Introducción

Al igual que sucedía en el caso del Bluetooth, nuestras placas Arduino UNO R3 no cuentan con módulos integrados de conectividad WiFi. Para estos casos, podemos recurrir a dos posibles soluciones: adquirir una placa Arduino UNO R4 Wifi (que ya vienen con conectividad integrada), o adquirir módulos externos Wifi ESP8266 como este que podríamos conectarles a nuestras placas para añadirles esa funcionalidad.

Arduino UNO R4 con WiFi integrada

Módulo externo WiFi ESP8266

Desde el punto de vista de la funcionalidad, debes entender que no existe ninguna diferencia: conectaremos nuestros sensores (como hicimos en proyectos anteriores) a nuestra placa, enviaremos los datos por WiFi a una de las plataformas disponibles para almacenar datos, y opcionalmente, añadimos automatizaciones para recibir notificaciones de los eventos que están ocurriendo.

Vamos a ver cómo podemos configurar nuestra placa para conectarnos a una WiFi usando el módulo ESP8266.

2. Configurar el módulo WiFi ESP8266

Para configurar correctamente el módulo WiFi ESP8266 debemos tener en cuenta cómo conectar sus pines:

Como puedes ver, la leyenda de las conexiones aparece en dos columnas, la primera columna se corresponde con los 4 pines más a la izquierda, y la segunda columna con los 4 pines más a la derecha.

Su configuración correcta es conectar el pin 3V3 y EN al pin de 3.3V de Arduino, TX en el pin digital 2 de Arduino, RX en el pin digital 3 de Arduino, y GND a cualquier pin GND de Arduino. Los conectores IO0, IO2 y RST los dejaremos sin conectar.

Por ejemplo:

Hecho esto, ya tenemos todas las conexiones que necesitamos, sólo nos restaría cargar este programa en la placa y comprobar por el Monitor Serie que la conexión se ha producido con éxito.

#include <SoftwareSerial.h>
#include <stdlib.h>

SoftwareSerial ESP8266(2, 3); // RX, TX
unsigned char check_connection=0;                                      
unsigned char times_check=0;

void setup() {
  Serial.begin(115200);
  ESP8266.begin(115200);  
  ESP8266.print("***VER:");
  delay(2000);
  // Reinicia el módulo para asegurar un estado limpio
  ESP8266.println("AT+RST");
  delay(1000);
  // Solicita la versión del firmware del ESP8266, ayuda a verificar su funcionamiento
  ESP8266.println("AT+GMR");
  delay(1000);
  // Establece el modo de operación del módulo, modo estación y punto de acceso
  ESP8266.println("AT+CWMODE=3");
  delay(1000);
  // Muestra las WiFi disponible para confirmar la visibilidad del SSID proporcionado
  ESP8266.println("AT+CWLAP");
  delay(1000);
}

void loop() {
  Serial.println("Connecting to Wifi");
  while (check_connection==0) {
    Serial.print(".");
    // Sustituir SSID y PASS por el nombre y contraseña de la WiFi
    ESP8266.print("AT+CWJAP=\"SSID\",\"PASS\"\r\n");
    ESP8266.setTimeout(5000);
    if (ESP8266.find("WIFI CONNECTED\r\n")==1) {
      Serial.println("WIFI CONNECTED");
      break;
    }
    times_check++;
    if (times_check>3) {
      times_check=0;
      Serial.println("Trying to Reconnect..");
    }
  } 
  while(1);
}

Una vez que subas este código a la placa, espera un poco y obtendrás este resultado (no olvides abrir el Monitor Serial):

A partir de aquí, que ya sabes cómo conectar tu placa a Internet, se trata de elegir bien una plataforma gratuita que permita la recepción y almacenamiento de señales, estudiar su configuración y enviarle los datos que necesites en el formato propio de cada plataforma. Yo personalmente te recomiendo Thingspeak.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *