Conecte su ESP8266 a cualquier red Wi-Fi disponible

María Hernández
· 6 minutos de lectura
Enviar por correo electrónico

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

Independientemente de la IoT que haya desarrollado, hay dos maneras de conectar su ESP8266 a la nube. Primero, puede introducir sus credenciales de WiFi en el firmware del ESP8266 para establecer la conexión necesaria y comenzar a enviar datos. Una segunda manera, que explicaremos paso a paso a continuación, es integrar su propio punto de acceso en la placa, creando un firmware universal que se conectará a 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 descargando el IDE de Arduino .

  1. Abra el IDE de Arduino. Seleccione Archivos -> Preferencias e introduzca la URL debajo del URL adicionales del Administrador de placas . Puede agregar varias URL separándolas con comas.
http://arduino.esp8266.com/stable/package_esp8266com_index.json

NOTA : Si usas Mac , Arduino y Archivos tienen diferentes funciones desplegables que 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é usando. En este caso, decidimos usar 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 rápido y sin problemas, asegurémonos de que la velocidad de carga esté optimizada a 115200. Vaya a Herramientas -> Velocidad de carga -> 115200.

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

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

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

Si tiene éxito, verá el siguiente mensaje en el IDE de Arduino: " Biblioteca agregada a su biblioteca. Marque el menú "Incluir biblioteca" ".

7. A continuación, vaya a Sketch/Program -> Biblioteca de inclusión -> Administrador de bibliotecas e instale la PubSubClient . Para encontrar la biblioteca correcta, busque 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 del sistema de archivos Arduino ESP8266 pasos de instalación del repositorio 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 al sistema de archivos flash 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 variable que desees, así como tu Ubidots . Si no conoces tu Ubidots , descubre cómo obtener uno 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 " Iniciando punto de acceso " 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 Punto de acceso Ubidots :

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 gratis Ubidots