Table des matières:

Station de surveillance des particules de poussière alimentée par Arduino : 4 étapes (avec photos)
Station de surveillance des particules de poussière alimentée par Arduino : 4 étapes (avec photos)

Vidéo: Station de surveillance des particules de poussière alimentée par Arduino : 4 étapes (avec photos)

Vidéo: Station de surveillance des particules de poussière alimentée par Arduino : 4 étapes (avec photos)
Vidéo: Scentroid's CTAir Continuous Urban Air Quality Monitor Seminar A 12.08.2020 (Subtitled) 2024, Décembre
Anonim
Station de surveillance des particules de poussière alimentée par Arduino
Station de surveillance des particules de poussière alimentée par Arduino

Vous pouvez assez facilement créer un appareil Internet des objets de bricolage qui surveille la pollution par la poussière dans votre maison pour moins de 50 $ et être averti lorsque le niveau de poussière devient trop élevé afin que vous puissiez aérer la pièce, ou vous pouvez le placer à l'extérieur et être averti si c'est sortir en toute sécurité si vous habitez dans une zone très polluée.

J'ai fait cela comme un projet scolaire, donc je n'ai pas eu assez de temps pour trouver un service qui prendra les messages MQTT et vous les enverra comme des notifications ou des e-mails.

Notez également que le fait de maintenir le capteur alimenté en permanence réduira la durée de vie du ventilateur.

Étape 1: Pièces nécessaires

Pièces nécessaires
Pièces nécessaires

Ce dont vous aurez besoin

  • Arduino Uno
  • Blindage Ethernet Arduino
  • Capteur laser de particules (généralement entre 10 et 30 $ sur eBay/aliexpress)
  • Capteur de température et d'humidité DHT11 (en option)
  • Planche à pain
  • Câbles de démarrage

Étape 2: Assembler les pièces

Assembler les pièces
Assembler les pièces

Tout d'abord, vous devez brancher le blindage Ethernet sur l'Arduino

Le capteur PM a plusieurs fils, mais ceux dont nous avons besoin sont VCC, GND, TX, RX.

Connectez le VCC et GND à + et - sur la maquette respectivement.

L'Arduino a des broches matérielles RX et TX, mais nous utiliserons une émulation logicielle des broches RX et TX sur les broches 2 et 3 respectivement. Branchez le RX du capteur au TX de l'Arduino et le TX du capteur au RX de l'Arduino.

Si vous envisagez d'utiliser le capteur de température, branchez les lignes VCC et GND sur + et - sur la planche à pain et la ligne de données sur la broche 7.

Étape 3: Le code

Vous pouvez soit installer le courtier MQTT sur un raspberry pi ou un ordinateur que vous avez toujours à la maison, soit utiliser un service cloud MQTT, comme Cloud MQTT. Ensuite, vous pouvez écrire un script qui envoie les données sous forme de HTTP à un webhook IFTT, car ils ne prennent pas encore en charge les webhooks MQTT et configurent des notifications lorsque les niveaux de poussière dans votre maison deviennent trop élevés.

Station aérienne Arduino

#comprendre

#comprendre
#comprendre
#comprendre
#comprendre
#comprendre

#comprendre

#comprendre
#defineDHT11_PIN7
#defineRX_PIN2
#defineTX_PIN3
Adresse IP ip(169, 169, 100, 98);
octet mac = {
0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02
};
constchar *mqtt_server = "m23.cloudmqtt.com";
constante mqtt_port = 11895;
constchar *mqtt_user = "jhetjewk";
constchar *mqtt_pass = "QB2p9PiMV6pn";
constchar *mqtt_client_name = "arduinoClient1"; // Les connexions clientes ne peuvent pas avoir le même nom de connexion
EthernetClient ethClient;
Client PubSubClient (ethClient);
SoftwareSerial pmSerial(RX_PIN, TX_PIN);
dht DHT;
int pm1;
int pm2_5;
int pm10;
identifiant long non signé;
//Fichier monFichier;
Chaîne s;
StaticJsonBuffer<200> jsonBuffer;
JsonObject& root = jsonBuffer.createObject();
void setup() {
Serial.begin (57600);
pmSerial.begin(9600);
identifiant = 0;
pm1 = 0;
pm2_5 = 0;
pm10 = 0;
si (Ethernet.begin(mac) == 0)
{
Serial.println("Impossible de configurer Ethernet à l'aide de DHCP");
// tentative avec adresse IP fixe
Ethernet.begin(mac, ip);
}
client.setServer(mqtt_server, mqtt_port);
client.setCallback(rappel);
retard (2000);
Serial.println(Ethernet.localIP());
client.connect("arduinoClient", mqtt_user, mqtt_pass);
Serial.print("rc=");
Serial.print(client.state());
Serial.print("\n");
}
boucle vide() {
indexent = 0;
valeur de caractère;
char previousValue;
si (!client.connected())
{
if (client.connect("arduinoClient", mqtt_user, mqtt_pass)) {
Serial.println("connecté");
}
}
while (pmSerial.available()) {
valeur = pmSerial.read();
if ((index == 0 && valeur != 0x42) || (index == 1 && valeur != 0x4d)) {
Serial.println("Impossible de trouver l'en-tête des données.");
revenir;
}
if (index == 4 || index == 6 || index == 8 || index == 10 || index == 12 || index == 14) {
valeur précédente = valeur;
}
elseif (indice == 5) {
pm1 = 256 * valeur précédente + valeur;
racine["pm1"] = abs(pm1);
}
elseif (indice == 7) {
pm2_5 = 256 * valeur précédente + valeur;
racine["pm2_5"] = abs(pm2_5);
}
elseif (indice == 9) {
pm10 = 256 * valeur précédente + valeur;
racine["pm10"] = abs(pm10);
}
elseif (indice >15) {
Pause;
}
index++;
}
while (pmSerial.available()) pmSerial.read();
int chk = DHT.read11(DHT11_PIN);
if (DHT.temperature == -999 || DHT.humidity == -999) {
racine["température"] = "N/A";
racine["humidité"] = "N/A";
} autre {
racine["température"] = DHT.temperature;
racine["humidité"] = DHT.humidité;
}
envoyerRésultats();
identifiant++;
retard (5000);
}
voidsendResults() {
// publier sur MQTT
char jsonChar[100];
root.printTo(jsonChar);
Serial.println(client.publish("arduino", jsonChar));
// débogage en série
root.printTo(Série);
Serial.print('\n');
}
// Gère les messages arrivés sur le(s) sujet(s) souscrit(s)
voidcallback(char* topic, byte* payload, unsignedint length) {
}

voir rawair_quality.ino hébergé avec ❤ par GitHub

Étape 4: Assemblez la boîte

Assembler la boîte
Assembler la boîte
Assembler la boîte
Assembler la boîte
Assembler la boîte
Assembler la boîte

J'ai juste utilisé une boîte que j'avais traînée et j'ai percé un trou pour que le capteur puisse extraire de l'air et j'ai découpé un trou pour que les câbles sortent (bien qu'il soit un peu trop grand).

J'ai utilisé des tampons de colle pour fixer le capteur à la boîte, en alignant le trou d'entrée du capteur avec le trou percé sur la boîte.

Enfin, j'ai branché les câbles Ethernet et d'alimentation.

Conseillé: