Detector de sonido con sensor de humedad y temperatura con IoT

Una vez vamos a ver como hacer un  simple proyecto de IOT a  traves de la nube de Cayenne, pero esta vez vamos a mostrar como usar un microcontrolador algo menos habitual: el ESP8266 ESP-01.

Es necesario antes de empezar dado la actual tendencia de usar el ESP32 como solución ideal para proyectos de IoT, es necesario  hablar del  ESP01  de ESP32 y ESP8266 , dos dispositivos basados en chips de Espressif Systems que se utilizan comúnmente en proyectos de IoT (Internet de las cosas) y automatización. Ambos dispositivos son populares debido a su bajo costo, baja potencia y alto rendimiento. Sin embargo, hay algunas diferencias importantes entre ellos:.

  • El ESP8266 es un chip WiFi de baja potencia que se utiliza principalmente para aplicaciones de control remoto y automatización. Tiene una interfaz de comunicación serie y solo unos pocos pines disponibles para conectarse a otros dispositivos. Es una opción popular para proyectos pequeños debido a su tamaño y bajo costo.
  • El ESP32, por otro lado, es un chip WiFi y Bluetooth de baja potencia que se utiliza para aplicaciones de IoT y automatización. Tiene una interfaz de comunicación serie y una serie de pines disponibles para conectarse a otros dispositivos y sensores. Además, cuenta con un microcontrolador integrado, una memoria flash y una interfaz USB. También cuenta con una serie de periféricos adicionales como sensores de movimiento, micrófonos, cámaras, etc. Es una opción popular para proyectos más grandes y complejos debido a su mayor flexibilidad y características adicionales.

En resumen, el ESP8266 es un chip WiFi de baja potencia para proyectos pequeños y económicos, mientras que el ESP32 es un chip WiFi y Bluetooth de baja potencia con características adicionales para proyectos más grandes y complejos.

Por otro lados ESP8266 ESP-01 y ESP8266 NodeMCU son dos dispositivos basados en el chip ESP8266 de Espressif Systems. Ambos dispositivos utilizan el mismo chip y tienen muchas características similares, pero también hay algunas diferencias importantes entre ellos:

  • El ESP8266 ESP-01 es un módulo WiFi con un solo chip que se utiliza principalmente para aplicaciones de control remoto y automatización. Tiene una interfaz de comunicación serie y solo unos pocos pines disponibles para conectarse a otros dispositivos, siendo por tanto  una opción popular para proyectos pequeños debido a su tamaño y bajo costo.
  • El ESP8266 NodeMCU, por otro lado, es una placa de desarrollo basada en el chip ESP8266. Tiene una interfaz de comunicación serie y una serie de pines disponibles para conectarse a otros dispositivos y sensores. Además, cuenta con una serie de características adicionales como un microcontrolador integrado, una memoria flash y una interfaz USB. Es una opción popular para proyectos más grandes y complejos debido a su mayor flexibilidad y características adicionales.

En resumen, el ESP8266 ESP-01 es un módulo WiFi pequeño y barato para proyectos pequeños, mientras que el ESP8266 NodeMCU es una placa de desarrollo más completa con características adicionales para proyectos más grandes y complejos.

Por otro lado Cayenne es una plataforma de Internet de las cosas (IoT) desarrollada por MyDevices. Permite a los usuarios conectar y controlar dispositivos IoT mediante una interfaz web fácil de usar. Con Cayenne, los usuarios pueden crear reglas y automatizaciones para sus dispositivos, visualizar datos en tiempo real y recibir alertas cuando ocurra algo inusual. También permite a los desarrolladores crear aplicaciones IoT personalizadas mediante una API.

Esta es la lista de componente usados en este proyecto:

  1. ESP8266 ESP-01 WiFi módulo
  2. FTDI Breakout Board + Mini cable USB
  3. ESP8266 ESP-01 Breakout Board (opcional)
  4. Módulo relé de 1 canal
  5. DHT11 Sensor de humedad y temperatura
  6. Sensor de sonido
  7. Breadboards (utilizaré breadboards pequeños 2)
  8. 5V a 3.3V paso descendente módulo de Buck (opcional)
  9. Un montón de cables de puente

En primer lugar, debemos estudiar las conexiones de estos componentes. Aquí están los módulos principales que vamos a utilizar para este proyecto (es posible que tenga una variante diferente de los componentes, así que por favor tome nota de las etiquetas de pin)

img_4629

El modulo ESP8266 ESP-01

ESP8266 ESP-01

Tenemos que tener cuidado ya que esta placa funciona en un 3, 3V lógica. El pin VCC (aunque intente alimentar con 5V y no pase nada) debe conectarse a 3.3V. Lo mismo ocurre con el pin que  va a CH_PD. El pin RX debe conectarse a TX de la placa de arranque FTDI, a través de un divisor de tensión. Puede establecer el puente en su módulo FTDI de 3.3V si lo tiene (hay módulos FTDI que  dan la opción de elegir entre 5V y 3.3V). En caso de que la fuente de alimentación sólo proporcione 5V, consulte el divisor de tensión a continuación (usted deberá elegir las resistencias correctas para proporcionar energía suficiente a su módulo de ESP8266).img_4636-1

Módulo relé de 1 canal

El módulo de relé habitual tiene tres pines diferentes para la energía y señal. Para la energía, pin etiquetas son VCC y GND. Para activar o desactivar el relé, se utiliza el pin como IN. Muchos de estos módulos pueden funcionar muy bien con un 3,3 v, pero deberá asegurarse que lo tolera porque de lo contrario no responderá 

DHT11 Sensor de humedad y temperatura

Se trata de los sensores DHT11. Lee la temperatura y humedad del lugar donde está el sensor. Tiene dos pines para alimentación («-» para la tierra, el pin central es VCC). El pin con la etiqueta «S» es la entrada de pin. Las lecturas se reciben a través de este pin.

Sensor de sonido

Los sensores de los sonidos suelen también tener 3 pines: VCC, GND y OUT. El pin de salida envía el nivel de sonido en el lugar donde el sensor. También puede controlar su sensibilidad girando el potenciómetro en él (cuadro azul con blanco del «engranaje» dentro).

FTDI USB a TTL convertidor de serie

En la imagen vemos  un típico  convertidor de USB a TTL serie. Utilizamos esta placa para cargar nuestros bocetos en el módulo de WiFi de ESP8266 ESP-01. También puede utilizarse para programar microcontroladores diferentes. La placa generalmente tiene 6 pines (aunque se puede soldar más pins de encabezado en ambos lados de la placa): DTR, RX, TX, VCC, CTS y GND. CTS generalmente no se utiliza. Para nuestra actividad, son necesarios solamente 4 pines: VCC, RX, TX y GND.

FTDI USB to TTL Serial ConverterEn la siguiente imagen, vemos  el módulo FTDI configurado para 3.3V mediante  su puente correspondiente:

img_4767

Cuando están conectados los pines 1 y 2, el módulo FTDI proporciona una potencia de 5 voltios (mismo va con el pin de TX también). Cuando se conectan los pines 2 y 3, proporcionará energía 3.3-vols (lo mismo con el pin de TX también).

Conversor de 5V a 3.3V  (opcional)

5V to 3.3V Stepdown Power Supply Buck Module
Esto  placa es opcional a menos que la placa breakout FTDI no de la opción de cambiar el voltaje (generalmente entre estos dos: 3.3V y 5V). La fuente Buck módulo de alimentación de paso descendente 5V a 3.3V  se utiliza para «convertir» 5V a 3.3V. Como su nombre lo indica este modulo es muy útil para los módulos que  usan lógica de  3.3V.

El código

Antes de proceder con la codificación, necesitamos tener la siguiente configuración en el IDE de Arduino. Para las bibliotecas, descargarlos desde el enlace proporcionado para cada biblioteca (véase abajo) en Github.

  1. ESP8266 Tableros – para obtener instrucciones paso a paso, por favor véase la sección siguiente.
  2. SimpleDHT bibliotecas – bibliotecas de SimpleDHT pueden ser descargado aquí.
  3. SimpleTimer bibliotecas – bibliotecas Simple pueden ser descargado aquí.

Creación de las placas de ESP8266 es muy fácil. Por favor siga los siguientes pasos:

  1. Abra el IDE de Arduino.
  2. Ir a archivo > Preferencias.
    ArduinoIDE_File_Preference
  3. De las URLs de Gerente tableros adicionales texto de campo, colocar esta URL: http://arduino.esp8266.com/stable/package_esp8266com_index.json. Haga clic en aceptar luego.
    ArduinoIDE_PreferencesWindow
  4. Ahora, vaya a Herramientas > Placas > Gestor de placas.
    ArduinoIDE_File_Tools_Board_BoardManager
  5. En Administrador de tablas, buscar esp8266 e instalar el esp8266 por ESP8266 comunidad versión x.x.x. Cierre la ventana del administrador de tablas.
    ArduinoIDE_BoardsManager
  6. Ir a Herramientas > Placa Desplácese por la lista hasta encontrar Módulo genérico de ESP8266.
    ArduinoIDE_Select_BoardsManager

Agregar las bibliotecas requeridas

  1. Ir al link proporcionado arriba para las bibliotecas necesarias 2 dos (SimpleDHT y SimpleTimer.
  2. Para cada vínculo, haga clic en clonar o descargar. Aparece una pequeña ventana, haga clic en Descargar Zip. Se refieren a las imágenes que se muestra a continuación:SimpleDHTLibraryDownload.pngSimpleTimerLibraryDownload
  3. Guarde el archivo ZIP para cada biblioteca.
  4. En el IDE de Arduino, vaya a Sketch > Biblioteca incluyen > Agregar. Cierre biblioteca.
  5. Busque y agregue a cada biblioteca (uno a la vez).
    ArduinoIDE_SelectLibs

Agregar las bibliotecas de Cayenne

Bibliotecas de Cayenne se puede instalar el IDE de Arduino mediante el administrador de biblioteca. Para ello, siga los siguientes pasos:

  1. En el IDE de Arduino, vaya a Sketch > Biblioteca incluyen. Haga clic en administrar bibliotecas.
    ArduinoIDE_Goto_LibraryManager
  2. En la ventana que aparecerá, escriba Cayenne en el campo de búsqueda. Instale el Cayenne por myDevices versión x.x.x y CayenneMQTTpor myDevices versión x.x.x. Cierre la ventana después. Estas bibliotecas están también disponibles en Github (bibliotecas deCayenne y CayenneMQTT ).ArduinoIDE_LibraryManager

Modo de programación

Inicialmente, tenemos que configurar nuestro ESP8266 ESP-01 al modo de programación. No necesitamos conectar nuestros componentes, sin embargo, como conectar les pueden causar la carga de los bocetos al fracaso. La siguiente tabla detalla qué pines están conectados uno al otro entre el módulo de ESP8266 ESP-01 WiFi y el convertidor serie FTDI  USB a TTL.

Program Mode Connections

Es necesario establecer el puente del módulo FTDI para 3.3V. Esta manera, nosotros no necesitando cualquier divisor del voltaje o el paso hacia abajo módulo de buck. El convertidor USB a Serial podría tener asignaciones de pines diferentes. La descripción anterior se demuestra en el siguiente esquema:

ESP8266 Project 3v3 Program Mode_bb

¡Eso es todo! Ahora estamos listos para configurar nuestra consola y subir los bocetos:
Upload the sketch

Crear el tablero de mandos de Cayenne

  1. Inicie sesión en su cuenta de Cayenne (registro gratis si usted no tiene uno pero al Cayenne registro página):
    Cayenne USB Serial - 01 Logon
  2. Una vez identificado, el siguiente paso sería elegir el dispositivo que vamos a usar . Si este es el primer dispositivo en tu panel de control, elija todos los dispositivos:
    1 - All Devices , Seleccione ESP8266 genérico en microcontroladores:
    2 - ESP8266               Si tiene añadidos previamente en los dispositivos existentes, necesitará agregar un dispositivo haciendo clic en el menú de añadir dispositivos/Widget:
    Cayenne USB Serial - 02 Add New Device
    A continuación, elija ESP8266 ya que esta es nuestra tabla de desarrollo:
    ESP8266MQTT
  3. En la página siguiente, se muestra con el nombre de usuario de MQTT, MQTT contraseña e ID de cliente. Necesitamos estos datos en el código más adelante. También aparecerá en la parte inferior de la página que está esperando el dispositivo a conectar.
    CayenneCredentials
  4. Ahora, procedemos con el código. Abra el IDE de Arduino. Ir a archivo > ejemplos > Cayenne-MQTT-ESP8266 > ESP8266. Este esbozo será nuestro boceto base.MQTT Sketch
  5. Volver al Portal de Cayenne. Tomar nota de lo siguiente, porque vamos a utilizarlo en nuestro código:
    • MQTT USERNAME
    • MQTT CONTRASEÑA
    • ID DE CLIENTE
  6. Ahora, vuelve al IDE de Arduino. Pegue los valores en la sección resaltada en la captura de pantalla siguiente:
    MQTT Creds Section
  7. También, proveer el nombre de Wi-Fi (SSID) y la contraseña en esta sección del código:
    Wifi creds
  8. Por cierto, tenemos que incluir las librerías necesarias: SimpleDHT y SimpleTimer. La SimpleDHT nos permite usar la temperatura de la DHT. El SimpleTimer nos permitirá ejecutar métodos fuera el método loop():
    Additional Libraries
  9. Ahora tenemos que declarar las clavijas para ser usado por los sensores.
    • DHT11 Pin = Pin 2 (GPIO2 ESP8266 ESP-01)
    • Pin de sonido = Pin 3 (GPIO3 ESP8266 ESP-01)
    • Pin de relé = Pin 1 (GPIO1 ESP8266 ESP-01)
      Sensor declaration
  10. Puesto que vamos a enviar datos a la plataforma del Cayenne IoT usando MQTT API, tenemos que pasar el valor de sensores a los pines virtuales. Los pines virtuales se utilizará por los widgets en nuestro escritorio. No vamos a utilizar V1, porque establecimos esto como una salida (para controlar el relé – usado en los widgets de dashboard de Cayenne):
    • V2 – humedad (datos de DHT11)
    • V3 – temperatura (datos de DHT11)
    • V4 – sonido (datos del Sensor de sonido)
  11. Subir el boceto a la Placa de ESP8266 ESP-01. Asegúrese de que el elegido es Genérico módulo ESP8266:ESp8266 board on board

Código completo

// This example shows how to connect to Cayenne using an ESP8266 and send/receive sample data.
// Make sure you install the ESP8266 Board Package via the Arduino IDE Board Manager and select the correct ESP8266 board before compiling.

//#define CAYENNE_DEBUG
#define CAYENNE_PRINT Serial
#include <CayenneMQTTESP8266.h>

#include <SimpleTimer.h> // Download from https://github.com/jfturcot/SimpleTimer
#include <SimpleDHT.h> // Download from https://github.com/adafruit/DHT-sensor-library

// WiFi network info.
char ssid[] = "<your ssid/wifi name>";
char wifiPassword[] = ""<your ssid/wifi password>"";

// Cayenne authentication info. This should be obtained from the Cayenne Dashboard.
char username[] = "<your MQTT Username>";
char password[] = "<your MQTT Password>";
char clientID[] = "<your client id>";

// DHT11 Pin
int pinDHT11 = 2;
SimpleDHT11 dht11;

// Sound Pin
int soundPin = 3;

// Relay Pin
int relayPin = 1;

// Timer
SimpleTimer timer;

void setup() {
 Serial.begin(9600);
 Cayenne.begin(username, password, clientID, ssid, wifiPassword);
 pinMode(relayPin, OUTPUT); // Relay
 digitalWrite(relayPin, HIGH);
 pinMode(soundPin, INPUT); // Sound
 timer.setInterval(200L, transmitData); // Method to execute every 200ms
}

void loop() {
 Cayenne.loop();
 timer.run();
}

CAYENNE_IN(relayPin) {
 if (getValue.asInt() == 1) { // NOTE: Channel = Virtual Pin
 digitalWrite(relayPin, LOW);
 }
 else {
 digitalWrite(relayPin, HIGH);
 }
}

void transmitData()
{
 byte temperature = 0;
 byte humidity = 0;
 int err = SimpleDHTErrSuccess;

if ((err = dht11.read(pinDHT11, &temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
 Cayenne.virtualWrite(V4, 0);
 Cayenne.virtualWrite(V2, 0);
 }
 else {
 Cayenne.virtualWrite(V4, (int)temperature);
 Cayenne.virtualWrite(V2, (int)humidity);
 }

if (digitalRead(soundPin) == HIGH) {
 Cayenne.virtualWrite(V3, HIGH);
 }
 else {
 Cayenne.virtualWrite(V3, LOW);
 }
}


Conexión de los sensores y módulos

En esta etapa, debería poder subir tu dibujo con éxito. Ahora, saque la placa de potencia. También, eliminar la conexión GND de GPIO0. No necesitamos GPIO0 conectado a la tierra, a menos que vamos a actualizar el código. Refiérase a las tablas para cada sensor y el módulo siguiente:

Sensor and Modules Connections

Fuentes de alimentación de todos estos componentes están conectadas a la tensión de salida del paso por módulo, lo que significa que están alimentados a través de 3, 3V. La fuente de alimentación principal es la tabla de desglose FTDI. El esquema a continuación muestra las conexiones completas, después de cargar exitosamente el código:

ESP8266 Project 3v3_ no rx and tx connection

Nota: Los pines RX y TX del módulo FTDI no están conectados a los pines TX y RX del módulo wifi, y es tan GPIO0 (de tierra).

La imagen de abajo es el conjunto real de los esquemas que se muestra arriba:
img_4805img_4807

¡Eso es todo! Hemos terminado con estas configuraciones: placas, las bibliotecas y componentes. Ahora estamos listos para configurar nuestro proyecto con pimienta usando MQTT. Por cierto, MQTT está parado para el transporte de telemetría de MQ. Simplemente hablando, es un protocolo de mensajes entre las máquinas y la Internet de las cosas! Más sobre este tema en Docs de Cayenne.

La energía de las placas una vez más: el módulo de Wifi ESP8266 ESP-01 debe ser capaz de conectarse a su Wifi. Ahora, vuelve al portal de Cayenne. Usted debe ser capaz de ver el tablero de instrumentos widgets inicial rellena previamente que puede Agregar a la consola. Ahora puede personalizar el tablero de instrumentos.

Inicialmente, esto es como el tablero de instrumentos cuando el módulo de ESP8266 ESP-01 WiFi comienza a enviar datos a la consola de Cayenne (bajo el dispositivo configurado allí):

Initial Dashboard - Cayenne

Añadir los widgets iniciales que se muestra arriba, haga clic en el icono «+» en la esquina superior derecha de cada widget inicial:
Add widgets

Una vez añadido, ahora personalizaremos cada widget. Esto es cómo se ve como cuando se agregan estos widgets iniciales:
added widgets

Para personalizar cada widget, haga clic en el icono de la derecha, luego seleccione Ajustes. Consulte captura de pantalla siguiente:
Customize Widget

Una ventana emergente aparece y nos permitirá cambiar el nombre del Widget, canal, Widget icono y número de lugares decimales. Dejaremos el canal como es. No cambie el valor de la canal, puesto que el valor es el Virtual Pin (V0, V1, V2…) utilizados en el código de este widget. Virtual Pin 4 (V4) es la temperatura Virtual Pin 2 (V2) es la humedad y Virtual Pin 3 (V3) es el valor del sensor de sonido (0/1).

A continuación se muestran la configuración de cada widget inicial:

Config - HumidityConfig - Sound DetectedConfig - Temperature

Aquí es cómo verá después:
Config - Finished Initial

Ahora, todavía tenemos que añadir un widget más. Este widget es para que el relé para activar/desactivar. En la parte izquierda del tablero de instrumentos (superior izquierda), haga clic en Agregar nuevoy, a continuación, haz clic en el Dispositivo/Widget:
Cayenne USB Serial - 02 Add New Device

Desplácese hacia abajo más abajo y buscar Widgets personalizados. Seleccione el botón:
Custom Widgets - Button

Tenemos que cambiar la configuración del widget de botón:

  • Nombre = interruptor de relé
  • Dispositivo = ESP8266 genéricos (o el dispositivo llamado si ya tienes)
  • Datos = actuador Digital
  • Unidad = Digital (0/1)
  • Canal = 1 (esto es GPIO1 del módulo WiFi ESP8266 ESP-01 – código de revisión)
  • Elija el icono = botón (puede elegir qué icono que desee)

Abajo se encuentra la captura de pantalla de los ajustes del botón. Haga clic en agregar Widget luego:
Add Button Widget

El tablero final ahora este aspecto:
Final Dashboard

Y hemos terminado! Ahora, pruebe a activar/desactivar el relé del interruptor. El relé conectado a la ESP8266 ESP-01 WiFi módulo se activar o desactivar, oirá sonidos de clic. Trate de hacer algo de ruido. El widget de sonido registrará 1 (si se detecta ruido, 0 si no). Trate de observando los widgets de temperatura y humedad – estos valores el cambio según lo que se «intuye» de donde es el módulo DHT11.

Sólo hemos utilizado la API de Cayenne MQTT para conectar nuestro dispositivo con componentes conectados a él.

https://mydevices.com/article/cayenne-mqtt-standalone-esp8266-esp-01/

🤞 No se pierda nuestro boletín mensual !es gratis!

¡No hacemos spam! Más información en nuestra política de privacidad

Deja una respuesta