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

IOT123 - I2C MQ2 BRICK: 5 خطوات
IOT123 - I2C MQ2 BRICK: 5 خطوات

فيديو: IOT123 - I2C MQ2 BRICK: 5 خطوات

فيديو: IOT123 - I2C MQ2 BRICK: 5 خطوات
فيديو: MQ-2 датчик газов и дыма подключаем к Arduino 2024, يوليو
Anonim
طوب IOT123 - I2C MQ2
طوب IOT123 - I2C MQ2
طوب IOT123 - I2C MQ2
طوب IOT123 - I2C MQ2
طوب IOT123 - I2C MQ2
طوب IOT123 - I2C MQ2
طوب IOT123 - I2C MQ2
طوب IOT123 - I2C MQ2

إن IOT123 BRICKS عبارة عن وحدات معيارية DIY يمكن مزجها مع IOT123 BRICKS الأخرى ، لإضافة وظائف إلى عقدة أو يمكن ارتداؤها. وهي تستند إلى ألواح أولية مربعة بوصة مربعة على الوجهين مترابطة من خلال الثقوب.

من المتوقع أن يكون عدد من هذه BRICKS على عقد متعددة (Master MCUs - ESP8266 أو ATTINY84) على الموقع. لا يحتاج MCU إلى معرفة مسبقة بالغرض من أجهزة الاستشعار أو احتياجات البرامج. يقوم بالمسح بحثًا عن عقد I2C ثم يطلب تفريغ الممتلكات (بيانات المستشعر) من كل تابع. توفر هذه الطابعات 5.0 فولت و 3.3 فولت وخط AUX آخر قابل للتخصيص.

هذا I2C MQ2 BRICK مقالب 3 خصائص:

غاز البترول المسال (أجزاء في المليون) ، أول أكسيد الكربون (جزء في المليون) ، الدخان (جزء في المليون)

قدم هذا المستشعر سيناريو مثيرًا للاهتمام: يحتاج إلى دقيقتين على الأقل (حتى 5 دقائق) للإحماء ، ثم يحتاج إلى المعايرة لمدة 20 ثانية قبل الاستخدام. نظرًا لأن المضيف MCU مصمم فقط في الحصول على أزواج الاسم / القيمة (ورسالة متابعة) ، فقد قدمنا خاصية "PREPARE". نظرًا لأن رسالتها المستمرة هي "1" (المزيد في المستقبل) ، ستستمر Host MCU في استقصاء BRICK حتى تصبح جاهزة. يوصى أيضًا بـ "حرق" MQ2 قبل الاستخدام ، أي اتركها متصلة بدائرة 5 فولت لمدة 24 ساعة.

سيتم استخراج طوب المستشعرات من نوع Keyes أولاً لأنها تأتي مع فيتامينات (مكونات إضافية مطلوبة) ومضمونة نسبيًا (اشتريت 37 مقابل 10AUD). سيتم تقديم لوحات / دوائر أخرى إلى I2C BRICKS.

تم ترك الفتحات الموجودة في الفتحات المجاورة لـ ATTINY85 غير مستخدمة ، لتمكين مبرمج دبوس البوجو أثناء لحام DIP8 بـ PCB.

يجري تطوير تجريد آخر ، يعبئ BRICKS في أسطوانات صغيرة يتم توصيلها بمحور D1M WIFI BLOCK ، لضخ القيم إلى خادم MQTT.

الخطوة 1: المواد والأدوات

المواد والأدوات
المواد والأدوات
المواد والأدوات
المواد والأدوات
المواد والأدوات
المواد والأدوات

توجد قائمة كاملة بالمواد والمصادر.

  1. طوب استشعار MQ2 (1)
  2. ATTINY85 20PU (1)
  3. 1 "لوح بروتوبورد مزدوج الجوانب (1)
  4. رأس ذكر 90º (3P ، 3P)
  5. رأس ذكر (2P ، 2P)
  6. جمبر شانت (1)
  7. سلك ربط (~ 7)
  8. جندى وحديد (1)

الخطوة 2: تحضير ATTINY85

جهز ATTINY85
جهز ATTINY85
جهز ATTINY85
جهز ATTINY85
جهز ATTINY85
جهز ATTINY85
جهز ATTINY85
جهز ATTINY85

مطلوب AttinyCore من مدير المجالس. حرق محمل الإقلاع "EEPROM Retained" ، "8mHZ Internal" (كل التكوينات الموضحة أعلاه).

استخدم المصدر المضمن ؛ تجميع وبرمجة ATtiny85.

GIST هنا:

gist.github.com/IOT-123/4c501046d365d01a60 …

قد تجد المزيد من التفاصيل في هذه التعليمات:

www.instructables.com/id/Programming-the-A…

www.instructables.com/id/How-to-Program-AT…

www.instructables.com/id/How-to-program-th…

www.instructables.com/id/Programming-the-A…

www.instructables.com/id/Programming-an-At…

من الأفضل اختباره عبر اللوح قبل المتابعة.

إذا كان لديك ASSIMILATE SENSORS ، فتأكد من أن العنوان التابع مختلف في مجموعة SENSOR / MCU Host ، أي أن جميع مستشعرات درجة الحرارة يمكن أن يكون لها نفس العنوان طالما أن لديك مستشعر درجة حرارة واحد فقط على MCU / عقدة.

الخطوة 3: قم بتجميع الدائرة

اجمع الدائرة
اجمع الدائرة
اجمع الدائرة
اجمع الدائرة
اجمع الدائرة
اجمع الدائرة
  1. في المقدمة ، أدخل المكونات ATTINY85 (1) ، رؤوس الذكور 3P 90deg (2) (3) ، رؤوس الذكور 2P (4) (5) ، وقم بإيقاف اللحام على الظهر.
  2. في الخلف ، تتبع سلكًا برتقاليًا من ORANGE1 إلى ORANGE2 وجندى.
  3. في الخلف ، تتبع سلكًا أزرق من BLUE1 إلى BLUE2 ولحام.
  4. في الخلف ، تتبع سلكًا أخضر من GREEN1 إلى GREEN2 ولحام.
  5. في الخلف ، تتبع سلكًا مكشوفًا من SILVER1 إلى SILVER2 ولحام.
  6. في الخلف ، تتبع سلكًا مكشوفًا من SILVER3 إلى SILVER4 ولحام.
  7. في الخلف ، تتبع سلكًا أسود من BLACK1 إلى BLACK2 ولحام.
  8. في الخلف ، تتبع سلكًا أسود من BLACK3 إلى BLACK4 ولحام.
  9. في الخلف ، تتبع سلكًا أحمر من RED1 إلى RED2 وجندى.
  10. في الخلف ، تتبع سلكًا أحمر من RED3 إلى RED4 ولحام.
  11. في الخلف ، تتبع سلكًا أصفر من YELLOW1 إلى YELLOW2 ولحام.

يمكن الآن توصيل المستشعر مباشرة عبر دبابيسه إلى PCB أو عبر الأسلاك ، إلى النقاط الموضحة في عقد الدبوس.

الخطوة 4: الاختبار

اختبارات
اختبارات
اختبارات
اختبارات
اختبارات
اختبارات

من المتوقع أن يكون عدد من هذه BRICKS على عقد متعددة (MCUs - ESP8266 أو ATTINY84) في بيئة. هذا اختبار وحدة: يتحقق من طلبات / استجابات UNO حتى يتم إغراق جميع البيانات ، ثم يتجاهل I2C التابع.

  1. قم بتحميل كود UNO على حزام اختبار UNO الخاص بك. تأكد من تطابق ADDRESS_SLAVE مع عنوان BRICK الخاص بـ I2C.
  2. قم بتوصيل 5.0 فولت على UNO بـ VCC على BRICK.
  3. تأكد من تشغيل وصلة المرور الخاصة بهذا الدبوس.
  4. قم بتوصيل GND على UNO بـ GND على BRICK.
  5. قم بتوصيل A5 على UNO بـ SCL على BRICK.
  6. قم بتوصيل A4 على UNO بـ SDA على BRICK.
  7. قم بتوصيل مقاوم سحب 4K7 من SDA إلى VCC.
  8. قم بتوصيل مقاوم سحب 4K7 من SCL إلى VCC.
  9. قم بتوصيل UNO بجهاز الكمبيوتر Dev الخاص بك باستخدام USB.
  10. افتح Arduino Console واختر 9600 باود (أعد تشغيل UNO وأعد فتح وحدة التحكم إذا كان عليك ذلك).
  11. يجب طباعة أسماء وقيم الخصائص على وحدة التحكم مرة واحدة ثم يتم تكرار كلمة سكون.

إذا رأيت "الإعداد" ، فحينئذٍ تتكرر 3 سطور من القمامة ، فقد يكون لديك خطوط SDA و SCL للخلف إلى الأمام.

I2C Master logging من I2C slave مع دعم الراسمة / البيانات الوصفية

#يشمل
# تعريف ADDRESS_SLAVE10
bool _outputPlotterOnly = خطأ ؛
bool _confirmedMetadata = خطأ ؛
int _packetSegment = 0 ؛
bool _i2cNodeProcessed = خطأ ؛
char _property [2] [24] = {"name"، "value"}؛
الإعداد باطل() {
Wire.begin () ؛ // انضم إلى ناقل i2c (العنوان اختياري للماجستير)
Serial.begin (9600) ؛ // بدء المسلسل للإخراج
تأخير (1000) ؛
إذا (! _outputPlotterOnly) {
Serial.println ("الإعداد") ؛
Serial.println () ،
}
}
حلقة فارغة() {
إذا (_i2cNodeProcessed) {
if (! _confirmedMetadata) {// دع العبد يعرف لبدء إرسال بيانات المستشعر
تأخير (1) ؛
Wire.beginTransmission (ADDRESS_SLAVE) ؛
Wire.write (1) ؛
Wire.endTransmission () ؛
تأخير (100) ؛
_confirmedMetadata = صحيح ؛
}
_i2cNodeProcessed = خطأ ؛
إذا (! _outputPlotterOnly) {
Serial.println () ،
}
إرجاع؛
}
Wire.request From (ADDRESS_SLAVE، 16) ،
_packetSegment ++ ؛
حزمة شار [16] ؛
intindex = 0 ؛
منطقية isContinueSegment = false ؛ // continueSegment (الثالث) 1 = أكثر ، 0 = أخيرًا
while (Wire.available ()) {// قد يرسل التابع أقل من المطلوب
char c = Wire.read () ؛
packet [index] = int (c)> -1؟ c: '' ؛ // استبدل الأحرف غير الصالحة بمسافات
إذا (_packetSegment == 3) {
_packetSegment = 0 ؛
isContinueSegment = صحيح ،
//Serial.println("------------- ") ؛
//Serial.println(int(c)) ؛
//Serial.println("------------- ") ؛
if (int (c) == 48 || int (c) == 86) {// 0 في الخاصية الأخيرة
_i2cNodeProcessed = صحيح ؛
// إرسال القيم إلى MQTT
استراحة؛
}
}
فهرس ++ ؛
}
إذا (! isContinueSegment) {
إذا (! _outputPlotterOnly) {
Serial.println (حزمة) ؛
}
strcpy (_property [_packetSegment - 1] ، حزمة) ؛ // تعيين var محلي بالاسم / القيمة
}آخر{
إذا (_outputPlotterOnly && _confirmedMetadata) {
إذا (_i2cNodeProcessed) {
Serial.println (_property [1]) ،
}آخر{
Serial.print (_property [1]) ؛
Serial.print ("") ؛
}
}
}
}

عرض rawuno_i2c_generic_sensor_test_w_plotter_v2.ino مستضاف مع ❤ بواسطة GitHub

الخطوة 5: الخطوات التالية

يرتبط التصميم الأساسي للدائرة وطبقة I2C للبرنامج بالعديد من أجهزة الاستشعار المختلفة. الشيء الرئيسي الذي يجب البدء به هو عقد الحزمة بين السيد والعبد.

لقد حددت / بدأت شبكة (مطبوعة ثلاثية الأبعاد) من المستشعرات التي تستخدم هذا الإطار وسوف ترتبط به عند نشر الأجزاء.

يتم استخدام هذا الحظر بواسطة مستشعر MQ2 ASSIMILATE.

موصى به: