Taula de continguts:

Estació de control de partícules de pols alimentades per Arduino: 4 passos (amb imatges)
Estació de control de partícules de pols alimentades per Arduino: 4 passos (amb imatges)

Vídeo: Estació de control de partícules de pols alimentades per Arduino: 4 passos (amb imatges)

Vídeo: Estació de control de partícules de pols alimentades per Arduino: 4 passos (amb imatges)
Vídeo: Webinar PuntTic Palau - Tecnopedagogia amb Binomi 2024, Juliol
Anonim
Estació de control de partícules de pols alimentades per Arduino
Estació de control de partícules de pols alimentades per Arduino

Podeu construir bastant fàcilment un dispositiu de bricolatge Internet de les coses que supervisi la contaminació de la pols a casa vostra per menys de 50 dòlars i us notifiqui quan el nivell de pols sigui massa elevat perquè pugueu airejar l'habitació o podeu configurar-lo a l'exterior i rebre'n una notificació si sortir segur si viu en una zona altament contaminada.

Ho vaig fer com a projecte escolar, de manera que no vaig tenir prou temps per trobar un servei que agafés missatges MQTT i us els enviés com a notificacions o correus electrònics.

Tingueu en compte també que el manteniment del sensor en tot moment reduirà la vida del ventilador.

Pas 1: parts necessàries

Parts necessàries
Parts necessàries

El que necessiteu

  • Arduino Uno
  • Escut Ethernet Arduino
  • Sensor làser de matèria de partícules (normalment costa entre 10 i 30 dòlars a eBay / AliExpress)
  • Sensor de temperatura i humitat DHT11 (opcional)
  • Taula de pa
  • Cables de pont

Pas 2: Munteu les peces

Muntar les peces
Muntar les peces

En primer lloc, heu de connectar l’escut Ethernet a l’Arduino

El sensor PM té diversos cables, però els que necessitem són VCC, GND, TX, RX.

Connecteu el VCC i el GND a + i - a la taula de suport, respectivament.

L'Arduino té pins RX i TX de maquinari, però utilitzarem l'emulació de programari de pins RX i TX als pins 2 i 3 respectivament. Connecteu l'RX del sensor a TX de l'Arduino i TX del sensor a RX de l'Arduino.

Si utilitzeu el sensor de temperatura, connecteu les línies VCC i GND a + i - a la taula de pa i la línia de dades al pin 7.

Pas 3: el codi

Podeu instal·lar el broker MQTT en un raspberry pi o en un ordinador que tingueu sempre a casa o fer servir un servei MQTT al núvol, com Cloud MQTT. A continuació, podeu escriure un script que enviï les dades com a HTTP a un webhook IFTT, ja que encara no admeten els webhook MQTT i configureu notificacions per quan els nivells de pols de la vostra llar augmentin massa.

Estació aèria Arduino

#incloure

#incloure
#incloure
#incloure
#incloure
#incloure

#incloure

#incloure
# defineDHT11_PIN7
# defineRX_PIN2
# defineTX_PIN3
Adreça 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"; // Les connexions de clients no poden tenir el mateix nom de connexió
EthernetClient ethClient;
Client de PubSubClient (ethClient);
SoftwareSerial pmSerial (RX_PIN, TX_PIN);
dht DHT;
int pm1;
int pm2_5;
int pm10;
unsignedlong id;
// Arxiva el meu fitxer;
Cordes;
StaticJsonBuffer <200> jsonBuffer;
JsonObject & root = jsonBuffer.createObject ();
voidsetup () {
Serial.begin (57600);
pmSerial.begin (9600);
id = 0;
pm1 = 0;
pm2_5 = 0;
pm10 = 0;
if (Ethernet.begin (mac) == 0)
{
Serial.println ("No s'ha pogut configurar Ethernet mitjançant DHCP");
// intentar amb addr ip fix
Ethernet.begin (mac, ip);
}
client.setServer (mqtt_server, mqtt_port);
client.setCallback (devolució de trucada);
endarreriment (2000);
Serial.println (Ethernet.localIP ());
client.connect ("arduinoClient", mqtt_user, mqtt_pass);
Serial.print ("rc =");
Serial.print (client.state ());
Serial.print ("\ n");
}
voidloop () {
intindex = 0;
valor del caràcter;
charValor anterior;
if (! client.connected ())
{
if (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) {
Serial.println ("connectat");
}
}
while (pmSerial.available ()) {
valor = pmSerial.read ();
if ((índex == 0 && valor! = 0x42) || (índex == 1 && valor! = 0x4d)) {
Serial.println ("No es pot trobar la capçalera de dades.");
tornar;
}
if (índex == 4 || índex == 6 || índex == 8 || índex == 10 || índex == 12 || índex == 14) {
ValorValor = valor;
}
elseif (índex == 5) {
pm1 = 256 * ValorValor + valor anterior;
arrel ["pm1"] = abs (pm1);
}
elseif (índex == 7) {
pm2_5 = 256 * Valor anterior + valor;
root ["pm2_5"] = abs (pm2_5);
}
elseif (índex == 9) {
pm10 = 256 * Valor anterior + valor;
root ["pm10"] = abs (pm10);
}
elseif (índex> 15) {
trencar;
}
índex ++;
}
while (pmSerial.available ()) pmSerial.read ();
int chk = DHT.read11 (DHT11_PIN);
if (DHT.temperature == -999 || DHT.humidity == -999) {
root ["temperature"] = "N / A";
root ["humiditat"] = "N / A";
} més {
root ["temperature"] = temperatura DHT;
arrel ["humitat"] = DHT.humitat;
}
sendResults ();
id ++;
retard (5000);
}
voidsendResults () {
// publica a MQTT
char jsonChar [100];
root.printTo (jsonChar);
Serial.println (client.publish ("arduino", jsonChar));
// depuració a sèrie
root.printTo (sèrie);
Serial.print ('\ n');
}
// Gestiona els missatges arribats als temes subscrits
voidcallback (tema char *, byte * càrrega útil, longitud sense signar) {
}

veure rawair_quality.ino allotjat amb ❤ per GitHub

Pas 4: munteu la caixa

Muntar la caixa
Muntar la caixa
Muntar la caixa
Muntar la caixa
Muntar la caixa
Muntar la caixa

Acabo d’utilitzar una caixa que tenia al voltant i vaig perforar un forat perquè el sensor tregués aire i retallar un forat perquè els cables sortissin (tot i que era una mica massa gran).

Vaig utilitzar coixinets per fixar el sensor a la caixa, alineant el forat d’entrada del sensor amb el forat de la caixa.

Finalment, vaig endollar els cables d’alimentació i Ethernet.

Recomanat: