Tabla de contenido:
- Suministros
- Paso 1: Prepare el entorno Arduino para ESP8266
- Paso 2: Incluya las bibliotecas necesarias
- Paso 3: personalice el boceto de ejemplo estándar
- Paso 4: Cargue la interfaz de usuario web
- Paso 5: agregue el sensor BME680
- Paso 6: agregue el sensor PMS5003
- Paso 7: agregar algunas funciones de red
- Paso 8: agregar algunos registros
- Paso 9: acciones
- Paso 10: imágenes y archivos de configuración
Video: Construya un sensor de calidad del aire de IoT interno sin necesidad de nube: 10 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:41
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
- Instale la última versión de Arduino IDE (actualmente versión 1.8.2).
- Utilice Board Manager para instalar el soporte de instalación esp8266. Puede encontrar una instrucción detallada aquí:
- 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
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
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
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
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
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
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:
Sensor de calidad del aire AEROBOT V1.0: 6 pasos (con imágenes)
Sensor de calidad del aire AEROBOT V1.0: Este instructivo trata sobre cómo hacer un sensor de calidad del aire económico y altamente preciso llamado AEROBOT. Este proyecto muestra temperatura, humedad relativa, densidad de polvo PM 2.5 y alertas sobre la calidad del aire del entorno. Utiliza un sensor DHT11
Sensor de calidad del aire usando un Arduino: 4 pasos
Sensor de calidad del aire usando un Arduino: En esta publicación, aprenderemos cómo construir un sensor de calidad del aire simple pero útil. Usaremos el sensor SGP30 junto con el Piksey Pico, aunque el boceto funcionará con casi cualquier placa compatible con Arduino. El video de arriba lo explica a través de t
Monitor de calidad del aire con MQ135 y sensor externo de temperatura y humedad sobre MQTT: 4 pasos
Monitor de calidad del aire con MQ135 y sensor externo de temperatura y humedad sobre MQTT: esto es para propósitos de prueba
Cubesat con sensor de calidad del aire y Arduino: 4 pasos
Cubesat con sensor de calidad del aire y Arduino: creadores de CubeSat: Reghan, Logan, Kate y Joan Introducción ¿Alguna vez se ha preguntado cómo crear un orbitador de Marte para recopilar datos sobre la atmósfera y la calidad del aire de Marte? A lo largo de este año en nuestra clase de física, hemos aprendido a programar A
Enfriador / soporte para computadora portátil de costo cero (sin pegamento, sin perforaciones, sin tuercas y pernos, sin tornillos): 3 pasos
Enfriador / soporte para computadora portátil de costo cero (sin pegamento, sin perforaciones, sin tuercas y pernos, sin tornillos): ACTUALIZACIÓN: POR FAVOR AMABLE VOTE POR MI INSTRUCTABLE, GRACIAS ^ _ ^ TAMBIÉN PUEDE VOTAR POR MI OTRO CONCURSO ENTRADA EN www.instructables.com/id/Zero-Cost-Aluminum-Furnace-No-Propane-No-Glue-/ O QUIZÁS VOTE POR MI MEJOR AMIGO