samedi 22 mars 2014

Arduino et souris PS/2

Lire une souris d'ordinateur avec un Arduino, c'est tout à fait possible. Mais attention:  il faut que ce soit une souris de type PS/2:  il s'agit des anciens modèles munis d'un connecteur de forme circulaire à six pins:

Connecteur PS/2

Numéro des broches du connecteur mâle
Le schéma ci-contre montre le brochage du connecteur PS/2 mâle de la souris.

Pin 1:  Données (data) → Arduino 5
Pin 2:  Pas utilisée
Pin 3:  GND → Arduino GND
Pin 4:  Vcc → Arduino 5V
Pin 5:  Horloge (clock) → Arduino 6
Pin 6:  Pas utilisée

Ne disposant pas d'un connecteur PS/2 femelle, j'ai simplement coupé le câble de la souris pour me débarrasser de ce connecteur mâle et brancher les 4 fils conducteurs directement aux entrées/sorties de l'Arduino.  

La souris branchée à l'Arduino

Ensuite on installe la bibliothèque PS2 mais attention:  à moins que vous utilisiez une version vraiment très ancienne du logiciel (IDE) Arduino, vous devrez modifier le fichier "ps2.h" de façon à remplacer la mention "WProgram.h" par la mention "Arduino.h".


Le sketch ci-dessous est inspiré de l'exemple qui accompagne la bibliothèque.   La position de la souris (coordonnées x et y) ainsi que l'état de ses deux boutons s'affiche dans le moniteur série (il ne semble pas possible de détecter une rotation de la molette, toutefois).



Référence:  Arduino Playground

Yves Pelletier (Twitter:  @ElectroAmateur)

jeudi 20 mars 2014

Lecture de capteurs analogiques sur le Raspberry Pi

Lors d'une récente rubrique, nous avons appris comment utiliser les pins GPIO du Raspberry Pi pour lire des signaux numériques.  Toutefois, contrairement à l'Arduino, le Raspberry Pi ne comporte pas la moindre entrée analogique.  Et pourtant, lire un signal analogique (provenant d'un potentiomètre, d'une photorésistance, d'une thermistance, etc.), ça peut être drôlement pratique...

Évidemment, il existe une solution à ce problème: l'utilisation d'un convertisseur numérique-analogique externe (ou ADC, pour analog to digital converter).  J'ai utilisé le MCP3008 de Microchip, qui est un ADC à 8 canaux, ce qui signifie que vous pouvez y brancher pas moins de 8 capteurs analogiques simultanément (si vos besoins sont plus modestes, vous pouvez vous rabattre sur le MCP3004, qui ne comporte que 4 canaux).

Le rôle du MCP3008 sera donc de transmettre au Raspberry Pi  un signal numérique entre 0 et 1023 qui sera la traduction du signal analogique (qui, lui, peut prendre n'importe quelle valeur située entre 0 et 3,3 V).

Interface SPI matérielle ou logicielle?

Puisque que le MCP3008 utilise le protocole SPI, nous avons le choix entre une approche matérielle (hardware SPI) ou logicielle (bit banged SPI).  L'approche logicielle consiste à gérer nous-mêmes le signal d'horloge et le chip select  à l'intérieur de notre script.  C'est un peu plus lent que le "hardware SPI", et ça nécessite des scripts un peu plus complexes.  Par contre, on peut utiliser n'importe quelle pin GPIO.  Pour un exemple de ce type, vous pouvez consulter l'adaptation que Dominique Meurisse de MC Hobby a faite du tutoriel d'Adafruit.

J'ai plutôt opté pour l'utilisation de l'interface SPI matérielle du Raspberry Pi:   ça facilite le codage, mais nous sommes obligés d'utiliser les pins GPIO qui sont dédiées au SPI (CE0, CE1, MOSI, MISO et SCLK):


Activation du protocole SPI

De plus, il faut activer les ressources SPI car elles sont désactivées par défaut (à moins, je crois, que votre OS soit l'Occidentalis d'Adafruit).  Vous n'aurez à faire ce réglage qu'une seule fois.

sudo nano /etc/modprobe.d/raspi-blacklist.conf
Ajoutez le symbole "#" pour commenter la ligne "spi-bcm2708", puis enregistrez le fichier modifié.  Ensuite on redémarre:

sudo reboot
Il faut aussi installer python-dev:

sudo apt-get install python-dev
...puis downloader et installer py-spidev:

mkdir py-spidev
cd py-spidev
wget https://raw.github.com/doceme/py-spidev/master/setup.py
wget https://raw.github.com/doceme/py-spidev/master/spidev_module.c
sudo python setup.py install
Le circuit

Le schéma ci-contre, issu de la fiche technique, montre le brochage du MCP3008.  Les 8 entrées analogiques sont alignées du côté gauche. Le côté droit comporte l'alimentation (VDD), la tension de référence (VREF), la masse du signal analogique (AGND) et celle du signal numérique (DGND), l'horloge (CLK), la sortie des données numériques vers le Raspberry Pi (DOUT) et l'entrée des données numériques en provenance du Raspberry Pi (DIN), le "chip select" (CS/SHDN) qui doit être au niveau logique bas pour que l'ADC soit actif.

Comme d'habitude, si votre capteur analogique est une résistance variable, vous la placez en série avec une résistance fixe afin que le signal acheminé à l'entrée analogique soit une tension variable:

Puisque je voulais seulement explorer les possibilités de mesurer des valeurs analogiques, j'ai utilisé deux potentiomètres reliés respectivement au canal 0 (pin 1) et au canal 1 (pin 2) du MCP3008 (c'est plus simple de tourner le bouton d'un potentiomètre que de changer la température dans l'environnement d'une thermistance...).


Les connexions entre le MCP3008 et le Raspberry Pi sont les suivantes:

MCP3008 VDD (pin 16)   →  Raspberry 3,3 V
MCP3008 VREF (pin 15)   →  Raspberry 3,3 V
MCP3008 AGND (pin 14)  →;  Raspberry GND
MCP3008 CLK (pin 13)   →  Raspberry SCLK
MCP3008 DOUT (pin 12)   →  Raspberry MISO
MCP3008 DIN (pin 11)   →  Raspberry MOSI
MCP3008 CS (pin 10)   →  Raspberry CE0
MCP3008 DGND (pin 9)  →   Raspberry GND

Le code

Comme vous pouvez le constater, la routine ReadChannel se charge, en trois lignes de code, de toute la communication entre le Raspberry Pi et le MCP3008.   À partir du moment où vous l'incluez dans votre script, le reste n'est guère plus compliqué qu'utiliser AnalogRead avec Arduino.



Référence

Je n'ai pas trouvé ça tout seul!   Un article du blog Raspberry-Spy m'a été très utile.

Yves Pelletier (Twitter:  @ElectroAmateur)

vendredi 14 mars 2014

Transformation d'un vieil écran d'ordinateur portable en moniteur HDMI-VGA-DVI

D'une part, j'avais encore ce vieil ordinateur portable (un Powerbook G3 Wallstreet) qui avait cessé de fonctionner il y a quelques années:  je trouvais bien dommage que son écran LCD ne serve plus à rien.

D'autre part, j'avais besoin d'un moniteur HDMI  pour mon Raspberry Pi:  de préférence pas trop cher, et pas trop encombrant...de la taille de mon écran d'ordinateur portable, par exemple...

J'ai donc transformé l'écran LCD du vieil ordinateur portable en un moniteur muni d'une entrée VGA, d'une entrée DVI et d'une entrée HDMI:  je peux donc y brancher mon Raspberry Pi, ou n'importe quel autre ordinateur.

J'aurais bien aimé vous impressionner en vous racontant comment j'ai réussi cet exploit en contrôlant le moniteur au moyen d'un Arduino judicieusement programmé et d'une poignée de composants passifs, mais non, c'est beaucoup moins héroïque que ça:  je me suis procuré un circuit tout fait.

On peut effectivement trouver sur eBay des kits nommés "HDMI+VGA+DVI+Audio LCD controller board for lcd panel DIY LCD monitor" pour la somme d'environ $40 (30 euros), incluant les frais de port (il est possible d'acheter une version uniquement VGA  pour beaucoup moins cher, mais je tenais au HDMI pour y brancher facilement mon Raspberry Pi).  J'ai acheté le mien du vendeur chinatobby2011.

Le kit contient:

1)   un contrôleur d'écran LCD (modèle M.NT68676.2A), qui interprétera les signaux HDMI, DVI ou VGA qui proviennent de l'ordinateur:



2) un onduleur (inverter) qui est responsable d'alimenter le rétroéclairage:                                                                                                                                         


3)  un module comportant 5 boutons poussoir (pour que l'utilisateur puisse contrôler le contraste, la luminosité, etc.)


...et tout le câblage nécessaire pour relier tout ça à votre écran LCD.

Vous devrez vous-mêmes fournir l'alimentation de 12 V et le câble HDMI, DVI ou VGA qui servira à relier l'ordinateur au moniteur.

Au moment où vous commandez le contrôleur, vous devez spécifier au vendeur le numéro de modèle de votre écran LCD, qui est indiqué sur une étiquette située à l'arrière de l'écran.  Pour accéder à cette étiquette, vous devez démonter le cadre qui supporte l'écran.  Dans mon cas, il s'agissait de retirer quelques vis qui étaient dissimulées par des capuchons de caoutchouc.  Une fois l'écran sorti de son cadre, j'ai pu constater qu'il s'agissait d'un Samsung LT141X2-124.

Deux semaines plus tard, le kit était chez moi (c'est drôlement rapide pour une commande en provenance de Chine, habituellement c'est le double).  Comme il fallait s'y attendre, on ne m'a pas fourni le moindre soupçon de manuel d'instruction... Mais heureusement, les trois cartes étaient déjà reliées entre elles.  Il ne me restait donc qu'à brancher l'onduleur et le connecteur LVDS (low voltage differential signaling):  aucune soudure n'est nécessaire.

L'onduleur était déjà muni d'une paire de fils (un rose et un blanc):  je les ai retirés et j'ai branché ceux du moniteur au même endroit, en respectant les couleurs.

Pour le connecteur LVDS, c'était un brin plus délicat, car rien n'indiquait dans quel sens le connecteur devait être inséré.  Alors j'ai essayé un peu au hasard, en espérant qu'en cas d'erreur il ne se produirait rien de trop grave (c'était le bon sens, donc j'ignore toujours ce qui serait arrivé si j'avais fait le mauvais choix).

Puis il restait à trouver une alimentation de 12 volts (centre positif):  j'ai pris une alimentation ATX d'ordinateur en attendant de trouver un adapteur mural moins encombrant.  J'ai mesuré une intensité de courant d'environ 750 mA pendant le fonctionnement du moniteur, je vais donc partir à la recherche d'une alimentation d'au moins 1 A.

On branche le Raspberry Pi au moyen d'un câble HDMI, et voilà!  Ça marche!


Reste à faire quelques réglages pour optimiser la qualité de l'image au moyen des boutons poussoirs qui viennent avec le contrôleur.

Est-ce que ça vaut le coup?  À vous de voir:  30 euros, c'est moins cher qu'un moniteur neuf et vous avez la satisfaction d'avoir prolongé la vie utile de votre écran LCD.  Puisque le circuit est déjà tout fait à l'avance, l'aspect DIY du projet se limite essentiellement à la construction  d'un cadre/support pour votre écran (moi, j'ai remis l'écran dans son cadre initial (celui de l'ordinateur portable) et j'ai vissé les cartes à l'arrière.  Il me reste à lui ajouter un petit machin à l'arrière pour qu'il tienne debout tout seul.  L'aspect final ne sera ni professionnel, ni esthétique...

Yves Pelletier (Twitter:  @ElectroAmateur)

samedi 8 mars 2014

Contrôler les pins GPIO du Raspberry Pi

Je vous explique aujourd'hui comment faire un programme en Python permettant de lire ses entrées et de contrôler ses sorties GPIO (general purpose input output).

Sans trop de surprise, cette première expérience consistera à allumer une LED en appuyant sur un bouton poussoir: nous aurons donc l'occasion d'utiliser une entrée (commandée par le bouton) et une sortie (qui contrôlera la LED).

Voici un schéma montrant les 40 pins GPIO du Raspberry Pi 2:



Et voici les 26 pins GPIO du premier modèle de Raspberry Pi.


Puisque les concepteurs de matériel informatique détestent la simplicité, ces pins peuvent être numérotées de deux façons différentes.  On peut les numéroter en mode BOARD (en bleu sur le dessin) ou en mode BCM (en jaune sur le dessin).

Le mode BCM semble défier toute logique:  la pin 27 se situe entre la pin 17 et la pin 22, la pin 8 est à côté de la pin 25, et plusieurs numéros (1, 5, 6, 12, 13, 16, etc.) n'existent même pas.  Comme si ce n'était pas suffisant, certaines des pins portent un numéro différent selon que votre Raspberry Pi est de révision 1.0 ou 2.0 (le dessin ci-dessus concerne la révision 2).

La numérotation en mode BOARD respecte l'ordre dans lequel les pins sont disposées sur la carte.  Mais attention:  certaines pins ne peuvent pas être utilisées comme entrée, ni comme sortie programmable.  Quoi que vous fassiez, les pins 2 et 4 sont à 5 V, les pins 1 et 17 sont à 3,3 V, et les pins 6, 9, 14, 20 et 25 sont à 0 V (GND).

Allumons une LED

Nous allons relier une LED à la pin GPIO 25 (en BCM), qui est en fait la 22e pin si on les compte dans l'ordre (en mode BOARD). Pour protéger la LED, il faut la mettre en série avec une résistance d'une centaine de ohms (ça peut être un peu plus) qui est elle-même reliée à la masse (une des nombreuses pins GND, par exemple la numéro 6).  De cette façon, lorsque la pin 25 se mettra au niveau logique "haut" (3,3 V), la LED s'allumera.  Lorsque la pin 25 sera au niveau logique "bas" (0 V), la LED sera éteinte.

La LED doit être placée dans le bon sens:  la broche la plus longue du côté de la pin 25 du Raspberry Pi, et la broche la plus courte du côté de la résistance.

Avant d'ajouter le bouton, on peut mettre notre petit circuit à l'épreuve avec le traditionnel programme qui fait clignoter une LED. Puisque ce programme n'est pas très long, vous pouvez le recopier dans Nano, l'éditeur de texte présent par défaut dans le Raspberry Pi.  Personnellement, ne disposant pas d'un moniteur HDMI pour mon Raspberry PI, je préfère écrire mes programmes sur un PC (avec l'éditeur NotePad++), et je les copie sur le Raspberry Pi en utilisant le logiciel WinSCP.

Le programme suivant, intitulé BlinkBCM.py, est conçu pour faire clignoter la LED.  Les deux premières lignes du programme ont principalement pour but de me permettre d'insérer des caractères accentués à l'intérieur des commentaires.  Fiez-vous sur les commentaires pour comprendre le fonctionnement du reste du programme.



Si vous tapez "python BlinkBCM.py", la LED devrait se mettre à clignoter.  Si ce n'est pas le cas, revérifiez votre circuit.  (Avez-vous branché la LED dans le bon sens?  Est-elle branchée à la bonne pin?). Pour interrompre l'exécution du programme, vous pouvez faire "contrôle-c".

Le programme ci-dessus utilise la numérotation BCM, et fait donc référence à la pin 25 du Raspberry Pi.  Si vous préférez, vous pouvez utiliser le mode BOARD et faire référence à la pin 22 (voir le programme ci-dessous).




Ajoutons un bouton

Ensuite, nous allons utiliser un bouton poussoir qui permettra de mettre la pin GPIO 24 (la 18ème pin) à 3,3 V (si le bouton est enfoncé) ou à 0 V (si le bouton est relâché).  Pour ce faire, le bouton sera relié à une résistance de tirage (j'ai utilisé 10 kilohoms).

Attention:  votre bouton doit être relié à une pin de 3,3 volts et non à une pin de 5 V!  Les entrées du Raspberri Pi sont conçues pour fonctionner en 3,3 V.

Voici le programme en mode "BCM":

1)  On importe la bibliothèque RPi.GPIO, spécialement conçue pour nous permettre d'interagir avec les pins GPIO.
2) On choisit le mode de numérotation BCM
3) On indique que la pin 24 sera une entrée
4) On indique que la pin 25 sera une sortie
5) Jusqu'à l'interruption du programme, on vérifie sans cesse l'état de l'entrée 24, et on règle la sortie 25 à la même valeur.


Si vous préférez la numérotation en mode  "BOARD":


Quand ce programme est exécuté (par la commande  "python boutonLedBOARD.py "), la LED s'allume pendant que le bouton est enfoncé, et s'éteint quand le bouton est relâché.

Maintenant, on pourrai ajouter un potentiomètre qui nous permettrait de contrôler de façon graduelle l'intensité lumineuse de la LED.  Pour ce faire, il s'agit d'utiliser une des entrées analogique du Raspberry Pi, comme par exemple la pin numéro...quoi?!?!?   Le Raspberry Pi ne comporte pas d'entrées analogiques???

Ha bon.  Alors nous nous arrêtons ici...pour l'instant.

Voir l'article suivant:  Lecture de capteurs analogiques sur le Raspberry Pi

Si vous préférez, vous pouvez également contrôler les pins GPIO au moyen de Scratch ou de Processing.

Yves Pelletier (Twitter:  @ElectroAmateur)

Source:  Getting Started With the Raspberry Pi, par Matt Richardson et Shawn Wallace.

vendredi 7 mars 2014

Capacitive Touch BoosterPack et Energia


Aujourd'hui, on s'amuse avec le Capacitive Touch BoosterPack de Texas Instrument.  Un boosterpack, c'est l'équivalent d'un shield Arduino, mais conçu pour le MSP430 Launchpad.  Ce boosterpack en particulier permet de remplacer des boutons conventionnels par une espèce de trackpad sensible au toucher.

Ça fonctionne sur le même principe qu'un écran tactile: lorsque vous mettez un de vos doigts en contact avec la surface du boosterpack, vous augmentez sa capacité (votre corps devient un condensateur relié en parallèle avec la surface tactile).

Programme de démonstration

Le boosterpack est accompagné d'un microcontrôleur MSP430G2452IN20 pré-programmé qu'on peut insérer dans le Launchpad (à la place du microcontrôleur initial) pour obtenir une démonstration immédiate de ses possibilité.


Après avoir inséré ce circuit intégré dans le Launchpad, il faut retirer les deux jumpers J5 (ils sont situés à côté du bouton, dans le coin inférieur gauche de la carte), puis s'assurer que les jumpers J3 Rx et Tx sont en position verticale et non en position horizontale (contrairement à la photo ci-dessus).

Le programme de démonstration peut alors être utilisé de façon autonome (les 9 LEDs du boosterpack s'allument tour à tour en fonction de la position de notre doigt) ou en liaison avec un logiciel Windows qu'on peut télécharger sur le site de Texas Instrument:  CapTouch_BoosterPack_UserExperience_GUI.exe reproduit à l'écran de l'ordinateur la surface du boosterpack et indique graphiquement les endroits qu'on touche, alors que 430Boost_CapTouchMediaPad.exe permet de contrôler Windows Media Player  au moyen de la surface tactile du boosterpack.

Programmer pour le boosterpack avec Energia

Ces démonstrations sont bien jolies mais bien entendu, ce qui nous intéresse surtout, c'est la possibilité d'utiliser le Capacitive Touch BoosterPack à l'intérieur de nos propres programme.  À cause de ma violente allergie à Code Composer Studio, j'ai ignoré la bibliothèque et les exemples fournis par Texas Instruments et je me suis plutôt tourné vers Energia et la biblothèque CapTouch mise au point par Robert Wessels.

Quelques exemples accompagnent cette bibliothèque, mais voici un petit sketch de mon cru, qui affiche dans le Moniteur Série d'Energia le nom de la zone qu'on touche du doigts sur la surface tactile du boosterpack (centre, haut, bas, gauche ou droite).  Avant d'utiliser ce sketch, il faut avoir installé la bibliothèque CapTouch (en la plaçant dans le répertoire energia\hardware\msp430\libraries) et placer les jumpers J3 Rx et Tx du Launchpad en position horizontale, comme sur la photo ci-haut (sinon rien ne s'affichera dans le Moniteur Série).  De plus, vous désirerez peut-être réinstaller le microcontrôleur qui se trouvait initialement dans le Launchpad, pour ne pas effacer le programme de démonstration fourni par Texas Instruments.


Un inconvénient du Capacitive Touch BoosterPack, c'est qu'il recouvre la totalité des pins GPIO du Launchpad:  il n'y a plus de pins disponibles pour ajouter d'autres capteurs, un afficheur, etc.  Je suppose que la solution la plus évidente consiste à transmettre les données du boosterpack vers un ordinateur ou  un autre microcontrôleur.  Autre possibilité:  quelqu'un qui ne désire pas utiliser les LEDs du boosterpack pourrait libérer 5 pins du Launchpad et y brancher autre chose.

Yves Pelletier (Twitter:  @ElectroAmateur)

(Le Capacitive Touch BoosterPack utilisé pour cet article a été fourni gratuitement par Farnell.fr.)

mercredi 5 mars 2014

Tentative pas tellement inspirée de ramener à la vie un téléviseur DSP Samsung

Sachant que je m'intéresse à l'électronique, mon voisin m'a donné cet énorme téléviseur Samsung HL-P5663W qui ne fonctionne plus depuis quelques années.  J'ai accepté l'offre avec un certain enthousiasme mais avec un espoir somme toute très modéré...il y a quand même une grande différence entre construire soi-même des montages électroniques simples, et réparer un appareil complexe conçu par une multinationale qui préférerait de loin vous en vendre un nouveau.

Les symptômes:  le téléviseur s'allume normalement, mais au bout de 30 secondes l'écran devient noir, puis l'appareil s'éteint complètement.  Les trois voyants "Timer",  "Lamp" et "Standby Temp" clignotent, ce qui est supposé indiquer que la lampe est défectueuse...mais ce diagnostic est malheureusement incertain.

J'ai effectué quelques recherches dans des forums de discussion pour constater que la même chose est arrivée à plein de propriétaires de ce genre de téléviseur.  Le remède préconisé consiste d'abord à acheter une lampe de remplacement, surtout qu'il est préférable de remplacer la lampe tous les 2 ans (!!!).  Il est possible de trouver une véritable lampe Phillips pour une centaine de dollars (les substituts fabriqués par d'autres compagnies sont déconseillés).  Si je suis chanceux, ça va régler le problème, mais ce n'est pas sûr.


Alors si l'installation de la nouvelle lampe n'a pas réglé le problème, on achète un nouveau ballast (c'est le circuit qui fournit à la lampe la tension élevée nécessaire à son allumage, tout en limitant le courant qui la traverse une fois qu'elle est allumée).  Un ballast de remplacement est un peu plus difficile à trouver, et ça aussi ça coûte une centaine de dollars.

Pour de nombreuses personnes, l'installation de la nouvelle lampe et du nouveau ballast règle le problème, mais pas pour tous.  L'étape suivante consiste donc à se procurer une "color wheel" de remplacement:  ce filtre coloré qui tourne a haute vitesse finit par s'endommager, et il faut le changer de temps à autres.  Le prix d'une color wheel?  Vous l'aurez deviné:  une centaine de dollars.

Et j'ai lu des témoignages de gens dont le téléviseur continuait de s'éteindre tout seul malgré le remplacement de la lampe, du ballast et de la color wheel!  Et il faut alors songer à remplacer le bloc d'alimentation, ou la carte dmd, peu importe ce que dmd peut bien signifier.

Mouais...ça s'annonce mal.  J'hésite beaucoup à investir dans l'achat de pièces de remplacement sans la moindre garantie que leur installation réglera mon problème (et si ça marche, combien de temps tiendront-elles le coup?).

J'ai quand même jeté un coup d'oeil à l'intérieur, en espérant trouver un condensateur gonflé, un fusible grillé, une anomalie évidente et facile à réparer...

Un petite trappe située à l'arrière du téléviseur permet d'accéder à la lampe pour la remplacer:  on ouvre la trappe après avoir retiré les 4 vis qui la maintiennent en place.


Pour enlever la lampe, on retire une seule vis (entourée en vert sur la photo ci-dessous), et on tire:  le boîtier de la lampe glisse sur un rail, comme un tiroir.  Une inspection visuelle n'indique rien de particulier.  De plus, je sais que la lampe s'allume pendant quelques dizaines de seconde avant que le téléviseur ne s'éteigne tout seul.


Un petit interrupteur bleu a été conçu pour empêcher le fonctionnement du téléviseur quand la trappe n'est pas en place (pour éviter qu'on soit soumis à du rayonnement ultraviolet, je crois).  Je l'ai encerclé en rouge sur la photo ci-dessus.  Des tas de gens rapportent avoir ressuscité leur téléviseur en maintenant l'interrupteur dans la bonne position grâce à un bout de ruban gommé.  Malheureusement, ce n'est pas la solution à mon problème (lorsque l'interrupteur est dans la mauvaise position, le téléviseur ne s'allume pas du tout, alors qu'il s'allume pendant 30 secondes quand l'interrupteur est dans la bonne position).

lundi 3 mars 2014

Transformer un câble en nappe IDE en connecteur pour Raspberry Pi

Il y a quelques jours, une astuce publiée sur le blog "The Raspberry Pi Hobbyist" de Ted B. Hale a attiré mon attention:  un câble en nappe conçu pour brancher un lecteur de disquettes ou un disque dur dans un antique ordinateur de bureau peut très bien être utilisé pour relier les pins GPIO (general purpose input output) de votre Raspberry Pi à un breadboard.  Ça tombait bien:  j'avais justement une nappe de ce genre à l'intérieur d'un vieil ordinateur décédé.

(En effectuant quelques recherches supplémentaires, j'ai réalisé que François Dion en avait déjà parlé dans Fait Main vol. 1, mais je n'avais pas été très attentif à l'époque, n'ayant pas encore de Raspberry Pi) .

Ces nappes comportent 34 ou 40 câbles, alors que le Raspberry Pi n'en requiert que 26...  On peut quand même l'utiliser sans modification, mais les connecteurs non-utilisés vont déborder.  C'est particulièrement problématique si votre framboise se trouve à l'intérieur d'un boîtier...


Autre inconvénient:  à l'autre extrémité, les deux rangées de connecteurs femelles ne sont pas ce qu'il y a de plus pratique pour un breadboard.

J'ai donc décidé d'améliorer un peu l'idée de départ en coupant le connecteur femelle au moyen d'une petite scie pour qu'il ne comporte que les deux rangées de 13 connecteurs femelles requises par le Raspberry Pi, et en retirant de la nappe les fils inutiles (ça se fait très facilement avec les doigts).  La photographie ci-dessous montre l'original (à droite) et la version modifiée (à gauche).



À l'autre extrémité, j'ai soudé les fils à deux rangées de headers mâles judicieusement espacés de façon à pouvoir facilement être insérés dans un breadboard.




Voilà:  le résultat rappelle un peu le T-Cobbler d'Adafruit, sauf que ça n'a rien coûté.

Reste à voir ce qu'on peut faire, côté logiciel, pour contrôler ces pins GPIO:  ce sera le sujet d'une prochaine rubrique, je suppose.

Yves Pelletier (Twitter:  @ElectroAmateur)
Related Posts Plugin for WordPress, Blogger...