สารบัญ:

อะแดปเตอร์ I2C (I-Squared-C) ที่ถูกที่สุดในโลก: 5 ขั้นตอน (พร้อมรูปภาพ)
อะแดปเตอร์ I2C (I-Squared-C) ที่ถูกที่สุดในโลก: 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: อะแดปเตอร์ I2C (I-Squared-C) ที่ถูกที่สุดในโลก: 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: อะแดปเตอร์ I2C (I-Squared-C) ที่ถูกที่สุดในโลก: 5 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: Programming an EEPROM with a Total Phase I2C Host Adapter 2024, พฤศจิกายน
Anonim
อะแดปเตอร์ I2C (I-Squared-C) ที่ถูกที่สุดในโลก
อะแดปเตอร์ I2C (I-Squared-C) ที่ถูกที่สุดในโลก

สร้างอินเทอร์เฟซเซ็นเซอร์สำหรับคอมพิวเตอร์ของคุณในราคาที่ไม่แพง! อัปเดต 6/9/08: หลังจากสำรวจหลาย ๆ ลู่ทางแล้ว ฉันสรุปได้ว่าไม่มีวิธีปฏิบัติใด ๆ ในการใช้เทคนิคนี้ใน Microsoft Windows นี่ไม่ใช่การทุบตี OS เล็กน้อย ฉันพยายามอย่างมาก! เสียใจ! ผู้ใช้ Windows ที่ต้องการความสามารถ I2C จะได้รับบริการที่ดีที่สุดจากโซลูชันที่ใช้ USB ที่มีอยู่ อัปเดต 5/24/08: เพิ่มการรองรับ Linux รวมถึงโค้ดตัวอย่างสำหรับคอนโทรลเลอร์ Nintendo Wii Nunchuk และ "Smart LED" ของ BlinkM ดูไฟล์ README.txt ที่มาพร้อมกับซอร์สโค้ดสำหรับคำแนะนำในการรวบรวมและตั้งค่าบน Linux. I2C (ย่อมาจาก Inter-Integrated Circuit) เป็นบัสอนุกรมแบบสองสายที่มักใช้ในคอมพิวเตอร์สำหรับการสื่อสารระดับต่ำระหว่างส่วนประกอบภายใน I2C ยังเป็นที่นิยมในวิทยาการหุ่นยนต์ เซ็นเซอร์และแอคทูเอเตอร์ทุกรูปแบบมีให้ในรูปแบบที่เข้ากันได้กับ I2C: เครื่องวัดระยะแบบอัลตราโซนิก เซ็นเซอร์สำหรับการเร่งความเร็ว การเอียง อุณหภูมิและความดัน ตัวควบคุมเซอร์โว และตัวขยายบัสที่ให้สายใช้งานทั่วไปเพิ่มเติม (GPIO) ไมโครคอนโทรลเลอร์ที่ทันสมัยที่สุด (Atmel), Microchip PIC เป็นต้น) มีการรองรับ I2C ในตัว แต่พลังการประมวลผลที่มีอยู่ในไมโครคอนโทรลเลอร์นั้นมีจำกัด และการพัฒนาซอฟต์แวร์ - ด้วยครอสคอมไพเลอร์เฉพาะทางและสภาพแวดล้อมการเขียนโปรแกรม - บางครั้งอาจเป็นงานที่น่าเบื่อ เนื่องจากแล็ปท็อปและคอมพิวเตอร์บอร์ดเดี่ยวมีขนาดเล็กลงและมีราคาจับต้องได้ จึงเป็นเรื่องปกติมากขึ้นที่จะเห็นระบบเหล่านี้ใช้โดยตรงในโครงการหุ่นยนต์และอิเล็กทรอนิกส์ สิ่งนี้ให้พลังที่เพียงพอสำหรับความสามารถใหม่ เช่น การประมวลผลด้วยภาพและ AI ที่ซับซ้อนยิ่งขึ้น และขยายขอบเขตของเครื่องมือและภาษาสำหรับการพัฒนาที่มีอยู่อย่างมาก…แต่ยังนำเสนอปัญหาใหม่ด้วย: การเชื่อมต่อระบบ "ปกติ" เหล่านี้กับอุปกรณ์ต่อพ่วงมักจะทำผ่านกระแสหลัก พอร์ตระดับผู้บริโภคเช่น USB; ไม่มี "พอร์ต I2C" ภายนอกที่เราสามารถแตะเพื่อใช้ประโยชน์จากเซ็นเซอร์ของเรา … หรือมี?

ขั้นตอนที่ 1: ตัวเลือกที่มีอยู่

ตัวเลือกที่มีอยู่
ตัวเลือกที่มีอยู่
ตัวเลือกที่มีอยู่
ตัวเลือกที่มีอยู่

วิธีหนึ่งในการเชื่อมต่ออุปกรณ์ I2C กับคอมพิวเตอร์เดสก์ท็อปหรือแล็ปท็อปทั่วไปคือผ่านอะแดปเตอร์ USB-to-I2C มีตัวเลือกดังกล่าวอย่างน้อยหลายสิบตัว ตั้งแต่ชุดอุปกรณ์ที่ต้องทำด้วยตัวเองพร้อมซอฟต์แวร์โอเพ่นซอร์ส ไปจนถึงหน่วยเชิงพาณิชย์ที่ซับซ้อนพร้อมเสียงกริ่งและนกหวีดทุกแบบ

ข้อเสียอย่างหนึ่งของแนวทาง USB-to-I2C คือต้นทุน โมเดลเชิงพาณิชย์ที่มีคุณสมบัติครบถ้วนสามารถมีราคา 250 เหรียญขึ้นไป แม้แต่ทางเลือก homebrew "ฟรี" ก็ถือว่ามีการรวบรวมชิ้นส่วนและการลงทุนก่อนหน้าในโปรแกรมเมอร์ไมโครคอนโทรลเลอร์และความรู้ที่เกี่ยวข้องเพื่อใช้ประโยชน์จากมัน ข้อเสียอีกประการหนึ่งคือการขาดแคลนการสนับสนุนไดรเวอร์นอก Windows พับที่เป็นที่นิยม อุปกรณ์เหล่านี้บางส่วนทำงานโดยกำเนิดบนคอมพิวเตอร์ Macintosh หรือ Linux

ขั้นตอนที่ 2: DDC คือ I2C

DDC คือ I2C
DDC คือ I2C
DDC คือ I2C
DDC คือ I2C
DDC คือ I2C
DDC คือ I2C

เมื่อฉันพูดในบทนำว่าไม่มีพอร์ต I2C ภายนอกบนคอมพิวเตอร์ส่วนใหญ่ ฉันโกหก ปรากฎว่ามีและอยู่ที่นั่นมาเกือบทศวรรษแล้วโดยส่วนใหญ่นั่งเฉยๆ

การ์ดแสดงผลและจอภาพที่ทันสมัยส่วนใหญ่รองรับสิ่งที่เรียกว่า Display Data Channel (DDC) ซึ่งเป็นลิงค์การสื่อสารภายในสายวิดีโอที่ช่วยให้คอมพิวเตอร์และจอแสดงผลสามารถเจรจาความละเอียดที่เข้ากันได้ร่วมกัน และอนุญาตให้ควบคุมซอฟต์แวร์ของฟังก์ชันจอภาพที่ปกติเข้าถึงได้โดยใช้ปุ่มทางกายภาพบน แสดง. อันที่จริงแล้ว DDC เป็นเพียงการนำบัส I2C ไปใช้งานโดยมีกฎที่กำหนดไว้สองสามข้อ โดยแตะที่การเชื่อมต่อระหว่างคอมพิวเตอร์และจอภาพ (หรือใช้สาย DDC บนพอร์ตวิดีโอที่ไม่ได้ใช้สำรอง เช่น การเชื่อมต่อจอภาพภายนอกบนแล็ปท็อป) เราสามารถเชื่อมต่อกับอุปกรณ์ I2C บางตัวได้โดยแทบไม่ต้องเสียค่าใช้จ่ายใดๆ เลย ปกติต้องใช้อุปกรณ์อแดปเตอร์ทั้งหมด ทั้งหมดที่เราต้องการเพื่อเข้าถึงบัส I2C นี้คือสายเคเบิลวิดีโอที่ถูกแฮ็ก…

ขั้นตอนที่ 3: ผ่าสายเคเบิล

ผ่าสายเคเบิล
ผ่าสายเคเบิล
ผ่าสายเคเบิล
ผ่าสายเคเบิล

จำเป็นต้องใช้สายไฟ 4 เส้นสำหรับอินเทอร์เฟซ I2C ของเรา: กำลังไฟ +5V, กราวด์, ข้อมูลอนุกรม และนาฬิกาอนุกรม Pinouts สำหรับพอร์ตวิดีโอประเภทต่างๆ สามารถพบได้ใน Wikipedia หรือ Pinouts.ru จำไว้ว่าถ้าใช้สาย VGA เพื่อค้นหาสายที่มีพินครบชุด บางส่วนมีเฉพาะชุดย่อยเท่านั้น การตัดฉนวนและฉนวนออกจากด้านนอกของสายเคเบิล คุณจะพบสายไฟสองกลุ่มอยู่ภายใน สายไฟที่หนากว่าหรือมัดของสายไฟที่หุ้มด้วยฉนวนเพิ่มเติม มักจะมีสัญญาณวิดีโอ เราไม่สนใจสิ่งเหล่านี้และสามารถตัดกลับได้ สายไฟที่บางกว่าและไม่มีฉนวนหุ้มมักจะส่งสัญญาณ DDC (I2C) ท่ามกลางสายอื่นๆ เครื่องทดสอบมัลติมิเตอร์หรือความต่อเนื่องสามารถช่วยในการค้นหาสายไฟสี่เส้นที่ถูกต้องสำหรับสายเคเบิลของคุณ การใช้คอนเน็กเตอร์แบบเปลือยสามารถเป็นประโยชน์ที่นี่ เนื่องจากคุณเพียงแค่ต้องบัดกรีสายไฟสี่เส้นเข้ากับหมุดที่สนใจ หมายเหตุเกี่ยวกับกำลังไฟ +5V: กระแสไฟที่มีอยู่มีจำกัดมาก ประมาณ 50 mA ตามข้อกำหนด DDC อุปกรณ์ I2C ส่วนใหญ่ใช้กระแสไฟเพียงเล็กน้อย ดังนั้นจึงควรทำงานหลายอย่างพร้อมกันได้…แต่หากใช้ LED มากกว่าหนึ่งหรือสองดวง (หรืออุปกรณ์ที่มีกระแสไฟค่อนข้างสูงอื่นๆ) ควรมีการจ่ายไฟจากภายนอก

ขั้นตอนที่ 4: อะแดปเตอร์ที่เสร็จสมบูรณ์

อะแดปเตอร์ที่เสร็จสมบูรณ์
อะแดปเตอร์ที่เสร็จสมบูรณ์

นี่คืออะแดปเตอร์สำเร็จรูป นั่นคือทั้งหมดที่มีให้! ฉันทำของฉันมีขนแข็งเป็นพิเศษเพื่อให้สามารถใส่ในกระเป๋าแล็ปท็อปของฉันได้อย่างง่ายดาย และเพิ่มปลั๊กสี่ขาที่เชื่อมต่อโดยตรงกับตัวควบคุมเซอร์โว I2C ที่ฉันมี

ขั้นตอนที่ 5: ซอฟต์แวร์และโครงการ

ซอฟต์แวร์และโครงการ
ซอฟต์แวร์และโครงการ
ซอฟต์แวร์และโครงการ
ซอฟต์แวร์และโครงการ

สามารถดาวน์โหลดซอร์สโค้ด Mac OS X และ Linux สำหรับการทำงานกับอแด็ปเตอร์ได้จากเว็บไซต์ของฉัน (ลิงก์ดาวน์โหลดอยู่ที่ด้านล่างของหน้า) มันเขียนด้วยภาษา C และคุณจะต้องติดตั้ง gcc (โดยปกติแล้ว Linux จะรวมสิ่งนี้ไว้โดยค่าเริ่มต้น ในขณะที่ผู้ใช้ Mac จะต้องติดตั้งเครื่องมือสำหรับนักพัฒนาซึ่งเป็นตัวติดตั้งเสริมบนดิสก์ OS ดั้งเดิมของคุณ หรือดาวน์โหลดได้ฟรีจาก Apple) มีโค้ดตัวอย่างสำหรับการอ่านเซ็นเซอร์อุณหภูมิ การกะพริบ "ไฟ LED อัจฉริยะ" ของ BlinkM การเขียนและตรวจสอบ EEPROM แบบอนุกรม การอ่านคอนโทรลเลอร์ Nintento Wii Nunchuk (Linux เท่านั้น) และการสื่อสารกับบอร์ดควบคุมเซอร์โว น่าเสียดายที่รูปแบบอะแดปเตอร์นี้ไม่ได้ เข้ากันได้กับทุกระบบ การสนับสนุนสำหรับ DDC ไม่ได้รับคำสั่ง ดังนั้นการ์ดวิดีโอบางตัวอาจไม่รองรับความสามารถนี้ ฉันโชคดีกับระบบ Mac ที่มีชิปกราฟิก ATI หรือ Intel แต่ระบบที่ใช้ NVIDIA นั้นโชคไม่ดี ทางฝั่ง Linux ฉันทำได้แค่ทดสอบ IBM ThinkPad A31p (กราฟิก ATI) ได้สำเร็จ แต่จะใช้งานไม่ได้กับ Asus EeePC (Intel) รูปภาพที่นี่แสดงอุปกรณ์ทดสอบที่สาธิตการทำงานของอุปกรณ์ I2C ต่างๆ คอมพิวเตอร์อ่านอุณหภูมิแวดล้อมจากเซ็นเซอร์อุณหภูมิ I2C อย่างต่อเนื่อง บันทึกข้อมูลนี้ไปยังชิป EEPROM แบบอนุกรม I2C เป็นระยะ (ใช่ มันสามารถพิมพ์ไปยังไฟล์ได้ แต่นี่เป็นการสาธิตการใช้งาน I2C เพิ่มเติม) จากนั้นจึงส่งเซอร์โว (ผ่าน ตัวควบคุม I2C) ทำหน้าที่เป็นแป้นหมุนตัวบ่งชี้ชั่วคราว ด้วยไลบรารีและโค้ดตัวอย่างสำหรับอุปกรณ์เหล่านี้แล้ว ใช้เวลาเพียงไม่กี่นาทีในการรวมการสาธิตนี้

แนะนำ: