Taula de continguts:

Adaptador I2C (I-Squared-C) més barat del món: 5 passos (amb imatges)
Adaptador I2C (I-Squared-C) més barat del món: 5 passos (amb imatges)

Vídeo: Adaptador I2C (I-Squared-C) més barat del món: 5 passos (amb imatges)

Vídeo: Adaptador I2C (I-Squared-C) més barat del món: 5 passos (amb imatges)
Vídeo: Урок 99. Создание цифровых часов Arduino с использованием ЖК-дисплея DS3231 и семисегментного дисплея. 2024, Desembre
Anonim
Adaptador I2C (I-Squared-C) més barat del món
Adaptador I2C (I-Squared-C) més barat del món

Feu una interfície de sensor per a l'ordinador per sota d'un dòlar. Actualització 9/06/08: Després d'explorar diverses vies, he arribat a la conclusió que no hi ha cap manera pràctica d'implementar aquesta tècnica a Microsoft Windows. Això no és una petita operació de SO, realment he rebutjat una prova. Ho sento! Els usuaris de Windows que necessiten capacitats I2C són atesos millor per les solucions existents basades en USB. Actualització 24/05/08: s’hi ha afegit suport Linux, així com codi de mostra per al controlador Nintendo Wii Nunchuk i el "LED intel·ligent" de BlinkM. Consulteu el fitxer README.txt inclòs amb el codi font per obtenir instruccions sobre la compilació i la configuració a Linux. I2C (abreviatura de Circuit Inter-Integrated Circuit) és un bus serial de dos fils que s’utilitza normalment en ordinadors per a la comunicació de baix nivell entre components interns. I2C també és popular en robòtica. Tot tipus de sensors i actuadors estan disponibles en una forma compatible amb I2C: telèmetres ultrasònics, sensors d’acceleració, inclinació, temperatura i pressió, servocontroladors i expansors de bus que proporcionen línies addicionals d’ús general (GPIO)., Microchip PIC, etc.) tenen compatibilitat amb I2C integrat. Però la potència de processament disponible en els microcontroladors és limitada i el desenvolupament de programari (amb compiladors creuats especialitzats i entorns de programació) de vegades pot ser una tasca difícil. Amb els ordinadors portàtils i els ordinadors de placa única cada vegada més petits i més assequibles, és cada vegada més habitual veure aquests sistemes utilitzats directament en projectes de robòtica i electrònica. Això proporciona una gran potència per a noves capacitats, com ara processament de visió i intel·ligència artificial més sofisticada, i amplia enormement l’abast de les eines i llenguatges de desenvolupament disponibles … però també presenta un nou problema: la interfície d’aquests sistemes “regulars” amb els perifèrics es fa generalment ports de consum, com ara USB; no hi ha cap "port I2C" disponible externament al qual només puguem aprofitar per fer ús dels nostres sensors … o sí?

Pas 1: Opcions existents

Opcions existents
Opcions existents
Opcions existents
Opcions existents

Una manera de connectar dispositius I2C a un ordinador ordinador de sobretaula o portàtil és mitjançant un adaptador USB a I2C. Hi ha almenys una dotzena d’aquestes opcions, que van des de kits de bricolatge amb programari de codi obert fins a unitats comercials sofisticades amb cada campanada.

Un desavantatge de l’enfocament USB-a-I2C és el cost. Un model comercial amb totes les funcions pot costar 250 $ o més. Fins i tot les alternatives casolanes "gratuïtes" suposen una col·lecció de peces i una inversió prèvia en un programador de microcontroladors i els coneixements relacionats per fer-ne ús. Un altre desavantatge és la relativa escassetat de suport del controlador fora del popular plec de Windows. Pocs d'aquests dispositius funcionen de forma nativa en equips Macintosh o Linux.

Pas 2: DDC és I2C

DDC és I2C
DDC és I2C
DDC és I2C
DDC és I2C
DDC és I2C
DDC és I2C

Quan vaig dir a la introducció que no hi havia cap port I2C extern a la majoria d’ordinadors, vaig mentir. Resulta que n’hi ha, i ja fa gairebé una dècada que hi és durant tot el temps, principalment asseguts.

La majoria de les targetes gràfiques i monitors moderns suporten alguna cosa anomenat Display Data Channel (DDC), un enllaç de comunicació dins d’un cable de vídeo que permet a l’ordinador i la pantalla negociar resolucions mútuament compatibles i permetre el control de programari de les funcions del monitor normalment accessibles amb els botons físics del visualització. DDC és, de fet, simplement una implementació d’un bus I2C amb algunes regles establertes. Aprofitant aquesta connexió entre l’ordinador i el monitor (o fent ús de les línies DDC en un port de vídeo de recanvi no utilitzat, com ara la connexió de monitor extern d’un ordinador portàtil), es pot interactuar amb alguns dispositius I2C pràcticament sense cap despesa, passant per alt el necessitat habitual d’un dispositiu adaptador completament. Tot el que necessitem per accedir físicament a aquest bus I2C és un cable de vídeo piratejat …

Pas 3: disseccionar el cable

Dissecció del cable
Dissecció del cable
Dissecció del cable
Dissecció del cable

Es necessiten quatre cables per a la nostra interfície I2C: alimentació + 5V, terra, dades de sèrie i rellotge en sèrie. Podeu trobar pinouts per als diversos tipus de ports de vídeo a Wikipedia o Pinouts.ru. Recordeu si utilitzeu un cable VGA per trobar-ne un amb el complement complet de pins; alguns només inclouen un subconjunt. Si retalleu l’aïllament i la protecció de l’exterior del cable, és probable que hi trobeu dos grups de cables. Els cables més gruixuts o feixos de cables embolicats en blindatges addicionals solen portar el senyal de vídeo. No ens interessen i es poden retallar. Els cables més prims i no blindats solen portar els senyals DDC (I2C) entre d’altres. Un multímetre o provador de continuïtat us pot ajudar a trobar els quatre cables adequats per al vostre cable. Utilitzar un connector nu pot ser avantatjós aquí, ja que només cal soldar quatre cables als pins d’interès. Una nota sobre la potència de + 5V: el corrent disponible és molt limitat; aproximadament 50 mA segons l'especificació DDC. La majoria dels dispositius I2C prenen només una mica de corrent, de manera que hauria de ser possible executar-ne diversos alhora … però si s’utilitzen més d’un o dos LEDs (o altres dispositius de corrent comparatiu), s’hauria de proporcionar alimentació externa.

Pas 4: l'adaptador completat

L'adaptador completat
L'adaptador completat

Aquí teniu l’adaptador acabat. Això és tot el que hi ha! Vaig fer que el meu fos més gros perquè pogués cabre fàcilment a la bossa del portàtil i vaig afegir un endoll de quatre pins que es connecta directament a un servocontrolador I2C que tinc.

Pas 5: programari i projectes

Programes i projectes
Programes i projectes
Programes i projectes
Programes i projectes

El codi font de Mac OS X i Linux per treballar amb l'adaptador es pot descarregar del meu lloc web (l'enllaç de descàrrega es troba a la part inferior de la pàgina). Està escrit en C i haureu d’instal·lar gcc (Linux normalment inclou això de manera predeterminada, mentre que els usuaris de Mac hauran d’instal·lar les eines per a desenvolupadors que siguin un instal·lador opcional al disc original del SO, o que es puguin descarregar gratuïtament des d’Apple). S'inclou un exemple de codi per llegir un sensor de temperatura, parpellejar un "LED intel·ligent" de BlinkM, escriure i verificar una EEPROM en sèrie, llegir un controlador Nintento Wii Nunchuk (només per a Linux) i comunicar-se amb una placa de controlador de servo. Malauradament, aquest esquema d'adaptador no és compatible amb tots els sistemes. El suport per a DDC no és obligatori, de manera que no totes les targetes de vídeo admeten aquesta capacitat. Fins ara he tingut bona sort amb els sistemes Mac que tenen xips gràfics ATI o Intel, però els sistemes basats en NVIDIA no tenen sort. Al costat de Linux, només he provat amb èxit un IBM ThinkPad A31p (gràfics ATI), però no funcionaria amb un Asus EeePC (Intel). Les imatges d’aquesta imatge mostren una plataforma de prova que demostra diversos dispositius I2C en acció. L’ordinador llegeix contínuament la temperatura ambiental d’un sensor de temperatura I2C, registra periòdicament aquestes dades a un xip EEPROM sèrie I2C (sí, només es podia imprimir en un fitxer, però això era per demostrar encara més les aplicacions I2C) i, a continuació, un servo (mitjançant un controlador I2C) serveix com a dial indicador improvisat. Amb la biblioteca i el codi de mostra per a aquests dispositius, ja només van trigar uns quants minuts a muntar aquesta demostració (i la major part d’això va consistir a fer el marcatge de l’indicador).

Recomanat: