Innholdsfortegnelse:

Verdens billigste I2C (I-Squared-C) adapter: 5 trinn (med bilder)
Verdens billigste I2C (I-Squared-C) adapter: 5 trinn (med bilder)

Video: Verdens billigste I2C (I-Squared-C) adapter: 5 trinn (med bilder)

Video: Verdens billigste I2C (I-Squared-C) adapter: 5 trinn (med bilder)
Video: ¿Esta es la tarjeta de desarrollo más barata del mundo? 🤔#shorts 2024, Juli
Anonim
Verdens billigste I2C (I-Squared-C) adapter
Verdens billigste I2C (I-Squared-C) adapter

Lag et sensorgrensesnitt for datamaskinen din for en liten peng! Oppdatering 6/9/08: Etter å ha utforsket flere veier har jeg konkludert med at det ikke er praktisk mulig å implementere denne teknikken i Microsoft Windows. Dette er ikke smålig OS bashing, jeg har virkelig busted en nøtt prøver! Beklager! Windows-brukere som trenger I2C-funksjoner er best tjent med eksisterende USB-baserte løsninger. Oppdatert 24.05.08: Linux-støtte er lagt til, samt prøvekode for Nintendo Wii Nunchuk-kontrolleren og BlinkM "smart LED". Se README.txt-filen som følger med kildekoden for instruksjoner om kompilering og oppsett på Linux. I2C (forkortelse for Inter-Integrated Circuit) er en to-leder seriell buss som vanligvis brukes i datamaskiner for kommunikasjon på lavt nivå mellom interne komponenter. I2C er også populært innen robotikk. Alle slags sensorer og aktuatorer er tilgjengelige i en I2C-kompatibel form: ultralydavstandsmålere, sensorer for akselerasjon, tilt, temperatur og trykk, servokontrollere og bussutvidere som gir flere generelle (GPIO) linjer. De fleste moderne mikrokontrollere (Atmel), Microchip PIC, etc.) har støtte for I2C innebygd. Men prosessorkraften som er tilgjengelig på mikrokontrollere er begrenset, og programvareutvikling - med spesialiserte krysskompilatorer og programmeringsmiljøer - kan noen ganger være en jobb. Med bærbare datamaskiner og enkeltkort-datamaskiner som blir stadig mindre og rimeligere, blir det stadig mer vanlig å se disse systemene brukes direkte i robotteknologi og elektronikkprosjekter. Dette gir rikelig med kraft til nye evner som synsbehandling og mer sofistikert AI, og det utvider omfanget av tilgjengelige utviklingsverktøy og språk … forbruker-grade porter som USB; det er ingen ekstern tilgjengelig "I2C-port" vi bare kan benytte oss av for å bruke sensorene våre … eller er det?

Trinn 1: Eksisterende alternativer

Eksisterende alternativer
Eksisterende alternativer
Eksisterende alternativer
Eksisterende alternativer

En måte å koble I2C-enheter til en vanlig stasjonær eller bærbar datamaskin er via en USB-til-I2C-adapter. Det er minst et dusin slike alternativer der ute, alt fra gjør-det-selv-sett med åpen kildekode-programvare, til sofistikerte kommersielle enheter med hver bjelle og fløyte.

En ulempe med USB-til-I2C-tilnærmingen er kostnadene. En fullstendig kommersiell modell kan koste $ 250 eller mer. Selv de "gratis" homebrew -alternativene forutsetter en samling av deler og en tidligere investering i en mikrokontrollerprogrammerer og tilhørende kunnskap for å gjøre bruk av den. En annen ulempe er den relative mangelen på driverstøtte utenfor den populære Windows -folden. Få av disse enhetene fungerer på Macintosh- eller Linux -datamaskiner.

Trinn 2: DDC er I2C

DDC er I2C
DDC er I2C
DDC er I2C
DDC er I2C
DDC er I2C
DDC er I2C

Da jeg sa innledningsvis at det ikke er noen ekstern I2C -port på de fleste datamaskiner, løy jeg. Det viser seg at det er det, og det har vært der hele tiden i nesten et tiår nå, for det meste sittende i dvale.

De fleste moderne grafikkort og skjermer har støtte for noe som heter Display Data Channel (DDC), en kommunikasjonskobling i en videokabel som lar datamaskinen og skjermen forhandle gjensidig kompatible oppløsninger og tillate programvarekontroll av skjermfunksjoner som normalt åpnes med fysiske knapper på vise. DDC er faktisk bare en implementering av en I2C -buss med noen få etablerte regler. Ved å koble til denne forbindelsen mellom datamaskinen og skjermen (eller ved å bruke DDC -linjene på en ubrukt videoport, for eksempel den eksterne skjermtilkoblingen på en bærbar datamaskin), kan man grensesnittet med noen I2C -enheter praktisk talt uten kostnad, og omgå vanlig behov for en adapterenhet helt. Alt vi trenger for fysisk tilgang til denne I2C-bussen er en hacket videokabel …

Trinn 3: Dissekere kabelen

Dissekere kabelen
Dissekere kabelen
Dissekere kabelen
Dissekere kabelen

Fire ledninger er nødvendig for vårt I2C -grensesnitt: +5V strøm, jord, serielle data og seriell klokke. Pinouts for de forskjellige typene videoporter finner du på Wikipedia eller Pinouts.ru. Husk at hvis du bruker en VGA -kabel for å finne en med hele pinnen; Noen inkluderer bare et delsett. Når du kutter isolasjonen og skjermer fra utsiden av kabelen, finner du sannsynligvis to grupper ledninger inne. Tykkere ledninger, eller bunter av ledninger pakket inn i ekstra skjerming, bærer vanligvis videosignalet. Vi er ikke interessert i disse, og de kan trimmes tilbake. Tynnere, uskjermede ledninger bærer vanligvis blant annet DDC (I2C) -signalene. Et multimeter eller kontinuitetstester kan hjelpe deg med å finne de riktige fire ledningene for kabelen din. Det kan være fordelaktig å bruke en bar kontakt, ettersom du bare trenger å lodde fire ledninger til pinnene av interesse. En merknad om +5V effekt: tilgjengelig strøm er svært begrenset; ca. 50 mA i henhold til DDC -spesifikasjonen. De fleste I2C-enheter nipper til bare en liten bit av strøm, så det bør være mulig å kjøre flere samtidig … men hvis du bruker mer enn en eller to lysdioder (eller andre relativt høystrømsenheter), bør ekstern strøm leveres.

Trinn 4: Den ferdige adapteren

Den ferdige adapteren
Den ferdige adapteren

Her er den ferdige adapteren. Det er alt det er! Jeg gjorde min ekstra stubby slik at den lett kunne passe i den bærbare vesken min, og la til en firepinners plugg som kobles direkte til en I2C servokontroller som jeg har.

Trinn 5: Programvare og prosjekter

Programvare og prosjekter
Programvare og prosjekter
Programvare og prosjekter
Programvare og prosjekter

Mac OS X og Linux kildekoden for å jobbe med adapteren kan lastes ned fra nettstedet mitt (nedlastingskoblingen er nederst på siden). Det er skrevet i C, og du må ha gcc installert (Linux inkluderer vanligvis dette som standard, mens Mac -brukere må installere utviklerverktøyene som er et valgfritt installasjonsprogram på den originale OS -platen, eller kan lastes ned gratis fra Apple). Eksempelkode er inkludert for å lese en temperatursensor, blinke med en "smart LED" fra BlinkM, skrive og verifisere en seriell EEPROM, lese en Nintendo Wii Nunchuk -kontroller (bare Linux) og kommunisere med et servokontrollkort. Dessverre er dette adapteropplegget ikke kompatibel med alle systemer. Støtte for DDC er ikke påbudt, så ikke alle skjermkort støtter denne funksjonen. Jeg har hittil hatt lykke til med Mac-systemer som har ATI- eller Intel-grafikkbrikker, men NVIDIA-baserte systemer er uflaks. På Linux -siden har jeg bare testet en IBM ThinkPad A31p (ATI -grafikk), men den fungerer ikke med en Asus EeePC (Intel). Bildene her viser en testrigg som demonstrerer forskjellige I2C -enheter i bruk. Datamaskinen leser kontinuerlig omgivelsestemperaturen fra en I2C temperatursensor, logger periodisk disse dataene til en I2C seriell EEPROM -brikke (ja, den kan bare skrive ut til en fil, men dette skulle ytterligere demonstrere I2C -applikasjoner) og deretter en servo (gjennom en I2C -kontroller) fungerer som en provisorisk indikatorskive. Med biblioteket og prøvekoden for disse enhetene allerede på plass, tok det bare noen få minutter å sette sammen denne demoen (og det meste var å lage indikatorhjulet).

Anbefalt: