Tabla de contenido:

Construya un sensor de calidad del aire de IoT interno sin necesidad de nube: 10 pasos
Construya un sensor de calidad del aire de IoT interno sin necesidad de nube: 10 pasos

Video: Construya un sensor de calidad del aire de IoT interno sin necesidad de nube: 10 pasos

Video: Construya un sensor de calidad del aire de IoT interno sin necesidad de nube: 10 pasos
Video: Arduino IoT Cloud con ESP32, Relé (relay) y Sensor DHT22. Guía completa paso a paso desde cero 2024, Junio
Anonim
Construya un sensor de calidad del aire de IoT interno sin necesidad de nube
Construya un sensor de calidad del aire de IoT interno sin necesidad de nube
Construya un sensor de calidad del aire de IoT interno sin necesidad de nube
Construya un sensor de calidad del aire de IoT interno sin necesidad de nube
Construya un sensor de calidad del aire de IoT interno sin necesidad de nube
Construya un sensor de calidad del aire de IoT interno sin necesidad de nube
Construya un sensor de calidad del aire de IoT interno sin necesidad de nube
Construya un sensor de calidad del aire de IoT interno sin necesidad de nube

La calidad del aire interior o exterior depende de muchas fuentes de contaminación y también del clima.

Este dispositivo captura algunos de los parámetros comunes y algunos de los más interesantes mediante el uso de 2 chips de sensor.

  • Temperatura
  • Humedad
  • Presión
  • Gas organico
  • Micropartículas

Los sensores que se utilizan aquí son el BME680 para obtener valores de temperatura, humedad, presión y gases orgánicos y el PMS5003 para obtener la densidad de las micropartículas.

Al usar la biblioteca de HomeDing, es fácil construir un dispositivo que esté conectado solo a la red de su hogar y que pueda ser alcanzado y controlado por cualquier navegador de la red. Viene con una selección de Elementos que permiten usar los chips sensores, dispositivos y otros servicios más comunes.

También ofrece una solución completa para alojar un dispositivo interno del lado web en lugar de utilizar una solución basada en la nube para mostrar los datos del sensor e interactuar con el dispositivo.

Suministros

Todo lo que necesita para construir este proyecto es una placa basada en ESP8266 como la placa nodemcu y un conjunto de sensores para medir la calidad del aire. La biblioteca HomeDing utilizada en este proyecto admite algunos de los chips de sensores comunes para temperatura, humedad, presión y calidad. Aquí se utiliza el chip BMP680.

  • Un enchufe USB y un cable micro-usb para la fuente de alimentación.
  • 1 placa nodemcu con CPU ESP8266.
  • 1 placa de conexión del sensor BME680.
  • 1 sensor láser de partículas de aire PM2.5 tipo PMS5003

Es fácil cambiar el sensor BME680 por un sensor DHT22, ya que también son compatibles con la biblioteca, entre muchos otros.

Paso 1: Prepare el entorno Arduino para ESP8266

Prepare el entorno Arduino para ESP8266
Prepare el entorno Arduino para ESP8266
  1. Instale la última versión de Arduino IDE (actualmente versión 1.8.2).
  2. Utilice Board Manager para instalar el soporte de instalación esp8266. Puede encontrar una instrucción detallada aquí:
  3. Configure las opciones de la placa para un NodeMCU 1.0 con 1 MByte SPIFFS File System como se muestra en la captura de pantalla

Paso 2: Incluya las bibliotecas necesarias

Incluir bibliotecas necesarias
Incluir bibliotecas necesarias

La biblioteca HomeDing se basa en algunas bibliotecas adicionales comunes para que funcionen los sensores y las pantallas.

Cuando instale la biblioteca HomeDing, verá una ventana emergente con estas bibliotecas necesarias que se pueden instalar automáticamente como se muestra en la imagen y es fácil instalarlas todas.

A veces (por razones desconocidas) la instalación de las bibliotecas falla, por lo que todas las bibliotecas necesarias deben instalarse manualmente.

Se pueden encontrar más detalles sobre las bibliotecas requeridas en el sitio web de documentación en

Esta es la lista de bibliotecas requeridas actualmente:

  • Adafruit NeoPixel
  • LiquidCrystal_PCF8574.h
  • Controlador Oled ESP8266 y ESP32 para pantalla SSD1306
  • Codificador rotatorio
  • Biblioteca de sensores DHT para ESPx
  • OneWire

El sensor láser de partículas de aire PMS5003 se comunica mediante una señal de línea serial de 9600 baudios. Esta señal se captura mediante el uso de la biblioteca SoftwareSerial que viene con la instalación de las herramientas ESP8266. Asegúrese de no tener una versión anterior instalada como biblioteca.

Paso 3: personalice el boceto de ejemplo estándar

Personalizar el boceto de ejemplo estándar
Personalizar el boceto de ejemplo estándar

El ejemplo estándar ya incluye algunos de los sensores más comunes como elementos, por lo que solo se requerirá alguna configuración.

Esto se aplica al sensor BME680 compatible con BME680 Element.

El sensor PMS5003 es menos común y debe activarse incluyendo el elemento PMS en el firmware. Esto se hace definiendo #define HOMEDING_INCLUDE_PMS en la sección de registro de elementos del boceto

#define HOMEDING_INCLUDE_BME680 # define HOMEDING_INCLUDE_PMS

Para simplificar la adición del nuevo dispositivo a la red, puede agregar el SSID y la frase de contraseña de su WiFi doméstico en el archivo secrets.h junto al archivo de boceto standard.ino. Pero también puede usar el Administrador WiFi integrado para agregar el dispositivo a la red sin esta configuración codificada.

Ahora todo lo relacionado con la implementación del boceto está hecho y el firmware se puede compilar y cargar.

Paso 4: Cargue la interfaz de usuario web

El ejemplo estándar viene con una carpeta de datos que contiene todos los archivos para la interfaz de usuario web.

Antes de cargar estos archivos, es posible que desee agregar el archivo env.json y config.json que puede encontrar con este artículo porque esto facilitará las cosas.

El contenido de estos archivos es lo que hace que el dispositivo IoT sea especial y se comporte como un sensor de calidad del aire. Se explica en detalle en esta historia.

Utilice la utilidad de carga de archivos ESP8266 y cargue todos los archivos. Necesita reiniciar para activar la configuración.

Paso 5: agregue el sensor BME680

Agregue el sensor BME680
Agregue el sensor BME680
Agregue el sensor BME680
Agregue el sensor BME680
Agregue el sensor BME680
Agregue el sensor BME680

El sensor BME680 se comunica con la placa mediante el bus I2C.

Como esto posiblemente se comparte con otras extensiones como otros sensores o pantallas, se configura en el nivel del dispositivo en env.json junto con el nombre de red del dispositivo. Aquí hay una muestra extraída de la configuración del dispositivo y de I2C:

"dispositivo": {

"0": {"name": "airding", "description": "Sensor de calidad del aire",… "i2c-scl": "D2", "i2c-sda": "D1"}}

En la placa de prueba puede ver los cables de conexión al sensor: 3.3V = rojo, GND = negro, SCL = amarillo, SDA = azul

La configuración para BME680 se puede utilizar en config.json:

"bme680": {

"bd": {"dirección": "0x77", "tiempo de lectura": "10 s"}}

Agregaremos las acciones más tarde.

Para probar la configuración, solo use un navegador y abra https://airding/board.htm y verá los valores reales del sensor mostrados y se actualizarán aproximadamente cada 10 segundos:

Paso 6: agregue el sensor PMS5003

Agregue el sensor PMS5003
Agregue el sensor PMS5003

No obtuve un sensor con un conector compatible con la placa de prueba, así que tuve que cortar uno de los conectores del cable y usar mi soldador para conectarlo directamente a la placa nodemcu. Puedes verlo todavía en las imágenes finales.

La energía para este sensor debe tomarse del Vin que normalmente es alimentado por el bus USB. GND es el mismo pero también está disponible junto al pin Vin.

Los datos del sensor se transfieren en un formato serial estándar de 9600 baudios, por lo que los pines rx y tx y el tiempo de lectura deben configurarse:

"pms": {

"pm25": {"description": "sensor de partículas pm25", "pinrx": "D6", "pintx": "D5", "readtime": "10s"}}

Agregaremos las acciones más tarde.

Para probar la configuración nuevamente, simplemente reinicie el dispositivo y use un navegador y abra https://airding/board.htm y verá el valor real de pm35 del sensor mostrado y se actualizarán aproximadamente cada 10 segundos, pero este valor es normalmente no cambia a menudo.

Puede obtener valores más altos colocando la luz de una vela junto al sensor, ya que una vela produce muchas de estas partículas.

Ahora puede poner todo en una bonita carcasa porque todas las demás configuraciones e incluso las actualizaciones de software se pueden realizar de forma remota.

Paso 7: agregar algunas funciones de red

El siguiente extracto de configuración en env.json está habilitando

  • actualizar el firmware por aire
  • permite detectar la red utilizando el protocolo de red SSDP y recupera la hora actual de un servidor ntp.

{

… "Ota": {"0": {"port": 8266, "passwd": "123", "description": "Escuche las actualizaciones de OTA 'por aire'"}}, "ssdp": {"0 ": {" Manufacturer ":" yourname "}}," ntptime ": {" 0 ": {" readtime ":" 36h "," zone ": 2}}}

Debe ajustar la zona horaria a su ubicación. Si tiene dudas, puede utilizar el sitio web https://www.timeanddate.com/ para obtener el desplazamiento de UTC / GMT. "2" es adecuado para el verano en Alemania.

También puede ajustar la contraseña ota después de leer las instrucciones sobre el modo de guardado en la documentación en

Después de reiniciar, puede encontrar el dispositivo de transmisión en la red y, después de recibir una respuesta del servidor ntp, la hora local está disponible.

Paso 8: agregar algunos registros

Es posible que solo los valores reales no sean suficientes, por lo que se pueden usar algunos elementos más.

Para esta historia, el elemento Log y el elemento NPTTime se utilizan para registrar el historial de valores del sensor en un archivo de registro y la tarjeta de interfaz de usuario web para este elemento puede mostrarlo como un gráfico.

La siguiente configuración crea los 2 elementos de registro para gas y partículas:

{

"log": {"pm": {"description": "Registro de pm25", "nombre de archivo": "/pmlog.txt", "" ":" 10000 "}," aq ": {" descripción ":" Registro de calidad del gas "," nombre de archivo ":" /aqlog.txt "," "": "10000"}}}

Paso 9: acciones

Comportamiento
Comportamiento

Ahora necesitamos transferir los valores reales a los elementos de registro mediante acciones. Las acciones utilizan una notación de URL para pasar un kay y un valor al elemento de destino. Muchos elementos admiten la emisión de acciones sobre ciertos eventos que suceden, como capturar un nuevo valor de sensor.

Las acciones se configuran en el elemento que emite acciones Se requieren 2 entradas:

  • El evento onvalue pms / p25 envía el valor real al elemento log / pm mediante una acción de valor.
  • El evento bme680 / bd ongas envía el valor real al elemento log / pm mediante una acción de valor.

{

"pms": {"pm25": {… "onvalue": "log / pm? value = $ v"}}, "bme680": {"bd": {… "ongas": "log / aq? value = $ v "}}}

Ahora todos los elementos están configurados.

Paso 10: imágenes y archivos de configuración

Imágenes y archivos de configuración
Imágenes y archivos de configuración
Imágenes y archivos de configuración
Imágenes y archivos de configuración
Imágenes y archivos de configuración
Imágenes y archivos de configuración

Aquí hay una imagen de mi sensor de calidad del aire de IoT final.

Los archivos de configuración para descargar deben cambiarse de nombre a *.json (no.txt) antes de cargarlos.

Enlaces y referencias

  • Repositorio de código fuente de HomeDing:
  • Documentación:
  • Ejemplo estándar:
  • Elemento BME680:
  • Elemento PMS:
  • Elemento de registro:
  • Elemento NtpTime:

Recomendado: