L’objectif est de configurer ma carte de développement PSoC 4 référencée CY8CKIT-044 (microcontrôleur à cœur de processeur ARM Cortex M0 48 MHz, 128 Ko Flash, 16 Ko SRAM) en composant esclave pour le protocole I2C. Le composant maître, à l’initiative de la communication donc, sera une carte Raspberry Pi 3 (voire 4 à priori, même si non testé).
Communication I2C entre Raspberry Pi et carte PSoC 4
Vous vous dites que j’aurais pu faire communiquer le Pi avec une carte Arduino plutôt qu’avec une carte ésotérique. En effet, j’aurais pu…
Mais imaginez la situation où votre carte microcontrôleur pilote une multitude de capteurs (environnementaux ou autres) et que vous souhaitiez plus tard collecter ces données, les stocker dans une base de données SQL, pouvoir les consulter depuis une page Web sur votre réseau domestique, ou piloter votre centrale de capteurs depuis une interface graphique programmée avec votre langage ou framework préféré, en Python, C/C++ ou Java. Un serveur Web, un serveur de base de données SQL, une IHM, toutes ces choses sont classiques sur un ordinateur PC ou notre Raspberry Pi. Vous auriez pu (dû) mieux concevoir votre prototype dès le départ, connecter vos capteurs directement au Pi via son port GPIO, envisager un ESP32 ou tout autre matériel IoT, soit… Mais vous trouvez que vos capteurs s’interfacent plus facilement avec votre carte à microcontrôleur avec des bibliothèques toutes prêtes (c’est souvent même encore plus simple s’il s’agit d’une Arduino).
Ou alors vous gardez votre carte à microcontrôleur, et vous faites en sorte qu’elle puisse échanger ses données avec une carte maître (Raspberry Pi), en passant par un protocole série standard, l’I2C par exemple. Votre carte à microcontrôleur devient alors un « gros » capteur personnalisé, adressable et interrogeable depuis le Pi avec seulement deux fils (SDA et SCL) pour la communication maître-esclave.
La carte PSoC 4 comprend une LED RVB intégrée en surface de la carte :
Pour mon expérience, la carte PSoC 4 sera configurée en esclave I2C, et pilotée depuis le Pi. Le Pi devra pouvoir piloter chaque composante Rouge, Vert ou Bleu (valeur entre 0 et 255). Il pourra aussi interroger la carte PSoC 4 pour récupérer les valeurs des composantes R, V et B en cours, au démarrage du système notamment. Pour le pilotage côté Pi, je prévois une interface graphique avec des glissières, le tout programmé en C avec GTK pour l’IHM et la bibliothèque bcm2835 pour la communication I2C.
Let’s go