Tabla de contenido:
Video: Estación de monitoreo de partículas de polvo con tecnología Arduino: 4 pasos (con imágenes)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:44
Puede construir con bastante facilidad un dispositivo DIY de Internet de las cosas que monitorea la contaminación del polvo en su hogar por menos de $ 50 y recibir una notificación cuando el nivel de polvo sea demasiado alto para que pueda airear la habitación, o puede colocarlo afuera y recibir una notificación si es seguro para salir si vive en un área altamente contaminada.
Hice esto como un proyecto escolar, por lo que no tuve tiempo suficiente para encontrar un servicio que acepte mensajes MQTT y se los envíe como notificaciones o correos electrónicos.
También tenga en cuenta que mantener el sensor encendido en todo momento reducirá la vida útil del ventilador.
Paso 1: Piezas necesarias
Lo que necesitarás
- Arduino Uno
- Escudo Ethernet Arduino
- Sensor láser de partículas (generalmente cuesta entre $ 10 y $ 30 en eBay / aliexpress)
- Sensor de temperatura y humedad DHT11 (opcional)
- Tablero de circuitos
- Cables de salto
Paso 2: ensamble las piezas
Primero, debe conectar el escudo ethernet en el Arduino
El sensor de PM tiene varios cables, pero los que necesitamos son VCC, GND, TX, RX.
Conecte el VCC y GND a + y - en el tablero respectivamente.
El Arduino tiene pines RX y TX de hardware, pero usaremos emulación de software de pines RX y TX en los pines 2 y 3 respectivamente. Conecte el RX del sensor a TX del Arduino y TX del sensor a RX del Arduino.
Si va a utilizar el sensor de temperatura, conecte las líneas VCC y GND a + y - en la placa de pruebas y la línea de datos al pin 7.
Paso 3: el código
Puede instalar el broker MQTT en una raspberry pi o en una computadora que siempre tenga en casa, o usar un servicio MQTT en la nube, como Cloud MQTT. Luego, puede escribir un script que envíe los datos como HTTP a un webhook IFTT, ya que aún no son compatibles con los webhooks MQTT y configurar notificaciones para cuando los niveles de polvo en su hogar sean demasiado altos.
Estación aérea Arduino
#incluir |
#incluir |
#incluir |
#incluir |
#incluir |
#incluir |
#incluir |
#incluir |
# defineDHT11_PIN7 |
# defineRX_PIN2 |
# defineTX_PIN3 |
Dirección IP ip (169, 169, 100, 98); |
byte mac = { |
0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 |
}; |
constchar * mqtt_server = "m23.cloudmqtt.com"; |
constint mqtt_port = 11895; |
constchar * mqtt_user = "jhetjewk"; |
constchar * mqtt_pass = "QB2p9PiMV6pn"; |
constchar * mqtt_client_name = "arduinoClient1"; // Las conexiones del cliente no pueden tener el mismo nombre de conexión |
EthernetClient ethClient; |
Cliente PubSubClient (ethClient); |
SoftwareSerial pmSerial (RX_PIN, TX_PIN); |
dht DHT; |
int pm1; |
int pm2_5; |
int pm10; |
id unsignedlong; |
// Archivo myFile; |
String s; |
StaticJsonBuffer <200> jsonBuffer; |
JsonObject & root = jsonBuffer.createObject (); |
voidsetup () { |
Serial.begin (57600); |
pmSerial.begin (9600); |
id = 0; |
pm1 = 0; |
pm2_5 = 0; |
pm10 = 0; |
si (Ethernet.begin (mac) == 0) |
{ |
Serial.println ("No se pudo configurar Ethernet usando DHCP"); |
// intento con dirección IP fija |
Ethernet.begin (mac, ip); |
} |
client.setServer (mqtt_server, mqtt_port); |
client.setCallback (devolución de llamada); |
retraso (2000); |
Serial.println (Ethernet.localIP ()); |
client.connect ("arduinoClient", mqtt_user, mqtt_pass); |
Serial.print ("rc ="); |
Serial.print (client.state ()); |
Serial.print ("\ n"); |
} |
voidloop () { |
índice = 0; |
valor de char; |
char previousValue; |
si (! client.connected ()) |
{ |
if (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) { |
Serial.println ("conectado"); |
} |
} |
while (pmSerial.available ()) { |
valor = pmSerial.read (); |
if ((índice == 0 && valor! = 0x42) || (índice == 1 && valor! = 0x4d)) { |
Serial.println ("No se puede encontrar el encabezado de datos."); |
regreso; |
} |
if (índice == 4 || índice == 6 || índice == 8 || índice == 10 || índice == 12 || índice == 14) { |
previousValue = valor; |
} |
elseif (índice == 5) { |
pm1 = 256 * valor anterior + valor; |
raíz ["pm1"] = abs (pm1); |
} |
elseif (índice == 7) { |
pm2_5 = 256 * previousValue + valor; |
raíz ["pm2_5"] = abs (pm2_5); |
} |
elseif (índice == 9) { |
pm10 = 256 * valor anterior + valor; |
raíz ["pm10"] = abs (pm10); |
} |
elseif (índice> 15) { |
rotura; |
} |
índice ++; |
} |
while (pmSerial.available ()) pmSerial.read (); |
int chk = DHT.read11 (DHT11_PIN); |
if (DHT.temperatura == -999 || DHT.humedad == -999) { |
root ["temperatura"] = "N / A"; |
root ["humedad"] = "N / A"; |
} demás { |
raíz ["temperatura"] = DHT.temperatura; |
raíz ["humedad"] = DHT.humedad; |
} |
sendResults (); |
id ++; |
retraso (5000); |
} |
voidsendResults () { |
// publicar en MQTT |
char jsonChar [100]; |
root.printTo (jsonChar); |
Serial.println (cliente.publish ("arduino", jsonChar)); |
// depurar a serial |
root.printTo (Serial); |
Serial.print ('\ n'); |
} |
// Maneja los mensajes recibidos en los temas suscritos |
voidcallback (char * topic, byte * payload, unsignedint length) { |
} |
ver rawair_quality.ino alojado con ❤ por GitHub
Paso 4: ensamble la caja
Solo usé una caja que tenía por ahí y perforé un agujero para que el sensor tomara aire y corté un agujero para que salieran los cables (aunque era un poco demasiado grande).
Usé almohadillas adhesivas para sujetar el sensor a la caja, alineando el orificio de entrada del sensor con el orificio perforado en la caja.
Finalmente, enchufé los cables de ethernet y de alimentación.
Recomendado:
Monitoreo del panel solar usando fotones de partículas: 7 pasos
Monitoreo de paneles solares utilizando fotones de partículas: el objetivo del proyecto es mejorar la eficiencia de los paneles solares. El proyecto está diseñado para supervisar la generación de energía solar fotovoltaica para mejorar el rendimiento, monitoreo y mantenimiento de la planta solar. En este proyecto, el ph de partícula
Monitoreo de la calidad del aire con fotón de partículas: 11 pasos (con imágenes)
Monitoreo de la calidad del aire con fotón de partículas: en este proyecto, el sensor de partículas PPD42NJ se usa para medir la calidad del aire (PM 2.5) presente en el aire con fotón de partículas. No solo muestra los datos en la consola Particle y dweet.io, sino que también indica la calidad del aire usando LED RGB cambiándolo
Monitoreo de salas de conferencias con fotón de partículas: 8 pasos (con imágenes)
Monitoreo de salas de conferencias usando Particle Photon: Introducción En este tutorial vamos a hacer un monitor de sala de conferencias usando Particle Photon. En esta partícula se integra con Slack usando Webhooks para obtener actualizaciones en tiempo real de si una sala está disponible o no. Los sensores PIR se utilizan para d
Cómo construir una estación de sensores de monitoreo de confort: 10 pasos (con imágenes)
Cómo construir una estación de sensores de monitoreo de confort: este instructivo describe el diseño y la construcción de una llamada estación de monitoreo de confort CoMoS, un dispositivo sensor combinado para condiciones ambientales, que fue desarrollado en el departamento de entorno construido en TUK, Technische Universität Ka
Comience a construir una estación de monitoreo de PM: 3 pasos (con imágenes)
Comience a construir una estación de monitoreo de PM: estoy especialmente interesado en los niveles de contaminación del aire, porque vivo en China y, aunque mi ciudad, Shenzhen, es probablemente una de las ciudades más limpias de China, todavía tiene sus días malos. quería construir el mío propio para compararlo con la media docena de aire