samedi 29 juin 2013

Lecture de fichiers mp3 avec Arduino et VS1053


Cet article a été mis à jour le 29 mars 2021.


Le VS1053 est un circuit intégré spécialement conçu pour décoder les principaux formats de fichiers musicaux: Ogg Vorbis, MP3, AAC, FLAC, WMA, MIDI...

Dans cet article, j'explique comment j'ai procédé pour lire les fichiers mp3 stockés sur une carte SD au moyen d'un carte Arduino Uno et d'un module VS1053.




Il existe quelques modèles différents de modules ("breakouts") qui permettent de brancher facilement un VS1053 à un microcontrôleur. Celui que j'ai utilisé a été fabriqué par LCSOFT STUDIO et porte la mention "VS1003/1053 MP3 CODEC".
Adaptation des niveaux logiques

Mêmes s'ils sont munis d'un régulateur de tension qui permet de les alimenter avec une tension de 5 V, le module VS1053 et le module carte SD ont tous les deux un inconvénient un brin irritant lorsqu'on désire les utiliser avec un Arduino Uno: ils sont conçus pour communiquer à un niveau logique de 3,3 V. Pour éviter des les endommager, il est très fortement conseillé d'abaisser à 3,3 V les signaux de 5 V générés par l'Arduino.

Dans un premier temps, j'avais utilisé des diviseurs de tension, tel que je l'avais décrit dans ce premier article sur le VS1053.  Mais avec ce circuit, le lecteur de carte SD cessait souvent de fonctionner aussitôt que j'ajoutais le module VS1053 ...

La stabilité du circuit s'est grandement améliorée lorsque j'ai remplacé les diviseurs de tension par des circuits intégrés 74HC125. Mon circuit est donc le suivant:

Module de carte SD:
SD GND // Arduino GND
SD +5 // Arduino 5 V
SD CS // Conversion 5 V à 3,3 V // Arduino 9
SD MOSI // Conversion 5V à 3,3 V // Arduino 11
SD MISO // Arduino 12
SD SCK // Conversion 5 V à 3,3 V // Arduino 13

Module VS1053:
VS1053 5V // Arduino 5 V
VS1053 DGND // Arduino GND
VS1053 DREQ // Arduino 2
VS1053 XCS // Conversion 5 V à 3,3 V // Arduino 6
VS1053 XDCS // Conversion 5 V à 3,3 V // Arduino 7
VS1053 XRST // Conversion 5 V à 3,3 V // Arduino 8
VS1053 MOSI // Conversion 5 V à 3,3 V // Arduino 11
VS 1053 MISO // Arduino 12
VS1053 SCK // Conversion 5 V à 3,3 V // Arduino 13

Le schéma ci-dessous montre comment je m'y suis pris pour abaisser les signaux de 5 V émis par l'Arduino avec deux CI 74HC125.  Remarquez que j'aurais pu brancher le MOSI des deux périphériques sur la broche 6 du même 74HC125, comme je l'ai fait pour les deux signaux d'horloge SCK, plutôt que les abaisser séparément pour chaque périphérique.  Peu importe l'option choisie, le résultat est le même.



Installation de la bibliothèque VS1053 d'Adafruit

Même si elle a été conçue pour être utilisée avec un autre module VS1053 commercialisé par Adadruit, la bibliothèque VS1053 d'Adafruit fonctionne très bien avec mon module LCSoft Studio.

Seule petite imperfection: dans mon cas, la fonction musicPlayer.begin() ne retourne rien, ce qui devrait arriver uniquement lors de l'échec de l'initialisation du module VS1053. Mais puisque mon module VS1053 se comporte ensuite tout à fait normalement, je me suis contenté d'ignorer cette anomalie (j'ignore s'il s'agit d'un problème exclusif à mon exemplaire, ou si tous les modules VS1053 de LCSoft Studio se comportent de cette façon).

L'exemple ci-dessous joue un après l'autres tous les fichiers mp3 qui se trouvent à la racine de la carte SD. Grâce au moniteur série de l'IDE Arduino, il est possible de monter (+) ou diminuer (-) le volume sonore, de passer à la piste suivante (n), de mettre à pause (p)...

-
-

À lire également:


Yves Pelletier (TwitterFacebook)

mardi 25 juin 2013

Saisie de données (data logging) avec un Arduino



Mise à jour (31 octobre 2016):  voici une version plus récente dans laquelle j'utilise un "data logging shield" plutôt que des composants individuels.

Voici un projet classique qui montre de façon éloquente l'efficacité de l'Arduino pour la conception de systèmes de mesures scientifiques: un "data logger".


Dans ce projet, l'Arduino consigne à toutes les minutes, sur une carte SD,  les valeurs de température et de luminosité mesurées par des capteurs appropriés.

En plus d'un Arduino Uno, j'ai donc utilisé un lecteur de cartes SD muni d'un adapteur lui permettant de recevoir les signaux de 5 V,  un capteur de température numérique DS18B20, une photorésistance et une horloge temps réel (RTC).

Tous ces périphériques étaient déjà prêts à l'emploi, puisqu'ils ont déjà été utilisés dans des articles précédents (que vous pouvez consulter en cliquant les liens du paragraphe précédent).

La seule nouveauté, c'est la sonde d'intensité lumineuse constituée d'une photorésistance branchée en diviseur de tension avec une résistance de 10 kΩ (ma photorésistance varie entre 50 Ω et 200 kΩ, avec une valeurs moyenne d'environ 10 kΩ avec un éclairage moyen).   Cette sonde indique presque 0 dans l'obscurité complète, et pas très loin de 5 V en plein soleil.   Par contre, il ne s'agit que d'une tension donnant une indication grossière de l'intensité lumineuse:  quand l'intensité double, la tension ne va probablement pas doubler.

Les branchements des différents périphériques à l'Arduino sont les suivants:

Le lecteur de cartes SD occupe les pins 10, 11, 12, 13 de l'Arduino (SPI).  Mais prenez garde d'abaisser à 3,3 V les signaux qui doivent l'être (plus d'informations à ce sujet ici).

L'horloge RTC est branchées aux pins A4 et A5 (i2c) de l'Arduino (plus d'infos ici).

Le thermomètre DS18B20 est branché à la pin 7 de l'Arduino (plus d'infos ici).

La sonde à base de photorésistance est branchées à la pin A0 de l'Arduino.

Les données sont enregistrées sur la carte SD sous la forme d'un fichier CSV:  "comma-separated value".  Il s'agit d'un fichier texte destiné à être ouvert dans un tableur comme Excel.  Dans mon sketch, j'ai choisi de respecter la convention adoptée par la version française d'Excel:  les valeurs d'une même ligne sont séparées par des points virgules (plutôt que par des virgules).  De plus, je remplace le point décimal de la température par une virgule.

Pendant le fonctionnement, on peut observer le fonctionnement correct du data logger grâce au moniteur série du programme Arduino:  chaque minute, l'Arduino consigne le temps en secondes depuis le début de la prise de mesure, la date, l'heure, une tension proportionnelle à l'intensité lumineuse, et la température en degrés celcius.

Tel que prévu, les fichier CSV enregistré sur la carte SD s'ouvre facilement dans Excel, et on peut alors effectuer des calculs sur les données, les mettre en graphique, etc.

Ci-contre:  un graphique de la température en fonction du temps pendant quelques heures aujourd'hui.  Journée chaude et humide, puis averse pendant laquelle la température a diminué pour devenir plus confortable.


Il serait utile d'ajouter un dispositif permettant de s'assurer que tout fonctionne correctement pendant que l'Arduino n'est pas branché à un ordinateur.  Car ça doit être un peu frustrant de mettre en place le système pour une série de mesures d'une durée de plusieurs jours, pour ensuite se rendre compte que la carte SD a refusé de s'initialiser au départ.  Ça pourrait être une simple LED qui s'allume en cas d'erreur, ou un afficheur LCD indiquant la dernière valeur mesurée, etc.

Notez qu'Adafruit fabrique un "Data Logging Shield" spécialement conçu pour ce genre d'exercice:  puisque le shield contient déjà un lecteur de carte SD et une horloge RTC, il ne reste plus qu'à brancher les capteurs désirés.

Yves Pelletier (Twitter: @ElectroAmateur)

vendredi 21 juin 2013

Contrôle d'un moteur pas à pas au moyen d'un L6205 (et d'un Arduino)

Le double pont en H L6205 dont je parlais plus tôt cette semaine peut également être utilisé pour contrôler un moteur pas à pas.  Le schéma ci-dessous, largement inspiré de la fiche technique du L6205, fonctionne bien avec les exemples fournis dans l'environnement de programmation Arduino (Menu Fichier / Exemples / Stepper).  Il s'agit de modifier au besoin le contenu de la variable "stepsPerRevolution" pour qu'il concorde avec les caractéristiques de votre moteur.

Ajoutez de préférence deux condensateurs (100 µF et 100 nF) en parallèle avec les deux bornes de la source d'alimentation, le plus proche possible du circuit intégré. Tous les GND sont connectés ensemble (et avec le GND de l'Arduino). Les Power GND sont branchés aux GND à un seul endroit, le plus proche possible de la source d'alimentation.

Tel qu'indiqué, les extrémités des bobinages de votre moteur pas à pas seront branchées aux pins 4, 18, 7 et 13 du circuit intégré.  Si votre moteur est unipolaire (il comporte 5 ou 6 fils), le ou les fils correspondant au centre des bobinages se branchent à la pin 17 (ou, en d'autres mots, à la borne positive de la source d'alimentation du moteur).

Si vous avez de la difficulté à identifier les connexions de votre moteur, cette précédente rubrique pourrait contenir des informations pertinentes pour vous.  Il n'est pas toujours évident de savoir où placer quel fil du moteur mais vous ne risquez pas grand chose si vous faites le mauvais choix:  essayez de permuter des paires de fils si vous constatez que le moteur vibre à la place de tourner...

Yves Pelletier (Twitter: @ElectroAmateur)

jeudi 20 juin 2013

En kiosque ce mois-ci

Petit tour d'horizon des différents magazines d'électronique (quoi de mieux comme lecture pour la plage?).  Vous pouvez cliquer sur le nom de chaque magazine pour accéder au sommaire complet (sur le site web de l'éditeur).

En français:

Électronique Pratique numéro 383 (juin 2013):  Microcontrôleurs PICAXE et communications RF. Émetteur/récepteur en 5,8 GHz vidéo et audio; Liaison « série » sans fil; Compteur d’énergie; Centrale d’alarme universelle à haute sécurité avec antivol; Une « vraie » sirène; Étude comparative de quelques étages de sortie pour préamplificateurs; Amplificateur avec pentodes EL86 sans transformateur de sortie.

Électronique et Loisirs numéro 123 (été 2013): Localisateur GSM/GPS; L’imprimante 3D débarque dans le monde du bricolage; Lecteur MP3 Juke-Box sur clé USB 16 Go; Comment utiliser une LED comme veilleuse et détecteur de lumière; Interrupteur crépusculaire miniature; RaspberryPi un PC au format carte de crédit; Amplificateur stéréo 2 x 10 W; Tutoriel EAGLE CAD V6.

Elektor numéro 420 (juin 2013):  Carte WiFi de commande à distance pour rubans de LED, relais, moteurs, etc., de BASIC à Python 2, Luxmètre céleste, modèle réduit perdu?, chargeur d'accus li-ion, FPGA 5, réveil multifonction, recyclez votre alim ATX, pattes en l'air, trio de LCR, 1963 PSU à tubes, Design Spark sur mesure 1ère journée.

En Anglais:

Nuts and Volts (June 2013):  The Lost Art of Strip Board Prototyping; Building an Electric Guitar; An Electronic Photocell for Lighting Control; Fritzingduino; Getting Started With Surface-Mount Soldering; Taming the DualShock 3 Beast, How to Make a Modern Radio.

Make 34: Robotics:  Cloning the Darwin-Op, Audio console fusion, Ironwood, Soft robots, Prototyping systems for robotics, Solar observatory, The Accidental maker, Toy inventor's notebook, Tracking our bodies, Join the robot uprising, Give old work jeans new legs, Rear view power socket, How to build coffebots, How to document what you make or discover, Make a rope swing, LED photo lights, Monobox powered speaker, Finishing and post-processing your 3D printed objects.



Servo (June 2013): The VEX 2013 World Championships; 3D Printers Part 2: Assembly Highlights; Curiosity and the Self-Driving Car; Interface and Communication Techniques to Control the World (or, at least H-bridges); Open Source Hardware for Robot Projects

Everyday Practical Electronics (July 2013):  6-decade capacitance substitution box, Soft starter for power tools, High power brushless motors from old Cd/DVD drives, Hight-current adaptor for scopes and DMMs, Solar max-out?, Temperature Alarm, Electromagnetic radiation...Ionising vs non-ionising, Flip-flop triggering.

Silicon Chip (June 2013): Get a LiFe with LiFePO4 Cells; High-Resolution Monitor Shoot-Out; LF-HF Up-Converter For VHF/UHF Digital TV Dongles; Digital TV: Where To From Her; Infrared-to-433MHz UHF Transceiver; Simplifying the Ignition Coil Driver; Metal detector uses a TL074 quad op amp; Dual-foldback loudspeaker indicator & protector; Solar-powered 5W trickle-charger for 12V SLA/LA batteries, A "Lump-In-The-Coax" Mini Audio Mixer, Raytheon’s T-2500 7-transistor radio

Circuit Cellar 275: DIY Surface-Mount Circuit Boards, Smart electronics accessories, Testing and testability, Engineering a way to clean solar mirros, UML state machines, Concurrency in embedded systems, Network of keypards, Real-time fuel consumption monitor, The growing importance of control theory for DIYers.

P.S.:  Non, je n'ai pas lu tout ça!

Yves Pelletier (Twitter: @ElectroAmateur)

mercredi 19 juin 2013

Une horloge pour votre Arduino (Real Time Clock)

Il est parfois utile que votre Arduino connaisse la date et l'heure. Par exemple, l'Arduino pourrait être à la base d'un système de mesures automatisé ("datalogging") qui consignera la date et l'heure de chaque mesure, ou encore d'une tâche devant être accomplie tous les jours à la même heure (sauf la fin de semaine), etc.

Comme son nom l'indique, une horloge temps réel ("Real Time Clock" ou RTC) est un circuit intégré dont la principale fonction consiste à mesurer le temps.  Par exemple, il existe sur eBay des modules ("breakout") basés sur le circuit intégré DS1307 de Dallas/Maxim qui peuvent facilement être branchés à un Arduino (protocole i2c):  chaque fois que l'Arduino a besoin de connaître la date ou l'heure, il n'a qu'à interroger le module RTC.

Mais pourquoi, dites-vous, ne pas simplement utiliser les fonctions de mesure de temps déjà incluses dans l'Arduino?  Une instruction comme millis() retourne le temps écoulé depuis le dernier démarrage de l'Arduino, mais sera réinitialisée dès le prochain démarrage.  De plus, millis() atteint sa limite maximale (et retourne à zéro)  au bout d'une cinquantaine de jours.

Un module RTC est muni d'une petite pile qui peut durer plusieurs années (sauf le modèle que j'ai reçu, qui était muni d'une pile rechargeable LIR2032 à la place d'une CR2032:  ces piles perdent leur charge en 1 mois environ...).  Et leur utilisation est d'une incroyable simplicité.

4 fils suffisent pour brancher le module RTC à l'Arduino:

"Sda" :  Arduino A4 (analog in)
"Scl":  Arduino A5 (analog in)
"Gnd":  Arduino GND
"Vcc":  Arduino 5V ou 3V3

La librairie RTClib simplifie énormément la conception des sketches.  La version la plus récente sur trouve ici  (utilisez le bouton "ZIP" pour télécharger la totalité du dossier, que vous installez ensuite dans le répertoire "Librairies" de l'IDE Arduino).

Une fois la librairie installée, ouvrez simplement l'exemple "ds1307"  (menu Fichier/Exemples/rtclib/ds1307) et installez-le dans l'Arduino;  ouvrez le moniteur série et réglez sa fréquence à 57600 bauds:  vous verrez alors défiler la date et l'heure (suivies de quelques informations moins utiles).   Un coup d'oeil sur le sketch vous indiquera comment récupérer les informations voulues (jour, mois, année, etc.).

Si vous constatez que la date et l'heure retournées par votre module RTC sont incorrecte, exécutez à nouveau l'exemple "ds1307" après avoir "décommenté" la ligne "RTC.adjust(DateTime(__DATE__, __TIME__));":  le ds1307 se réinitialisera en utilisant l'heure de votre ordinateur.

Voici finalement un sketch permettant de construire une horloge avec un Arduino, un module RTC et un afficheur LCD.  Pour la façon de brancher l'afficheur LCD à l'Arduino, je vous réfère à cette précédente rubrique.




À lire également: une autre horloge à base d'Arduino, sauf que celle-ci affiche l'heure au moyen de deux galvanomètre à cadre mobile.  Il existe aussi un billet concernant le modèle DS3231.

Yves Pelletier (Twitter: @ElectroAmateur)

mardi 18 juin 2013

Contrôler deux moteurs cc avec un L6205 (et un Arduino)

Le circuit intégré L6205 fabriqué par STMicroelectronics est un variateur à pont en H double pour moteurs CC et pas-à-pas.  Il coûte un peu plus cher que le L293D, mais il supporte des alimentations allant de 7 à 52 volts (le L293D est limité à 36 V) et est muni de protections sophistiquées contre la surchauffe et les courants excessifs.

J'ai testé avec un Arduino le circuit recommandé dans la fiche techique du L6205, et dont voici le schéma (vous pouvez cliquer dessus pour l'agrandir).

Aux connexions indiquées sur le schéma ci-dessus, il est préférable d'ajouter deux condensateurs (100 µF et 100 nF) placés en parallèles avec les deux bornes de la source d'alimentation, le plus proche possible du circuit intégré.  Tous les GND sont évidemment connectés ensemble (et avec le GND de l'Arduino).  Les Power GND sont branchés aux GND à un seul endroit, le plus proche possible de la source d'alimentation.


Côté logiciel, voici un sketch qui illustre comment faire tourner les moteurs ensemble ou un à la fois, en faisant varier leur vitesse et le sens de la rotation.


À lire également

Concernant le contrôle de moteurs à courant continu avec un Arduino, d'autres options s'offrent à vous: utilisation du L298Nutilisation du L293Dutilisation du L9110Sutilisation d'un pont en H de fabrication maison, et utilisation d'un relais DPDT.

De plus, le L6205 dont on parle dans le présent billet peut également être utilisé pour contrôler un moteur pas à pas.

De façon plus générale, vous trouverez sur cette page tous les articles du blog concernant l'utilisation de moteurs de toutes sortes (incluant les servomoteurs et les moteurs pas à pas).

Yves Pelletier   (TwitterFacebook)

lundi 17 juin 2013

Construction d'une base de robot à 2 roues motrices

Voici la base de robot de type "Smart car" que j'ai construite à partir des deux moto-réducteurs que j'avais construits moi-même quelques semaines plus tôt.

J'ai utilisé deux roues de plastique provenant d'un véhicule jouet.  Pour fixer la roue de plastique à la roue d'engrenage la plus lente du moto-réducteur, j'ai utilisé un court tube métallique en guise d'essieu.   Avec de la colle époxy, le tube est collé auto de l'axe de rotation de la roue d'engrenage, donc le mouvement de rotation de cette dernière n'est pas entravé.

Ensuite, il ne restait plus qu'à fixer ces deux roues à une plateforme (j'ai utilisé deux plaques de plastiques provenant d'une imprimante) et d'ajouter une roue folle à l'avant.

Ce châssis bricolé maison (avec 100% de matériaux récupérés) a un comportement assez similaire à ma base commerciale achetée sur eBay, malgré quelques imperfections qui pourront être éliminées dans une prochaine version (un des essieux est un peu de travers, et la distance séparant les deux roues arrière est inutilement grande).

Il ne reste plus qu'à lui ajouter un cerveau (Arduino) et quelques capteurs, et ça devrait donner un robot assez convenable.

Yves Pelletier (Twitter: @ElectroAmateur)


jeudi 13 juin 2013

Moteur électrique alimenté par énergie solaire (3): la solution Miller

Voici ma troisième tentative fructueuse de faire tourner un moteur électrique avec une petite cellule photovoltaïque de 5 V.  Alors que mes circuits précédents utilisaient une diode zener et une LED clignotante, voici maintenant le mythique "Miller Solar Engine", mis au point par Andrew Miller en 1995.

Mes premiers essais semblent confirmer que ce circuit est un peu plus performant que les deux précédents. La principale difficulté, c'est mettre la main sur le "superviseur de tension" responsable de vider le contenu du condensateur lorsque ce dernier contient une charge suffisante. Presque toutes les sources documentaires concernant le "Miller Solar Engine" font référence au superviseur de tension MN1381-J de Panasonic, qui n'est plus en production.  J'ai plutôt utilisé le TC54 de Microchip qui est encore fabriqué, bien que pas nécessairement facile à trouver.


Prenez soin de vous procurer la version "Push-Pull" (TC54VC), plutôt que la version "Open-Drain" (TC54VN).  La parution de l'article que vous lisez présentement a été retardée de 2 semaines parce que j'avais commandé le mauvais modèle...

Le superviseur de tension TC54 ressemble à un petit transistor (boîtier TO-92) muni de 3 pins:  Vout, Vin et Vss (ground).  Son comportement dans le circuit est simple (et vous pouvez facilement le vérifier si vous en avez un exemplaire sous la main):  la tension de sortie "Vout" demeure nulle aussi longtemps que la tension d'entrée "Vin" est plus petite que la tension de référence, et la tension de sortie "Vout" devient égale à la tension d'entrée "Vin" si cette dernière est plus grande que la tension de référence.

Pour mon "Miller Solar Engine", j'ai obtenu d'excellents résultats avec les modèles TC54VC2702EZB (tension de référence:  2,7 volts) et TC54VC3002EZB (tension de référence:  3 volts).  

Voici le schéma du circuit:

Le graphique ci-dessous montre la tension aux bornes de la cellule photovoltaïque (et du gros condensateur) en fonction du temps:  le condensateur se charge progressivement, jusqu'à ce que la tension d'entrée du TC54 atteigne sa tension de référence; à ce moment, le TC54  met sous tension la base du transistor, ce qui permet au condensateur de se vider (partiellement) à travers le moteur.


Ce deuxième graphique montre la tension aux bornes du moteur en fonction du temps.  Le moteur fonctionnait par courtes impulsions intermittentes pendant que la cellule solaire se trouvait à quelques centimètres d'une ampoule incandescente de 60 W.



Pour d'autres informations sur le "Miller Solar Engine", je vous conseille de consulter le site solarbotics .

Pour lire mes articles précédents sur d'autres circuits permettant de faire tourner un moteur par énergie solaire:
Circuit à base de diode zener
Circuit à base de LED clignotante

Yves Pelletier (Twitter: @ElectroAmateur)

mardi 11 juin 2013

Modification d'une alimentation ATX (version 3)

Voici ma troisième alimentation ATX d'ordinateur transformée en alimentation de laboratoire.  Ma première version comportait 5 sorties à tension fixe (-12 V, 3,3 V, 5 V, 12 V), alors que ma deuxième réalisation ne comportait qu'une sortie à tension variable (de 1 à 10 V environ) contrôlée par un potentiomètre.  Cette fois, j'ai décidé de me gâter avec une alimentation comportant 5 sorties à tension fixe (-12 V, 3,3 V, 5 V, 9 V, 12 V) et une sortie à tension variable (1 à 10 volts) en plus de deux mises à la terre (GND).

Ce que j'avais trouvé le plus difficile lors des deux premières réalisations, c'était de percer des trous dans le boîtier métallique (je ne suis vraiment pas équipé pour ça).  De plus, il n'était pas facile de placer tous les fils et autres composants dans l'espace libre très restreint à l'intérieur du boîtier.

Cette fois, j'ai complètement modifié ma façon de procéder.  Tout d'abord, je n'ai pas ouvert le boîtier de mon alimentation ATX (donc pas de risque d'électrocution sur un éventuel condensateur encore chargé), et je n'y ai percé aucun trou.

À la place, j'ai construit un panneau avant avec une petite plaque de bois:  il était donc facile d'y percer des trous pour y installer le potentiomètre (qui contrôle le tension variable), la LED indicatrice (qui s'allume lorsque l'alimentation est sous tension) et les 8 connecteurs à fiche banane.  J'ai fixé ce panneau de bois au boîtier vide d'une seconde alimentation ATX (qui ne fonctionnait plus).  J'ai ensuite fixé ce boîtier vide à mon alimentation ATX, du côté d'où sortent les fils.


Avantages:

  • Percer du bois, c'est beaucoup plus simple que percer du métal...
  • Je dispose maintenant de tout l'espace situé dans le boîtier vide pour disposer mes fils et autres composants (ce qui me permet de placer sans difficulté toutes les sorties désirées)
Inconvénients:
  • Cette alimentation prend deux fois plus de place sur mon établi que les modèles précédents.
  • Pour relier ensemble mon panneau de bois et les deux boîtiers, j'ai utilisé du "duct tape", ce qui n'est ni esthétique ni une véritable solution permanente (d'un autre côté, ça a fonctionné pour Apollo 13 alors...).
Pour ce qui est des branchements:
  • Le fil vert doit être relié à un des fils noirs.
  • Une résistance de 5 W doit être placé entre un fil rouge et un fil noir (j'ai utilisé 100 Ω).
  • Ma LED, en série avec une résistance de protection, est placée entre un fil noir et un fil rouge (j'aurais tout aussi bien pu utiliser un fil orange).
  • Chacun de mes deux connecteurs "GND" est branché à un des nombreux fils noirs.
  • Mon connecteur -12 V est branché au fil bleu
  • Mon connecteur 3,3 V est branché à un des nombreux fils oranges
  • Mon connecteur 5 V est branché à un des nombreux fils rouges
  • Mon connecteur 12 V est branché à un des nombreux fils jaunes
  • Il n'y a pas de fil 9 V sur une alimentation ATX, mais une sortie de 9 V sera utile pour tester des circuits destinés à être alimentés par une batterie de 9 V.  Ma sortie de 9 V est donc alimentée par un régulateur de tension 7809 (lui-même alimenté par un fil jaune).
  • Évidemment, ma sortie variable est alimentée par un régulateur de tension LM317.  (Le schéma ci-dessous est tiré de la fiche technique du LM317:  j'ai utilisé un R1 de 220 Ω et un potentiomètre R2 de 2 kΩ, et l'entrée est un fil jaune à 12 volts).



  • Mon alimentation comportait déjà un interrupteur (si ça n'avait pas été le cas, j'en aurais installé un entre le fil vert et un fil noir).
  • Chaque régulateur est vissé à un radiateur.
On prend bien soin de tout isoler pour éviter que des éléments conducteurs entrent en contact et produisent des courts-circuits...

Ci-dessous, ma première alimentation ATX (à gauche) et ma nouvelle (à droite).



Yves Pelletier (Twitter: @ElectroAmateur)

mercredi 5 juin 2013

Livre: Getting started with the MSP430 Launchpad

Getting started with the MSP430 Launchpad
par Adrian Fernandez et Dung Dang
200 pages, Édition Newnes

Quand j'ai commencé à utiliser mon Arduino, il y a deux ans, j'avais été impressionné par la facilité d'utilisation de l'environnement de programmation et par la grande quantité de livres destinés aux débutants.

Au contraire, lorsque j'ai plus tard tenté d'utiliser mon MSP430 Launchpad pour la première fois, j'avais été rebuté par la complexité de Code Composer Studio et par la difficulté de trouver de la documentation simple, destinée aux débutants.  La documentation mise à notre disposition par Texas Instruments semblait s'adresser à des ingénieurs en électronique!

Résultat:  une partie appréciable du quart de million de MSP430 vendus au prix dérisoire de $4,30 ont pris la poussière sans être réellement utilisés par leur propriétaire.

Les choses commencent à changer.  Tout d'abord, la sortie d'Energia a permis de rendre le Launchpad aussi facile à programmer qu'un Arduino, et voici enfin un livre destiné à ceux qui débutent avec le Launchpad.

Les auteurs savent de quoi ils parlent:  il s'agit de deux ingénieurs qui ont contribué au développement du Launchpad chez Texas Instruments.  Mais ils ont réussi à écrire un véritable ouvrage de vulgarisation destiné aux débutants.  Même s'il ne s'agit pas d'un produit mis au point par Texas Instruments, c'est bel et bien Energia qui est utilisé tout le long du livre pour enseigner l'art de programmer le MSP430.

Le lecteur est invité à essayer un vaste répertoire de courtes expérimentations:   faire clignoter une LED, bien entendu, mais aussi faire varier son intensité avec un potentiomètre, produire un son, utiliser un accéléromètre, communiquer de l'information par UART ou SPI, afficher des données sur un afficheur LCD, etc.

Le lecteur pourra faire tous les projets recommandés s'il dispose d'un MSP430 Launchpad et d'un Educational Booster Pack, mais les auteurs expliquent aussi comment remplacer le Booster Pack par un breadboard muni de quelques composants classiques.

Je ne recommanderais pas ce livre à quelqu'un qui a déjà une bonne expérience de l'Arduino.  Mais pour quelqu'un qui désire faire ses premiers pas en électronique en utilisant le MSP430 Launchpad plutôt qu'un Arduino, ce livre me semble un outil incontournable.

Yves Pelletier (Twitter: @ElectroAmateur)

mardi 4 juin 2013

Futurlec: à éviter!

Le 18 mai, j'ai commandé quelques articles sur le site web de Futurlec:  je n'avais jamais fait affaire avec cette entreprise auparavant, mais leurs prix sont excellents, et l'inventaire est intéressant.

J'ai immédiatement reçu une confirmation de la commande, et ma carte bancaire a été débitée du montant total.  Je supposais que, comme le font tous les fournisseurs en ligne, Futurlec allait expédier mes articles dans les heures suivantes.

Mais non.  Deux semaines plus tard, je contacte leur service à la clientèle après avoir constaté que la page web qui présente le statut de ma commande n'affiche toujours aucune date d'envoi.  Au bout de 48 heures, un préposé m'informe qu'un des articles commandés n'est pas disponible, et qu'il ne le sera pas dans un avenir prévisible.  Il me propose de retirer cet article de ma commande, pour que celle-ci puisse m'être expédiée.


Récapitulons:

  • Futurlec offre sur son site web des produits qui ne sont pas en stock (nous sommes en 2013: n'importe quelle compagnie un peu sérieuse utilise un logiciel qui indique au client, avant même qu'il tente la commande, que l'article n'est pas disponible pour l'instant).
  • Futurlec prend immédiatement l'argent du client, dès le moment de la commande, malgré son incapacité à satisfaire cette commande.  Techniquement, je leur ai prêté de l'argent, sans intérêt.
  • Ensuite, Futurlec attend passivement, sans même prendre la peine d'aviser le client que l'expédition de sa commande est retardée pour une durée indéterminée.
Le pire, c'est qu'il s'agit de leur façon habituelle de fonctionner.  Ils n'en disent évidemment pas un mot sur leur site, mais vous trouverez un peu partout sur le web des témoignages de clients dégoûtés, qui se sont vus offrir le même traitement.

Yves Pelletier (Twitter: @ElectroAmateur)

dimanche 2 juin 2013

Bricoler son propre moto-réducteur

Un moto-réducteur (gear motor) est un moteur électrique muni d'un train d'engrenages qui a pour effet de diminuer sa vitesse de rotation tout en augmentant son moment de force.  Ces dispositifs sont bien pratiques, par exemples, pour la construction d'un robot roulant.


Avec les années, mes tiroirs se sont remplis de petits moteurs électriques retirés de vieux magnétophones, lecteurs de CDs, etc.  Ces moteurs tournent beaucoup trop rapidement pour qu'on puisse les attacher directement à une roue de robot.


J'ai aussi accumulé une bonne quantité de roues d'engrenages provenant d'imprimantes, lecteurs CD, etc.


Puisque je dispose déjà de tout ce matériel gratuit, il m'a semblé approprié de construire mes propres moto-réducteurs.


Puisque mon but est de construire une base de robot de type "smart car" (chaque roue est mue par son propre moteur), je désirais construire deux moto-réducteurs identiques.  J'ai donc choisi deux petits moteurs électriques identiques qui provenaient d'un double magnétophone, et des engrenages en métal provenant de quatre kymographes que j'avais démontés il y a deux ans.  Bien entendu, vous pouvez sans problème utiliser des engrenages de plastique.  Si vous ne disposez pas de deux jeux d'engrenages identiques, vous réussirez peut-être quand même à produire deux trains d'engrenages procurant le même rapport de réduction.

La roue d'engrenage que j'ai fixée au moteur est double:  elle est constituée d'une roue de 30 dents et d'une roue de 45 dents (qui n'est pas utilisée).  La deuxième roue est double aussi:  elle est constituée d'une petite roue de 15 dents et d'une grande roue de 60 dents.  En liant la roue de 30 dents à la roue de 60 dents, la vitesse de rotation est divisée par 2.  Puisque ce rapport me semblait nettement insuffisant, j'ai ajouté une troisième roue de 75 dents en contact avec celle de 15 dents, ce qui divise à nouveau la vitesse de rotation par 5.  Au final, le troisième engrenage effectue donc un seul tour chaque fois que le moteur en effectue 10.

Fixation de la première roue d'engrenage à l'axe du moteur:  le moteur était déjà muni d'une petite poulie en plastique destinée à actionner une courroie.  J'ai alimenté le moteur pour le faire tourner, et j'ai appuyé une lime contre le bord de la poulie pour réduire progressivement son diamètre jusqu'à ce qu'elle soit tout juste assez étroite pour s'imbriquer à l'intérieur du trou situé au centre de l'engrenage.

Chacune doit autres roues d'engrenage est maintenue en place par une tige cylindrique à surface lisse (pour atténuer la friction) et dont le diamètre correspond le mieux possible au diamètre du trou de la roue d'engrenage (s'il y a trop de jeu, le train d'engrenage pourrait mal fonctionner).

Ma première idée consistait à monter le monteur et les engrenages sur une même plaque de bois.  Mais par manque d'habileté et d'outillage spécialisé, je ne parvenais jamais à disposer mes engrenages avec une précision suffisante pour qu'ils tournent correctement:  il s'agit qu'une tige de support soit légèrement inclinée, ou quelle s'écarte de 1 mm de la position désirée pour que tout bloque...

La méthode qui a bien fonctionné pour moi consiste à fixer chaque roue d'engrenage
individuellement sur son propre bloc de bois.  Ensuite, on colle les blocs de bois ensemble dans une position qui permet aux engrenages de bien tourner.  Ça signifie qu'il faut raboter progressivement les blocs jusqu'à ce que la distance soit parfaite, mais dans mon cas ce processus s'est révélé beaucoup plus efficace que tenter de tout agencer avec précision sur le même support.

Pour installer un engrenage, on perce dans le bloc de bois un trou dont le diamètre est légèrement inférieur au diamètre de la tige métallique, puis on y enfonce la tige à coups de marteau (un peu de colle peut aider).  Pour tenir la roue d'engrenage à la hauteur désirée, je l'ai placée en sandwich entre deux petits morceaux de plastique lisse (taillés dans le boîtier d'un quelconque appareil) dans lesquels j'ai percé un trou dont le diamètre était légèrement inférieur à celui de la tige, afin que le morceaux reste bien en place sur la tige.  D'après mon expérience, l'utilisation de colle pour maintenir en place ces petits morceaux de plastique n'est pas une très bonne idée:  malgré tous mes efforts, la colle finissait toujours par se frayer un chemin jusqu'à la roue d'engrenage, qui refusait alors de tourner!

Le moteur,  j'ai utilisé une scie emporte-pièce installée au bout de ma perceuse afin de découper dans le bloc de bois un trou circulaire de diamètre approprié, et j'y ai inséré le moteur avec un peu de colle.

Le résultat final n'est pas vraiment esthétique, mais il est très efficace:  je dispose maintenant de deux solide moto-réducteurs qui tournent très bien, sans blocage.  100% recyclé:  ça n'a rien coûté!


Yves Pelletier (Twitter: @ElectroAmateur)

samedi 1 juin 2013

Cours en ligne: Fundamentals of Audio and Music Engineering: Part 1 Musical Sound & Electronics

La plate-forme éducative Coursera offre à partir du 3 juin un cours en ligne gratuit d'un durée de 6 semaines offert par deux professeurs de l'Université de Rochester: Fundamentals of Audio and Music Engineering: Part 1 Musical Sound & Electronics.  L'objectif du cours est de permettre aux étudiants de comprendre les principes de base de l'acoustique et de l'électronique et apprendre le fonctionnement d'une guitare électrique, d'un amplificateur, etc.  Les étudiants seront encouragés à construire un petit amplificateur de guitare.

Voilà qui semble intéressant!

Yves Pelletier (Twitter: @ElectroAmateur)