Comment puis-je utiliser I2C pour parler aux capteurs?


29

Comment parler aux capteurs numériques via l'interface I²C?

Matériel:
quelles broches du GPIO du Raspberry Pi puis-je utiliser?

Logiciel:
Quelles bibliothèques I²C sont disponibles?

Réponses:


23

Il y a beaucoup d'informations sur le GPIO de RPi ici: http://elinux.org/Rpi_Low-level_peripherals

Selon lui, vous pouvez programmer toutes les broches GPIO pour I²C, mais:

La broche 3 (SDA0) et la broche 5 (SCL0) sont préréglées pour être utilisées comme interface I²C. Il y a donc 1,8 kilohm tire des résistances sur la carte pour ces broches.

Cette page wiki contient également des exemples de code GPIO de bas niveau pour différentes langues qui devraient vous aider à démarrer. Si vous avez besoin d'un rappel sur ce qu'est réellement I²C, en voici un qui prend également en compte le RPi.

Pour un contrôle I²C spécifique, cette bibliothèque python peut être utile, elle est discutée dans cet article de blog , qui comprend un exemple de code.


Des commentaires sur le potentiel d'adaptation des broches GPIO Edison Sparkfun pour I2C?
geotheory

7

Beaucoup de discussions en cours à ce sujet. Voici ce que ma lecture et mes plaisanteries me montrent:

  1. Le support I2C n'est pas intégré au noyau par défaut avec le "squeeze" Debian
  2. Un noyau personnalisé devra être compilé avec le module i2cspi ( Voici un extrait d'arbre GIT )
  3. Les pilotes qui ont été écrits jusqu'à présent ne concernent que le noyau 3.2 et les versions ultérieures, et l'auteur n'a pas l'intention de prendre en charge la 3.1.9+ en raison de trous de sécurité béants ( Chris Boot discute du pilote )
  4. Avec un peu de chance, la distribution Debian "wheezy", actuellement en version bêta pour le RasPi, aura ce pilote dessus. Il est livré avec le noyau 3.2.

2
Oui, comme vous le mentionnez, il est maintenant intégré au noyau standard - les distributions officielles Raspbian et Debian Wheezy. J'ai suivi quelques conseils ici qui sont faciles à suivre et j'ai les appareils I2C qui apparaissent dans / dev ... raspberrypi.org/phpBB3/viewtopic.php?f=37&t=15511 Il y a un peu plus de détails ici si nécessaire: robot- electronics.co.uk/files/rpi_i2c_setup.doc
dodgy_coder

Pour obtenir plus de détails, conservez les données ici plutôt que sur les liens Web, et en espérant que cela ne soit pas obsolète: À partir de l'image Wheezy 2012-09-18, vous modifiez /etc/modprobe.d/raspi-blacklist.confet commentez l'entrée pour i2c-bcm2708; puis éditez /etc/moduleset ajoutez i2c-dev; puis redémarrez. Vous devriez maintenant avoir un /dev/i2c-0fichier spécial, très facile à utiliser.
damian


2

Matériel:

Comme mentionné par Tapio, le matériel est bien documenté sur http://elinux.org/Rpi_Low-level_peripherals

Logiciel:

Il y a un en-tête i2c-dev dans l'espace utilisateur Linux ( #include <linux/i2c-dev.h>). De plus, vous avez besoin d'un caractère pour lire. Cela peut être fait en chargeant les modules appropriés. i2c_bcm2708pour le pilote de bas niveau et i2c-devpour générer les décives de caractères pour les bus. Appliquer ...

sudo modprobe -r i2c_bcm2708
sudo modprobe i2c_bcm2708 baudrate=<your preferred baudrate>

pour les charger à la volée. Appliquer ...

sudo sh -c 'echo "i2c-dev" >> /etc/modules'
sudo sh -c 'echo "options i2c_bcm2708 baudrate=<your preferred baudrate>\n" > /etc/modprobe.d/custom.conf

et retirer de la liste i2c_bcm2708en /etc/modprobe.d/raspi-blacklist.confpour faire /dev/i2c-0et /dev/i2c-1montrer en permanence.

Vous pouvez désormais suivre les conseils d'utilisation de I²C del maestro lui-même.

Je préfère cette méthode aux autres, car elle est plateformeagnostique. Vous pouvez également l'utiliser linux/i2c-dev.havec d'autres appareils, tant qu'il existe un pilote I²C de bas niveau.

Cordialement

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.