สารบัญ:
- ขั้นตอนที่ 1: วัสดุและเครื่องมือ
- ขั้นตอนที่ 2: เตรียม ATTINY85
- ขั้นตอนที่ 3: ประกอบวงจร
- ขั้นตอนที่ 4: การทดสอบ
- ขั้นตอนที่ 5: ขั้นตอนต่อไป
วีดีโอ: IOT123 - I2C KY019 อิฐ: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:06
อิฐ IOT123 เป็นหน่วยโมดูลาร์ DIY ที่สามารถผสมกับอิฐ IOT123 อื่นๆ เพื่อเพิ่มฟังก์ชันการทำงานให้กับโหนดหรืออุปกรณ์สวมใส่ได้ พวกเขาอยู่บนพื้นฐานของตารางนิ้วโปรโตบอร์ดสองด้านที่เชื่อมต่อกันผ่านรู
อิฐจำนวนหนึ่งคาดว่าจะอยู่บนหลายโหนด (Master MCU - ESP8266 หรือ ATTINY84) บนไซต์ MCU ไม่จำเป็นต้องมีความรู้เกี่ยวกับวัตถุประสงค์ของเซ็นเซอร์หรือซอฟต์แวร์มาก่อน มันสแกนหาโหนด I2C จากนั้นขอการถ่ายโอนข้อมูลคุณสมบัติ (ข้อมูลเซ็นเซอร์) จากทาสแต่ละตัว อิฐเหล่านี้จ่ายไฟ 5.0V, 3.3V และสาย AUX อื่นที่ปรับแต่งได้
I2C KY019 BRICK นี้เป็นรุ่นแรกของ ACTORS และมีคุณสมบัติอ่าน/เขียนหนึ่งรายการ:
สวิตช์ (จริง/เท็จ)
อิฐเซ็นเซอร์ประเภท Keyes จะถูกแยกออกก่อน เนื่องจากมีวิตามิน (จำเป็นต้องมีส่วนประกอบเพิ่มเติม) รวมอยู่ด้วยและค่อนข้างถูก (ฉันซื้อ 37 ในราคา 10AUD) บอร์ด/วงจรอื่นๆ จะถูกนำมาใช้กับ I2C BRICKS
รูทะลุที่อยู่ติดกับ ATTINY85 นั้นไม่ได้ถูกใช้งาน เพื่อเปิดใช้งานโปรแกรมเมอร์พิน pogo ในขณะที่ DIP8 ถูกบัดกรีเข้ากับ PCB สิ่งที่เป็นนามธรรมเพิ่มเติม การบรรจุอิฐในกระบอกสูบขนาดเล็กที่เสียบเข้ากับฮับ D1M WIFI BLOCK ปั๊มค่าไปยังเซิร์ฟเวอร์ MQTT กำลังอยู่ระหว่างการพัฒนา
ขั้นตอนที่ 1: วัสดุและเครื่องมือ
มีรายการ Bill of Material and Sourcing ฉบับเต็ม
- KY-019 รีเลย์ (1)
- ATTINY85 20PU (1)
- 1" โปรโตบอร์ดสองด้าน (1)
- ส่วนหัวชาย90º (3P, 3P)
- สายเชื่อมต่อ (~7)
- บัดกรีและเหล็ก (1)
ขั้นตอนที่ 2: เตรียม ATTINY85
หมายเหตุ: หากต้องการรวม Crouton โปรดใช้ไลบรารีจากที่นี่ และใช้ตัวอย่างที่ติดตั้ง "attiny_ky019"
ต้องการ AttinyCore จาก Boards Manager เบิร์น bootloader "EEPROM Retained", "8mHZ Internal" (การกำหนดค่าทั้งหมดที่แสดงด้านบน)
ที่เก็บรหัสสามารถพบได้ที่นี่
ไฟล์ ZIP ของห้องสมุดสามารถพบได้ที่นี่
คำแนะนำสำหรับ "การนำเข้าไลบรารี ZIP" ที่นี่
เมื่อติดตั้งไลบรารี่แล้ว คุณสามารถเปิดตัวอย่าง "attiny_ky019"
ในการอัปโหลดเฟิร์มแวร์ไปยัง ATTINY85 คุณอาจพบรายละเอียดเพิ่มเติมในคำแนะนำเหล่านี้:
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…
ดีที่สุดในการทดสอบผ่าน breadboard ก่อนดำเนินการต่อ
หากคุณมีเซ็นเซอร์ ASSIMILATE อยู่แล้ว ตรวจสอบให้แน่ใจว่าที่อยู่รองแตกต่างกันในการรวมโฮสต์ SENSOR/MCU เช่น ผู้ดำเนินการรีเลย์ทั้งหมดสามารถมีที่อยู่เดียวกันได้ตราบใดที่คุณมีตัวแสดงรีเลย์เพียงคนเดียวบน MCU/โหนด
ขั้นตอนที่ 3: ประกอบวงจร
- ที่ด้านหน้า ใส่ส่วนประกอบ ATTINY85 (1), ส่วนหัว 3P 90deg ตัวผู้ (2) (3) และบัดกรีที่ด้านหลัง
- ที่ด้านหลัง ลากเส้นลวดสีเหลืองจาก YELLOW1 ถึง YELLOW2 และบัดกรี
- ที่ด้านหลัง ให้ลากเส้นลวดสีน้ำเงินจาก BLUE1 ถึง BLUE2 และบัดกรี
- ที่ด้านหลัง ให้ลากเส้นลวดสีเขียวจาก GREEN1 ถึง GREEN2 และบัดกรี
- ที่ด้านหลัง ให้ลากเส้นลวดสีดำจาก BLACK1 ถึง BLACK2 แล้วบัดกรี
- ที่ด้านหลัง ลากเส้นลวดสีดำจาก BLACK3 ถึง BLACK4 และบัดกรี
- ที่ด้านหลัง ลากเส้นสีแดงจาก RED1 ถึง RED2 แล้วบัดกรี
- ที่ด้านหลัง ลากเส้นสีแดงจาก RED3 ถึง RED4 แล้วบัดกรี
ตอนนี้สามารถเชื่อมต่อรีเลย์โดยตรงผ่านพินไปยัง PCB หรือผ่านสายไฟ ไปยังจุดที่แสดงในสัญญาพิน
ขั้นตอนที่ 4: การทดสอบ
อิฐจำนวนหนึ่งคาดว่าจะอยู่บนหลายโหนด (MCU - ESP8266 หรือ ATTINY84) ในสภาพแวดล้อม นี่คือการทดสอบหน่วย: ส่งคำสั่ง I2C จาก UNO ไปยัง ATTINY ซึ่งจะเปิดหรือปิดรีเลย์
ก่อนหน้านี้เราได้สร้าง I2C SHIELD สำหรับ Arduino
หากคุณต้องการเขียงหั่นขนมแทน:
- เชื่อมต่อ 5.0V บน UNO กับ VCC บน BRICK
- เชื่อมต่อ GND บน UNO กับ GND บนอิฐ
- เชื่อมต่อ A5 บน UNO กับ SCL บน BRICK
- เชื่อมต่อ A4 บน UNO กับ SDA บน BRICK
- เชื่อมต่อตัวต้านทานแบบดึงขึ้น 4K7 จาก SDA กับ VCC
- เชื่อมต่อตัวต้านทานแบบดึงขึ้น 4K7 จาก SCL กับ VCC
กำลังดำเนินการทดสอบ
- เชื่อมต่อ UNO ของคุณกับ Dev PC ของคุณด้วย USB
- อัปโหลดรหัสไปยัง UNO
- เปิดคอนโซล Arduino เลือก 9600 บอด (รีสตาร์ท UNO และเปิดคอนโซลอีกครั้งหากต้องการ)
- ที่อยู่ของทาสจะพิมพ์ไปที่คอนโซล
- เมื่อ ป้อนในกล่องส่ง 2 1 (ดังนั้น 12 2 1) และรีเลย์จะเปิดขึ้น
- เมื่อ ป้อนในกล่องส่ง 2 0 (ดังนั้น 12 2 0) และรีเลย์จะปิด
คำสั่งเฉพาะของ 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
ขั้นตอนที่ 5: ขั้นตอนต่อไป
ASSIMILATE ACTOR ที่ตามมา: KY019 ซึ่งใช้อิฐนี้มีการกำหนดค่าอัตโนมัติสำหรับ Crouton ผ่านข้อมูลเมตาที่ติดตั้งไว้แล้วใน ATTINY85 ที่นี่ แพ็กเก็ต JSON ที่ส่งไปยัง Crouton จะถูกส่งผ่านเฟิร์มแวร์ล่าสุดสำหรับ ICOS10 คุณสามารถทำ Proof-of-concept บน ESP8266 ธรรมดาได้ หากบิลด์นั้นมากเกินไปสำหรับตอนนี้
ภาพร่าง UNO ที่ใช้ในการทดสอบมีฟังก์ชันสำหรับบันทึกที่อยู่รองใหม่ไปยัง EEPROM บน ATTINY85 หากคุณมีข้อขัดแย้งบนบัส I2C เป้าหมายของคุณ
มีการเพิ่มแผนผังบางส่วน แต่มีหลายวิธีในการต่อวงจรดาวน์สตรีมขึ้นอยู่กับสิ่งที่คุณต้องการทำให้สำเร็จ ดังนั้นฉันจะปล่อยให้คุณ:)
แนะนำ:
IOT123 - D1M BLOCK - การประกอบ 2xAMUX: 7 ขั้นตอน (พร้อมรูปภาพ)
IOT123 - D1M BLOCK - 2xAMUX Assembly: D1M BLOCKS เพิ่มเคสที่สัมผัสได้ ฉลาก ป้ายบอกขั้ว และรอยแยกสำหรับ Wemos D1 Mini SOC/Shields/Clones ยอดนิยม ปัญหาหนึ่งของชิป ESP8266 คือมีพิน IO แบบอะนาล็อกเพียงอันเดียวเท่านั้น คำแนะนำนี้แสดงวิธีการประกอบ 2xA
IOT123 - D1M BLOCK - การประกอบ RFTXRX: 8 ขั้นตอน
IOT123 - D1M BLOCK - RFTXRX Assembly: D1M BLOCKS เพิ่มเคสที่สัมผัสได้ ฉลาก ป้ายบอกขั้ว และรอยแยกสำหรับ Wemos D1 Mini SOC/Shields/Clones ยอดนิยม เครื่องส่งสัญญาณ/เครื่องรับ RF ช่วยให้ ESP8266 เข้าถึงระบบอัตโนมัติภายในบ้าน/อุตสาหกรรมที่มีอยู่ เคสนี้ให้แบ่งออกสำหรับ 433/
IOT123 - D1M BLOCK - GY521 การประกอบ: 8 ขั้นตอน
IOT123 - D1M BLOCK - GY521 Assembly: D1M BLOCKS เพิ่มเคสที่สัมผัสได้ ฉลาก ป้ายบอกขั้ว และรอยแยกสำหรับ Wemos D1 Mini SOC/Shields/Clones ยอดนิยม D1M BLOCK นี้ให้การเชื่อมต่อระหว่าง Wemos D1 Mini และโมดูล GY-521 อย่างง่าย (สามารถเชื่อมต่อหมุดที่อยู่และหมุดขัดจังหวะ
IOT123 - นักแสดงสมทบ: KY019: 4 ขั้นตอน
IOT123 - ASSIMILATE ACTOR: KY019: มีสัญญาณควบคุม TIL 5V ซึ่งสามารถควบคุมสัญญาณ DC / AC ได้ โครงสร้างนี้ใช้ I2C KY019 BRICK หากคุณต้องการ 2 ช่องสัญญาณ ฉันแนะนำให้เปลี่ยนนักแสดงคนนี้เป็น 2CH RELAY BRICK ASSIMILATE ACTORS/SENSORS เป็นนักแสดงสิ่งแวดล้อม/เซ็นเซอร์
IOT123 - 5PIN ATTINY85 NRF24L01 อิฐ: 4 ขั้นตอน
IOT123 - 5PIN ATTINY85 NRF24L01 BRICK: อัปเดต: การตั้งค่านี้ส่วนใหญ่เป็นการศึกษาหรือเป็นพื้นฐานสำหรับการทดสอบซอฟต์แวร์/พาวเวอร์ซัพพลาย แม้ว่า PB5 จะถูกปิดใช้งานเป็น RESET แต่ก็ไม่สามารถอ่านค่าได้อย่างแม่นยำโดยใช้ analogRead: กรณีการใช้งานหลักสำหรับการอ่านเซ็นเซอร์ จะตรวจสอบการตั้งค่า ATTINY84