Conoce al asesino de Arduino ESP8266

  • Brian Curtis
  • 0
  • 4079
  • 1097
Anuncio

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 incorporado por menos de $ 10? Bueno, hay.

Conoce al asesino de Arduino: ESP8266. Era solo cuestión de tiempo antes de que la corona fuera robada de la brillante cabeza de nuestra querida placa de desarrollo Arduino. ¿Es posible enamorarse de una placa de circuito??

Dejando a un lado los nombres pegadizos, 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 de hackers se dio cuenta de que podía eliminar al Arduino de la ecuación por completo.

En menos de un año, el ESP8266 se ha disparado en popularidad, y ahora está tan bien respaldado y desarrollado que si actualmente está usando Arduino, debe ponerse de pie y tomar nota. Compre uno ahora, luego siga esta guía para comenzar a programar su ESP8266, todo desde el conocido IDE de Arduino.

Por supuesto, no está limitado a usar el IDE de Arduino: también son compatibles con Lua (que para mis ojos de principiante parece un Python adelgazado), pero dado que estamos abordando esto desde la perspectiva de aquellos que hemos aprendido en Arduino, eso es lo que cubriremos exclusivamente hoy.

Hay bastantes modelos de ESP8266 por ahora, pero voy a seguir adelante y recomendaré este: ESP-12E (también conocido como NodeMCU 1.0, o su nuevo hermano NodeMCU 2.0).

Es un poco más caro que los demás ($ 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 programación o alimentación, por lo que es la forma más fácil de trabajar. Si compra cualquier otro tipo de placa ESP8266, es posible que necesite un regulador de potencia de 3.3v separado y una conexión FTDI adecuada para la programación.

Comenzando con ESP8266-12E y Arduino

Primero, instale los controladores seriales para esta placa. Es posible que deba deshabilitar la firma KEXT si está ejecutando El Capitan 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 URL adicionales del administrador de la junta:

Presiona Ok, luego abre el Gerente de Juntas desde Herramientas -> Tablero menú, busque esp8266 e instale la plataforma. Ahora debería ver una opción para NodeMCU 1.0.

Deje la CPU y la velocidad de carga como está, y seleccione su puerto serie recién instalado. En Mac, esto aparece como cu.SLAB_USBtoUART.

Como primer programa, sugeriría el simple escáner Wi-Fi: búsquelo en Archivo -> Ejemplos -> ESP8266WiFi -> WifiScan. Tenga en cuenta que la carga es bastante lenta, pero eventualmente dirá “terminado de cargar” y en ese punto (no antes, o interrumpirá 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 básico absolutamente simple para conectarse a una red Wi-Fi. No hace nada más que conectarse, pero es algo que puede agregar más tarde. Solo recuerde cambiar YOUR_SSID y YOUR_PASSWORD a sus detalles de Wi-Fi. Cargue, abra la consola serie y debería verla conectarse.

 #include const char * ssid = "YOUR_SSID"; const char * contraseña = "SU_ CONTRASEÑA"; WiFiClient wifiClient; configuración nula () Serial.begin (115200); Serial.print ("Conexión 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 fue?

Antes de continuar, aquí está el diagrama de pinout: puede 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 la placa PCB. Si absolutamente, positivamente, no puede entender por qué un sensor no funciona, probablemente haya mezclado los números de pin.

Sensor rápido inteligente para el hogar con MQTT y DHT11

Aquí hay un ejemplo práctico que puede usar de inmediato para monitorear su hogar. Agregaremos un sensor de temperatura y humedad DHT11, luego informaremos los valores utilizando el protocolo MQTT a través de la red Wi-Fi, en mi caso a un sistema de automatización del hogar OpenHAB DIY (si no, puede leer nuestra guía para principiantes para poner en funcionamiento OpenHAB en una Raspberry Pi Comenzar con OpenHAB Home Automation en Raspberry Pi Comenzar con OpenHAB Home Automation en Raspberry Pi OpenHAB es una plataforma de automatización del hogar madura y de código abierto que se ejecuta en una variedad de hardware y es independiente del protocolo, lo que significa se puede conectar a casi cualquier hardware de domótica en el mercado hoy en día, y la parte 2, que trata específicamente con la instalación de un servidor MQTT. Guía para principiantes de OpenHAB Parte 2: ZWave, MQTT, Reglas y gráficos Guía para principiantes de OpenHAB Parte 2: ZWave, MQTT, Reglas y gráficos OpenHAB, el software de automatización del 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. ser francamente frustrante. ).

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 ellos. 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 errores 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. Deberá reiniciar el IDE de Arduino después de reemplazarlos..

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 existe una autenticación) y canales para publicar datos en.

Así es como funciona y algunas notas:

  • Primero nos conectamos al Wi-Fi, luego al servidor MQTT, luego comenzamos el principal lazo().
  • En el bucle, encuestamos el sensor DHT cada 60 segundos y publicamos lecturas en los canales MQTT relevantes. Nuevamente, si encuentra que la mayoría de las lecturas dan como resultado un mensaje de error, tiene la versión incorrecta de la biblioteca DHT - rebaje a v1.0.
  • client.loop () pasa el control a la biblioteca MQTT, lo que le permite reaccionar a los mensajes entrantes.
  • Hay una mensaje recibido() función donde manejamos los mensajes entrantes: solo haga una declaración if simple para comparar la carga útil con el mensaje que está esperando. Podría usar esto para activar un relé, por ejemplo.
  • Después de ejecutar estos durante unos días, descubrí que dejarían de funcionar aleatoriamente. Supongo que se trata de algún 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 principales, He optado por un reinicio por software simple todos los días. Exactamente un día después de que los nodos sensores se activen por primera vez, se reiniciarán.
  • Al alimentar estos módulos DHT11 baratos desde 3.3v, los valores de humedad son mucho más bajos de lo que deberían ser. He resuelto esto con una simple multiplicación y calibrado contra un sensor comercial. También le aconsejo que confirme con su propia fuente conocida, antes de confiar en las lecturas. Alternativamente, enciéndalos 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ándolos a OpenHAB como se detalla en la parte 2 de nuestra guía para principiantes Guía para principiantes de OpenHAB Parte 2: ZWave, MQTT, Reglas y gráficos OpenHAB Beginner's Parte 2 de la guía: ZWave, MQTT, Reglas y gráficos OpenHAB, el software de automatización del 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. , donde también te mostré cómo graficar los datos.

Adiós Arduino, te queríamos tanto. Es broma: no todos los lugares de mi casa pueden tener Wi-Fi, así que para esos lugares aún 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 ESP8266 Cómo hacer su propio botón de conexión Wi-Fi con ESP8266 Cómo hacer su propio botón de conexión Wi-Fi con ESP8266 En este tutorial, aprenderá cómo crear un botón habilitado para Wi-Fi usando NodeMCU e IFTTT. .

Pero, ¿qué vas a hacer con ESP8266? ¿Algún proyecto que use ESP8266 que le gustaría ver escrito en MakeUseOf? Háganos saber en los comentarios!




Nadie ha comentado sobre este artículo todavía.

Sobre tecnología moderna, simple y asequible.
Tu guía en el mundo de la tecnología moderna. Aprenda a usar las tecnologías y los dispositivos que nos rodean todos los días y aprenda a descubrir cosas interesantes en Internet.