Inhoudsopgave:

S Werelds goedkoopste I2C-adapter (I-Squared-C) - Ajarnpa
S Werelds goedkoopste I2C-adapter (I-Squared-C) - Ajarnpa

Video: S Werelds goedkoopste I2C-adapter (I-Squared-C) - Ajarnpa

Video: S Werelds goedkoopste I2C-adapter (I-Squared-C) - Ajarnpa
Video: Суп на Всю Семью! РАССОЛЬНИК в КАЗАНЕ! КАК ПРИГОТОВИТЬ 2024, November
Anonim
's Werelds goedkoopste I2C-adapter (I-Squared-C)
's Werelds goedkoopste I2C-adapter (I-Squared-C)

Maak een sensorinterface voor uw computer voor minder dan een dollar! Update 6/9/08: Na verschillende wegen te hebben verkend, ben ik tot de conclusie gekomen dat er geen praktische manier is om deze techniek in Microsoft Windows te implementeren. Dit is geen bekrompen OS bashen, ik heb echt een idioot geprobeerd! Sorry! Windows-gebruikers die I2C-mogelijkheden nodig hebben, worden het best bediend door bestaande op USB gebaseerde oplossingen. Update 24-5-08: Linux-ondersteuning is toegevoegd, evenals voorbeeldcode voor de Nintendo Wii Nunchuk-controller en de BlinkM "smart LED". Zie het README.txt-bestand bij de broncode voor aanwijzingen over het compileren en instellen op Linux. I2C (afkorting van Inter-Integrated Circuit) is een tweedraads seriële bus die doorgaans wordt gebruikt in computers voor communicatie op laag niveau tussen interne componenten. I2C is ook populair in robotica. Allerlei sensoren en actuatoren zijn beschikbaar in een I2C-compatibele vorm: ultrasone afstandsmeters, sensoren voor versnelling, kanteling, temperatuur en druk, servocontrollers en busexpanders die extra algemene (GPIO) lijnen bieden. De meeste moderne microcontrollers (Atmel, Microchip PIC, enz.) hebben ingebouwde ondersteuning voor I2C. Maar de verwerkingskracht die beschikbaar is op microcontrollers is beperkt, en softwareontwikkeling - met gespecialiseerde cross-compilers en programmeeromgevingen - kan soms een hele klus zijn. Nu laptops en single-board computers steeds kleiner en betaalbaarder worden, komt het steeds vaker voor dat deze systemen direct worden gebruikt in robotica- en elektronicaprojecten. Dit biedt voldoende kracht voor nieuwe mogelijkheden, zoals visieverwerking en meer geavanceerde AI, en het vergroot de reikwijdte van beschikbare ontwikkelingstools en talen aanzienlijk… poorten van consumentenkwaliteit, zoals USB; er is geen extern beschikbare "I2C-poort" waar we gewoon gebruik van kunnen maken om onze sensoren te gebruiken … of toch?

Stap 1: Bestaande opties

Bestaande opties
Bestaande opties
Bestaande opties
Bestaande opties

Een manier om I2C-apparaten op een gewone desktop- of laptopcomputer aan te sluiten, is via een USB-naar-I2C-adapter. Er zijn minstens een dozijn van dergelijke opties, variërend van doe-het-zelf-kits met open source software tot geavanceerde commerciële units met elk belletje en fluitje.

Een nadeel van de USB-naar-I2C-benadering zijn de kosten. Een volledig uitgerust commercieel model kan $ 250 of meer kosten. Zelfs de "gratis" homebrew-alternatieven gaan uit van een verzameling onderdelen en een voorafgaande investering in een microcontroller-programmeur en de bijbehorende kennis om er gebruik van te maken. Een ander nadeel is de relatieve schaarste aan driverondersteuning buiten de populaire Windows-folder. Weinig van deze apparaten werken native op Macintosh- of Linux-computers.

Stap 2: DDC is I2C

DDC Is I2C
DDC Is I2C
DDC Is I2C
DDC Is I2C
DDC Is I2C
DDC Is I2C

Toen ik in de inleiding zei dat er op de meeste computers geen externe I2C-poort is, loog ik. Het blijkt dat het er is, en het is er al bijna een decennium, meestal sluimerend.

De meeste moderne grafische kaarten en monitoren hebben ondersteuning voor iets dat Display Data Channel (DDC) wordt genoemd, een communicatieverbinding in een videokabel waarmee de computer en het beeldscherm onderling compatibele resoluties kunnen onderhandelen en softwarebesturing mogelijk maken van monitorfuncties die normaal toegankelijk zijn met fysieke knoppen op de Scherm. DDC is in feite gewoon een implementatie van een I2C-bus met een paar vastgestelde regels. Door gebruik te maken van deze verbinding tussen de computer en de monitor (of door gebruik te maken van de DDC-lijnen op een vrije ongebruikte videopoort, zoals de externe monitorverbinding op een laptop), kan men vrijwel gratis verbinding maken met sommige I2C-apparaten, waarbij de gebruikelijke behoefte aan een adapterapparaat volledig. Het enige dat we nodig hebben om fysiek toegang te krijgen tot deze I2C-bus is een gehackte videokabel…

Stap 3: De kabel ontleden

De kabel ontleden
De kabel ontleden
De kabel ontleden
De kabel ontleden

Er zijn vier draden nodig voor onze I2C-interface: +5V voeding, aarde, seriële data en seriële klok. Pinouts voor de verschillende soorten videopoorten zijn te vinden op Wikipedia of Pinouts.ru. Denk eraan als u een VGA-kabel gebruikt om er een te vinden met het volledige aantal pinnen; sommige bevatten slechts een subset. Door de isolatie en afscherming van de buitenkant van de kabel terug te brengen, vindt u waarschijnlijk twee groepen draden binnenin. Dikkere draden, of bundels draden gewikkeld in extra afscherming, dragen meestal het videosignaal. Wij zijn hier niet in geïnteresseerd en kunnen worden ingekort. Dunnere, niet-afgeschermde draden dragen meestal onder andere de DDC (I2C)-signalen. Een multimeter of continuïteitstester kan helpen bij het vinden van de juiste vier draden voor uw kabel. Het gebruik van een blote connector kan hier voordelig zijn, omdat u slechts vier draden aan de betreffende pinnen hoeft te solderen. Een opmerking over het +5V-vermogen: de beschikbare stroom is zeer beperkt; ongeveer 50 mA volgens de DDC-specificatie. De meeste I2C-apparaten verbruiken slechts een klein beetje stroom, dus het zou mogelijk moeten zijn om er meerdere tegelijk te laten werken…

Stap 4: De voltooide adapter

De voltooide adapter
De voltooide adapter

Hier is de voltooide adapter. Dat is alles! Ik heb de mijne extra stom gemaakt zodat hij gemakkelijk in mijn laptoptas past, en voegde een vierpolige stekker toe die rechtstreeks kan worden aangesloten op een I2C-servocontroller die ik heb.

Stap 5: Software en projecten

Software en projecten
Software en projecten
Software en projecten
Software en projecten

Mac OS X- en Linux-broncode voor het werken met de adapter kan worden gedownload van mijn website (downloadlink staat onderaan de pagina). Het is geschreven in C en je moet gcc geïnstalleerd hebben (Linux bevat dit meestal standaard, terwijl Mac-gebruikers de ontwikkelaarstools moeten installeren die een optioneel installatieprogramma zijn op je originele OS-schijf, of gratis kunnen worden gedownload van Apple). Voorbeeldcode is inbegrepen voor het lezen van een temperatuursensor, het knipperen van een BlinkM "slimme LED", het schrijven en verifiëren van een seriële EEPROM, het lezen van een Nintento Wii Nunchuk-controller (alleen Linux) en communiceren met een servocontrollerbord. Helaas is dit adapterschema niet compatibel met alle systemen. Ondersteuning voor DDC is niet verplicht, dus niet alle videokaarten ondersteunen deze mogelijkheid. Ik heb tot nu toe veel geluk gehad met Mac-systemen die ATI- of Intel-grafische chips hebben, maar op NVIDIA gebaseerde systemen hebben pech. Aan de Linux-kant heb ik alleen met succes een IBM ThinkPad A31p (ATI-graphics) getest, maar het zou niet werken met een Asus EeePC (Intel). De afbeeldingen hier tonen een testopstelling die verschillende I2C-apparaten in actie laat zien. De computer leest voortdurend de omgevingstemperatuur van een I2C-temperatuursensor, logt deze gegevens periodiek in een I2C seriële EEPROM-chip (ja, hij kan gewoon naar een bestand afdrukken, maar dit was om I2C-toepassingen verder te demonstreren), en vervolgens een servo (via een I2C-controller) dient als een geïmproviseerde indicatorwijzer. Met de bibliotheek en voorbeeldcode voor deze apparaten al aanwezig, duurde het maar een paar minuten om deze demo samen te stellen (en het meeste zat in het maken van de indicatordraaiknop).

Aanbevolen: