สารบัญ:

IOT123 - I2C KY019 อิฐ: 5 ขั้นตอน
IOT123 - I2C KY019 อิฐ: 5 ขั้นตอน

วีดีโอ: IOT123 - I2C KY019 อิฐ: 5 ขั้นตอน

วีดีโอ: IOT123 - I2C KY019 อิฐ: 5 ขั้นตอน
วีดีโอ: Arduino keypad door lock with i2c LCD -Test1 2024, กรกฎาคม
Anonim
IOT123 - I2C KY019 อิฐ
IOT123 - I2C KY019 อิฐ
IOT123 - I2C KY019 อิฐ
IOT123 - I2C KY019 อิฐ

อิฐ 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 ฉบับเต็ม

  1. KY-019 รีเลย์ (1)
  2. ATTINY85 20PU (1)
  3. 1" โปรโตบอร์ดสองด้าน (1)
  4. ส่วนหัวชาย90º (3P, 3P)
  5. สายเชื่อมต่อ (~7)
  6. บัดกรีและเหล็ก (1)

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

เตรียม ATTINY85
เตรียม ATTINY85
เตรียม ATTINY85
เตรียม ATTINY85
เตรียม ATTINY85
เตรียม 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: ประกอบวงจร

ประกอบวงจร
ประกอบวงจร
ประกอบวงจร
ประกอบวงจร
ประกอบวงจร
ประกอบวงจร
ประกอบวงจร
ประกอบวงจร
  1. ที่ด้านหน้า ใส่ส่วนประกอบ ATTINY85 (1), ส่วนหัว 3P 90deg ตัวผู้ (2) (3) และบัดกรีที่ด้านหลัง
  2. ที่ด้านหลัง ลากเส้นลวดสีเหลืองจาก YELLOW1 ถึง YELLOW2 และบัดกรี
  3. ที่ด้านหลัง ให้ลากเส้นลวดสีน้ำเงินจาก BLUE1 ถึง BLUE2 และบัดกรี
  4. ที่ด้านหลัง ให้ลากเส้นลวดสีเขียวจาก GREEN1 ถึง GREEN2 และบัดกรี
  5. ที่ด้านหลัง ให้ลากเส้นลวดสีดำจาก BLACK1 ถึง BLACK2 แล้วบัดกรี
  6. ที่ด้านหลัง ลากเส้นลวดสีดำจาก BLACK3 ถึง BLACK4 และบัดกรี
  7. ที่ด้านหลัง ลากเส้นสีแดงจาก RED1 ถึง RED2 แล้วบัดกรี
  8. ที่ด้านหลัง ลากเส้นสีแดงจาก RED3 ถึง RED4 แล้วบัดกรี

ตอนนี้สามารถเชื่อมต่อรีเลย์โดยตรงผ่านพินไปยัง PCB หรือผ่านสายไฟ ไปยังจุดที่แสดงในสัญญาพิน

ขั้นตอนที่ 4: การทดสอบ

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

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

ก่อนหน้านี้เราได้สร้าง 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 เลือก 9600 บอด (รีสตาร์ท UNO และเปิดคอนโซลอีกครั้งหากต้องการ)
  4. ที่อยู่ของทาสจะพิมพ์ไปที่คอนโซล
  5. เมื่อ ป้อนในกล่องส่ง 2 1 (ดังนั้น 12 2 1) และรีเลย์จะเปิดขึ้น
  6. เมื่อ ป้อนในกล่องส่ง 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 เป้าหมายของคุณ

มีการเพิ่มแผนผังบางส่วน แต่มีหลายวิธีในการต่อวงจรดาวน์สตรีมขึ้นอยู่กับสิ่งที่คุณต้องการทำให้สำเร็จ ดังนั้นฉันจะปล่อยให้คุณ:)

แนะนำ: