Cómo hacer tu propio botón de conexión Wi-Fi con ESP8266

Cómo hacer tu propio botón de conexión Wi-Fi con ESP8266 / Bricolaje

El Internet de las cosas tiene un gran potencial de bricolaje. Con suficiente know-how y unos pocos componentes baratos, podría construir un sistema complejo de dispositivos conectados.

A veces, sin embargo, quieres algo simple. Sin campanas ni silbidos, 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 cotidianos del hogar..

Hoy haremos un botón habilitado para Wi-Fi usando un NodeMCU, y lo programaremos para que use IFTTT para hacer ... bueno, ¡cualquier cosa! Instrucciones escritas siguiendo el 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 220 ohmios de resistencia (opcional)
  • Breadboard y cables de conexión.
  • Micro USB para programación.
  • Ordenador con el IDE Arduino instalado

Además de NodeMCU, debería poder encontrar la mayoría de estas partes en cualquier kit de inicio Arduino. 4 Mejores kits de inicio para principiantes de Arduino. 4 Mejores kits de inicio para principiantes de Arduino. Hay muchos proyectos de Arduino para principiantes que puede usar para comenzar. 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ás usando 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 se une 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 pin D1 a la resistencia y led. La pata negativa del LED se adhiere a la Pin GND de la NodeMCU.

Cuando la placa de pruebas está configurada, debe verse algo como esto:

Si se está preguntando cómo tengo mi LED que va al pin de tierra usando solo esos diminutos trozos de cable, nuestro curso rápido de prueba ¿Qué es una placa de pruebas y cómo funciona? Un curso rápido de choque ¿Qué es una placa de pruebas y cómo funciona? Un curso 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: Configuración del IDE

Antes de continuar con la codificación, necesita hacer algunos preparativos. Si aún no lo ha hecho, configure el IDE de Arduino para que reconozca su placa NodeMCU. Puedes agregarlo a tu lista de tableros vía 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. Navegar a Sketch> Incluir biblioteca> Gestionar bibliotecas. Buscar ESP8266WIFI por Ivan Grokhotkov e instalarlo. Esta biblioteca está escrita para realizar conexiones Wi-Fi con la placa NodeMCU.


Siguiente búsqueda de la IFTTTWebhook por John Romkey e instalar 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, deja el código.!

Cómo funcionará el código

Usaremos el ESP8266WIFI Biblioteca para establecer una conexión wifi. los IFTTTWebhooks La biblioteca realiza una solicitud a IFTTT, en este caso, para publicar en Twitter. Luego, indique a la placa NodeMCU que se duerma cuando no esté en uso para ahorrar energía.

Cuando se presiona el botón, se vinculará el D0 y RST patas. Esto restablece el tablero, y el proceso vuelve a suceder..

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 partes para ayudar a comprender. Si desea ir directamente a los negocios, puede encontrar el código completo en Pastebin. Tenga en cuenta que aún necesitará completar sus credenciales de Wi-Fi e IFTTT en este código para que funcione!

Paso 3: Prueba de sueño profundo

Para comenzar, crearemos una prueba simple para mostrar cómo funciona el sueño profundo. Abre un nuevo sketch en el IDE de Arduino. Ingrese los siguientes dos fragmentos de código.

#incluir  #incluir  #define ledPin 5 #define wakePin 16 # define ssid "YOUR_WIFI_SSID" #define contraseña "YOUR_WIFI_PASSWORD" #define IFTTT_API_KEY "IFTTT_KEY_GOES_HERE" #define IFTTT_EVENT_NAME " 

Aquí, incluimos nuestras bibliotecas, junto con la definición de algunas variables que necesitaremos en nuestro boceto. Notará que ledPin y wakePin están numerados de forma diferente aquí en comparación con el diagrama de Fritzing anterior. El NodeMCU tiene un pinout diferente a las tablas Arduino. Sin embargo, esto no es un problema, debido a este práctico diagrama:

Ahora crea una función de configuración:

configuración vacía () Serial.begin (115200); while (! Serial)  Serial.println (""); // imprime una línea vacía antes y después del botón Presiona Serial.println ("Button Pressed"); Serial.println (""); // imprime una línea vacía 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” al monitor de serie. Luego, le decimos a NodeMCU que entre en el modo de suspensión profunda hasta que el botón que conecta el wakePin al RST pin está presionado.

Finalmente, para la prueba, agregue esto a su lazo() método:

void loop () // si el sueño profundo está funcionando, este código nunca se ejecutará. Serial.println ("Esto no debería imprimirse");  

Por lo general, los bocetos de Arduino ejecutan la función de bucle continuamente después de la configuración. Ya que enviamos el tablero a dormir antes de que finalice la configuración, el bucle nunca se ejecuta.

Guarda tu boceto y súbelo al tablero. Abra el monitor de serie y debería ver “Botón presionado.” Cada vez que el botón se dispara, la placa se reinicia y el mensaje se imprime nuevamente. Funciona!

Una nota sobre el monitor de serie

Es posible que haya notado algunos caracteres sin sentido en el monitor de serie durante algunos de sus proyectos. Esto generalmente se debe a que el monitor serie no está configurado a la misma velocidad en baudios que la Serial.begin (XXXX) tarifa.

Muchas guías sugieren iniciar la conexión serial a una velocidad de baudios de 115200 para un proyecto como este. Probé muchas combinaciones, y todas tenían diferentes grados de galimatías antes y después de los mensajes seriales. De acuerdo con varias publicaciones en el foro, esto podría deberse a un problema de compatibilidad de software o placa defectuosa. Como no afecta demasiado al proyecto, estoy eligiendo fingir que no está sucediendo.

Si tiene problemas con el monitor serie, pruebe diferentes velocidades en baudios y vea cuál funciona mejor para usted.

Paso 4: Conectarse a Wi-Fi

Ahora crea una función para conectarte a tu red Wi-Fi.

void connectToWifi () Serial.print ("Conectándose a: SSID NAME"); // descomentar la siguiente línea para mostrar el nombre del SSID //Serial.print(ssid); WiFi.begin (ssid, contraseña); Serial.println (""); // imprime una línea vacía Serial.print ("Intentando conectar:"); // intenta conectarse durante 10 segundos int i = 10; while (WiFi.status ()! = WL_CONNECTED && i> = 0) delay (1000); Serial.print (i); Serial.print (","); yo--;  Serial.println (""); // imprime una línea vacía // imprime el resultado de la conexión si (WiFi.status () == WL_CONNECTED) Serial.print ("Connected."); Serial.println (""); // imprime una línea vacía Serial.print ("NodeMCU ip address:"); Serial.println (WiFi.localIP ());  else Serial.println ("Falló la conexión - verifique sus credenciales o conexión");  

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 serie..

Paso 5: Llamar al método de conexión

En este momento, el connectToWifi () nunca se llama Agregue una llamada a su función de configuración entre “Botón presionado” Mensaje y enviando el tablero a dormir..

connectToWifi (); 

En caso de que se esté preguntando dónde encaja esto, debería verse así:


En la parte superior del croquis sustituye la sid y contraseña Variables con tus credenciales de wifi. Guarda tu boceto y súbelo al tablero..

Ahora, cuando se inicia la placa, intentará conectarse a su red Wi-Fi, antes de volver a la función de configuración. Ahora, vamos a configurar la integración IFTTT.

Paso 6: Configuración de la integración de IFTTT

IFTTT permite la integración con una amplia gama de servicios web. Lo usamos en nuestro tutorial de Wi-Fi PC tower LED 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..

Navegar a la Mis applets página, y seleccione Nuevo applet

Haga clic en +esta y conectarse a Webhooks. Seleccionar “Recibe una solicitud web” y nombra tu evento. Mantenlo simple! Anote el nombre del evento, deberá agregarlo a su código NodeMCU más adelante. Hacer clic “Crear gatillo”.


Ahora seleccione +ese. Buscar el Gorjeo Para realizar el servicio y conectarse a él, deberá autorizarlo para que publique en su cuenta de Twitter. Seleccionar “Publicar un tweet” y elige tu mensaje.


La siguiente pantalla le pedirá que revise el applet. Haga clic en Finalizar. Eso es!

Paso 7: Agregar credenciales de IFTTT al código

De vuelta en el IDE de Arduino, deberá agregar su clave IFTTT API y el nombre del evento a sus variables definidas. Para encontrar la clave API, navegue hasta Mis applets y seleccione Webhooks bajo la Servicios lengüeta. Seleccionar Documentación para acceder a tu llave.

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 comas invertidas deben permanecer, solo reemplazar el texto.

Entre llamar al connectToWifi () y enviando la placa a dormir, crea una instancia del objeto de biblioteca IFTTTWebhook. El LED señala la finalización de la tarea antes de que comience nuevamente el sueño profundo.

// acaba de conectarse a Wi-Fi IFTTTWebhook hook (IFTTT_API_KEY, IFTTT_EVENT_NAME); gancho. gatillo (); pinMode (ledPin, SALIDA); digitalWrite (ledPin, HIGH); retraso (200); digitalWrite (ledPin, LOW); // ahora enviando la tabla a dormir 

Activando el disparador en el gancho el objeto dispara el applet de IFTTT y debe publicarse en su cuenta de Twitter. Guarda tu boceto y cárgalo. Ahora deberías tener un botón de tweeting completamente funcional..

Si parece que no funciona, revise cuidadosamente su código y sus credenciales para detectar errores. Si realmente te atascas, 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 maneras de mejorarlo. Para simplificar, la conexión USB se usa para energía aquí. Una batería lo haría completamente móvil, y un estuche que sostiene el circuito sería el proyecto de impresión 3D perfecto para principiantes.

A pesar de usar 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. Aunque es más difícil que este tutorial, si creaste tu propio Arduino desde el principio, un botón de Wi-Fi con batería podría durar meses.!

Este proyecto sería perfecto para aplicaciones remotas para el hogar inteligente. Ya hay una cantidad considerable de aplicaciones de automatización del hogar 10 de las Mejores recetas de IFTTT para la automatización del hogar inteligente 10 de las Mejores recetas de IFTTT para la automatización del hogar inteligente Las recetas IFTTT correctas para su hogar inteligente pueden ahorrarle tiempo, esfuerzo y energía. Aquí están diez de nuestros favoritos para comenzar. Leer más disponible en IFTTT. Una vez que haya bajado lo básico, puede usar casi cualquier sensor o interruptor para activar prácticamente cualquier servicio que pueda imaginar..

Crédito de la imagen: Vadmary /

Explorar más sobre: ​​Arduino, Tutoriales de proyectos de bricolaje..