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 más. Hay muchos tipos de módulos ESP8266 disponibles, con distintos precios y características, pero todos son increíblemente útiles en el IoT .
Independientemente de la IoT que haya desarrollado, hay dos formas de conectar su ESP8266 a la nube. Primero, puede ingresar sus credenciales de WiFi en el firmware del ESP8266 para establecer la conexión requerida y comenzar a enviar datos. Una segunda forma, que cubriremos paso a paso a continuación, es construir su propio punto de acceso en la placa, creando un firmware universal que establecerá una conexión a cualquier red disponible con solo presionar un botón.
Requisitos
- Módulo ESP8266
- Arduino IDE 1.8.2 o superior
- Biblioteca del administrador de configuración
- Biblioteca PubSubClient
- Cuenta Ubidots
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, es posible que deba asignar el pin de reinicio usando esta versión de la biblioteca . La configuración predeterminada de los botones está asignada al PIN 5 ; Si usa un NodeMCU , debe conectar el botón al D1 .
Paso 2. Configura el IDE de Arduino con tu dispositivo
Antes de usar cualquier ESP8266 , deberá instalar las placas en el IDE de Arduino. Siga los pasos a continuación para compilar el tablero.
Si aún no lo has hecho, comienza descargando el IDE de Arduino .
- Abra el IDE de Arduino. Seleccione Archivos -> Preferencias e ingrese la URL debajo del URL adicionales del Administrador de tableros . Puede agregar varias URL, separándolas con comas.
http://arduino.esp8266.com/stable/package_esp8266com_index.json
NOTA : Si es usuario de Mac , Arduino y Archivo contienen funciones desplegables diferentes en comparación con los usuarios de Windows. También necesitarás instalar el siguiente controlador para cargar el firmware a tu NodeMCU.
2. Abra Boards Manager desde Herramientas -> Board -> Boards Manager 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 NodeMCU 1.0 (módulo ESP-12) . Para seleccionar el tablero, vaya a Herramientas > Tablero > Seleccionar el tablero .
Además, para comunicarnos con NodeMCU, también necesitaremos seleccionar el puerto com. Vaya a Herramientas -> Puerto y seleccione el PUERTO apropiado 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 . Haga clic en el botón verde con la etiqueta " Clonar o descargar " y seleccione " 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 -> Incluir biblioteca -> Administrador de biblioteca e instale la biblioteca PubSubClient Para encontrar la biblioteca correcta, busque PubSubClient en la barra de búsqueda.
8. Ahora, reinicie el IDE de Arduino antes de cargarlo.
9. Una vez que tenga instaladas la plataforma ESP8266 y las bibliotecas necesarias, instale el cargador del sistema de archivos Arduino ESP8266 . los pasos de instalación del repositorio y regrese a esta guía.
10. Una vez instalado el cargador, cree un nuevo boceto para trabajar y guárdelo. Nuestro ejemplo se llama AP_ESP8266 :
11. A continuación, vaya al directorio de bocetos 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 utilizará en el sistema de archivos.
13. A continuación, debemos cargar el archivo en el sistema de archivos flash ESP8266. Para comenzar, asegúrese de haber seleccionado un puerto de la placa y cerrado Serial Monitor .
14. Seleccione Herramientas > Carga de datos de boceto ESP8266 para comenzar a cargar archivos al sistema de archivos flash ESP8266.
Cuando termine, la barra de estado del IDE debería mostrar Imagen SPIFFS cargada :
15.Ahora, pegue el siguiente código en el IDE de Arduino . Una vez pegado, asigne el dispositivo que desee y las etiquetas variables, así como su Ubidots . Si no conoces tu Ubidots , descubre cómo conseguir 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 = "Punto de acceso Ubidots "; // Asigna el nombre de su punto de acceso const char * MQTT_SERVER = " ubidots .com"; const char * TOKEN = "..."; // Asigna tu Ubidots TOKEN const char * DEVICE_LABEL = "mi-dispositivo"; // Asigna la etiqueta de su dispositivo const char * VARIABLE_LABEL = "mi-variable"; // Asigna tu etiqueta de variable int SENSOR = A0; } tema de conversación[150]; carga útil de caracteres [50]; Cliente de cadenaMac = ""; char mac sin firmar [6]; struct Config { nombre de char[20]; booleano habilitado; int8 hora; } configuración; /******* Inicializar una instancia global **********/ WiFiClient espClient; Cliente PubSubClient (espClient); Administrador de configuración Administrador de configuración; /***************Funciones auxiliares ********************/ void callback(char* tema, byte* carga útil, unsigned int length){ } void reconnect() { while (!client.connected()){ Serial.print("Intentando conexión MQTT..."); // Intenta conectar if (client.connect(clientMac.c_str(), TOKEN, NULL)) { Serial.println("conectado"); romper; } más { configManager.reset(); Serial.print("falló, rc="); Serial.print(cliente.estado()); Serial.println("inténtalo de nuevo en 3 segundos"); for(uint8_t Parpadeo=0; Parpadeo<=3; Parpadeo++){ digitalWrite(LED, BAJO); retraso(500); escritura digital (LED, ALTA); retraso(500); } } } } String macToStr(const uint8_t* mac) { Resultado de cadena; for (int i = 0; i < 6; ++i) { resultado += String(mac[i], 16); si (i < 5)resultado += ':'; } devolver resultado; } /********* Funciones principales *************/ void setup() { Serial.begin(115200); /* Declarar PIN como entrada/salida */ pinMode(SENSOR, INPUT); pinMode(PIN_RESET, ENTRADA); pinMode(LED, SALIDA); /* Asignar dirección MAC WiFi como nombre de cliente MQTT */ WiFi.macAddress(mac); clienteMac += macToStr(mac); /* Configuración del punto de acceso */ configManager.setAPName(AP_NAME); configManager.addParameter("nombre", config.nombre, 20); configManager.addParameter("habilitado", &config.enabled); configManager.addParameter("hora", &config.hora); configManager.begin(config); /* Set Establece los detalles del servidor */ client.setServer(MQTT_SERVER, 1883); client.setCallback(devolución de llamada); /* Crear la solicitud de tema */ sprintf(topic, "%s%s", "/v1.6/devices/", DEVICE_LABEL); } bucle vacío() { configManager.reset(); configManager.loop(); /* reconexión del cliente MQTT */ if (!client.connected()) { reconnect(); } /* Lectura del sensor */ valor int = analogRead(SENSOR); /* Generar la solicitud de carga útil */ sprintf(payload, "{\"%s\": %d}", VARIABLE_LABEL, value); /* Publicar el valor del sensor en Ubidots */ client.publish(topic, payload); cliente.loop(); retraso(5000); }
16. Después de ingresar sus parámetros, verifique el código dentro del IDE de Arduino. Para hacer esto, haga clic en el de marca de verificación en la esquina superior izquierda de su IDE de Arduino.
Luego, cargue su código en su NodeMCU . Elija el de flecha hacia la derecha al lado de 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 serie , 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 serie:
18. Ahora que se creó el punto de acceso , puede establecer la conexión desde su teléfono. En Redes Wi-Fi, seleccione Punto de acceso Ubidots :
Cuando se establezca la conexión, lo redireccionará a la siguiente página. Ingrese 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 de tu nuevo dispositivo:
Resultados
Siguiendo esta guía, configurará un punto de acceso que conecte su dispositivo a cualquier red disponible sin configurar las credenciales en el firmware, creando así un firmware universal que se puede usar en cualquier lugar.