สารบัญ:

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 ฮาร์ทบีทอิฐ
IOT123 - I2C ฮาร์ทบีทอิฐ
IOT123 - I2C ฮาร์ทบีทอิฐ
IOT123 - I2C ฮาร์ทบีทอิฐ
IOT123 - I2C ฮาร์ทบีทอิฐ
IOT123 - I2C ฮาร์ทบีทอิฐ

อิฐ IOT123 เป็นหน่วยโมดูลาร์ DIY ที่สามารถผสมกับอิฐ IOT123 อื่นๆ เพื่อเพิ่มฟังก์ชันการทำงานให้กับโหนดหรืออุปกรณ์สวมใส่ได้ พวกเขาอยู่บนพื้นฐานของตารางนิ้วโปรโตบอร์ดสองด้านที่เชื่อมต่อกันผ่านรู

อิฐจำนวนหนึ่งคาดว่าจะอยู่บนหลายโหนด (Master MCU - ESP8266 หรือ ATTINY84) บนไซต์ MCU ไม่จำเป็นต้องมีความรู้เกี่ยวกับวัตถุประสงค์ของเซ็นเซอร์หรือซอฟต์แวร์มาก่อน มันสแกนหาโหนด I2C จากนั้นขอการถ่ายโอนข้อมูลคุณสมบัติ (ข้อมูลเซ็นเซอร์) จากทาสแต่ละตัว อิฐเหล่านี้จ่ายไฟ 5.0V, 3.3V และสาย AUX อื่นที่ปรับแต่งได้

I2C HEARTBEAT BRICK นี้บ่งชี้ว่าทาส ATTINY ยังมีชีวิตอยู่หรือไม่ รวมทั้งการรับส่งข้อมูล I2C และมีคุณสมบัติหนึ่งประการ:

สถานะ ("ยังมีชีวิตอยู่")

PB1 (สีขาว) หมายถึงสุขภาพของ ATTINY

PB3 (สีเหลือง) สลับกับคำขอ I2C จากต้นแบบ

PB4 (สีส้ม) สลับกับ I2C ที่ได้รับจากต้นแบบ

รูทะลุที่อยู่ติดกับ ATTINY85 นั้นไม่ได้ถูกใช้งาน เพื่อเปิดใช้งานโปรแกรมเมอร์พิน pogo ในขณะที่ DIP8 ถูกบัดกรีเข้ากับ PCB สิ่งที่เป็นนามธรรมเพิ่มเติม การบรรจุอิฐในกระบอกสูบขนาดเล็กที่เสียบเข้ากับฮับ D1M WIFI BLOCK ปั๊มค่าไปยังเซิร์ฟเวอร์ MQTT กำลังอยู่ระหว่างการพัฒนา

ขั้นตอนที่ 1: วัสดุและเครื่องมือ

วัสดุและเครื่องมือ
วัสดุและเครื่องมือ
วัสดุและเครื่องมือ
วัสดุและเครื่องมือ
วัสดุและเครื่องมือ
วัสดุและเครื่องมือ
วัสดุและเครื่องมือ
วัสดุและเครื่องมือ

มีรายการ Bill of Material and Sourcing ฉบับเต็ม

  1. กระดาษ PCB (7 x 7 รู)
  2. ไฟ LED (แดง เขียว น้ำเงิน)
  3. ตัวต้านทาน (3 จาก 1K)
  4. ATTINY85 20PU (1)
  5. 1" โปรโตบอร์ดสองด้าน (1)
  6. ส่วนหัวชาย90º (3P, 3P)
  7. ส่วนหัวชาย (2P, 2P)
  8. จัมเปอร์ Shunt (1)
  9. สายเชื่อมต่อ (~7)
  10. บัดกรีและเหล็ก (1)

ขั้นตอนที่ 2: เตรียม ATTINY85

เตรียม ATTINY85
เตรียม ATTINY85
เตรียม ATTINY85
เตรียม ATTINY85
เตรียม ATTINY85
เตรียม ATTINY85
เตรียม ATTINY85
เตรียม ATTINY85

หมายเหตุ: หากต้องการรวม Crouton โปรดใช้ไลบรารีจากที่นี่ และใช้ตัวอย่างที่ติดตั้ง "attiny_heartbeat"

ต้องการ AttinyCore จาก Boards Manager เบิร์น bootloader "EEPROM Retained", "8mHZ Internal" (การกำหนดค่าทั้งหมดที่แสดงด้านบน)

ที่เก็บรหัสสามารถพบได้ที่นี่

ไฟล์ ZIP ของห้องสมุดสามารถพบได้ที่นี่

คำแนะนำสำหรับ "การนำเข้าไลบรารี 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-…

ดีที่สุดในการทดสอบผ่าน breadboard ก่อนดำเนินการต่อ

หากคุณมี ASSIMILATE SENSORS อยู่แล้ว ตรวจสอบให้แน่ใจว่าแอดเดรสสเลฟต่างกันในการรวม SENSOR/MCU Host เช่น นักแสดงรีเลย์ทุกคนสามารถมีที่อยู่เดียวกันได้ ตราบใดที่คุณมีตัวแสดงการถ่ายทอดเพียงคนเดียวบน MCU/โหนด

ขั้นตอนที่ 3: การประกอบอินดิเคเตอร์

การประกอบอินดิเคเตอร์
การประกอบอินดิเคเตอร์
การประกอบอินดิเคเตอร์
การประกอบอินดิเคเตอร์
การประกอบอินดิเคเตอร์
การประกอบอินดิเคเตอร์

อินดิเคเตอร์มีไว้เพื่อให้ปรับแต่งได้อย่างเต็มที่ เป็นสัญญาณเหตุการณ์จากวงจรหลักที่เห็นเป็น Heartbeats สำหรับโครงสร้างนี้ เราจะใช้ไฟ 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: การทดสอบ

การทดสอบ
การทดสอบ
การทดสอบ
การทดสอบ
การทดสอบ
การทดสอบ
การทดสอบ
การทดสอบ

อิฐจำนวนหนึ่งคาดว่าจะอยู่บนหลายโหนด (MCU - ESP8266 หรือ ATTINY84) ในสภาพแวดล้อม นี่คือการทดสอบหน่วย: ส่งคำสั่ง I2C จาก UNO ไปยัง ATTINY ซึ่งจะสลับ LED รับ ไฟ LED ATTINY ALIVE ติดสว่าง

ก่อนหน้านี้เราได้สร้าง I2C SHIELD สำหรับ Arduino

หากคุณต้องการเขียงหั่นขนมแทน:

  1. เชื่อมต่อ 5.0V บน UNO กับ VCC บน BRICK
  2. เชื่อมต่อ GND บน UNO กับ GND บนอิฐ
  3. เชื่อมต่อ A5 บน UNO กับ SCL บน BRICK
  4. เชื่อมต่อ A4 บน UNO กับ SDA บน BRICK
  5. เชื่อมต่อตัวต้านทานแบบดึงขึ้น 4K7 จาก SDA กับ VCC
  6. เชื่อมต่อตัวต้านทานแบบดึงขึ้น 4K7 จาก SCL กับ VCC

กำลังดำเนินการทดสอบ

  1. เชื่อมต่อ UNO ของคุณกับ Dev PC ของคุณด้วย 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;
ถ่าน _received_chars[_num_chars]; // อาร์เรย์เพื่อเก็บข้อมูลที่ได้รับ
บูลีน _has_new_data = เท็จ;
voidsetup() {
Serial.begin(9600);
Serial.println();
Serial.println("ASSIMILATE IOT ACTOR/SENSOR EEPROM EDITOR");
Serial.println("ตรวจสอบให้แน่ใจว่าได้เลือกบรรทัดใหม่ในหน้าต่างคอนโซล");
Serial.println();
Serial.println("ที่อยู่ 1 ยืนยันการรับเมตาดาต้าไม่มี (สำหรับ M2M)");
Serial.println("ที่อยู่ 2 ACTOR COMMAND");
Serial.println();
Serial.println("AdDRESSES ON BUS:");
scan_i2c_addresses();
Serial.println();
Serial.println("");
}
voidscan_i2c_addresses(){
int device_count = 0;
สำหรับ (ที่อยู่ไบต์ = 8; ที่อยู่ <127; ที่อยู่++)
{
Wire.beginการส่ง(ที่อยู่);
ข้อผิดพลาด const ไบต์ = Wire.endTransmission ();
ถ้า (ข้อผิดพลาด == 0)
{
Serial.println (ที่อยู่);
}
}
}
โมฆะลูป () {
recv_with_end_marker();
send_to_i2c();
}
voidrecv_with_end_marker () {
ไบต์คงที่ ndx = 0;
ถ่าน end_marker = '\n';
ถ่าน rc;
ในขณะที่ (Serial.available () >0 && _has_new_data == false) {
rc = Serial.read();
ถ้า (rc != end_marker) {
_received_chars[ndx] = rc;
นดx++;
ถ้า (ndx >= _num_chars) {
ndx = _num_chars - 1;
}
}
อื่น {
_received_chars[ndx] = '\0'; // สิ้นสุดสตริง
ndx = 0;
_has_new_data = จริง;
}
}
}
voidsend_to_i2c () {
ถ่าน param_buf[16];
const สตริงที่ได้รับ_string = สตริง (_received_chars);
ถ้า (_has_new_data == จริง) {
int idx1 = ได้รับ_string.indexOf('');
ที่อยู่สตริง = ได้รับ_string.substring(0, idx1);
int address_int = address.toInt();
ถ้า (address_int < 8 || address_int >127){
Serial.println ("ที่อยู่ไม่ถูกต้อง:");
Serial.println (ที่อยู่);
กลับ;
}
int idx2 = ได้รับ_string.indexOf('', idx1+1);
รหัสสตริง;
ถ้า (idx2 == -1){
รหัส = ได้รับ_string.substring(idx1+1);
}อื่น{
รหัส = ได้รับ_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){
พารามิเตอร์ = ได้รับ_string.substring(idx2 + 1, idx2 + 17); // 16 ตัวอักษรสูงสุด
ถ้า (พารามิเตอร์ ความยาว () < 1){
Serial.println("พารามิเตอร์ขั้นต่ำ ความยาว 1");
_has_new_data = เท็จ;
กลับ;
}
}อื่น{
ถ้า (code_int >1){
Serial.println("ต้องมีพารามิเตอร์!");
_has_new_data = เท็จ;
กลับ;
}
}
Serial.println();
Serial.print("อินพุตต้นฉบับ = ");
Serial.println(received_string);
Serial.print("ที่อยู่ = ");
Serial.println (ที่อยู่);
Serial.print ("รหัส = ");
Serial.println (รหัส);
Serial.print("พารามิเตอร์ = ");
Serial.println (พารามิเตอร์);
// ส่งผ่าน I2C
Wire.beginTransmission (ที่อยู่_int);
Wire.write (code_int);
ถ้า (has_parameter){
พารามิเตอร์. trim();
strcpy(param_buf, พารามิเตอร์.c_str());
Wire.write(param_buf);
}
Wire.endTransmission();
Serial.println();
Serial.println("ส่งผ่าน I2C!");
Serial.println();
Serial.println("");
_has_new_data = เท็จ;
}
}

ดู rawuno_i2c_command_input.ino โฮสต์ด้วย ❤ โดย GitHub

ขั้นตอนที่ 6: ขั้นตอนต่อไป

ขั้นตอนถัดไป
ขั้นตอนถัดไป
ขั้นตอนถัดไป
ขั้นตอนถัดไป

ASSIMILATE ACTOR ที่ตามมา: HEARTBEAT ซึ่งใช้อิฐนี้มีการกำหนดค่าอัตโนมัติสำหรับ Crouton ผ่านข้อมูลเมตาที่ติดตั้งไว้แล้วใน ATTINY85 ที่นี่ แพ็กเก็ต JSON ที่ส่งไปยัง Crouton จะถูกส่งผ่านเฟิร์มแวร์ล่าสุดสำหรับ ICOS10 คุณสามารถทำ Proof-of-concept บน ESP8266 ธรรมดาได้ หากบิลด์นั้นมากเกินไปสำหรับตอนนี้

ภาพร่าง UNO ที่ใช้ในการทดสอบมีฟังก์ชันสำหรับบันทึกที่อยู่รองใหม่ไปยัง EEPROM บน ATTINY85 หากคุณมีข้อขัดแย้งบนบัส I2C เป้าหมายของคุณ

แนะนำ: