Connexion entre Raspberry Pi et T’REX par I²C
Nous avons déjà vu comment communiquer entre le T’REX et l’Arduino par I²C. Dans ce projet, l’Arduino n’est pas suffisant pour ajouter un camera, communiquer par WiFi etc. Le Raspberry Pi pouvant également communiquer via I²C, l’Arduino ne nous sera plus utile.
Câblage
La communication par I²C entre le Raspberry et le T’REX nécessite 4 câbles :
- GND (Brun) : Masse commune
- SCL – Serial Clock Line (Jaune) : Horloge de synchronisation
- SDA – Serial Data Line (Orange) : Données
- +VI (Rouge) : Tension du contrôleur externe, ici +3.3V
Comme le T’REX intègre une résistance de pullup de 10K, il n’y a pas besoin d’ajouter de résistance.
Source :
https://fr.pinout.xyz/pinout/i2c
Initialisation du bus I²C
Le bus I²C n’est pas activé par défaut sur Raspbian. Pour l’activer, on peut passer par l’interface sudo raspi-config
:
> Interfacing Options > I2C > <Yes>
Source :
https://learn.adafruit.com/adafruits-raspberry-pi-lesson-4-gpio-setup/configuring-i2c
Détection des périphériques I²C
Pour vérifier l’activation du bus I²C et le bon cablâge avec le Raspberry, on va lancer un scan des périphériques. Pour ça, on doit tout d’abord installer le programme i2c-tools
sudo apt-get install i2c-tools
puis lancer la détection avec
sudo i2cdetect -y 1
On voit apparaitre le T’REX à l’adresse 0x07.
Bonjour M,
Je rencontre un pb lorsque j’essaye de détecter ma carte T-rex par la raspberry pi. Alors que je la détecte bien sur Arduino rien n’apparaît sur la raspberry pi en suivant votre méthode. Avez vous une idée d’où cela peut venir? Peut on en discuter un peu plus svp?
Merci beaucoup pour votre tuto dans tous les cas super boulot
Bonjour Nicolas,
Sur ma carte T-rex j’ai dû ressouder les pattes correspondants au bus i2c, mais vu que ça fonctionne sur Arduino, je doute que ce soit ça le problème.
Quel est le modèle de la Raspberry et l’OS utilisé ?
Sur les anciens modèles, il faut utiliser sudo i2cdetect -y 0
Est-ce qu’il y a un message d’erreur ou il n’y a tout simplement pas de périphérique dans le tableau affiché ?
Avez vous eu l’occasion d’essayer avec un autre périphérique i2c ?
Christian
Bonjour Christian Merci beaucoup pour votre réponse rapide. Alors non aucun message d’erreur juste aucune entrée dans le tableau lorsque l’on tape i2cdetect -y Ce qui est vraiment étrange: Avec l’arduino on détecte bien la trex et je peux envoyer des données depuis l’arduino à la t rex notament le code exemple de base.
Je détecte bien l’arduino en I2c via la raspberry Pi et je peux lui envyer des commandes
c’est vraiment le lien entre la raspberry et la t rex qui ne s’effectue pas :/
on utilise la dernière version de Raspbian 3.2.1 avec une rasp3 B+1.2
Bonjour,
C’est plutôt étrange.
À ta place, j’essayerai de mettre à jour le code de la carte T-rex. Tu trouveras le code sur https://github.com/Donny3000/dagu-trex-controller/blob/master/TREX_controller
La manip pour mettre à jour : https://picon.christian-schmidt.fr/mise-a-jour-du-code-du-controleur-trex/
Si ça ne donne rien, teste avec une nouvelle adresse. Pour la changer rapidement, tu peux modifier la ligne 113 dans le fichier TREX_controller.ino
Enfin, si ça ne fonctionne toujours pas, essaye de changer la fréquence de l’i2c. D’après la ligne 109 de I2Ccommand.ino, il suffit de modifier la constante TWBR à 12 ou 72, ce qui sera pris en compte par Wire.
Tiens moi au courant,
Christian