Description des composants utiles pour commencerNous avons vu dans le post précédent
ce qu'est précisément le Raspberry Pi, ainsi que le materiel requis pour s'en servir. Cependant, il s'agissait du minimum syndical requis pour faire fonctionner le Pi. Notre but n'étant pas de simplement faire un serveur, je vais vous présenter ici quelques équipements intéressants, et nous ferons des "packs" de démarrage.
Ou acheter?En premier lieu, je vous recommande trois sites :
Ces trois sites proposent un catalogue très intéressant de composants adaptés aux besoins de la robotique, de la domotique, de l'instrumentation, et même de l'expérimentation en général. Les composants dont je vais parler sont souvent disponibles sur ces sites. Je mettrai souvent des liens vers Adafruit, car les fiches sont souvent très détaillées, avec des liens vers les tutos. Mais ce n'est pas toujours le moins cher, comparez.
Les composantsLes ArduinoAvant de commander, je voudrais vous parler des Arduino. Nous reviendrons peut être dessus ultérieurement plus en détails, mais sachez qu'il est possible de faire la plupart des projets que nous ferons ici de façon plus facile avec un Arduino. Par exemple, le Arduino Uno R3 est peu cher, et est une excellente plateforme pour apprendre et réaliser des montages plus ou moins complexes. Il possède 16 entrées sorties numériques et 6 analogiques. Par rapport au Raspberry Pi, ce n'est pas un ordinateur au sens classique, mais un microcontrôleur programmable. Avec le arduino on a un IDE, ou l'on peut taper du code en utilisant plein de librairies très pratiques pour faire des robots, des montages electroniques, des automatismes, etc. C'est une solution solide (il est plus résistant aux erreurs que le Raspberry pi), économique, à faible consommation, et pour laquelle existe une quantité astronomique de tutoriels. Pour beaucoup de projets, ce sera tout simplement plus facile et plus efficace avec un Arduino. Seulement, le raspberry Pi apporte un processeur beaucoup plus puissant, et on pourra par exemple analyser un flux de webcam avec le raspberry pi. Le arduino n'a même pas de port USB pour recevoir la webcam! En pratique il existe des shields pour Arduino qui permettent de rajouter des fonctionalités, mais dans tous les cas le microcontrôleur du arduino (un Atmel Atmega 328, a 20Mhz et ayant 32ko de mémoire si mes souvenirs sont justes) est incomparable avec l'Arm du Raspberry. Le raspberry a également un port réseau, une sortie HDMI, peut accepter des clés USB wifi, etc etc...
Le raspberry peut faire à peu près tout ce que fait le Arduino, mais le contraire n'est pas vrai. Cependant, rien ne vous interdit d'avoir les deux, c'est une fantastique platforme pour apprendre! Pour ma part, j'ai un Arduino uno R3, et 4 Raspberry pi. Enfin, le point ultime : il est possible de faire communiquer les deux par les ports GPIO pour combiner les forces des deux, mais aussi de brancher le Arduino en USB sur le Raspberry et échanger des informations par un port série. On peut ainsi faire un montage quelconque facilement sur le Arduino, et commander le système par le Raspberry. Cela sera particulièrement intéréssant pour les applications nécéssitant beaucoup de broches PWM, le raspberry n'en ayant qu'une. Mais nous reviendrons dessus, et il existe d'autres solutions. Pour ma part, je n'utilise presque plus le Arduino (il est dans l'un de mes robots, mais tous les suivants sont/seront commandés par les pi, ne serait-ce que pour communiquer en wifi, streamer le flux webcam du robot, échanger des infos entre les robots, etc.)

Pour les applications ou l'on souhaite combiner les capacités d'un Arduino avec celles d'un Raspberry pi, il existe une autre solution, plus économique, et assez classe : intégrer uniquement le contrôleur du Arduino (
Atmel Atmega 328 avec bootloader Arduino) dans un circuit communiquant par GPIO avec le Pi. Cette solution est plus économique (la puce coute 6$ sur adafruit avec le bootloader arduino dedans), moins consommatrice d'énergie (sans les composants supplémentaires, le Atmega consomme bien moins), mais plus complexe à mettre en oeuvre, puisqu'il faudra soit un Arduino pour programmer la puce, soit un programmateur AVR. Pour ma part j'ai un Arduino, et la puce, de sorte que j'utiliserai l'Arduino pour programmer la puce, et en attendant la puce sert de puce de rechange si je grille le Atmega de mon Arduino. Dans tous les cas, ces précisions ne doivent pas être prises pour des recommandations d'achat : c'est honnêtement quelque chose dont vous risquez de ne pas vous préocuper avant longtemps. En revanche, si c'est pour faciliter l'introduction à l'électronique, et que ça ne vous dérange pas de dépenser 30$ pour ça, ça vaut totalement le coup. D'autant plus que tous les composants complémentaires que nous rajouterons seront utilisables avec le Raspberry. En revanche, le Arduino risque de traîner sur une étagère quand vous passerez aux Pi, jusqu'a ce que vous ayez une super idée de projet combinant les 2 :).
Au passage, sur PCI, un autre INpacticien,
critok, a déjà un robot Arduino autonome, qui communique avec un PC en USB :
Le projet Daryl.
Les BreadboardUne breadboard, ou plaque de prototypage sans soudure, et une plaque dotée de nombreux trous. Ces trous peuvent recevoir les pattes de composants électroniques divers. Dans chaque trou, il y a un petit système de pince à ressort qui serre la patte du composant pour assurer le contact. Cela permet de tester des montages électriques facilement, sans faire de soudure. C'est un outil formidable pour l'expérimentation. L'avantage est qu'en plus, vous pourrez faire un circuit pour apprendre quelque chose, puis défaire le circuit pour réutiliser les composants à autre chose. En gros, on peut le voir comme le Lego de l'électronique. Sauf qu'on utilise des composants électroniques ordinaires, donc avec une breadboard on peut s'amuser avec les composants électroniques dont on dispose déjà.
Le principe est le suivant :

La plaque que vous voyez est une breadboard avec à droite un schéma superposé dessus. Les lignes jaunes représentent les pistes électriques de la plaque. Cela signifie que sur la plaque présentée à gauche, si vous branchez quelque chose en haut à gauche, en 1a (cliquez sur l'image pour
voir la breadboard en plus grand), cet élément sera connecté électriquement aux trous 1b,1c, 1d et 1e. Cela permet de relier deux composants entre eux par exemple. Sur les cotés, vous noterez des trous organisés différemment. Il s'agit des rails d'alimentation. En fait vous en faites ce que vous voulez, mais ils sont prévus pour avoir le + de l'alimentation électrique du circuit, et le -. La différence est que le rail part du haut vers le bas de la plaque, plutôt que de droite à gauche.
Il existe différentes tailles de breadboard, avec ou sans rails. Par exemple, les
Tiny breadboards, les
half size breadboards, les
full size breadboards, et les
large breadboards. De mon point de vue, les plus intéressantes sont les "half size", car on peut en accrocher 2 ensembles pour en faire une grande, elles ont des rails (amovibles), et on a rarement besoin de plus de place. Je vous recommanderai d'acheter deux half size plutôt qu'une large, si votre circuit est complexe, il suffira d'utiliser les deux, dans le cas suivant ça vous permettra de faire un nouveau montage sans défaire l'ancien. Les modèles "tiny" sont surtout intéressants pour faire de petits montages lorsqu'on a des contraintes d'espace, ou pour ne pas gâcher une breadboard complète à un montage simple qui se retrouvera dans un coin. Par exemple si vous faites un circuit pour l'alimentation électrique, et que celui ci se retrouve dans une trappe du robot, il sera difficile d'y accéder pour rajouter des puces. Une tiny breadboard fera donc l'affaire, et la half size restera sur le dessus pour recevoir des capteurs. Parmi les 3 sites, les meilleurs prix en breadboards sont chez pololu :
3.75$ la half size,
4.95 la full size, et
2.95 la tiny. Je vous déconseille la Large dans tous les cas, autant prendre 3 full size, ou 6 half size, ce sera pareil pour moins cher.
Les "Jumper Wire"Ces câbles servent à connecter les broches GPIO a des dispositifs, sans risque de court-circuit, de façon non permanente, mais aussi à connecter des lignes de la breadboard entre elles, ou un composant ayant des broches ou des trous à la breadboard. Les prix sont bons sur Adafruit. Il y a globalement trois types de jumper wire qui nous seront très utiles :
- les "breadboard jumper wire", ou les male-male jumper wire, assez indispensables (l'un des deux suffit), car ils permettront de connecter deux lignes de la breadboard. Ils existent en différentes tailles. Pour connecter des éléments de breadboard, les plus courts suffisent. Le second type de câble me semble plus solide après quelques mois de tripatouillage.
- Les "female-male extension jumper wire", qui ont un coté femelle que l'on branchera sur le Raspberry pi et un coté mâle qui ira sur la breadboard. Indispensable si vous n'avez pas de "Pi Cobbler" (nous reviendrons dessus plus tard)
- Les "female-female jumper wire" ont deux prises femelle, et peuvent se brancher sur des broches GPIO et de l'autre coté sur un dispositif ayant une prise mâle. Généralement on passe par la breadboard, pour mettre une résistance en série, un convertisseur DAC ou autre. Toutefois, vous pouvez combiner ces câbles avec les "male-male" pour faire un "male-female", ou utiliser ces headers extra longs pour connecter le pi à la breadboard, remplaçant les "male-female"
J'ai également parlé du Pi Cobbler. il n'est pas indispensable, et nécessite de la soudure. En revanche, une fois réalisé, il permet de connecter le PI à votre montage en un coup par une nappe du genre des nappes de lecteurs de disquettes. Pratique si vous avez un pi et plusieurs montages. Deux versions existent :
- Le Pi Cobbler, qui est le plus compact, mais dont le design n'est pas le plus lisible (la nappe passe devant les broches)
- Le Pi-T-Cobbler, qui est plus encombrant, mais met la prise de la nappe plus loin pour ne pas gêner la vision du circuit. Si c'était à refaire, je prendrais cette version plutôt que l'autre, même si l'autre à d'autres avantages.
Dans tous les cas, c'est sympa à avoir, mais ça "mange" de la place sur la breadboard (13 trous, sur 2 rangée, donc près de la moitié d'une half-size). Ce n'est pas du tout indispensable, à vous de voir selon vos idées. Par contre, pour un montage "permanent", c'est une connexion bien plus solide que les jumper wire, et on ne peut pas se tromper de broche (par contre on peut se tromper de sens de branchement sur le pi, mais il n'y a que deux possibilités, donc il est rapide de vérifier cela!)
Nous avons maintenant la base qui nous permettra de faire des circuits. Ce qui nous manque maintenant, c'est d'avoir des éléments à connecter dessus. Commençons par les éléments les plus simples :
Les LEDLes LED ou DEL en français, pour
Diodes Electro-Luminescentes, sont des composants polarisés, c'est à dire qu'ils ont un + et un -. Quand la tension (volts) adéquate est appliquée aux bornes d'une LED, et dans le bon sens, celle ci produit de la lumière. Certaines sont faites pour éclairer (LED haute puissance), d'autres pour signaler (l'appareil est allumé, les données sont reçues, etc). Nous nous en servirons surtout pour tester certains montages, et parce que celles ci ont un coût dérisoire. La première chose qu'on fera sera de faire clignoter une LED, ce que d'aucuns considèrent comme le "hello world de l'électronique".

Il en existe de toutes les couleurs ou presque, et même des modèles multicolores.
En pratique, choisissez la couleur qui vous plait :
Blanc,
rouge,
bleu,
vert,
jaune, et même
tricolore. A noter que les LED tricolores sont en gros 3 LED dans un seul boitier. Il y a 4 pattes : une pour le moins, et une pour le + de chaque couleur pour les modèles common cathode. Préférez ces modèles, ils sont plus simples à programmer avec des GPIO.
Adafruit aussi a toutes sortes de LED, mais souvent par paquet. Les liens que j'ai donné sont pour des LED de 5mm de diamètre, mais il existe aussi des LED de 3mm, de 10mm, et sans doute d'autres tailles plus dures à trouver.
Au passage, il existe aussi des couleurs invisibles :
infrarouge, ou encore
ultraviolet. Pour ma part, je n'ai pas trop d'idées de projets pour des LED UV (on pourrait bien faire le détecteur de billets qu'ils présentent, ou essayer de faire pousser des plantes, mais ça ne me motive pas plus que ça), mais en infrarouge, on peut commander une télé, un décodeur canal sat, ou n'importe quel appareil ayant un récepteur infrarouge.
Enfin, on peut utiliser les LED IR avec un récepteur pour communiquer entre deux robots, ou entre un robot et une balise. Les LED ont une tension (volts) spécifique qui est nécessaire à leur bon fonctionnement:
- environ 2.2V pour les LED rouges (en 20mA)
- environ 2.2V pour les LED vertes (en 20mA)
- environ 3.0V pour les LED bleues (en 20mA)
- environ 2.2V pour les LED jaunes (en 20mA)
- environ 3V pour les LED blanches (en 20mA)
- environ 1.6V pour les LED IR
D'autres LED peuvent demander une tension plus forte, ou plus de courant (les mA), par exemple pour les "ultra bright", ou ultra lumineuses.
Il est à noter que les LED bleues et blanches sont souvent plus chères, consomment plus de courant et sont plus lumineuses que les rouges, jaunes et vertes.
Une LED doit être alimentée par la bonne tension, et pour cela on utilise souvent une résistance en série pour alimenter la LED. Dans le cas du Raspberry, on pourra se passer de résistance si on alimente une LED bleue ou blanche depuis les GPIO, et il faudra idéalement une résistance de 55 Ohms pour alimenter une led rouge, jaune ou verte. En pratique, les résistances standard de 47Ohms feront l'affaire.
Au passage, de
nombreux tutoriels existent sur les LED, je ne vais pas m'appesentir dessus.
Si vous avez un magasin d'électronique pas loin de chez vous, nul besoin de commander les LED, elles sont très faciles à trouver. Peut être moins pour les led IR, UV, RGB, ou les leds "spéciales" qui changent de couleur toutes seules, mais la plupart des leds sont faciles à trouver et peu chères.
Les résistancesOn en a parlé un peu avant. Les
résistances serviront à, en gros, abaisser la tension apportée à un composant (par exemple une LED). Il y a de grandes chances qu'on en aie besoin à un moment ou un autre de résistances (aussi appellées
résistors). C'est un composant non polarisé, c'est à dire que vous pouvez le mettre dans n'importe quel sens. Leur valeur est donnée par un
code de couleurs.
Les valeurs des résistances du commerce sont également définies par une norme : en pratique, on ne trouve pas toutes les valeurs possibles. Dans la pratique, essayez d'avoir quelques résistances de diverses valeurs, par exemple, pour les LED, et pour 2-3 autres usages. En pratique, il nous faudra probablement des résistances pour:
- Les LED : 47Ohms en 3.3v pour les jaunes, rouges, vertes
- Des résistances de tirages, dites pull up et pull down lire la valeur de boutons et d'autres dispositifs : 2.2K, 4.7K , 10K
- peut être quelques résistances diverses selon des besoins spécifiques que vous aurez calculé
Si vous comptez alimenter vos LED en 5v, il vous faudra des résistances adaptées, et refaire les calculs.
Quelques pucesLe MCP3008 : lisez des capteurs analogiques avec votre RaspberryLe Raspberry pi possède un certain nombre de d'entrées-sorties par le biais des GPIO. Mais tous ces GPIO sont numériques, c'est à dire qu'ils ne peuvent lire que des 0 et des 1,
ou suites de 0/1. Certains capteurs sont numériques, et envoient des informations dans ce format, mais la plupart des capteurs envoient des données analogiques, c'est à dire
qu'ils enverront une tension particulière pour indiquer la valeur du paramètre mesuré plutot qu'un code numérique. Par exemple, un capteur de température pourra retourner
2.225v pour indiquer que la température est de 30°C, et 2.233 pour 40°C (c'est un exemple au pif). Le problème est que le pi ne saura pas lire et interpréter ces valeurs. C'est pour cela
que nous utiliserons un ADC (Analog to Digital Converter, convertisseur analogique vers numérique). Il existe de très nombreux composants permettant cette conversion, mais je
vous parlerai ici du
MCP3008, car je le connais, et que je vous fournirai un tutoriel en français sur son cablage vers un PI, sa programmation et son utilisation.
Pour moins de 4$, cette puce utilise 4 GPIO du Raspberry pi, mais vous donne 8 entrées analogiques en échange, qui vous permettront de lire autant de capteurs analogiques.
A noter que si vous n'avez pas la patience d'attendre mon tutoriel,
Adafruit a un tuto sur l'utilisation du MCP3008, en anglais. Les GPIO utilisés sont ceux du port SPI.
Je vous conseille d'en prendre un par Raspberry pi avec lequel vous souhaitez lire des données analogiques. Nous verrons dans le prochain post divers capteurs analogiques (et aussi numériques).
Ajoutez 8 ou 16 GPIO au Raspberry grâce au MCP23008 ou au MCP23017Le PI a un nombre limité de GPIO. Toutefois, en utilisant un
MCP23008, il est possible au prix de 2 GPIO d'en rajouter 8, et toujours pour 2 GPIO, on peut en rajouter 16 avec le
MCP23017. Ces deux GPIO sont ceux du port I²C, et ne sont pas "perdus", car c'est un BUS sur lequel on peut connecter de multiples puces. On pourra ainsi brancher encore d'autres MCP23008 ou MCP23017, ou d'autres puces I²C.
Si vous souhaitez commander de nombreuses LED, ou un écran LCD texte (ils consomment généralement 6 GPIO, voire 9 avec un rétroéclairage RGB contrôlé par le pi) ordinaire, ou encore si vous voulez ajouter plein de boutons.
La différence entre les deux est que le MCP23008 ajoute 8 ports, et a 16 pattes, contre 16 ports pour 14 pattes pour le MCP23017. A moins d'avoir des contraintes d'espace (un petit circuit avec peu de place), je ne vois pas de raison de ne pas prendre le MCP23017 au lieu du MCP23008, d'autant que les prix sont très proches.
Dans tous les cas, je ferai d'abord un tuto sur le câblage et l'utilisation du MCP23017, puis un petit add-on pour le câblage du MCP23008 (le câblage change, mais le code reste identique)
Un changeur de niveau logique : le 74LVC245.Le
74LVC245 est un "logic level shifter", ou ajusteur de niveau logique. En pratique, si vous avez des capteurs numériques, des puces, ou encore d'autres dispositifs numériques qui fonctionnent avec un niveau logique de 5V (0V correspond à un 0, et 5V à un 1, avec une certaine marge), le PI n'aimera pas recevoir des signaux de 5V sur ses GPIO, pour qui le +3.3V correspond à un 1. La solution est d'utiliser une puce qui fait la conversion. Il y a des chances que vous n'en ayez pas besoin, je ne me suis pas encore servi des miennes. Toutefois, la puce ne coûte presque rien, et je trouve plus pratique d'en avoir au moins une sous la main "au cas ou". En pratique, beaucoup de puces sont capables de travailler avec des niveaux logiques de 3.3V, donc ce n'est pas nécessairement indispensable, et vous pouvez aussi bien vous en acheter une lorsque vous achèterez le composant qui en aura besoin.
Une puce pour contrôler un ou deux moteurs : la L293DSI vous contrôlez un moteur depuis les ports GPIO du PI (ce qui sera nécessaire pour un robot), vous pourrez faire tourner ou non le moteur. De plus, il faudra des transistors
pour donner assez de courant au moteur (les GPIO ne sont pas faits pour donner de la puissance, mais un signal logique). Si vous souhaitez faire tourner le moteur dans l'autre sens,
il faudrait inverser le câblage. Le
L293D est une puce dédiée à ce genre d'opérations. Cette puce permet de contrôler deux moteurs alimentés par 4.5V à 36V, fournis par une seconde source, avec les signaux GPIO du PI. Chaque moteur pourra utiliser jusqu'à 600mA. Le L293 quand à lui accepte 1A par moteur. Il existe également d'autres puces, telles que le
SN754410, qui peut sortir 1A par moteur en continu. J'ai un tuto sur le L293D dans les tuyaux, et j'en ferai un sur le SN754410 dès que je l'aurai utilisé (pour l'instant je dois vérifier les spécifications). A noter qu'il est possible de combiner deux L293D ou davantage pour plus de puissance vers les moteurs.
http://learn.adafruit.com/system/products/images/000/000/593/medium225/mcp23008_MED.jpg?1342023679 http://learn.adafruit.com/system/products/images/000/000/732/medium225/ID732_MED.jpg?1342023457http://learn.adafruit.com/system/products/images/000/000/807/medium225/ID807_MED.jpg?1342023300De gauche à droite : le MCP3008, le MCP23008, MCP23017, et le L293D. Les liens sur les images mènent à des tutos en anglais.
Nous allons maintenant passer aux capteurs, qui nous permettront de prendre des informations provenant du monde matériel.
Modifié par sky99, 27/01/2013 - 19:50.