جدول المحتويات:

محطة مراقبة جزيئات الغبار التي تعمل بالاردوينو: 4 خطوات (بالصور)
محطة مراقبة جزيئات الغبار التي تعمل بالاردوينو: 4 خطوات (بالصور)

فيديو: محطة مراقبة جزيئات الغبار التي تعمل بالاردوينو: 4 خطوات (بالصور)

فيديو: محطة مراقبة جزيئات الغبار التي تعمل بالاردوينو: 4 خطوات (بالصور)
فيديو: كاميرا مراقبه ترصد خططف فتاه الجامعه داخل سياره فيديو للتوعيه؟! الجزء الاول 2024, شهر نوفمبر
Anonim
محطة رصد جزيئات الغبار التي تعمل بالطاقة من Arduino
محطة رصد جزيئات الغبار التي تعمل بالطاقة من Arduino

يمكنك بسهولة إلى حد ما إنشاء جهاز إنترنت الأشياء DIY الذي يراقب تلوث الغبار في منزلك بأقل من 50 دولارًا ويتم إعلامك عندما يكون مستوى الغبار مرتفعًا جدًا حتى تتمكن من تهوية الغرفة ، أو يمكنك ضبطه بالخارج والحصول على إشعار إذا كان الأمر كذلك آمن للخروج إذا كنت تعيش في منطقة شديدة التلوث.

لقد صنعت هذا كمشروع مدرسي ، لذلك لم يكن لدي الوقت الكافي للعثور على خدمة ستتلقى رسائل MQTT وترسلها إليك مثل الإخطارات أو رسائل البريد الإلكتروني.

لاحظ أيضًا أن الحفاظ على تشغيل المستشعر في جميع الأوقات سيقلل من عمر المروحة.

الخطوة 1: الأجزاء المطلوبة

الأجزاء المطلوبة
الأجزاء المطلوبة

ماذا ستحتاج

  • اردوينو اونو
  • درع اردوينو إيثرنت
  • مستشعر ليزر الجسيمات (عادة ما يكون من 10 إلى 30 دولارًا على موقع eBay / AliExpress)
  • مستشعر درجة الحرارة والرطوبة DHT11 (اختياري)
  • اللوح
  • كابلات توصيل

الخطوة 2: قم بتجميع الأجزاء

اجمع الأجزاء
اجمع الأجزاء

أولاً ، تحتاج إلى توصيل درع Ethernet على Arduino

يحتوي مستشعر PM على أسلاك متعددة ، لكن تلك التي نحتاجها هي VCC و GND و TX و RX.

قم بتوصيل VCC و GND بـ + و - على اللوح على التوالي.

يحتوي Arduino على دبابيس RX و TX للأجهزة ، لكننا سنستخدم برنامج محاكاة دبابيس RX و TX على المسامير 2 و 3 على التوالي. قم بتوصيل RX الخاص بالمستشعر بـ TX الخاص بـ Arduino و TX الخاص بالمستشعر بـ RX الخاص بـ Arduino.

إذا كنت ستستخدم مستشعر درجة الحرارة ، فقم بتوصيل خطوط VCC و GND بـ + و - على لوحة التجارب وخط البيانات إلى الرقم 7.

الخطوة الثالثة: الكود

يمكنك إما تثبيت وسيط MQTT على raspberry pi أو جهاز كمبيوتر تستخدمه دائمًا في المنزل ، أو استخدام خدمة MQTT السحابية ، مثل Cloud MQTT. بعد ذلك ، يمكنك كتابة برنامج نصي يرسل البيانات على هيئة HTTP إلى خطاف ويب IFTT ، حيث إنها لا تدعم حتى الآن خطافات الويب MQTT وإعداد الإشعارات عندما ترتفع مستويات الغبار في منزلك بشكل كبير.

محطة اردوينو الجوية

#يشمل

#يشمل
#يشمل
#يشمل
#يشمل
#يشمل

#يشمل

#يشمل
# حدد DHT11_PIN7
# حدد RX_PIN2
# حدد TX_PIN3
IPAddress ip (169 ، 169 ، 100 ، 98) ؛
بايت ماك = {
0x00 ، 0xAA ، 0xBB ، 0xCC ، 0xDE ، 0x02
};
constchar * mqtt_server = "m23.cloudmqtt.com" ؛
كونستنت mqtt_port = 11895 ؛
constchar * mqtt_user = "jhetjewk" ؛
constchar * mqtt_pass = "QB2p9PiMV6pn" ؛
constchar * mqtt_client_name = "arduinoClient1" ؛ // لا يمكن أن يكون لاتصالات العميل نفس اسم الاتصال
إيثرنت العميل ethClient ؛
عميل PubSubClient (ethClient) ؛
SoftwareSerial pmSerial (RX_PIN ، TX_PIN) ؛
dht DHT ؛
كثافة العمليات pm1 ؛
كثافة العمليات pm2_5 ؛
كثافة العمليات pm10 ؛
معرف غير موقعة
// ملف myFile ؛
سلاسل؛
StaticJsonBuffer <200> jsonBuffer ؛
JsonObject & root = jsonBuffer.createObject () ،
الإعداد باطل() {
Serial.begin (57600) ؛
pmSerial.begin (9600) ؛
معرف = 0 ؛
م 1 = 0 ؛
pm2_5 = 0 ،
م 10 = 0 ؛
إذا (Ethernet.begin (mac) == 0)
{
Serial.println ("فشل تكوين Ethernet باستخدام DHCP") ؛
// محاولة مع عنوان IP ثابت
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") ؛
}
حلقة فارغة() {
intindex = 0 ؛
قيمة الحرف
char previousValue؛
إذا (! client.connected ())
{
if (client.connect ("arduinoClient"، mqtt_user، mqtt_pass)) {
Serial.println ("متصل") ؛
}
}
while (pmSerial.available ()) {
value = pmSerial.read () ؛
إذا ((الفهرس == 0 && القيمة! = 0x42) || (الفهرس == 1 && القيمة! = 0x4d)) {
Serial.println ("لا يمكن العثور على رأس البيانات.")؛
إرجاع؛
}
إذا (الفهرس == 4 || الفهرس == 6 || الفهرس == 8 || الفهرس == 10 || الفهرس == 12 || الفهرس == 14) {
القيمة السابقة = القيمة ؛
}
elseif (الفهرس == 5) {
pm1 = 256 * القيمة السابقة + القيمة ؛
الجذر ["pm1"] = القيمة المطلقة (pm1) ؛
}
elseif (الفهرس == 7) {
pm2_5 = 256 * القيمة السابقة + القيمة ؛
الجذر ["pm2_5"] = القيمة المطلقة (pm2_5) ؛
}
elseif (الفهرس == 9) {
pm10 = 256 * القيمة السابقة + القيمة ؛
الجذر ["pm10"] = القيمة المطلقة (pm10) ؛
}
elseif (الفهرس> 15) {
استراحة؛
}
فهرس ++ ؛
}
while (pmSerial.available ()) pmSerial.read () ؛
int chk = DHT.read11 (DHT11_PIN) ،
إذا (DHT.temperature == -999 || DHT.humidity == -999) {
الجذر ["درجة الحرارة"] = "غير متاح" ؛
الجذر ["الرطوبة"] = "غير متاح" ؛
} آخر {
الجذر ["درجة الحرارة"] = DHT.temperature ؛
الجذر ["الرطوبة"] = الرطوبة DHT ؛
}
sendResults () ،
معرف ++ ؛
تأخير (5000) ؛
}
voidsendResults () {
// نشر على MQTT
شار jsonChar [100] ؛
root.printTo (jsonChar) ؛
Serial.println (client.publish ("arduino"، jsonChar)) ؛
// التصحيح إلى المسلسل
root.printTo (المسلسل) ؛
Serial.print ('\ n') ؛
}
// يعالج الرسائل التي وصلت إلى موضوع (مواضيع) مشترك
voidcallback (char * topic، byte * payload، unmailint length) {
}

عرض rawair_quality.ino الذي يستضيفه ❤ بواسطة GitHub

الخطوة 4: قم بتجميع الصندوق

اجمع الصندوق
اجمع الصندوق
اجمع الصندوق
اجمع الصندوق
اجمع الصندوق
اجمع الصندوق

لقد استخدمت للتو صندوقًا كنت قد استلقيت حوله وحفرت ثقبًا حتى يحصل المستشعر على الهواء ويقطع ثقبًا لتخرج الكابلات (على الرغم من أنه كان كبيرًا جدًا).

لقد استخدمت وسادات الغراء لتوصيل المستشعر بالصندوق ، ومحاذاة فتحة إدخال المستشعر مع الفتحة المحفورة في الصندوق.

أخيرًا ، قمت بتوصيل كبلات الإيثرنت والطاقة.

موصى به: