Cette carte d’extension GrovePi (ou son remplaçent le GrovePi+) est développée par Dexter Industries (pour ma part acheté chez le chinois SeeedStudio). Elle permet le pont entre le Raspberry Pi et le monde d’Arduino, et plus particulièrement la famille Grove. Cette famille Grove regroupe 3 différents types de connecteurs, analogique, digital, et le bus i2c. Les avantages de se servir de cette famille sont :
- Codes sources d’exemples souvent disponibles pour l’Arduino
- Connecteur « standard » permettant de relier facilement un capteur avec une carte GrovePi
- Un nombre important de capteurs différents existe, ce qui permet d’éviter de sortir le fer à souder pour évaluer un capteur spécifique.
Inconvénients:
- le connecteur « standard » est tout sauf standard, vous trouverez beaucoup de discussions sur les forums pour trouver un connecteur compatible dont la source serait plus connue. Mais cela ne devrait pas vous concerner à moins que vous vouliez développer vos propres modules Grove.
Pour plus de détails consultez cette page.
La carte d’extension se monte facilement sur le Raspberry Pi.
Elle contient un microcontrôleur de chez Atmel, l’atmega 328. Celui-ci est relié via les bus I2C et SPI au Raspberry Pi. On peut du coup depuis le Raspberry Pi :
- reprogrammer le microprogramme de l’Atmega 328, un bon tutoriel peut être trouvé ici
- communiquer via i2c.
Le microprogramme de base est assez bien fait et permet d’interfacer pratiquement tous les capteurs/actuateurs de la famille Grove.On peut le télécharger depuis GitHub, en plus il y a des exemples d’interfaces avec plusieurs langages de programmation comme Python.
Ci dessous, un schéma des l’architecture du GrovePi:
L’article initial disait:
« L’un des gros problèmes de cette est carte est le fait que le bus I2c n’a pas d’adaptateur de niveau.Le Raspberry Pi fonctionnant à 3.3V sur ce bus et la famille Grove fonctionnant en 5V cela pose un problème. Il suffit de regarder le schéma bloc représentant les connexions entre le Raspberry Pi et la carte GrovePi. »
Après vérification, il apparaît que la carte à bien un adaptateur de niveau. On peut facilement le vérifier en regardant les schémas publié sur le GitHub de DexterIndustries.
Voici un exemple d’utilisation avec quelques capteurs branchés sur le bus i2c qu’il ne faudrait justement éviter si l’on ne veut pas griller le bus I2C du Raspberry Pi :
Si l’on regarde les schémas de ces trois capteurs on remarque qu’ils ont tous un adaptateurs de niveau mais pour le 5V (noté VCC sur le schéma) sur les lignes SDA/SCL côté Raspberry Pi (SDA1/SCL1 sont celles du côté du capteur, souvent en 3.3V) :
En mettant plusieurs capteurs en parallèle, on met en parallèle entre le 5V et les lignes I2C SDA/SCL une résistance de 10K. Ceci créera un courant d’entré dans les pins I2C du Raspberry Pi. Pouvant éventuellement griller les étages de sortie de ces deux pins. Je ne peux pas vous l’assurer, pourquoi? Parce que la description de l’étage de sortie de la puce BCM2835 n’est pas public. Broadcom, le fabricant, ne publie pas cette information, elle ne la donne qu’a des entreprises qui signent un contrat de non divulgation avec eux…
Ceci me poussa donc à développer un module d’extension pour le Raspberry Pi, basé sur le circuit TCA9517A de Texas Instrument. Ce module sera décrit en détail dans un prochain article.