Cómo hacer tu propio botón de conexión Wi-Fi con ESP8266
Anuncio
El Internet de las cosas tiene un gran potencial de bricolaje. Con suficiente conocimiento y algunos componentes baratos, podría construir un sistema complejo de dispositivos conectados.
A veces, sin embargo, quieres algo simple. Sin campanas ni silbatos, solo un botón que realiza una sola tarea. Es posible que ya esté familiarizado con algo como esto si alguna vez ha utilizado un botón de Amazon Dash para reordenar los artículos domésticos cotidianos.
Hoy haremos un botón habilitado para Wi-Fi usando un NodeMCU, y lo programaremos para usar IFTTT para hacer ... ¡bueno, cualquier cosa! Instrucciones escritas después del video, si lo prefiere.
Lo que necesitarás
Necesitará:
- 1 x placa NodeMCU (ESP8266), disponible por $ 2-3 en AliExpress
- 1 x pulsador
- 1 x LED (opcional)
- 1 x resistencia de 220 ohmios (opcional)
- Tablero y cables de conexión
- Micro USB para programar
- Computadora con el Arduino IDE instalado
Además de NodeMCU, debería poder encontrar la mayoría de estas piezas en cualquier kit de inicio de Arduino. 4 Mejores kits de inicio para principiantes de Arduino. 4 Mejores kits de inicio para principiantes de Arduino. pero primero necesitarás un Arduino y algunos componentes. Aquí está nuestra selección de 4 de los mejores kits de inicio para ... Leer más. Este tutorial asumirá que está utilizando el LED y la resistencia opcionales, pero no son esenciales.
Paso 1: configuración del circuito
La configuración del hardware es muy simple para este proyecto. Configure su tablero de acuerdo con este diagrama.
El cable morado une el pin D0 a un lado del botón. El cable verde conecta el otro lado del botón al pin RST . El cable azul va desde el pin D1 hasta la resistencia y el LED. La pata negativa del LED se conecta al pin GND del NodeMCU.
Cuando la placa de prueba está configurada, debería verse así:
Si se pregunta cómo hice que mi LED vaya al pin de tierra usando solo esos pequeños trozos de cable, nuestro curso rápido de prueba de tablero ¿Qué es un tablero de pruebas y cómo funciona? Un curso rápido ¿Qué es un tablero de pruebas y cómo funciona? Un curso rápido rápido ¿Quieres aprender electrónica de bricolaje? Es posible que haya recibido una placa en su kit de inicio. Pero, ¿qué es una placa de pruebas y cómo funciona? ¡Leer más debería ayudar a aclararlo! Verifique su configuración y conecte su NodeMCU a la computadora a través de USB.
Paso 2: Configurando el IDE
Antes de continuar con la codificación, debe hacer algunos preparativos. Si aún no lo ha hecho, configure el IDE de Arduino para reconocer su placa NodeMCU. Puede agregarlo a su lista de tableros a través de Archivo> Preferencias .
Puede encontrar una explicación más detallada de este paso en nuestro artículo de introducción de NodeMCU.
Se requieren dos bibliotecas para este proyecto. Vaya a Boceto> Incluir biblioteca> Administrar bibliotecas . Busque ESP8266WIFI por Ivan Grokhotkov e instálelo. Esta biblioteca está escrita para hacer conexiones Wi-Fi con la placa NodeMCU.
Luego busque el IFTTTWebhook por John Romkey e instale la última versión. Esta biblioteca está diseñada para simplificar el proceso de envío de webhooks a IFTTT.
Esa es toda la preparación que necesitamos, ¡codifiquemos!
Cómo funcionará el código
Utilizaremos la biblioteca ESP8266WIFI para establecer una conexión Wi-Fi. La biblioteca IFTTTWebhooks realiza una solicitud a IFTTT, en este caso, para publicar en Twitter. Luego, indique a la placa NodeMCU que se suspenda cuando no esté en uso para ahorrar energía.
Cuando se presiona el botón, unirá los pines D0 y RST . Esto restablece el tablero y el proceso vuelve a ocurrir.
La mayor parte del código en este tutorial es lo suficientemente simple para principiantes. Dicho esto, si está comenzando, le resultará mucho más fácil de entender después de seguir nuestra guía para principiantes de Arduino.
Este tutorial repasa el código en fragmentos para ayudarlo a comprender. Si desea ir directamente a los negocios, puede encontrar el código completo en Pastebin. ¡Tenga en cuenta que aún tendrá que completar sus credenciales de Wi-Fi e IFTTT en este código para que funcione!
Paso 3: prueba del sueño profundo
Para comenzar, crearemos una prueba simple para mostrar cómo funciona el sueño profundo. Abra un nuevo boceto en el IDE de Arduino. Ingrese los siguientes dos fragmentos de código.
#include #include #define ledPin 5 #define wakePin 16 #define ssid "YOUR_WIFI_SSID" #define password "YOUR_WIFI_PASSWORD" #define IFTTT_API_KEY "IFTTT_KEY_GOES_HERE" #define IFTTT_EVENT_NAME "IFTTT_EVENT_NAME_HERE"
Aquí, incluimos nuestras bibliotecas, junto con la definición de algunas variables que necesitaremos en nuestro boceto. Notarás que ledPin y wakePin están numerados de manera diferente aquí en comparación con el diagrama de Fritzing anterior. El NodeMCU tiene un pinout diferente a las placas Arduino. Sin embargo, esto no es un problema, debido a este práctico diagrama:
Ahora cree una función de configuración:
void setup() { Serial.begin(115200); while(!Serial) { } Serial.println(" ");// print an empty line before and after Button Press Serial.println("Button Pressed"); Serial.println(" ");// print an empty line ESP.deepSleep(wakePin); }
Aquí, configuramos nuestro puerto serie y usamos un bucle while para esperar hasta que comience. Dado que este código se activará después de presionar el botón de reinicio, imprimimos "Botón presionado" en el monitor en serie. Luego, le decimos al NodeMCU que se duerma profundamente hasta que se presione el botón que conecta el wakePin al pin RST .
Finalmente, para probar, agregue esto a su método loop () :
void loop(){ //if deep sleep is working, this code will never run. Serial.println("This shouldn't get printed"); }
Por lo general, los bocetos de Arduino ejecutan la función de bucle continuamente después de la configuración. Como enviamos la placa a dormir antes de que finalice la configuración, el bucle nunca se ejecuta.
Guarde su boceto y cárguelo en el tablero. Abra el monitor en serie y debería ver "Botón presionado". Cada vez que se activa el botón, la placa se reinicia y el mensaje se imprime nuevamente. ¡Funciona!
Una nota sobre el monitor serie
Es posible que haya notado algunos caracteres sin sentido en el monitor en serie durante algunos de sus proyectos. Esto generalmente se debe a no configurar el monitor en serie a la misma velocidad en baudios que la velocidad Serial.begin (XXXX) .
Muchas guías sugieren iniciar la conexión en serie a una velocidad en baudios de 115200 para un proyecto como este. Intenté muchas combinaciones, y todas tenían diferentes grados de galimatías antes y después de los mensajes en serie. Según varias publicaciones en el foro, esto podría deberse a un problema de compatibilidad de software o placa defectuosa. Como no afecta demasiado el proyecto, elijo fingir que no está sucediendo.
Si tiene problemas con el monitor en serie, pruebe diferentes velocidades de transmisión y vea cuál funciona mejor para usted.
Paso 4: Conexión a Wi-Fi
Ahora cree una función para conectarse a su red Wi-Fi.
void connectToWifi() { Serial.print("Connecting to: SSID NAME"); //uncomment next line to show SSID name //Serial.print(ssid); WiFi.begin(ssid, password); Serial.println(" ");// print an empty line Serial.print("Attempting to connect: "); //try to connect for 10 seconds int i = 10; while(WiFi.status() != WL_CONNECTED && i >=0) { delay(1000); Serial.print(i); Serial.print(", "); i--; } Serial.println(" ");// print an empty line //print connection result if(WiFi.status() == WL_CONNECTED){ Serial.print("Connected."); Serial.println(" ");// print an empty line Serial.print("NodeMCU ip address: "); Serial.println(WiFi.localIP()); } else { Serial.println("Connection failed - check your credentials or connection"); } }
Este método intenta conectarse a su red diez veces con un segundo en el medio. El éxito o el fracaso de la conexión se imprime en el monitor en serie.
Paso 5: llamar al método de conexión
En este momento, nunca se llama a connectToWifi () . Agregue una llamada a su función de configuración entre el mensaje "Botón presionado" y enviando la placa a la suspensión.
connectToWifi();
En caso de que se pregunte dónde encaja esto, debería verse así:
En la parte superior del boceto, reemplace las variables ssid y contraseña con sus credenciales de Wi-Fi. Guarde su boceto y cárguelo en el tablero.
Ahora, cuando la placa se inicia, intentará conectarse a su red Wi-Fi, antes de volver a la función de configuración. Ahora, configuremos la integración IFTTT.
Paso 6: Configuración de la integración IFTTT
IFTTT permite la integración con una amplia gama de servicios web. Lo utilizamos en nuestro tutorial de LED de torre de PC con Wi-Fi para enviar una alerta cada vez que se recibe un nuevo correo electrónico. Hoy lo usaremos para enviar un tweet con solo presionar un botón.
Vaya a la página Mis applets y seleccione Nuevo applet
Haga clic en + esto y conéctese a Webhooks . Seleccione "Recibir una solicitud web" y asigne un nombre a su evento. ¡Mantenlo simple ! Anote el nombre del evento, deberá agregarlo a su código NodeMCU más adelante. Haga clic en "Crear disparador" .
Ahora seleccione + eso . Busque el servicio de Twitter y conéctese a él; deberá autorizarlo para publicar en su cuenta de Twitter. Seleccione "Publicar un tweet" y elija su mensaje.
La siguiente pantalla le pedirá que revise el applet. Haga clic en finalizar. ¡Eso es!
Paso 7: Agregar credenciales IFTTT al Código
De vuelta en el IDE de Arduino, deberá agregar su clave API IFTTT y el nombre del evento a sus variables definidas. Para encontrar la clave API, navegue a Mis Applets y seleccione Webhooks en la pestaña Servicios . Seleccione Documentación para acceder a su clave.
Copie la clave y el nombre del evento en su código, reemplazando los nombres temporales configurados para ellos.
#define IFTTT_API_KEY "IFTTT_KEY_GOES_HERE" #define IFTTT_EVENT_NAME "IFTTT_EVENT_NAME_HERE"
Tenga en cuenta que las comillas invertidas deben permanecer, solo reemplazar el texto.
Entre llamar a connectToWifi () y enviar la placa a la suspensión, cree una instancia del objeto de biblioteca IFTTTWebhook. El LED señala la finalización de la tarea antes de que el sueño profundo comience nuevamente.
//just connected to Wi-Fi IFTTTWebhook hook(IFTTT_API_KEY, IFTTT_EVENT_NAME); hook.trigger(); pinMode(ledPin, OUTPUT); digitalWrite(ledPin, HIGH); delay(200); digitalWrite(ledPin, LOW); //now sending board to sleep
Al activar el disparador en el objeto de enganche, se dispara el applet IFTTT y debe publicarse en su cuenta de Twitter. Guarda tu boceto y súbelo. Ahora debería tener un botón de Twitter totalmente funcional.
Si parece que no funciona, revise cuidadosamente su código y sus credenciales para detectar errores. Si realmente te quedas atascado, obtén el código completo de arriba y compáralo con el tuyo.
¡Hecho! ¿Cómo podría mejorarlo más?
Esta es una versión básica de un botón de Wi-Fi, pero hay muchas formas en que podría mejorarse. Para simplificar, la conexión USB se utiliza aquí para la alimentación. Una batería lo haría completamente móvil, y una funda que contenga el circuito sería el proyecto de impresión 3D para principiantes perfecto.
A pesar de utilizar el sueño profundo, es posible que la batería se agote rápidamente. Hay muchos consejos de ahorro de energía de Arduino que ayudan en este tipo de proyectos. Si bien es más difícil que este tutorial, si hiciste tu propio Arduino consciente de la energía desde cero, ¡un botón de Wi-Fi con batería podría durar meses!
Este proyecto sería perfecto para un control remoto para aplicaciones domésticas inteligentes. Ya hay una cantidad considerable de aplicaciones de domótica 10 de las mejores recetas IFTTT para la automatización del hogar inteligente 10 de las mejores recetas IFTTT para la automatización del hogar inteligente Las recetas correctas de IFTTT para su hogar inteligente pueden ahorrarle tiempo, esfuerzo y energía. Aquí hay diez de nuestros favoritos para comenzar. Leer más disponible en IFTTT. Una vez que tenga lo básico, puede usar casi cualquier sensor o interruptor para activar prácticamente cualquier servicio que pueda imaginar.
Haber de imagen: Vadmary / Depositphotos
Explora más sobre: Arduino, Tutoriales de proyectos de bricolaje.