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

IOT123 - I2C HEARTBEAT BRICK: 6 خطوات
IOT123 - I2C HEARTBEAT BRICK: 6 خطوات

فيديو: IOT123 - I2C HEARTBEAT BRICK: 6 خطوات

فيديو: IOT123 - I2C HEARTBEAT BRICK: 6 خطوات
فيديو: Zaful Bikini HAUL 2018 | TRY ON | Valerie pac 2024, يونيو
Anonim
IOT123 - I2C HEARTBEAT BRICK
IOT123 - I2C HEARTBEAT BRICK
IOT123 - I2C HEARTBEAT BRICK
IOT123 - I2C HEARTBEAT BRICK
IOT123 - I2C HEARTBEAT BRICK
IOT123 - I2C HEARTBEAT BRICK

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

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

يشير هذا I2C HEARTBEAT BRICK إلى ما إذا كان عبد ATTINY على قيد الحياة ، وكذلك حركة مرور I2C ، وله خاصية واحدة:

الحالة ("حي")

يشير PB1 (أبيض) إلى صحة ATTINY.

يقوم PB3 (أصفر) بالتبديل مع طلبات I2C من السيد.

تبديل PB4 (برتقالي) مع استقبال I2C من السيد.

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

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

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

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

  1. PCB الورق (7 × 7 فتحات)
  2. LEDS (أحمر ، أخضر ، أزرق)
  3. المقاومات (3 قبالة 1 ك)
  4. ATTINY85 20PU (1)
  5. 1 "لوح بروتوبورد مزدوج الجوانب (1)
  6. رأس ذكر 90º (3P ، 3P)
  7. رأس ذكر (2P ، 2P)
  8. جمبر شانت (1)
  9. سلك ربط (~ 7)
  10. جندى وحديد (1)

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

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

ملاحظة: إذا كنت تنوي الحصول على تكامل كروتون ، فالرجاء استخدام المكتبة من هنا ، واستخدام المثال المثبت "attiny_heartbeat"

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

يمكن العثور على مستودع الكود هنا.

يمكن العثور على ملف ZIP للمكتبة هنا.

تعليمات "استيراد مكتبة مضغوطة" هنا.

بمجرد تثبيت المكتبة يمكنك فتح المثال "attiny_heartbeat".

لتحميل البرنامج الثابت إلى ATTINY85 ، قد تجد المزيد من التفاصيل في هذه التعليمات:

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

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

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

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

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

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

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

الخطوة 3: تجميع المؤشرات

تجميع المؤشرات
تجميع المؤشرات
تجميع المؤشرات
تجميع المؤشرات
تجميع المؤشرات
تجميع المؤشرات

من المفترض أن تكون المؤشرات قابلة للتخصيص بالكامل. إنها إشارات الحدث من الدائرة الرئيسية التي يُنظر إليها على أنها نبضات القلب. لهذا البناء سوف نستخدم مؤشرات LED ؛ يمكن لجهازك استخدام المرحلات (نعم تم تقسيم VCC) أو مؤشر مرئي / إشارة آخر. ستعتمد قيم المقاوم على التفضيل الشخصي على مدى السطوع الذي تريده.

  1. في الجزء العلوي ، أدخل مصباح LED أزرق في RED1 (+) و BLACK1 (G) ، ولحام في الأسفل.
  2. في الجزء السفلي ، قم بثني الرصاص من RED1 بحيث يلامس الوسادة النحاسية على SILVER8 وتقليمه.
  3. في الجزء السفلي ، قم بقص الرصاص من BLACK1 فوق اللحام.
  4. في الجزء العلوي ، أدخل مصباح LED أخضر في RED2 (+) و BLACK2 (G) ، ولحام في الأسفل.
  5. في الجزء السفلي ، قم بثني الرصاص من RED2 بحيث يلامس الوسادة النحاسية على SILVER9 وتقليمه.
  6. في الجزء السفلي ، قم بقص الرصاص من BLACK2 أعلى اللحام.
  7. في الجزء العلوي ، أدخل مصباح LED أحمر في RED3 (+) و BLACK3 (G) ، ولحام في الأسفل.
  8. في الجزء السفلي ، قم بثني الرصاص من RED3 بحيث يلامس اللوحة النحاسية على SILVER10 وتقليمه.
  9. في الجزء السفلي ، قم بقص الرصاص من BLACK3 فوق اللحام.
  10. في الجزء العلوي ، أدخل المقاوم 1K في الثقوب SILVER1 و SILVER4.
  11. في الجزء السفلي ، قم بتتبع وتشذيب ولحام الرصاص من SILVER1 إلى BLACK1.
  12. في الجزء العلوي ، أدخل مقاومًا 1K في الثقوب SILVER2 و SILVER4.
  13. في الجزء السفلي ، قم بتتبع وتشذيب ولحام الرصاص من SILVER2 إلى BLACK2.
  14. في الجزء العلوي ، أدخل المقاوم 1K في الثقوب SILVER3 و SILVER4.
  15. في الجزء السفلي ، قم بتتبع وتشذيب ولحام الرصاص من SILVER3 إلى BLACK3.
  16. في الجزء السفلي ، أسلاك اللحام على SILVER4 وتقليم عند امتداد حوالي 5 مم.
  17. في الجزء السفلي ، قم بلحام سلك أسود على SILVER4.
  18. في الجزء السفلي ، قم بلحام سلك أبيض في SILVER5 ، مما يضمن استمرارية القيادة من RED1.
  19. في الجزء السفلي ، قم بلحام سلك أصفر في SILVER6 ، مما يضمن استمرارية القيادة من RED2.
  20. في الجزء السفلي ، قم بلحام سلك برتقالي في SILVER7 ، مما يضمن استمرارية القيادة من RED3.

الخطوة 4: تجميع الدائرة الرئيسية

تجميع الدائرة الرئيسية
تجميع الدائرة الرئيسية
تجميع الدائرة الرئيسية
تجميع الدائرة الرئيسية
تجميع الدائرة الرئيسية
تجميع الدائرة الرئيسية

المجسم:

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

في حالة استخدام المؤشرات أعلاه (راجع مخطط pinout):

  1. في الخلف ، قم بلحام السلك الأبيض في PB1.
  2. في الخلف ، قم بلحام السلك الأصفر في PB3.
  3. في الخلف ، قم بلحام السلك البرتقالي في PB4.
  4. في الخلف ، قم بلحام السلك الأسود في GND.

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

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

من المتوقع أن يكون عدد من هذه BRICKS على عقد متعددة (MCUs - ESP8266 أو ATTINY84) في بيئة. هذا اختبار وحدة: يرسل أوامر I2C من UNO إلى ATTINY الذي يقوم بتبديل مؤشر الاستلام. يظل مؤشر ATTINY ALIVE قيد التشغيل.

لقد قمنا سابقًا ببناء درع I2C لـ Arduino.

إذا كنت تريد لوحة التجارب بدلاً من ذلك:

  1. قم بتوصيل 5.0 فولت على UNO بـ VCC على BRICK.
  2. قم بتوصيل GND على UNO بـ GND على BRICK.
  3. قم بتوصيل A5 على UNO بـ SCL على BRICK.
  4. قم بتوصيل A4 على UNO بـ SDA على BRICK.
  5. قم بتوصيل مقاوم سحب 4K7 من SDA إلى VCC.
  6. قم بتوصيل مقاوم سحب 4K7 من SCL إلى VCC.

إجراء الاختبار

  1. قم بتوصيل UNO بجهاز الكمبيوتر Dev الخاص بك باستخدام USB.
  2. قم بتحميل الكود إلى UNO.
  3. افتح وحدة تحكم Arduino.
  4. اختر 9600 باود (أعد تشغيل UNO وأعد فتح وحدة التحكم إذا كان عليك ذلك).
  5. سيتم طباعة عنوان العبد على وحدة التحكم.
  6. عندما ، أدخل في مربع الإرسال 2 1 (لذا 16 2 1) ، ويضيء مؤشر LED للاستلام.
  7. عندما ، أدخل في مربع الإرسال 2 0 (لذا 16 2 0) ، وينطفئ مؤشر LED للاستلام.

أوامر I2C BRICK الخاصة بالعبيد من UNO master

#يشمل
بايت const _num_chars = 32 ؛
char _received_chars [_num_chars] ؛ // مجموعة لتخزين البيانات المستلمة
قيمة منطقية _has_new_data = خطأ ؛
الإعداد باطل() {
Serial.begin (9600) ؛
Serial.println () ،
Serial.println ("ASSIMILATE IOT ACTOR / SENSOR EEPROM Editor") ؛
Serial.println ("تأكد من تحديد سطر جديد في نافذة وحدة التحكم") ؛
Serial.println () ،
Serial.println ("إيصال تأكيد العنوان 1 للبيانات الوصفية غير متوفر (لـ M2M)") ؛
Serial.println ("ADDRESS 2 ACTOR COMMAND") ؛
Serial.println () ،
Serial.println ("عناوين على الحافلة:") ؛
scan_i2c_addresses () ،
Serial.println () ،
Serial.println ("") ؛
}
voidscan_i2c_addresses () {
int device_count = 0 ؛
لـ (عنوان بايت = 8 ؛ العنوان <127 ؛ العنوان ++)
{
Wire.beginTransmission (العنوان) ؛
خطأ في البايت الثابت = Wire.endTransmission () ؛
إذا (خطأ == 0)
{
Serial.println (العنوان) ؛
}
}
}
حلقة فارغة() {
recv_with_end_marker () ،
send_to_i2c () ،
}
voidrecv_with_end_marker () {
البايت الثابت ndx = 0 ؛
char end_marker = '\ n'؛
شار RC
while (Serial.available ()> 0 && _has_new_data == false) {
rc = Serial.read () ،
إذا (rc! = end_marker) {
_received_chars [ndx] = rc ؛
ndx ++ ؛
إذا (ndx> = _num_chars) {
ndx = _num_chars - 1 ؛
}
}
آخر {
_received_chars [ndx] = '0' ؛ // إنهاء السلسلة
ndx = 0 ؛
_has_new_data = صحيح ؛
}
}
}
voidsend_to_i2c () {
char param_buf [16] ؛
سلسلة const Received_string = String (_received_chars) ؛
إذا (_has_new_data == صحيح) {
int idx1 = Received_string.indexOf ('') ؛
عنوان السلسلة = Received_string.substring (0، idx1) ؛
int address_int = address.toInt () ؛
إذا (address_int <8 || address_int> 127) {
Serial.println ("INVALID ADDRESS INPUT:") ؛
Serial.println (العنوان) ؛
إرجاع؛
}
int idx2 = Received_string.indexOf (''، idx1 + 1) ؛
كود السلسلة
إذا (idx2 == -1) {
الكود = Received_string.substring (idx1 + 1) ؛
}آخر{
الكود = Received_string.substring (idx1 + 1، idx2 + 1) ؛
}
int code_int = code.toInt () ؛
إذا (code_int <0 || code_int> 5) {
Serial.println ("إدخال رمز غير صالح:") ؛
Serial.println (كود) ؛
إرجاع؛
}
منطقي has_parameter = idx2> -1 ؛
معلمة السلسلة ؛
إذا (has_parameter) {
المعلمة = Received_string.substring (idx2 + 1، idx2 + 17) ؛ // 16 حرفًا كحد أقصى
إذا كان (parameter.length () <1) {
Serial.println ("PARTAMETER MIN. LENGTH 1") ؛
_has_new_data = خطأ ؛
إرجاع؛
}
}آخر{
إذا (code_int> 1) {
Serial.println ("مطلوب معلمة!") ؛
_has_new_data = خطأ ؛
إرجاع؛
}
}
Serial.println () ،
Serial.print ("input Orig =") ؛
Serial.println (Received_string) ؛
Serial.print ("العنوان =") ؛
Serial.println (العنوان) ؛
Serial.print ("code =") ؛
Serial.println (كود) ؛
Serial.print ("المعلمة =") ؛
Serial.println (معلمة) ؛
// إرسال عبر I2C
Wire.beginTransmission (address_int) ؛
Wire.write (code_int) ؛
إذا (has_parameter) {
معلمة تريم () ؛
strcpy (param_buf، parameter.c_str ()) ،
Wire.write (param_buf) ؛
}
Wire.endTransmission () ؛
Serial.println () ،
Serial.println ("SENT VIA I2C!") ؛
Serial.println () ،
Serial.println ("") ؛
_has_new_data = خطأ ؛
}
}

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

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

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

المتابعة ASSIMILATE ACTOR: HEARTBEAT الذي يستخدم هذا الطوب لديه تكوين تلقائي لـ Crouton عبر البيانات الوصفية المثبتة بالفعل في ATTINY85 هنا. يتم إرسال حزمة JSON المرسلة إلى Crouton عبر أحدث البرامج الثابتة لـ ICOS10. يمكنك القيام بإثبات مفهوم على ESP8266 عادي ، إذا كان البناء أكثر من اللازم في الوقت الحالي.

يحتوي مخطط UNO المستخدم في الاختبار على وظيفة لحفظ عنوان تابع جديد إلى EEPROM على ATTINY85 ، إذا كان لديك صدام على ناقل I2C المستهدف.

موصى به: