Conecte su ESP8266 a cualquier red Wi-Fi disponible

El ESP8266 es un microcontrolador desarrollado por Espressif Systems. Conocido como módulo WiFi, este microcontrolador se puede utilizar para realizar diversas actividades relacionadas con WiFi, con aplicaciones en domótica y otros ámbitos. Existen muchos tipos de módulos ESP8266 disponibles, con diferentes precios y características, pero todos son increíblemente útiles en el IoT .

Independientemente de la IoT que hayas desarrollado, existen dos maneras de conectar tu ESP8266 a la nube. Primero, puedes introducir tus credenciales de Wi-Fi en el firmware del ESP8266 para establecer la conexión necesaria y comenzar a enviar datos. Una segunda forma, que explicaremos paso a paso más adelante, consiste en integrar tu propio punto de acceso en la placa, creando un firmware universal que establecerá una conexión con cualquier red disponible con solo pulsar un botón.

Requisitos

Paso 1. Configuración del hardware

Nota: El Ubidots realizó algunas modificaciones en la biblioteca ConfigManager para implementar una rutina que inicia el modo AP simplemente presionando un de reinicio .

Dependiendo del módulo ESP8266 que elija, podría necesitar asignar el pin de reinicio con esta versión de la biblioteca. La configuración predeterminada del botón está asignada al PIN 5; si usa un NodeMCU, debe conectar el botón al D1 .

Paso 2. Configure el IDE de Arduino con su dispositivo

Antes de usar cualquier ESP8266 , deberá instalar las placas en el IDE de Arduino. Siga los pasos a continuación para compilar la placa.

Si aún no lo has hecho, comienza por descargar el IDE de Arduino.

  1. Abre el IDE de Arduino. Selecciona Archivo -> Preferencias e introduce la URL que aparece debajo del URLs adicionales del gestor de placas . Puedes añadir varias URLs, separándolas con comas.
http://arduino.esp8266.com/stable/package_esp8266com_index.json

NOTA: Si eres usuario de Mac, Arduino y Archivo tienen funciones desplegables diferentes a las de los usuarios de Windows. También necesitarás instalar el siguiente controlador para cargar el firmware a tu NodeMCU.

2. Abra el Administrador de placas desde Herramientas -> Placa -> Administrador de placas e instale la plataforma ESP8266. Para encontrar el dispositivo correcto, busque ESP8266 en la barra de búsqueda.

3. Seleccione el módulo ESP8266 que está utilizando. En este caso, decidimos utilizar el NodeMCU 1.0 (módulo ESP-12). Para seleccionar la placa, vaya a Herramientas > Placa > Seleccionar la placa.

Además, para comunicarnos con el NodeMCU, también necesitaremos seleccionar el puerto COM. Vaya a Herramientas -> Puerto y seleccione el puerto adecuado para su dispositivo.

Para que todo funcione de forma rápida y fluida, asegúrese de que la velocidad de subida esté optimizada a 115200. Vaya a Herramientas -> Velocidad de subida -> 115200.

4. Dirígete a GitHub y descarga la biblioteca ConfigManager. Haz clic en el botón verde con la etiqueta “Clonar o descargar” y selecciona “Descargar ZIP”.

5. Ahora, regresa al IDE de Arduino y haz clic en Sketch -> Incluir biblioteca -> Agregar biblioteca .ZIP.

6. Seleccione el archivo .ZIP de ConfigManager y luego “Aceptar” o “Elegir”.

Si todo sale bien, verás el siguiente mensaje en el IDE de Arduino: "Biblioteca añadida a tu biblioteca. Comprueba el menú "Incluir biblioteca"".

7. A continuación, ve a Sketch/Programa -> Incluir biblioteca -> Administrador de bibliotecas e instala la PubSubClient . Para encontrar la biblioteca correcta, busca PubSubClient en la barra de búsqueda.

8. Ahora, reinicie el IDE de Arduino antes de cargar.

9. Una vez instalada la plataforma ESP8266 y las bibliotecas necesarias, instale el cargador de archivos del sistema de archivos Arduino ESP8266. Siga todos los pasos de instalación y vuelva a esta guía.

10. Una vez instalado el cargador, crea un nuevo boceto para trabajar con él y guárdalo. Nuestro ejemplo se llama AP_ESP8266:

11. A continuación, vaya al directorio del boceto y cree una nueva carpeta llamada datos.

12. Una vez creado el directorio, descargue este archivo HTML y adjúntelo al directorio. Este archivo se usará en el sistema de archivos.

13. A continuación, necesitamos subir el archivo al sistema de archivos flash del ESP8266. Para empezar, asegúrese de haber seleccionado un puerto de la placa y cerrado el Monitor Serie.

14. Seleccione Herramientas > Carga de datos de boceto ESP8266 para comenzar a cargar archivos en el sistema de archivos flash del ESP8266.

Una vez finalizado, la barra de estado del IDE debería mostrar SPIFFS Image Uploaded:

15. Ahora, pega el siguiente código en el IDE de Arduino. Una vez pegado, asigna las etiquetas de dispositivo y variables que desees, así como tu Ubidots . Si no conoces tu Ubidots , puedes obtenerlo aquí.

Copie y pegue el siguiente código en el IDE de Arduino, incluido su dispositivo específico y los parámetros variables.

#incluir<ESP8266WiFi.h> #incluir<ConfigManager.h> #incluir<PubSubClient.h> /******* Definir constantes **********/ namespace{ const char * AP_NAME = "Ubidots Access Point"; // Asigna el nombre de tu punto de acceso const char * MQTT_SERVER = "things.ubidots.com"; const char * TOKEN = "...."; // Asigna tu TOKEN Ubidots const char * DEVICE_LABEL = "my-device"; // Asigna la etiqueta de tu dispositivo const char * VARIABLE_LABEL = "my-variable"; // Asigna la etiqueta de tu variable int SENSOR = A0; } char topic[150]; char payload[50]; String clientMac = ""; unsigned char mac[6]; struct Config { char name[20]; bool enabled; int8 hour; } config; /******* Inicializar una instancia global **********/ WiFiClient espClient; PubSubClient client(espClient); ConfigManager configManager; /***************Funciones auxiliares ********************/ void callback(char* topic, byte* payload, unsigned int length){ } void reconnect() { while (!client.connected()){ Serial.print("Intentando conexión MQTT..."); // Intentar conectar if (client.connect(clientMac.c_str(), TOKEN, NULL)) { Serial.println("conectado"); break; } else { configManager.reset(); Serial.print("falló, rc="); Serial.print(client.state()); Serial.println("inténtalo de nuevo en 3 segundos"); for(uint8_t Blink=0; Blink<=3; Blink++){ digitalWrite(LED, BAJO); delay(500); digitalWrite(LED, ALTO); delay(500); } } } } String macToStr(const uint8_t* mac) { String result; for (int i = 0; i < 6; ++i) { result += String(mac[i], 16); if (i < 5)result += ':'; } return result; } /********* Funciones principales *************/ void setup() { Serial.begin(115200); /* Declarar PIN como entrada/salida */ pinMode(SENSOR, INPUT); pinMode(PIN_RESET, INPUT); pinMode(LED, OUTPUT); /* Asignar dirección MAC WiFi como nombre de cliente MQTT */ WiFi.macAddress(mac); clientMac += macToStr(mac); /* Configuración del punto de acceso */ configManager.setAPName(AP_NAME); configManager.addParameter("name", config.name, 20); configManager.addParameter("enabled", &config.enabled); configManager.addParameter("hour", &config.hour); configManager.begin(config); /* Set Establece los detalles del servidor */ client.setServer(MQTT_SERVER, 1883); client.setCallback(callback); /* Construir la solicitud de tema */ sprintf(topic, "%s%s", "/v1.6/devices/", DEVICE_LABEL); } void loop() { configManager.reset(); configManager.loop(); /* Reconexión del cliente MQTT */ if (!client.connected()) { reconnect(); } /* Lectura del sensor */ int value = analogRead(SENSOR); /* Construir la solicitud de carga útil */ sprintf(payload, "{\"%s\": %d}", VARIABLE_LABEL, value); /* Publicar el valor del sensor en Ubidots */ client.publish(topic, payload); client.loop(); delay(5000); }

16. Después de introducir los parámetros, verifique el código en el IDE de Arduino. Para ello, haga clic en el de la marca de verificación en la esquina superior izquierda del IDE de Arduino.

Luego, sube tu código a NodeMCU. Selecciona el de flecha derecha junto a la marca de verificación.

Una vez cargado el código, verá el siguiente mensaje en el IDE de Arduino:

Su módulo ESP8266 ahora está listo para establecer una conexión con cualquier red disponible con solo presionar el botón!

17. Para verificar el estado de la conexión, abra el monitor serial, presione el botón conectado a su módulo ESP y manténgalo presionado durante 5 segundos hasta que vea el mensaje “Starting Access Point” en su monitor serial:

18. Una vez creado el punto de acceso , puede establecer la conexión desde su teléfono. En Redes Wi-Fi, seleccione Ubidots Punto de acceso:

Una vez establecida la conexión, se le redirigirá a la página siguiente. Introduzca sus parámetros de Wi-Fi y haga clic en " Guardar".

19. Para verificar que la conexión esté establecida, vaya al Monitor serie:

Ahora, regresa a tus cuentas Ubidots para visualizar los datos recibidos desde tu nuevo dispositivo:

Resultados

Si sigue esta guía, configurará un punto de acceso que conectará su dispositivo a cualquier red disponible sin configurar las credenciales en el firmware, creando así un firmware universal que puede usarse en cualquier lugar

Ahora te toca a ti probarlo. ¡ Regístrate Ubidots gratis