อินเทอร์เฟซ I2C และ Arduino

สารบัญ:

อินเทอร์เฟซ I2C และ Arduino
อินเทอร์เฟซ I2C และ Arduino

วีดีโอ: อินเทอร์เฟซ I2C และ Arduino

วีดีโอ: อินเทอร์เฟซ I2C และ Arduino
วีดีโอ: Подключение нескольких устройств по шине i2c 2024, พฤศจิกายน
Anonim

ในบทความนี้ เราจะมาดูว่าอินเทอร์เฟซ I2C (ay-tu-si, i-two-tse) คืออะไร ฟีเจอร์ของอินเทอร์เฟซนี้คืออะไร และใช้งานอย่างไร

อินเทอร์เฟซ I2c
อินเทอร์เฟซ I2c

มันจำเป็น

  • - Arduino;
  • - โพเทนชิออมิเตอร์แบบดิจิตอล AD5171;
  • - ไดโอดเปล่งแสง;
  • - ตัวต้านทาน 220 โอห์ม
  • - ตัวต้านทาน 2 ตัวสำหรับ 4.7 kOhm;
  • - สายเชื่อมต่อ

คำแนะนำ

ขั้นตอนที่ 1

โปรโตคอลการสื่อสารแบบอนุกรม IIC (เรียกอีกอย่างว่า I2C - Inter-Integrated Circuits) ใช้สายการสื่อสารแบบสองทิศทางสองสายในการถ่ายโอนข้อมูล เรียกว่าบัส SDA (Serial Data) และบัส SCL (Serial Clock) นอกจากนี้ยังมีสายไฟสองเส้น บัส SDA และ SCL ถูกดึงขึ้นไปที่พาวเวอร์บัสผ่านตัวต้านทาน

มีอย่างน้อยหนึ่ง Master ในเครือข่ายที่เริ่มต้นการรับส่งข้อมูลและสร้างสัญญาณการซิงโครไนซ์ เครือข่ายยังมีทาสที่ส่งข้อมูลตามคำร้องขอของต้นแบบ อุปกรณ์สเลฟแต่ละตัวมีแอดเดรสเฉพาะที่มาสเตอร์แอดเดรส ที่อยู่ของอุปกรณ์ระบุไว้ในหนังสือเดินทาง (เอกสารข้อมูล) สามารถเชื่อมต่ออุปกรณ์สูงสุด 127 เครื่องกับบัส I2C หนึ่งบัส รวมถึงมาสเตอร์หลายตัว อุปกรณ์สามารถเชื่อมต่อกับบัสระหว่างการทำงาน เช่น รองรับการเสียบปลั๊กร้อน

แผนภาพการเชื่อมต่อ I2C
แผนภาพการเชื่อมต่อ I2C

ขั้นตอนที่ 2

Arduino ใช้สองพอร์ตเพื่อทำงานบนอินเทอร์เฟซ I2C ตัวอย่างเช่น ใน Arduino UNO และ Arduino Nano พอร์ตแอนะล็อก A4 สอดคล้องกับ SDA พอร์ตแอนะล็อก A5 สอดคล้องกับ SCL

สำหรับบอร์ดรุ่นอื่นๆ:

Arduino Pro และ Pro Mini - A4 (SDA), A5 (SCL)

Arduino เมกะ - 20 (SDA), 21 (SCL)

Arduino เลโอนาร์โด - 2 (SDA), 3 (SCL)

Arduino ครบกำหนด - 20 (SDA), 21 (SCL), SDA1, SCL1

การทำแผนที่พิน Arduino กับบัส SDA และ SCL
การทำแผนที่พิน Arduino กับบัส SDA และ SCL

ขั้นตอนที่ 3

เพื่ออำนวยความสะดวกในการแลกเปลี่ยนข้อมูลกับอุปกรณ์ต่างๆ ผ่านบัส I2C จึงได้มีการเขียนไลบรารี "Wire" มาตรฐานสำหรับ Arduino มันมีฟังก์ชั่นดังต่อไปนี้:

เริ่มต้น (ที่อยู่) - การเริ่มต้นของไลบรารีและการเชื่อมต่อกับบัส I2C หากไม่มีการระบุที่อยู่ อุปกรณ์ที่เชื่อมต่อจะถือเป็นอุปกรณ์หลัก ใช้การกำหนดแอดเดรส 7 บิต

requestFrom () - มาสเตอร์ใช้เพื่อขอจำนวนไบต์จากทาส

BeginTransmission (ที่อยู่) - จุดเริ่มต้นของการถ่ายโอนข้อมูลไปยังอุปกรณ์ทาสตามที่อยู่เฉพาะ

endTransmission () - สิ้นสุดการส่งข้อมูลไปยังทาส

เขียน () - เขียนข้อมูลจากทาสเพื่อตอบสนองต่อคำขอ;

มี () - ส่งกลับจำนวนไบต์ของข้อมูลที่สามารถรับจากทาส;

อ่าน () - อ่านไบต์ที่ถ่ายโอนจากสเลฟไปยังมาสเตอร์หรือจากมาสเตอร์ไปยังสเลฟ

onReceive () - ระบุฟังก์ชันที่จะเรียกเมื่อทาสได้รับการส่งสัญญาณจากต้นแบบ

onRequest () - ระบุฟังก์ชันที่จะเรียกเมื่อต้นแบบได้รับการส่งสัญญาณจากทาส

ขั้นตอนที่ 4

เรามาดูวิธีการทำงานกับบัส I2C โดยใช้ Arduino กัน

ขั้นแรกเราจะประกอบวงจรดังแสดงในรูป เราจะควบคุมความสว่างของ LED โดยใช้โพเทนชิออมิเตอร์แบบดิจิตอล AD5171 64 ตำแหน่ง ซึ่งเชื่อมต่อกับบัส I2C ที่อยู่ที่เราจะอ้างถึงโพเทนชิออมิเตอร์คือ 0x2c (44 เป็นทศนิยม)

วงจรควบคุม LED โดยใช้โพเทนชิออมิเตอร์แบบดิจิตอลและ Arduino
วงจรควบคุม LED โดยใช้โพเทนชิออมิเตอร์แบบดิจิตอลและ Arduino

ขั้นตอนที่ 5

ตอนนี้ มาเปิดภาพร่างจากตัวอย่างไลบรารี "Wire":

ไฟล์ -> ตัวอย่าง -> Wire -> digital_potentiometer ลองโหลดลงในหน่วยความจำ Arduino มาเปิดกันเถอะ

คุณเห็นไหมว่าความสว่างของ LED เพิ่มขึ้นเป็นวัฏจักรแล้วดับลงในทันใด ในกรณีนี้ เราควบคุมโพเทนชิออมิเตอร์โดยใช้ Arduino ผ่านบัส I2C

แนะนำ: