תוכן עניינים:

תחנת ניטור חלקיקי אבק מבית Arduino: 4 שלבים (עם תמונות)
תחנת ניטור חלקיקי אבק מבית Arduino: 4 שלבים (עם תמונות)

וִידֵאוֹ: תחנת ניטור חלקיקי אבק מבית Arduino: 4 שלבים (עם תמונות)

וִידֵאוֹ: תחנת ניטור חלקיקי אבק מבית Arduino: 4 שלבים (עם תמונות)
וִידֵאוֹ: אסף אגמון: חלליות, לוויינים, ומסעות בחלל 2024, נוֹבֶמבֶּר
Anonim
תחנת ניטור חלקיקי אבק מבית Arduino
תחנת ניטור חלקיקי אבק מבית Arduino

אתה יכול בקלות לבנות מכשיר אינטרנט של דברים DIY העוקב אחר זיהום אבק בבית שלך בפחות מ -50 $ ולקבל הודעה כאשר רמת האבק גבוהה מדי, כך שתוכל לאוורר את החדר, או שתוכל להגדיר אותו בחוץ ולקבל הודעה אם זה בטוח לצאת החוצה אם אתה גר באזור מזוהם מאוד.

הכנתי את זה כפרויקט בית ספר, כך שלא היה לי מספיק זמן למצוא שירות שיעביר הודעות MQTT וישלח לך אותן כמו הודעות או מיילים.

שים לב גם ששמירה על חיישן מופעל כל הזמן תקטין את חיי המאוורר.

שלב 1: יש צורך בחלקים

דרושים חלקים
דרושים חלקים

מה אתה צריך

  • ארדואינו אונו
  • מגן Ethernet של ארדואינו
  • חיישן לייזר חומר חלקיקים (בדרך כלל במחיר של $ 10- $ 30 ב- eBay/aliexpress)
  • חיישן טמפרטורה ולחות DHT11 (אופציונלי)
  • לוח לחם
  • כבלי מגשר

שלב 2: הרכבת החלקים

הרכיבו את החלקים
הרכיבו את החלקים

ראשית, עליך לחבר את מגן ה- Ethernet על ה- Arduino

לחיישן PM יש מספר חוטים, אך אלה שאנו צריכים הם VCC, GND, TX, RX.

חבר את ה- VCC וה- GND ל- + ו- - בלוח הלחם בהתאמה.

ל- Arduino סיכות חומרה RX ו- TX, אך נשתמש בחיקוי תוכנה של סיכות RX ו- TX בפינים 2 ו -3 בהתאמה. חבר את RX החיישן ל- TX של הארדואינו ו- TX של החיישן ל- RX של הארדואינו.

אם אתה מתכוון להשתמש בחיישן הטמפרטורה, חבר את קווי VCC ו- GND ל- + ו- - על לוח הלוח וקו הנתונים לסיכה 7.

שלב 3: הקוד

אתה יכול להתקין מתווך MQTT על פטל פאי או על מחשב שתמיד היה בו בבית, או להשתמש בשירות MQTT בענן, כמו Cloud MQTT. לאחר מכן תוכל לכתוב סקריפט ששולח את הנתונים כ- HTTP ל- webhook IFTT, מכיוון שהם עדיין לא תומכים ב- MQTT webhooks ולהגדיר התראות כאשר רמות האבק בבית שלך גבוהות מדי.

תחנת אוויר ארדואינו

#לִכלוֹל

#לִכלוֹל
#לִכלוֹל
#לִכלוֹל
#לִכלוֹל
#לִכלוֹל

#לִכלוֹל

#לִכלוֹל
#defineDHT11_PIN7
#להגדיר RX_PIN2
#להגדיר TX_PIN3
IPAddress ip (169, 169, 100, 98);
בת 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);
SoftwareSerial pmSerial (RX_PIN, TX_PIN);
dht DHT;
int pm1;
int pm2_5;
int pm10;
מזהה ארוך ללא חתימה;
// קובץ myFile;
מחרוזת s;
StaticJsonBuffer <200> jsonBuffer;
JsonObject & root = jsonBuffer.createObject ();
הגדרת voids () {
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 (callback);
עיכוב (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 previousValue;
אם (! client.connected ())
{
if (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) {
Serial.println ("מחובר");
}
}
while (pmSerial.available ()) {
value = pmSerial.read ();
אם ((index == 0 && value! = 0x42) || (index == 1 && value! = 0x4d)) {
Serial.println ("לא ניתן למצוא את כותרת הנתונים.");
לַחֲזוֹר;
}
אם (אינדקס == 4 || אינדקס == 6 || אינדקס == 8 || אינדקס == 10 || אינדקס == 12 || אינדקס == 14) {
previousValue = value;
}
elseif (אינדקס == 5) {
pm1 = 256 * valueValue + ערך;
root ["pm1"] = abs (pm1);
}
elseif (אינדקס == 7) {
pm2_5 = 256 * valueValue + ערך;
root ["pm2_5"] = abs (pm2_5);
}
elseif (אינדקס == 9) {
pm10 = 256 * valueValue + ערך;
root ["pm10"] = שרירי הבטן (pm10);
}
elseif (אינדקס> 15) {
לשבור;
}
אינדקס ++;
}
while (pmSerial.available ()) pmSerial.read ();
int chk = DHT.read11 (DHT11_PIN);
אם (DHT.temperature == -999 || DHT.humidity == -999) {
root ["temperature"] = "N/A";
root ["לחות"] = "לא רלוונטי";
} אחר {
root ["טמפרטורה"] = DHT.temperature;
root ["לחות"] = 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* מטען, אורך לא חתום) {
}

הצג rawair_quality.ino המתארח אצל ❤ על ידי GitHub

שלב 4: הרכיב את הקופסה

הרכיבו את הקופסה
הרכיבו את הקופסה
הרכיבו את הקופסה
הרכיבו את הקופסה
הרכיבו את הקופסה
הרכיבו את הקופסה

פשוט השתמשתי בקופסה שהייתה לי שכובה וקדחתי חור לחיישן כדי להוציא ממנו אוויר וחתכתי חור כדי שהכבלים ייצאו (למרות שזה היה קצת גדול מדי).

השתמשתי ברפידות דבק כדי לחבר את החיישן לקופסה, תוך יישור חור הקלט של החיישן עם החור הקידוח על הקופסה.

לבסוף, חיברתי את אתרנט ואת כבלי החשמל.

מוּמלָץ: