Tabla de contenido:

Estación de monitoreo de partículas de polvo con tecnología Arduino: 4 pasos (con imágenes)
Estación de monitoreo de partículas de polvo con tecnología Arduino: 4 pasos (con imágenes)

Video: Estación de monitoreo de partículas de polvo con tecnología Arduino: 4 pasos (con imágenes)

Video: Estación de monitoreo de partículas de polvo con tecnología Arduino: 4 pasos (con imágenes)
Video: Herramientas de Monitoreo y Control de Equipos 2024, Mes de julio
Anonim
Estación de monitoreo de partículas de polvo alimentada por Arduino
Estación de monitoreo de partículas de polvo alimentada por Arduino

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

Piezas necesarias
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

Ensamblar las piezas
Ensamblar 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

Ensamblar la caja
Ensamblar la caja
Ensamblar la caja
Ensamblar la caja
Ensamblar la caja
Ensamblar 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: