Conoce al Arduino Killer ESP8266
El Wi-Fi es un kit esencial para cualquier proyecto de bricolaje de Internet de las cosas (IoT), pero nuestro Arduino favorito no viene con Wi-Fi, y agregar un escudo de Wi-Fi puede llevar el costo total a alrededor de $ 40. ¿Qué pasa si te digo que hay una placa de desarrollo compatible con Arduino con Wi-Fi integrado por menos de $ 10? Bueno, hay.
Conoce al asesino de Arduino: ESP8266. Era solo una cuestión de tiempo antes de que la corona fuera robada de la cabeza brillante de nuestro querido tablero de desarrollo Arduino. ¿Es posible enamorarse de una placa de circuito??
Dejando de lado los nombres pegajosos, el ESP8266 (también conocido como NodeMCU) se comercializó originalmente como un complemento de Wi-Fi de bajo costo para las placas Arduino, hasta que la comunidad hacker se dio cuenta de que podía eliminar por completo a Arduino de la ecuación..
En menos de un año, el ESP8266 se ha disparado en popularidad, y ahora está tan bien soportado y desarrollado que si actualmente estás usando Arduino, debes levantarte y tomar nota. Compre uno ahora, luego siga esta guía para comenzar a programar su ESP8266, todo desde el familiar IDE de Arduino..
Por supuesto, no está limitado a usar el IDE de Arduino, también son compatibles con Lua (que parece un Python adelgazado para mis ojos de novatos), pero ya que estamos abordando esto desde la perspectiva de aquellos que hemos aprendido en Arduino, eso es lo que cubriremos exclusivamente hoy.
Ahora hay bastantes modelos de ESP8266, pero voy a seguir adelante y recomendarles este: ESP-12E (también conocido como NodeMCU 1.0, o su hermano más reciente, NodeMCU 2.0).
Es un poco más caro que los otros (¡$ 6.50 en comparación con $ 4!), Pero incluye el controlador en serie necesario para programar el chip, y tiene un regulador de potencia incorporado, así como muchos pines IO. Es ampliamente compatible y realmente no necesita nada más que una conexión USB para la programación o la alimentación, por lo que es más fácil trabajar con él. Si compra cualquier otro tipo de placa ESP8266, es posible que necesite un regulador de potencia de 3.3 V por separado y una conexión FTDI adecuada para la programación..
Primeros pasos con ESP8266-12E y Arduino
Primero, instale los controladores de serie para esta placa. Es posible que deba deshabilitar la firma KEXT si está ejecutando El Capitán debido a los nuevos sistemas de seguridad.
A continuación, debemos habilitar el soporte para ESP8266 desde el administrador de la placa del Arduino IDE. Abre Preferencias e ingresa la siguiente URL donde dice Direcciones URL adicionales de Board Manager:
Pulsa Ok, luego abre el Gerente de Juntas desde Herramientas -> Tablero Menú, buscar esp8266 e instalar la plataforma. Ahora debería ver una opción para NodeMCU 1.0.
Deje la CPU y la velocidad de carga tal como están, y seleccione el puerto serie que acaba de instalar. En Mac, esto aparece como cu.SLAB_USBtoUART.
Como primer programa, sugeriría el escáner Wi-Fi simple: encuéntrelo en Archivo -> Ejemplos -> ESP8266WiFi -> WifiScan. Tenga en cuenta que es bastante lento para cargar, pero eventualmente dirá “terminado de subir” y en ese momento (no antes, o romperá el proceso de carga), puede abrir el monitor de serie. Deberías ver algo similar a esto:
¡Éxito! Ahora, intentemos conectarnos a uno.
Aquí hay un código de barebones absolutamente simple para conectarse a una red Wi-Fi. No hace nada más que conectarse, pero es algo que puede agregar también más adelante. Solo recuerda cambiar el YOUR_SSID y YOUR_PASSWORD a tus detalles de Wi-Fi. Sube, abre la consola Serial y deberías verla conectándose.
#include const char * ssid = "YOUR_SSID"; const char * password = "YOUR_PASSWORD"; WiFiClient wifiClient; configuración vacía () Serial.begin (115200); Serial.print ("Conectando a"); Serial.println (ssid); WiFi.begin (ssid, contraseña); while (WiFi.status ()! = WL_CONNECTED) delay (500); Serial.print ("."); Serial.println (""); Serial.println ("WiFi conectado"); Serial.println ("dirección IP:"); Serial.println (WiFi.localIP ()); void loop ()
¿No es genial lo ridículamente simple que era??
Antes de continuar, aquí está el diagrama de pines: podría ser útil más adelante. Tenga en cuenta que los números de pin a los que se hace referencia en el código son los números GPIO, no el D0-16 probablemente escrito en su PCB de la placa. Si absolutamente, definitivamente no puedes entender por qué un sensor no funciona, probablemente hayas mezclado los números de pin..
Sensor de casa inteligente rápida con MQTT y DHT11
Este es un ejemplo práctico que puede utilizar de inmediato para controlar su hogar. Agregaremos un sensor de temperatura y humedad DHT11, luego informaremos los valores usando el protocolo MQTT a través de la red Wi-Fi, en mi caso a un sistema de domótica OpenHAB DIY (de lo contrario, puede leer nuestra guía de principiantes para Cómo configurar OpenHAB en una Raspberry Pi Cómo comenzar a usar OpenHAB Home Automation en Raspberry Pi Cómo comenzar a usar OpenHAB Home Automation en Raspberry Pi OpenHAB es una plataforma de automatización doméstica de código abierto y madura que se ejecuta en una variedad de hardware y es sinónimo de protocolo. puede conectarse a casi cualquier hardware de automatización del hogar en el mercado hoy en día. Lea más, y la parte 2, que trata específicamente sobre la instalación de un servidor MQTT. Guía de principiantes de OpenHAB Parte 2: ZWave, MQTT, Reglas y gráficos Guía de principiantes de OpenHAB Parte 2: ZWave MQTT, Rules and Charting OpenHAB, el software de código abierto de automatización del hogar, supera con creces las capacidades de otros sistemas de automatización del hogar en el mercado, pero no es fácil de configurar. actuar, puede ser francamente frustrante. Lee mas ).
En el lado del cableado, conecte el sensor DHT a GND, 3.3v, y ~ D4 (o GPIO 2). Eso es todo lo que necesitamos por ahora.
Descargue estas bibliotecas MQTT y DHT. Incluso si ya los tienes, descargue estos de todos modos, haga una copia de seguridad de lo que tiene y sobrescriba con estos. La última biblioteca DHT11 de Adafruit utiliza un algoritmo automático para determinar la velocidad a la que se leen los datos del sensor, pero tiene un error en ESP8266 y el 90% del tiempo da como resultado lecturas fallidas.
Con la versión anterior 1.0 de la biblioteca que he incluido en la descarga, puede cambiar manualmente el tiempo: 11 funciona mejor para estas placas ESP2866. También revisé muchas copias de la biblioteca MQTT tratando de encontrar una buena. llamar de vuelta Función, finalmente aterrizando en el incluido. Tendrá que reiniciar el IDE de Arduino después de reemplazar estos.
Aquí está el código completo para el proyecto. En la parte superior se encuentran todas las variables que necesita cambiar, incluidos los detalles de Wi-Fi, el servidor MQTT (en su lugar, se puede usar una URL si se usa un servidor en la nube, aunque no hay autenticación implementada), y los canales para publicar datos en.
Así es como funciona y algunas notas:
- Primero nos conectamos al Wi-Fi, luego al servidor MQTT, luego comenzamos a lazo().
- En el bucle, sondeamos el sensor DHT cada 60 segundos y publicamos las lecturas en los canales MQTT relevantes. Nuevamente, si encuentra la mayoría de los resultados de las lecturas en un mensaje de error, tiene la versión incorrecta de la biblioteca de DHT - bajar a v1.0.
- cliente.loop () pasa el control a la biblioteca MQTT, lo que le permite reaccionar a los mensajes entrantes.
- Hay una mensaje recibido() función en la que manejamos los mensajes entrantes: simplemente haga una declaración if para comparar la carga útil con el mensaje que está esperando. Podría usar esto para activar un relé, por ejemplo.
- Después de ejecutarlos durante unos días, descubrí que dejarían de funcionar al azar. Supongo que esto es un tipo de pérdida de memoria, pero dado que no tengo la habilidad de codificación para lidiar con eso y podría ser con las bibliotecas centrales, He optado por un simple reinicio por software todos los días. Exactamente un día después de que los nodos de sensores se activan por primera vez, se reiniciarán..
- Al alimentar estos módulos DHT11 baratos desde 3.3 v, los valores de humedad son mucho más bajos de lo que deberían ser. Resolví esto con una simple multiplicación y calibré contra un sensor comercial. También le aconsejo que confirme en contra de su propia fuente conocida, antes de confiar en las lecturas. Alternativamente, aliméntelos con 5V - pero debe colocar un cambiador de nivel lógico de 5v-3.3v entre el pin de datos y el ESP8266, o lo dañará.
Si todo salió bien, ahora debería estar recibiendo lecturas de sensores en su agente MQTT, y puede continuar conectándolas a OpenHAB como se detalla en la parte 2 de nuestra guía para principiantes OpenHAB Guía para principiantes Parte 2: ZWave, MQTT, Reglas y gráficos de OpenHAB para principiantes Guía Parte 2: ZWave, MQTT, Reglas y gráficos OpenHAB, el software de automatización de hogar de código abierto, supera con creces las capacidades de otros sistemas de automatización del hogar en el mercado, pero no es fácil de configurar. De hecho, puede ser francamente frustrante. Leer más, donde también te mostré cómo graficar los datos.
Adiós Arduino, te amamos tanto. Solo bromeaba: no en todas partes de mi casa, incluso puedo obtener Wi-Fi, así que para esos sitios todavía necesitaré una red de malla con receptores Arduino y RF.
Para un proyecto divertido, vea cómo hacer un botón de Wi-Fi con el ESP8266 Cómo hacer su propio botón de Wi-Fi conectado con ESP8266 Cómo hacer su propio botón de Wi-Fi conectado con ESP8266 En este tutorial, aprenderá cómo crear un botón habilitado para Wi-Fi usando NodeMCU e IFTTT. Lee mas .
¿Pero qué harás con ESP8266? ¿Algún proyecto que use ESP8266 te gustaría ver escrito en MakeUseOf? Háganos saber en los comentarios.!
Explorar más sobre: Arduino, Electrónica, Internet de las cosas, Sensor inteligente.