Indholdsfortegnelse:

Verdens billigste I2C (I-Squared-C) adapter: 5 trin (med billeder)
Verdens billigste I2C (I-Squared-C) adapter: 5 trin (med billeder)

Video: Verdens billigste I2C (I-Squared-C) adapter: 5 trin (med billeder)

Video: Verdens billigste I2C (I-Squared-C) adapter: 5 trin (med billeder)
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

Lav en sensorgrænseflade til din computer for under en peng! Opdatering 6/9/08: Efter at have undersøgt flere veje, har jeg konkluderet, at der ikke er nogen praktisk måde at implementere denne teknik på i Microsoft Windows. Dette er ikke smålige OS bashing, jeg har virkelig slået en nød prøver! Undskyld! Windows-brugere, der har brug for I2C-funktioner, betjenes bedst af eksisterende USB-baserede løsninger. Opdatering 24/05/08: Linux-understøttelse er tilføjet samt prøvekode til Nintendo Wii Nunchuk-controlleren og BlinkM "smart LED". Se filen README.txt, der fulgte med kildekoden, for vejledning i kompilering og opsætning på Linux. I2C (forkortelse for Inter-Integrated Circuit) er en to-leder seriel bus, der typisk bruges i computere til kommunikation på lavt niveau mellem interne komponenter. I2C er også populær inden for robotik. Alle slags sensorer og aktuatorer er tilgængelige i en I2C-kompatibel form: ultralydsmåler, sensorer til acceleration, hældning, temperatur og tryk, servokontroller og busudvidere, der giver yderligere generelle (GPIO) linjer. De fleste moderne mikrokontroller (Atmel), Microchip PIC osv.) Har understøttelse af I2C indbygget lige i. Men den processorkraft, der er tilgængelig på mikrokontrollere, er begrænset, og softwareudvikling - med specialiserede krydskompilatorer og programmeringsmiljøer - kan nogle gange være en opgave. Da bærbare computere og single-board computere bliver stadig mindre og mere overkommelige, er det stadig mere almindeligt at se disse systemer bruges direkte i robotteknologi og elektronikprojekter. Dette giver rigelig kraft til nye kapaciteter såsom visionbehandling og mere sofistikeret AI, og det udvider i høj grad omfanget af tilgængelige udviklingsværktøjer og sprog … men det giver også et nyt problem: Interfacering af disse "almindelige" systemer til periferiudstyr sker typisk gennem mainstream forbruger-grade porte såsom USB; der er ingen ekstern tilgængelig "I2C-port", vi bare kan trykke på for at gøre brug af vores sensorer … eller er der?

Trin 1: Eksisterende muligheder

Eksisterende muligheder
Eksisterende muligheder
Eksisterende muligheder
Eksisterende muligheder

En måde at forbinde I2C-enheder til en almindelig stationær eller bærbar computer er via en USB-til-I2C-adapter. Der er mindst et dusin af sådanne muligheder derude, lige fra gør-det-selv-kits med open source-software til sofistikerede kommercielle enheder med hver klokke og fløjte.

En ulempe ved USB-til-I2C tilgangen er omkostninger. En komplet kommerciel model kan koste $ 250 eller mere. Selv de "gratis" homebrew -alternativer forudsætter en samling af dele og en forudgående investering i en mikrokontrollerprogrammerer og den tilhørende viden for at gøre brug af den. En anden ulempe er den relative mangel på førersupport uden for den populære Windows -fold. Få af disse enheder fungerer indbygget på Macintosh- eller Linux -computere.

Trin 2: DDC er I2C

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

Da jeg i indledningen sagde, at der ikke er nogen ekstern I2C -port på de fleste computere, løj jeg. Det viser sig, at det er der, og det har været der hele tiden i næsten et årti nu, for det meste siddende i dvale.

De fleste moderne grafikkort og skærme understøtter noget, der kaldes Display Data Channel (DDC), et kommunikationslink i et videokabel, der gør det muligt for computeren og skærmen at forhandle indbyrdes kompatible opløsninger og tillade softwarekontrol af skærmfunktioner, der normalt er tilgængelige med fysiske knapper på Skærm. DDC er faktisk simpelthen en implementering af en I2C -bus med et par fastlagte regler. Ved at trykke på denne forbindelse mellem computeren og skærmen (eller gøre brug af DDC -linjer på en ekstra ubrugt videoport, såsom den eksterne skærmforbindelse på en bærbar computer), kan man grænseflade med nogle I2C -enheder stort set uden omkostninger og omgå normalt behov for en adapterenhed helt. Alt, hvad vi har brug for for fysisk at få adgang til denne I2C-bus, er et hacket videokabel …

Trin 3: Dissekering af kablet

Dissekering af kablet
Dissekering af kablet
Dissekering af kablet
Dissekering af kablet

Fire ledninger er nødvendige til vores I2C -interface: +5V strøm, jord, serielle data og serielt ur. Pinouts til de forskellige typer videoporte kan findes på Wikipedia eller Pinouts.ru. Husk, at hvis du bruger et VGA -kabel til at finde et med komplementet af stifter; nogle indeholder kun en delmængde. Ved at reducere isoleringen og afskærmningen fra ydersiden af kablet finder du sandsynligvis to grupper af ledninger indeni. Tykkere ledninger eller bundter af ledninger pakket ind i yderligere afskærmning bærer normalt videosignalet. Vi er ikke interesserede i disse, og de kan trimmes tilbage. Tyndere, uskærmede ledninger bærer normalt DDC (I2C) signaler blandt andre. Et multimeter eller en kontinuitetstester kan hjælpe med at finde de korrekte fire ledninger til dit kabel. Det kan være en fordel at bruge et blottet stik her, da du bare skal lodde fire ledninger til stifterne af interesse. En bemærkning om +5V strøm: tilgængelig strøm er meget begrænset; ca. 50 mA i henhold til DDC -specifikationen. De fleste I2C-enheder nipper til en lille smule strøm, så det burde være muligt at køre flere på én gang … men hvis du bruger mere end en eller to lysdioder (eller andre forholdsvis høje strømudstyr), skal der leveres ekstern strøm.

Trin 4: Den færdige adapter

Den færdige adapter
Den færdige adapter

Her er den færdige adapter. Det er alt, hvad der skal til! Jeg lavede min ekstra stubby, så den let kunne passe i min bærbare taske, og tilføjede et firepolet stik, der kan tilsluttes direkte til en I2C servo controller, som jeg har.

Trin 5: Software og projekter

Software og projekter
Software og projekter
Software og projekter
Software og projekter

Mac OS X og Linux kildekode til arbejde med adapteren kan downloades fra mit websted (downloadlink findes nederst på siden). Det er skrevet i C, og du skal have gcc installeret (Linux inkluderer normalt dette som standard, mens Mac -brugere skal installere udviklerværktøjerne, der er et valgfrit installationsprogram på din originale OS -disk eller kan downloades gratis fra Apple). Eksempelkode er inkluderet til aflæsning af en temperatursensor, blinkende en BlinkM "smart LED", skrivning og verificering af en seriel EEPROM, læsning af en Nintendo Wii Nunchuk -controller (kun Linux) og kommunikation med et servokontrolkort. Desværre er dette adapterskema ikke kompatibel med alle systemer. Support til DDC er ikke obligatorisk, så ikke alle grafikkort understøtter denne funktion. Jeg har hidtil haft held med Mac-systemer, der har ATI- eller Intel-grafikchips, men NVIDIA-baserede systemer er uden held. På Linux -siden har jeg kun testet en IBM ThinkPad A31p (ATI -grafik) med succes, men det ville ikke fungere med en Asus EeePC (Intel). Billederne her viser en testrig, der demonstrerer forskellige I2C -enheder i aktion. Computeren læser konstant omgivelsestemperaturen fra en I2C temperatursensor, logger periodisk disse data til en I2C seriel EEPROM -chip (ja, den kan bare udskrive til en fil, men dette var for yderligere at demonstrere I2C -applikationer) og derefter en servo (gennem en I2C -controller) fungerer som en midlertidig indikatorskive. Da biblioteket og prøvekoden til disse enheder allerede var på plads, tog det kun et par minutter at sammensætte denne demo (og det meste var ved at lave indikatorskiven).

Anbefalede: