สารบัญ:
- ผู้เขียน John Day [email protected].
 - Public 2024-01-30 13:07.
 - แก้ไขล่าสุด 2025-01-23 15:12.
 
  
  
  
  อิฐ IOT123 เป็นหน่วยโมดูลาร์ DIY ที่สามารถผสมกับอิฐ IOT123 อื่นๆ เพื่อเพิ่มฟังก์ชันการทำงานให้กับโหนดหรืออุปกรณ์สวมใส่ได้ พวกเขาอยู่บนพื้นฐานของตารางนิ้วโปรโตบอร์ดสองด้านที่เชื่อมต่อกันผ่านรู
อิฐจำนวนหนึ่งคาดว่าจะอยู่บนหลายโหนด (Master MCU - ESP8266 หรือ ATTINY84) บนไซต์ MCU ไม่จำเป็นต้องมีความรู้เกี่ยวกับวัตถุประสงค์ของเซ็นเซอร์หรือซอฟต์แวร์มาก่อน มันสแกนหาโหนด I2C จากนั้นขอการถ่ายโอนข้อมูลคุณสมบัติ (ข้อมูลเซ็นเซอร์) จากทาสแต่ละตัว อิฐเหล่านี้จ่ายไฟ 5.0V, 3.3V และสาย AUX อื่นที่ปรับแต่งได้
I2C 2CH RELAY BRICK นี้ขยายการทำงานของ I2C KY019 BRICK และมีคุณสมบัติในการอ่าน/เขียนสองประการ:
รีเลย์ 2CH[0] (จริง/เท็จ)
รีเลย์ 2CH[1] (จริง/เท็จ)
รูทะลุที่อยู่ติดกับ ATTINY85 นั้นไม่ได้ถูกใช้งาน เพื่อเปิดใช้งานโปรแกรมเมอร์พิน pogo ในขณะที่ DIP8 ถูกบัดกรีเข้ากับ PCB สิ่งที่เป็นนามธรรมเพิ่มเติม การบรรจุอิฐในกระบอกสูบขนาดเล็กที่เสียบเข้ากับฮับ D1M WIFI BLOCK ปั๊มค่าไปยังเซิร์ฟเวอร์ MQTT กำลังอยู่ระหว่างการพัฒนา
ขั้นตอนที่ 1: วัสดุและเครื่องมือ
  
  
  มีรายการ Bill of Material and Sourcing ฉบับเต็ม
- รีเลย์ 2 ช่อง (1)
 - ATTINY85 20PU (1)
 - 1" โปรโตบอร์ดสองด้าน (1)
 - ส่วนหัวชาย90º (3P, 3P)
 - ส่วนหัวชาย (2P, 2P)
 - จัมเปอร์ Shunt (1)
 - สายเชื่อมต่อ (~7)
 - บัดกรีและเหล็ก (1)
 
ขั้นตอนที่ 2: เตรียม ATTINY85
  
  
  หมายเหตุ: หากต้องการรวม Crouton โปรดใช้ไลบรารีจากที่นี่ และใช้ตัวอย่างที่ติดตั้ง "attiny_2ch_relay"
ต้องการ AttinyCore จาก Boards Manager เบิร์น bootloader "EEPROM Retained", "8mHZ Internal" (การกำหนดค่าทั้งหมดที่แสดงด้านบน)
ที่เก็บรหัสสามารถพบได้ที่นี่
ไฟล์ ZIP ของห้องสมุดสามารถพบได้ที่นี่
คำแนะนำสำหรับ "การนำเข้าไลบรารี ZIP" ที่นี่
เมื่อติดตั้งไลบรารี่แล้ว คุณสามารถเปิดตัวอย่าง "attiny_2ch_relay"
ในการอัปโหลดเฟิร์มแวร์ไปยัง ATTINY85 คุณอาจพบรายละเอียดเพิ่มเติมในคำแนะนำเหล่านี้:
www.instructables.com/id/How-to-Program-A…
www.instructables.com/id/Programming-the-…
www.instructables.com/id/Programming-the-…
www.instructables.com/id/Programming-the-…
ดีที่สุดในการทดสอบผ่าน breadboard ก่อนดำเนินการต่อ
หากคุณมีเซ็นเซอร์ ASSIMILATE อยู่แล้ว ตรวจสอบให้แน่ใจว่าที่อยู่รองแตกต่างกันในการรวมโฮสต์ SENSOR/MCU เช่น ผู้ดำเนินการรีเลย์ทั้งหมดสามารถมีที่อยู่เดียวกันได้ตราบใดที่คุณมีตัวแสดงรีเลย์เพียงคนเดียวบน MCU/โหนด
ขั้นตอนที่ 3: ประกอบวงจร
  
  
  - ที่ด้านหน้า ใส่ส่วนประกอบ ATTINY85 (1), ส่วนหัว 3P 90deg ตัวผู้ (2) (3), ส่วนหัว 3P ตัวผู้ (4) (5) และบัดกรีที่ด้านหลัง
 - ที่ด้านหลัง ลากเส้นลวดสีเหลืองจาก YELLOW1 ถึง YELLOW2 และบัดกรี
 - ที่ด้านหลัง ลากเส้นลวดสีส้มจาก ORANGE1 ถึง ORANGE2 แล้วบัดกรี
 - ที่ด้านหลัง ให้ลากเส้นลวดสีน้ำเงินจาก BLUE1 ถึง BLUE2 และบัดกรี
 - ที่ด้านหลัง ให้ลากเส้นลวดสีเขียวจาก GREEN1 ถึง GREEN2 และบัดกรี
 - ที่ด้านหลัง ให้ลากเส้นลวดสีดำจาก BLACK1 ถึง BLACK2 แล้วบัดกรี
 - ที่ด้านหลัง ลากเส้นลวดสีดำจาก BLACK3 ถึง BLACK4 และบัดกรี
 - ที่ด้านหลัง ลากเส้นสีแดงจาก RED1 ถึง RED2 แล้วบัดกรี
 - ที่ด้านหลัง ให้ลากเส้นลวดเปล่าจาก RED3 ถึง RED4 แล้วบัดกรี
 - ที่ด้านหลัง ให้ลากเส้นลวดเปล่าจาก SILVER1 ถึง SILVER2 แล้วบัดกรี
 - เพิ่มจัมเปอร์บนสาย 5V หรือ 3V3
 
ตอนนี้สามารถเชื่อมต่อรีเลย์โดยตรงผ่านพินไปยัง 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 0:1 (ดังนั้น 15 2 0:1) และรีเลย์ CH1 จะเปิดขึ้น
 - เมื่อ ป้อนในกล่องส่ง 2 0:0 (ดังนั้น 15 2 0:0) และรีเลย์ CH1 จะดับลง
 - เมื่อ ป้อนในกล่องส่ง 2 1:1 (ดังนั้น 15 2 1:1) และรีเลย์ CH2 จะเปิดขึ้น
 - เมื่อ ป้อนในกล่องส่ง 2 1:0 (ดังนั้น 15 2 0:0) และรีเลย์ CH2 จะดับลง
 
คำสั่งเฉพาะของ 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 ที่ตามมา: 2CH RELAY ซึ่งใช้อิฐนี้มีการกำหนดค่าอัตโนมัติสำหรับ Crouton ผ่านข้อมูลเมตาที่ติดตั้งไว้แล้วใน ATTINY85 ที่นี่ แพ็กเก็ต JSON ที่ส่งไปยัง Crouton จะถูกส่งผ่านเฟิร์มแวร์ล่าสุดสำหรับ ICOS10 คุณสามารถทำ Proof-of-concept บน ESP8266 ธรรมดาได้ หากบิลด์นั้นมากเกินไปสำหรับตอนนี้
ภาพร่าง UNO ที่ใช้ในการทดสอบมีฟังก์ชันสำหรับบันทึกที่อยู่รองใหม่ไปยัง EEPROM บน ATTINY85 หากคุณมีข้อขัดแย้งบนบัส I2C เป้าหมายของคุณ มีการเพิ่มแผนผังบางส่วน แต่มีหลายวิธีในการต่อวงจรดาวน์สตรีมขึ้นอยู่กับสิ่งที่คุณต้องการทำให้สำเร็จ ดังนั้นฉันจะปล่อยให้คุณ:)
แนะนำ:
DIY รีโมทคอนโทรล ชุด โดย 2262/2272 M4 Bread Board & Relay for Maker: 4 ขั้นตอน (พร้อมรูปภาพ)
DIY รีโมทคอนโทรล ชุด โดย 2262/2272 M4 Bread Board & Relay for Maker: สมาร์ทโฮมกำลังมาถึงชีวิตของเรา หากเราต้องการบ้านอัจฉริยะที่เป็นจริง เราจำเป็นต้องมีสวิตช์ควบคุมระยะไกลจำนวนมาก วันนี้เราจะมาทำการทดสอบ ทำวงจรง่ายๆ เพื่อเรียนรู้ทฤษฎีของสวิตช์ควบคุมระยะไกล โดยชุดนี้ออกแบบโดย SINONING ROBOT
คลิก Brick Switch สำหรับ Makey Makey: 4 ขั้นตอน (พร้อมรูปภาพ)
คลิก Brick Switch สำหรับ Makey Makey: สวิตช์ที่พิมพ์ 3 มิตินี้จะอนุญาตให้ผู้ใช้เปลี่ยน Makey Makey ให้เป็น "สไลด์นิ้ว" สำหรับ "คลิก" ในเกมหรืออาจเป็นลูกศรขวา/ซ้ายเพื่อเลื่อนดูการนำเสนอ การเพิ่มการเมานต์เทอร์มินัลซ้ายและขวาสำหรับ
500 LED-Pixel RGB-Brick: 9 ขั้นตอน (พร้อมรูปภาพ)
500 LED-Pixel RGB-Brick: เมื่อก่อนฉันสร้าง 10x10 LED-Coffetable ด้วย WS2812 LED บางตัว แต่ถึงแม้จะเป็นไปได้ที่จะเล่นเกม Snake แบบเก่าด้วยสมาร์ทโฟนที่เชื่อมต่ออยู่ ฉันก็ต้องการอะไรมากกว่านี้ พิเศษ. ฉันก็เลยตัดสินใจใส่ลีดเดอร์อีกสองสามข้อ arra
Raspberry Pi DIY Relay Board: 3 ขั้นตอน (พร้อมรูปภาพ)
Raspberry Pi DIY Relay Board: สำหรับบางโครงการที่มีราสเบอร์รี่และ Arduinos ที่เล็กกว่า ฉันต้องเปลี่ยนรีเลย์บางตัว เนื่องจากระดับเอาต์พุต GPIO (3,3V) มันจึงยากที่จะหารีเลย์บางตัวที่สามารถสลับโหลดที่ใหญ่ขึ้นและสามารถทำงานได้โดยตรงกับ 3,3 โวลต์ที่ให้มา ดังนั้นผม
Arduino Alarm Clock Relay: 6 ขั้นตอน (พร้อมรูปภาพ)
Arduino Alarm Clock Relay: ฉันมีปัญหามากในการตื่นเช้าโดยเฉพาะถ้าฉันนอนดึกเมื่อคืนนี้ โดยพื้นฐานแล้ว โปรเจ็กต์นี้ช่วยให้คุณสามารถเปิดรีเลย์ในเวลาที่คุณตั้งค่าโดยใช้ปุ่มกดและจอแอลซีดี รีเลย์นี้สามารถควบคุมอุปกรณ์ต่างๆ จากเทิร์นอิน
