Dans mon article qui vulgarise les différents bus de communication, j’ai mentionné qu’ils étaient directement accessibles depuis un Raspberry Pi. Dans le cadre de mon travail, mais aussi pour des projets personnels, j’ai eu souvent besoin de faire des essais sur ces bus, et c’est souvent plus compliqué que ça ne devrait l’être. Je me suis mis en tête de développer une carte électronique simple, basée sur le Raspberry et sa communauté, permettant de travailler facilement avec chacun de ces bus. Cela me permet de m’améliorer sur le logiciel KiCad (saisie schématique et placement routage) et ainsi de faire une petite board facile pour commencer.
La carte se décompose en deux circuits bien distincts : les alimentations et la partie logique.
L’entrée d’alimentation se faire par un jack de 15V (J6) et est régulée par deux AMS1117 en 5V (U1) et en 3V3 (U2). Des sélecteurs permettent de modifier le routage. Utiliser le 3V3 du Raspberry Pi ou celui de la carte. Faire le 3V3 à partir du 5V ou du 15V ; utile lorsqu’on alimente la carte en USB.
Une alimentation régulée +12V et –12V me permettront de faire facilement des petits montages avec des amplificateurs opérationnels. J’utilise un Traco 1212D avec ses filtres d’entrée et de sortie. Un bornier est disponible avec toutes les tensions de la carte pour alimenter des composants externes.
La partie logique présente 3 borniers I2C : 2 en 3V3 et le dernier en 5V avec le level shifter Q1 et Q2. On n’oublie pas les pullups. Un ADS1115 (U5) permet de faire des conversions analogiques vers digitales en I2C et sera pratique pour les petits montages analogiques. Une sortie pour le bus 1-Wire est également présente. J’ai placé 2 connecteurs pour le SPI. Le bus SPI0 permet aussi de gérer un MCP21515 (U4) avec un TJA1051 (U3) pour faire du CAN sur le SPI. Le montage est classique et donné dans la datasheet du MCP2515 ; je n’ai rien inventé avec cette carte. Les derniers IOs disponibles sont ramenés sur un connecteur.
Notez que le Raspberry Pi est un modèle Zéro et qu’il est configuré de façon à avoir 2 bus I2C distincts et 2 SPI distincts.
Le routage est vraiment chouette à faire, mais il pourrait sans aucun doute être optimisé. J’ai utilisé une board 4 couches avec un plan de masse sur chaque face et deux plans d’alimentation intermédiaires.
Les PCBs sont tirés en Chine chez JLCPCB à moindre coût et soudés à la main. Je me suis trompé pour l’empreinte de U5, mais, avec un bon coup de main, c’est quand même soudé ! La carte fonctionne très bien et se montre très facile d’utilisation : l’objectif est atteint.
Je la trouve assez chouette et pas très compliquée, et je pense l’améliorer et en obtenir un genre de plateforme pour débutant afin d’apprendre le fonctionnement des différents bus. Pourquoi ne pas en faire un projet Open Source avec une librairie bien fournie ?
Si vous êtes intéressés par ce projet, je peux vous envoyer gratuitement le PCB sans les composants. Faites-moi signe.