Table des matières:

Adaptateur I2C (I-Squared-C) le moins cher au monde : 5 étapes (avec photos)
Adaptateur I2C (I-Squared-C) le moins cher au monde : 5 étapes (avec photos)

Vidéo: Adaptateur I2C (I-Squared-C) le moins cher au monde : 5 étapes (avec photos)

Vidéo: Adaptateur I2C (I-Squared-C) le moins cher au monde : 5 étapes (avec photos)
Vidéo: Green Team - Trois petits pas (Vidéo Lyrics) 2024, Novembre
Anonim
L'adaptateur I2C (I-Squared-C) le moins cher au monde
L'adaptateur I2C (I-Squared-C) le moins cher au monde

Créez une interface de capteur pour votre ordinateur pour moins d'un dollar ! Mise à jour 6/9/08: Après avoir exploré plusieurs pistes, j'ai conclu qu'il n'y avait aucun moyen pratique d'implémenter cette technique dans Microsoft Windows. Ce n'est pas un petit dénigrement du système d'exploitation, j'ai vraiment crevé un écrou en essayant ! Désolé! Les utilisateurs Windows ayant besoin de capacités I2C sont mieux servis par les solutions USB existantes. Consultez le fichier README.txt inclus avec le code source pour obtenir des instructions sur la compilation et la configuration sur Linux. I2C (abréviation de Inter-Integrated Circuit) est un bus série à deux fils généralement utilisé dans les ordinateurs pour la communication de bas niveau entre les composants internes. I2C est également populaire en robotique. Toutes sortes de capteurs et d'actionneurs sont disponibles sous une forme compatible I2C: télémètres à ultrasons, capteurs d'accélération, d'inclinaison, de température et de pression, servo-contrôleurs et extensions de bus qui fournissent des lignes supplémentaires à usage général (GPIO). La plupart des microcontrôleurs modernes (Atmel, Microchip PIC, etc.) prennent en charge I2C directement. Mais la puissance de traitement disponible sur les microcontrôleurs est limitée et le développement de logiciels - avec des compilateurs croisés et des environnements de programmation spécialisés - peut parfois être une corvée. Les ordinateurs portables et les ordinateurs monocarte devenant de plus en plus petits et abordables, il est de plus en plus courant de voir ces systèmes utilisés directement dans des projets de robotique et d'électronique. Cela fournit une puissance suffisante pour de nouvelles capacités telles que le traitement de la vision et une IA plus sophistiquée, et cela élargit considérablement la portée des outils de développement et des langages disponibles… mais cela présente également un nouveau problème: l'interfaçage de ces systèmes « réguliers » avec les périphériques se fait généralement via le grand public. des ports grand public tels que l'USB; il n'y a pas de "port I2C" disponible en externe sur lequel nous pouvons simplement puiser pour utiliser nos capteurs… ou existe-t-il ?

Étape 1: Options existantes

Options existantes
Options existantes
Options existantes
Options existantes

Une façon de connecter des périphériques I2C à un ordinateur de bureau ou portable ordinaire consiste à utiliser un adaptateur USB vers I2C. Il existe au moins une douzaine d'options de ce type, allant des kits de bricolage avec des logiciels open source aux unités commerciales sophistiquées avec chaque cloche et sifflet.

L'un des inconvénients de l'approche USB vers I2C est le coût. Un modèle commercial complet peut coûter 250 $ ou plus. Même les alternatives "gratuites" à l'homebrew supposent une collection de pièces et un investissement préalable dans un programmeur de microcontrôleur et les connaissances associées pour l'utiliser. Un autre inconvénient est la rareté relative de la prise en charge des pilotes en dehors du giron populaire de Windows. Peu de ces appareils fonctionnent nativement sur les ordinateurs Macintosh ou Linux.

Étape 2: DDC est I2C

DDC est I2C
DDC est I2C
DDC est I2C
DDC est I2C
DDC est I2C
DDC est I2C

Quand j'ai dit dans l'introduction qu'il n'y avait pas de port I2C externe sur la plupart des ordinateurs, j'ai menti. Il s'avère qu'il existe, et il est là depuis près d'une décennie maintenant, la plupart du temps en sommeil.

La plupart des cartes graphiques et des moniteurs modernes prennent en charge quelque chose appelé Display Data Channel (DDC), une liaison de communication dans un câble vidéo qui permet à l'ordinateur et à l'écran de négocier des résolutions mutuellement compatibles et de permettre le contrôle logiciel des fonctions du moniteur normalement accessibles avec des boutons physiques sur le affichage. DDC est, en fait, simplement une implémentation d'un bus I2C avec quelques règles établies. En exploitant cette connexion entre l'ordinateur et le moniteur (ou en utilisant les lignes DDC sur un port vidéo inutilisé disponible, comme la connexion du moniteur externe sur un ordinateur portable), on peut s'interfacer avec certains périphériques I2C pratiquement sans frais, en contournant le besoin habituel d'un appareil adaptateur entièrement. Tout ce dont nous avons besoin pour accéder physiquement à ce bus I2C est un câble vidéo piraté…

Étape 3: disséquer le câble

Disséquer le câble
Disséquer le câble
Disséquer le câble
Disséquer le câble

Quatre fils sont nécessaires pour notre interface I2C: alimentation +5V, masse, données série et horloge série. Les brochages des différents types de ports vidéo peuvent être trouvés sur Wikipedia ou Pinouts.ru. N'oubliez pas si vous utilisez un câble VGA pour en trouver un avec l'ensemble complet de broches; certains n'incluent qu'un sous-ensemble. En coupant l'isolation et le blindage de l'extérieur du câble, vous trouverez probablement deux groupes de fils à l'intérieur. Des fils plus épais, ou des faisceaux de fils enveloppés dans un blindage supplémentaire, transportent généralement le signal vidéo. Ceux-ci ne nous intéressent pas et ils peuvent être rognés. Des fils plus fins et non blindés transportent généralement les signaux DDC (I2C) entre autres. Un multimètre ou un testeur de continuité peut vous aider à trouver les quatre fils corrects pour votre câble. L'utilisation d'un connecteur nu peut être ici avantageuse, car il suffit de souder quatre fils aux broches d'intérêt. Une note sur l'alimentation +5V: le courant disponible est très limité; environ 50 mA selon la spécification DDC. La plupart des appareils I2C ne consomment qu'un tout petit peu de courant, il devrait donc être possible d'en exécuter plusieurs à la fois… mais si vous utilisez plus d'une ou deux LED (ou d'autres appareils à courant relativement élevé), une alimentation externe doit être fournie.

Étape 4: L'adaptateur terminé

L'adaptateur terminé
L'adaptateur terminé

Voici l'adaptateur terminé. C'est tout ce qu'on peut en dire! J'ai fait le mien très tronqué pour qu'il puisse tenir facilement dans mon sac d'ordinateur portable, et j'ai ajouté une prise à quatre broches qui se connecte directement à un servocontrôleur I2C que j'ai.

Étape 5: Logiciels et projets

Logiciels et projets
Logiciels et projets
Logiciels et projets
Logiciels et projets

Le code source Mac OS X et Linux pour travailler avec l'adaptateur peut être téléchargé à partir de mon site Web (le lien de téléchargement se trouve en bas de la page). Il est écrit en C et vous aurez besoin d'avoir installé gcc (Linux l'inclut généralement par défaut, tandis que les utilisateurs de Mac devront installer les outils de développement qui sont un programme d'installation facultatif sur votre disque OS d'origine, ou téléchargeables gratuitement depuis Apple). Un exemple de code est inclus pour lire un capteur de température, faire clignoter une « LED intelligente » BlinkM, écrire et vérifier une EEPROM série, lire un contrôleur Nintento Wii Nunchuk (Linux uniquement) et communiquer avec une carte de servocontrôleur. Malheureusement, ce schéma d'adaptateur n'est pas compatible avec tous les systèmes. La prise en charge de DDC n'est pas obligatoire, donc toutes les cartes vidéo ne prennent pas en charge cette capacité. J'ai eu de la chance jusqu'à présent avec les systèmes Mac dotés de puces graphiques ATI ou Intel, mais les systèmes basés sur NVIDIA n'ont pas de chance. Du côté de Linux, je n'ai testé avec succès qu'un IBM ThinkPad A31p (graphique ATI), mais cela ne fonctionnerait pas avec un Asus EeePC (Intel). Les images ici montrent un banc d'essai qui montre divers périphériques I2C en action. L'ordinateur lit en permanence la température ambiante à partir d'un capteur de température I2C, enregistre périodiquement ces données sur une puce EEPROM série I2C (oui, il pourrait simplement imprimer dans un fichier, mais c'était pour démontrer davantage les applications I2C), puis un servo (à travers un contrôleur I2C) sert de cadran indicateur de fortune. Avec la bibliothèque et l'exemple de code pour ces appareils déjà en place, il n'a fallu que quelques minutes pour mettre en place cette démo (et la majeure partie de cela consistait à fabriquer le cadran indicateur).

Conseillé: