Πίνακας περιεχομένων:

Σταθμός παρακολούθησης σωματιδίων σκόνης Arduino: 4 βήματα (με εικόνες)
Σταθμός παρακολούθησης σωματιδίων σκόνης Arduino: 4 βήματα (με εικόνες)

Βίντεο: Σταθμός παρακολούθησης σωματιδίων σκόνης Arduino: 4 βήματα (με εικόνες)

Βίντεο: Σταθμός παρακολούθησης σωματιδίων σκόνης Arduino: 4 βήματα (με εικόνες)
Βίντεο: Θεσσαλονίκη: Νέος σταθμός παρακολούθησης της ατμοσφαιρικής ρύπανσης | 15/04/2022 | ΕΡΤ 2024, Νοέμβριος
Anonim
Σταθμός παρακολούθησης σωματιδίων σκόνης Arduino
Σταθμός παρακολούθησης σωματιδίων σκόνης Arduino

Μπορείτε αρκετά εύκολα να δημιουργήσετε μια συσκευή DIY internet of things που παρακολουθεί τη ρύπανση από τη σκόνη στο σπίτι σας για λιγότερο από $ 50 και να λαμβάνετε ειδοποιήσεις όταν το επίπεδο σκόνης γίνει πολύ υψηλό, ώστε να μπορείτε να αερίζετε το δωμάτιο ή μπορείτε να το ρυθμίσετε έξω και να ειδοποιηθείτε εάν είναι ασφαλές να βγείτε έξω εάν ζείτε σε μια περιοχή με υψηλή ρύπανση.

Το έκανα ως σχολικό έργο, οπότε δεν είχα αρκετό χρόνο για να βρω μια υπηρεσία που θα λαμβάνει μηνύματα MQTT και θα σας τα στέλνει όπως ειδοποιήσεις ή μηνύματα ηλεκτρονικού ταχυδρομείου.

Σημειώστε επίσης ότι η συνεχής τροφοδοσία του αισθητήρα θα μειώσει τη διάρκεια ζωής του ανεμιστήρα.

Βήμα 1: Απαιτούνται εξαρτήματα

Απαιτούμενα ανταλλακτικά
Απαιτούμενα ανταλλακτικά

Αυτό που θα χρειαστείς

  • Arduino Uno
  • Ασπίδα Ethernet Arduino
  • Αισθητήρας λέιζερ σωματιδίων (συνήθως κοστίζει $ 10-$ 30 στο eBay/aliexpress)
  • Αισθητήρας θερμοκρασίας και υγρασίας DHT11 (προαιρετικό)
  • Breadboard
  • Καλώδια βραχυκύκλωσης

Βήμα 2: Συναρμολογήστε τα μέρη

Συναρμολογήστε τα μέρη
Συναρμολογήστε τα μέρη

Αρχικά, πρέπει να συνδέσετε την ασπίδα ethernet στο Arduino

Ο αισθητήρας PM έχει πολλά καλώδια, αλλά αυτά που χρειαζόμαστε είναι VCC, GND, TX, RX.

Συνδέστε το VCC και το GND στο + και - στο breadboard αντίστοιχα.

Το Arduino διαθέτει ακίδες RX και TX υλικού, αλλά θα χρησιμοποιήσουμε εξομοίωση λογισμικού των ακίδων RX και TX στις ακίδες 2 και 3 αντίστοιχα. Συνδέστε το RX του αισθητήρα στο TX του Arduino και το TX του αισθητήρα στο RX του Arduino.

Εάν πρόκειται να χρησιμοποιήσετε τον αισθητήρα θερμοκρασίας, συνδέστε τις γραμμές VCC και GND στο + και - στο Breadboard και τη γραμμή δεδομένων στο pin 7.

Βήμα 3: Ο κώδικας

Μπορείτε είτε να εγκαταστήσετε τον μεσίτη MQTT σε ένα βατόμουρο pi είτε σε έναν υπολογιστή που έχετε πάντα στο σπίτι ή να χρησιμοποιήσετε μια υπηρεσία cloud MQTT, όπως το Cloud MQTT. Στη συνέχεια, μπορείτε να γράψετε ένα σενάριο που στέλνει τα δεδομένα ως HTTP σε ένα IHTT webhook, καθώς δεν υποστηρίζουν ακόμη MQTT webhooks και να ρυθμίσετε ειδοποιήσεις όταν τα επίπεδα σκόνης στο σπίτι σας είναι πολύ υψηλά.

Αεροπορικός σταθμός Arduino

#περιλαμβάνω

#περιλαμβάνω
#περιλαμβάνω
#περιλαμβάνω
#περιλαμβάνω
#περιλαμβάνω

#περιλαμβάνω

#περιλαμβάνω
#defineDHT11_PIN7
#defineRX_PIN2
#defineTX_PIN3
IPAddress 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"; // Οι συνδέσεις πελατών δεν μπορούν να έχουν το ίδιο όνομα σύνδεσης
EthernetClient ethClient;
Πελάτης PubSubClient (ethClient).
ΛογισμικόSerial pmSerial (RX_PIN, TX_PIN);
dht DHT;
int pm1;
int pm2_5;
int pm10;
ανυπόγραφο αναγνωριστικό?
// Αρχείο 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;
εάν (Ethernet.begin (mac) == 0)
{
Serial.println ("Αποτυχία ρύθμισης παραμέτρων Ethernet χρησιμοποιώντας DHCP");
// προσπάθεια με σταθερό ip addr
Ethernet.begin (mac, ip);
}
client.setServer (mqtt_server, mqtt_port);
client.setCallback (επανάκληση);
καθυστέρηση (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;
αξία char;
char previousValue;
εάν (! client.connected ())
{
if (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) {
Serial.println ("συνδεδεμένο");
}
}
ενώ (pmSerial.available ()) {
value = pmSerial.read ();
if ((index == 0 && value! = 0x42) || (index == 1 && value! = 0x4d)) {
Serial.println ("Δεν είναι δυνατή η εύρεση της κεφαλίδας δεδομένων.");
ΕΠΙΣΤΡΟΦΗ;
}
αν (index == 4 || index == 6 || index == 8 || index == 10 || index == 12 || index == 14) {
previousValue = τιμή;
}
elseif (index == 5) {
pm1 = 256 * previousValue + value;
root ["pm1"] = abs (pm1);
}
elseif (index == 7) {
pm2_5 = 256 * previousValue + value;
root ["pm2_5"] = abs (pm2_5);
}
elseif (index == 9) {
pm10 = 256 * previousValue + value;
root ["pm10"] = abs (pm10);
}
elseif (ευρετήριο> 15) {
Διακοπή;
}
ευρετήριο ++;
}
ενώ (pmSerial.available ()) pmSerial.read ();
int chk = DHT.read11 (DHT11_PIN);
εάν (DHT.temperature == -999 || DHT.humidity == -999) {
root ["θερμοκρασία"] = "N/A";
root ["υγρασία"] = "N/A";
} αλλο {
root ["θερμοκρασία"] = DHT.temperature;
ρίζα ["υγρασία"] = DHT. υγρασία;
}
sendResults ();
id ++;
καθυστέρηση (5000)?
}
voidsendResults () {
// δημοσίευση στο MQTT
char jsonChar [100];
root.printTo (jsonChar);
Serial.println (client.publish ("arduino", jsonChar));
// εντοπισμός σφαλμάτων σε σειριακό
root.printTo (Σειριακό);
Serial.print ('\ n');
}
// Χειρίζεται μηνύματα που έφτασαν σε εγγραφόμενα θέματα
voidcallback (char* topic, byte* payload, unsignedint length) {
}

προβολή rawair_quality.ino που φιλοξενείται με ❤ από το GitHub

Βήμα 4: Συναρμολογήστε το κουτί

Συναρμολογήστε το κουτί
Συναρμολογήστε το κουτί
Συναρμολογήστε το κουτί
Συναρμολογήστε το κουτί
Συναρμολογήστε το κουτί
Συναρμολογήστε το κουτί

Μόλις χρησιμοποίησα ένα κουτί που είχα ξαπλωμένο και άνοιξα μια τρύπα για να βγάλει αέρα ο αισθητήρας και έκοψα μια τρύπα για να σβήσουν τα καλώδια (αν και ήταν λίγο πολύ μεγάλο).

Χρησιμοποίησα μαξιλάρια κόλλας για να στερεώσω τον αισθητήρα στο κουτί, ευθυγραμμίζοντας την οπή εισόδου του αισθητήρα με την τρύπα στο κουτί.

Τέλος, έβαλα τα καλώδια ethernet και τροφοδοσίας.

Συνιστάται: