Съдържание:

Най-евтиният в света I2C (I-Squared-C) адаптер: 5 стъпки (със снимки)
Най-евтиният в света I2C (I-Squared-C) адаптер: 5 стъпки (със снимки)

Видео: Най-евтиният в света I2C (I-Squared-C) адаптер: 5 стъпки (със снимки)

Видео: Най-евтиният в света I2C (I-Squared-C) адаптер: 5 стъпки (със снимки)
Видео: НАЙ-СКЪПИЯТ ЩУКАРСКИ СЕТ срещу НАЙ-ЕВТИНИЯ в СВЕТА 2024, Юли
Anonim
Най-евтиният в света I2C (I-Squared-C) адаптер
Най-евтиният в света I2C (I-Squared-C) адаптер

Направете сензорен интерфейс за вашия компютър за под долар! Актуализация 6/9/08: След като проучих няколко пътища, стигнах до заключението, че няма практичен начин за прилагане на тази техника в Microsoft Windows. Това не е дребна операционна система, наистина разбих един опит да го направя! Съжалявам! Потребителите на Windows, нуждаещи се от I2C възможности, се обслужват най-добре от съществуващите базирани на USB решения. Актуализиране 5/24/08: Добавена е поддръжка за Linux, както и примерен код за контролера Nintendo Wii Nunchuk и „интелигентния светодиод“на BlinkM. Вижте файла README.txt, включен в изходния код, за указания за компилиране и настройка на Linux. I2C (съкращение от Inter-Integrated Circuit) е двупроводна серийна шина, обикновено използвана в компютрите за комуникация на ниско ниво между вътрешни компоненти. I2C е популярен и в роботиката. Всички видове сензори и задвижващи механизми се предлагат в съвместима с I2C форма: ултразвукови далекомери, сензори за ускорение, наклон, температура и налягане, серво контролери и разширители на шини, които осигуряват допълнителни линии с общо предназначение (GPIO). Повечето съвременни микроконтролери (Atmel, Microchip PIC и др.) Имат вградена поддръжка за I2C. Но процесорната мощност, налична на микроконтролерите, е ограничена, а разработката на софтуер - със специализирани крос -компилатори и програмни среди - понякога може да се окаже трудна. Тъй като лаптопите и компютрите с едно дъно стават все по-малки и по-достъпни, става все по-често тези системи да се използват директно в проекти за роботика и електроника. Това осигурява достатъчно възможности за нови възможности като обработка на зрението и по -сложен AI и значително разширява обхвата на наличните инструменти и езици за разработка … но също така представя нов проблем: свързването на тези „обикновени“системи с периферни устройства обикновено се осъществява чрез мейнстрийм потребителски портове като USB; няма външно наличен "I2C порт", в който можем просто да се възползваме, за да използваме нашите сензори … или има?

Стъпка 1: Съществуващи опции

Съществуващи опции
Съществуващи опции
Съществуващи опции
Съществуващи опции

Един от начините за свързване на I2C устройства към обикновен настолен или преносим компютър е чрез USB-към-I2C адаптер. Има поне дузина такива опции, вариращи от комплекти „направи си сам“със софтуер с отворен код, до сложни търговски единици с всеки звънец.

Един недостатък на подхода USB към I2C е цената. Пълнофункционалният търговски модел може да струва $ 250 или повече. Дори „безплатните“алтернативи за домашно приготвяне предполагат съвкупност от части и предварителна инвестиция в програмист на микроконтролер и свързаните с това знания, за да се възползват от него. Друг недостатък е относителният недостиг на поддръжка на драйвери извън популярната 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: Прекъсване на кабела

Разрязване на кабела
Разрязване на кабела
Разрязване на кабела
Разрязване на кабела

За нашия I2C интерфейс са необходими четири проводника: +5V захранване, заземяване, серийни данни и сериен часовник. Разпилки за различните видове видео портове могат да бъдат намерени в Wikipedia или Pinouts.ru. Не забравяйте, ако използвате VGA кабел, за да намерите такъв с пълния набор от щифтове; някои включват само подмножество. Прекъсвайки изолацията и екранирането от външната страна на кабела, вероятно ще намерите две групи проводници вътре. По -дебелите проводници или снопове проводници, увити в допълнителна екранировка, обикновено носят видео сигнала. Ние не се интересуваме от тях и те могат да бъдат отрязани. По -тънките, неекранирани проводници обикновено носят DDC (I2C) сигнали между другото. Мултицет или тестер за непрекъснатост може да ви помогне да намерите правилните четири проводника за вашия кабел. Използването на гол конектор може да бъде изгодно тук, тъй като просто трябва да запоите четири проводника към щифтовете, които ви интересуват. Забележка относно +5V захранването: наличният ток е много ограничен; около 50 mA според спецификацията DDC. Повечето I2C устройства отпиват само малка част от тока, така че би трябвало да е възможно да се пуснат няколко наведнъж … но ако използвате повече от един или два светодиода (или други устройства с сравнително висок ток), трябва да се осигури външно захранване.

Стъпка 4: Пълният адаптер

Пълният адаптер
Пълният адаптер

Ето готовия адаптер. Това е всичко! Направих моя допълнителен, за да може лесно да се побере в чантата за лаптоп, и добавих четири-пинов щепсел, който се свързва директно към I2C серво контролер, който имам.

Стъпка 5: Софтуер и проекти

Софтуер и проекти
Софтуер и проекти
Софтуер и проекти
Софтуер и проекти

Изходният код на Mac OS X и Linux за работа с адаптера може да бъде изтеглен от моя уеб сайт (връзката за изтегляне е в долната част на страницата). Написано е на C и ще трябва да имате инсталиран gcc (Linux обикновено включва това по подразбиране, докато потребителите на Mac ще трябва да инсталират инструментите за разработчици, които са незадължителна програма за инсталиране на оригиналния ви диск с ОС или могат да се изтеглят безплатно от Apple). Примерен код е включен за четене на температурен сензор, мигане на "интелигентен светодиод" на BlinkM, писане и проверка на сериен EEPROM, четене на контролер Nintento Wii Nunchuk (само за Linux) и комуникация с платка за серво контролер. За съжаление тази схема на адаптер не е съвместим с всички системи. Поддръжката на DDC не е задължителна, така че не всички видео карти поддържат тази възможност. Имах късмет досега със Mac системи, които имат ATI или Intel графични чипове, но базираните на NVIDIA системи нямат късмет. От страна на Linux само успешно тествах IBM ThinkPad A31p (ATI графика), но няма да работи с Asus EeePC (Intel). Изображенията тук показват тестова платформа, която демонстрира различни I2C устройства в действие. Компютърът непрекъснато отчита температурата на околната среда от I2C температурен сензор, периодично регистрира тези данни в I2C сериен EEPROM чип (да, може просто да отпечата във файл, но това е за по -нататъшно демонстриране на I2C приложения), а след това и серво (чрез I2C контролер) служи като импровизиран циферблат на индикатора. С библиотеката и примерния код за тези устройства вече са необходими само няколко минути, за да се събере тази демонстрация (а по -голямата част от това беше при набирането на индикатора).

Препоръчано: