Activation et vérification de l'I2C sur le Raspberry Pi en utilisant la ligne de commande pour vos propres scripts

La plupart des gens savent que vous pouvez activer le port I2C en utilisant raspi-config.

raspi-config offre également un mode non interactif, dans lequel vous pouvez piloter ses fonctionnalités en utilisant des paramètres de ligne de commande.

Lecture de l'état actuel du port I2C sur le Raspberry Pi

Voici comment lire l'état actuel du port I2C :

sudo raspi-config nonint get_i2c

Cette commande renverra :

  • 1 si le port est désactivé
  • 0 si le port est activé

Attention : dans ce cas, la logique est un script bash ! "0 signifie vrai ou pas d'erreur, et tous les autres chiffres signifient un code d'erreur". Cela m'a fait perdre la tête au début !

Note : nonint signifie "non interactif".

Activation de l'I2C sur le Raspberry Pi à l'aide d'une simple commande

Encore une fois, en utilisant raspi-config, nous pouvons définir l'état du port I2C. L'utilisation de raspi-config a l'avantage de prendre en charge de nombreuses choses supplémentaires pour vous, et devrait être compatible avec les versions ultérieures. En coulisses, raspi-config éditera /boot/config.txt pour vous, par exemple, et mettra également à jour l'arbre des périphériques.

Voici comment activer le port I2C :

sudo raspi-config nonint do_i2c 0

Encore une fois, notez que 0 signifie vrai / sur ici!

Voici comment désactiver le port I2C :

sudo raspi-config nonint do_i2c 1

1 signifie "faux" ou désactivé à cette fin.

Vérification de l'activation de l'I2C

raspi-config en mode non interactif

comme mentionné ci-dessus, vous pouvez lire l'état du port I2C avec

sudo raspi-config nonint get_i2c

image

La capture d'écran montre la sortie lorsque le port I2C est activé (0 = vrai).

Nœud du dispositif I2C

Lorsque I2C est activé sur le Raspberry Pi, vous verrez également un nœud /dev pour celui-ci :

ls /dev/i2*

/dev/i2c-1

Note : sur les premiers modèles de Raspberry Pi le port I2C exposé aux utilisateurs était I2C 0, donc on s'attendrait à /dev/i2c-0

image

La capture d'écran montre que le noeud i2c-1 existe dans /dev

gpio readall

Voici la sortie de

sudo gpio readall

image

Pour BCM 2 et 3, vous voyez "SDA1" (données I2C) et "SCL1" (horloge I2C) sous Nom. Le mode est également ALT0, ce qui correspond à la fonction I2C sur ces broches particulières (GPIO2, GPIO3).

Notez que BCM 2 et 3 est la numérotation Broadcom, pas le brochage GPIO. La position de la broche GPIO est la première colonne dans "Physical" (broches 3 et 5).

(Vous pouvez vous référer à ce document, page 102(pour un aperçu des différents modes de fonctionnement des broches GPIO, si vous êtes intéressé)

lsmod

lsmod vous montrera les modules I2C qui sont chargés :

lsmod | grep i2c

i2c_bcm2835 16384 0
i2c_dev 20480 0

image

donc aucune différence avec la désactivation de l'I2C.

i2cdetect :

Un dernier test consiste à lancer i2cdetect pour scanner la plage d'adresses. Pour les Pis modernes, vous devrez spécifier 1 comme port :

sudo i2cdetect -y 1

ceci produira un tableau des périphériques I2C actuellement détectés.

image

note : comme, dans mon cas, aucun périphérique I2C n'était attaché, aucun périphérique I2C n'apparaît - cette sortie est attendue.

Vérification de la désactivation de l'I2C

raspi-config en mode non interactif

comme mentionné ci-dessus, vous pouvez lire l'état du port I2C avec

sudo raspi-config nonint get_i2c

image

La capture d'écran montre la sortie lorsque le port I2C est désactivé (1 = faux).

Nœud du dispositif I2C

Lorsque I2C est désactivé sur le Raspberry Pi, vous ne verrez pas de nœud /dev pour lui :

ls /dev/i2*

ls : impossible d'accéder à '/dev/i2*' : Aucun fichier ou répertoire de ce type

image

La capture d'écran montre qu'aucun nœud i2c n'existe dans /dev.

gpio readall

Voici la sortie de

sudo gpio readall

image

Pour BCM 2 et 3, vous voyez "SDA1" (données I2C) et "SCL1" (horloge I2C) sous Nom.

Contrairement à la version activée, cependant (voir ci-dessus), le mode est IN, la broche est maintenant une entrée GPIO.

Notez que BCM 2 et 3 est la numérotation Broadcom, pas le brochage GPIO.

(Vous pouvez vous référer à ce document, page 102(pour un aperçu des différents modes de fonctionnement des broches GPIO, si vous êtes intéressé)

lsmod

lsmod vous montrera les modules I2C qui sont chargés :

lsmod | grep i2c

i2c_bcm2835 16384 0
i2c_dev 20480 0

image

donc aucune différence avec l'activation de l'I2C. ne peut pas utilisez ceci comme un test.

i2cdetect :

Un dernier test consiste à lancer i2cdetect pour scanner la plage d'adresses. Pour les Pis modernes, vous devrez spécifier 1 comme port :

sudo i2cdetect -y 1

si l'I2C est désactivé, une erreur sera affichée :

Erreur : Impossible d'ouvrir le fichier `/dev/i2c-1′ ou `/dev/i2c/1′ : Aucun fichier ou répertoire de ce type

image

Pièges et problèmes avec le port I2C, FAQ

Un redémarrage est-il nécessaire pour activer le port I2C ?

De mon point de vue, un redémarrage est pas nécessaire. J'ai regardé le code de raspi-config, et ils demandent le redémarrage pour les autres ports (par exemple UART), mais pas pour le port I2C.

De plus, lors de la commutation dynamique de l'état I2C on/off, vous pourrez vérifier que le nœud de périphérique est créé et que la plage I2C peut être scannée à l'aide de i2cdetect sans redémarrage.

Si tout le reste échoue, essayez de redémarrer l'ordinateur - cela pourrait aider à résoudre d'autres problèmes.

Existe-t-il d'autres possibilités pour piloter raspi-config, par exemple pour les ports UART et SPI, pour SSH, etc.

Bien sûr - raspi-config supporte une large gamme d'options différentes en mode non-interactif.

toutes ces commandes sont exécutées en utilisant

raspi-config nonint

Vous pouvez jeter un coup d'œil à la code source de raspi-configou se référer à ce post utile dans le forum Raspberry Pi.

encore une fois, notez la convention (déroutante pour certains développeurs) que 0 = vrai / on et 1 = faux / off

i2cdetect ne peut pas scanner

Si vous obtenez l'erreur suivante :

Erreur : Impossible d'ouvrir le fichier `/dev/i2c-1′ ou `/dev/i2c/1′ : Aucun fichier ou répertoire de ce type

I2C est très probablement désactivé. Essayez de l'activer, en utilisant le mode d'emploi de cet article ou en utilisant raspi-config, puis essayez à nouveau de scanner le port I2C.

Vous pouvez utiliser les méthodes présentées dans cet article pour vérifier l'état du port I2C de votre Raspberry Pi.

gpio readall incapable de déterminer le type de carte

si vous obtenez ce message en essayant d'exécuter gpio readall sur un Raspberry Pi 4 :

13:01:19 pi@Avalon:/dev $ sudo gpio readall

Oups - impossible de déterminer le type de carte... modèle : 17

Vous devez installer une version plus récente de wiringpi de l'auteur (elle n'est pas encore dans les dépôts amont). Cet article décrit comment le faire.

Voici la version courte :

cd /tmp

wget https://project-downloads.drogon.net/wiringpi-latest.deb

sudo dpkg -i wiringpi-latest.deb

image