samedi 23 janvier 2016

Explorons les transistors bipolaires

Aujourd'hui, je vous propose une petite expérience pas trop compliquée qui nous permettra d'explorer le fonctionnement d'un transistor bipolaire.

Avant de commencer: quelques informations de base sur les transistors

Un transistor bipolaire est toujours constitué de 3 broches qu'on appelle la base, le collecteur et l'émetteur.


(Il existe d'autres types de transistors, comme par exemple les transistors à effet de champ (MOSFET, JFET).  Les 3 broches s'appellent alors la grille, le drain et la source, mais ne mélangeons pas tout: aujourd'hui, nous nous limitons aux transistors bipolaires.)

Il existe deux types de transistors bipolaires:  les transistors NPN et les transistors PNP.  Dans un schéma de circuit, il sont représentés de la façon suivante:


Dans un transistor bipolaire, un faible courant qui circule dans la base du transistor permet de contrôler un courant beaucoup plus intense qui circule par le collecteur et l'émetteur.  Le sens dans lequel nous faisons circuler ces courants n'est pas le même dans un transistor NPN et dans un transistor PNP.
Deux courants entrent dans le transistor NPN (IB et IC), et un seul courant en sort (IE).  Si on applique la loi des noeuds de Kirchhoff, qui affirme sans grande surprise que la somme de tout ce qui entre est égale à la somme de tout ce qui sort, nous pouvons déduire que IE = IB + IC.

De plus, puisque IB est très petit:    IE =  IC.

Au moyen de la loi des mailles du même Gustav Kirchhoff, on peut également constater que la différence de potentiel entre le collecteur et l'émetteur est égale à somme de la différence de potentiel entre le collecteur et la base, et la différence de potentiel entre la base et l'émetteur:

                     VCE = VCB + VBE

Maintenant, expérimentons!

Puisque les transistors NPN sont plus souvent utilisés que les transistors PNP, j'ai choisi d'utiliser un un transistor de ce type pour mon expérience.  J'ai fait cette expérience avec un 2N3904, mais si vous préférez utiliser un autre modèle de transistor NPN (2N2222, BC548, etc), ça devrait parfaitement faire l'affaire.

Une consultation de la fiche technique du 2N3904 (ou du modèle que vous avez choisi d'utiliser) permet de distinguer ses broches l'une de l'autre (ce n'est pas toujours identique d'un transistor à l'autre).

Et pendant qu'on y est, voyons quelles sont les valeurs à ne pas dépasser, sous peine de détruire notre transistor.


Il faut donc s'assurer de ne pas dépasser 60 volts entre le collecteur et la base, 40 volts entre le collecteur et l'émetteur, et 6 volts entre l'émetteur et la base.  Puisque j'ai l'intention d'alimenter mon montage avec une tension de 5 volts, aucune de ces valeurs ne risque d'être dépassée...  Il nous reste à nous assurer, en choisissant des résistances de valeurs appropriées, que le courant traversant le collecteur ne dépasse jamais 200 mA.


Circuit 

Le circuit illustré ci-contre est fortement inspiré de celui que propose Charles Platt à la page 81 de son livre "L'électronique en Pratique" (Éditions Eyrolles, collection Serial Makers).  J'ai toutefois jugé plus pratique d'utiliser une source de tension continue de 5 V plutôt que 12 V:  si vous reproduisez cette expérience, vous pouvez utiliser une alimentation USB, la sortie 5 V d'une carte Arduino, ou 4 piles AA (il n'est pas nécessaire que la tension soit précisément 5 V).    Il n'est pas strictement nécessaire d'utiliser les mêmes valeurs de résistances, mais celles qui sont indiquées m'ont permis de faire varier le courant à l'intérieur d'une gamme de valeurs intéressante.



Au moyen d'un multimètre, j'ai mesuré trois paramètres en tournant progressivement le potentiomètre d'une extrémité à l'autre:  le courant qui circule dans la base, le courant qui circule dans le collecteur, et la différence de potentiel entre la base et l'émetteur.

Relation entre le courant dans le collecteur et le courant dans la base

Le graphique ci-contre présente le courant circulant dans le collecteur (axe vertical) en fonction du courant circulant dans la base (axe horizontal).

On peut distinguer deux zones bien distinctes sur ce graphique.  Tout d'abord, pour un courant de base allant de 0 à environ 18 µA, le courant de collecteur est proportionnel au courant de base: c'est ce qu'on appelle la zone linéaire.  Pour des valeurs du courant de base supérieures à 18 µA, le courant de collecteur plafonne à une valeur constante:  c'est la zone de saturation.

Tel que prévu, le fort courant qui circule dans le collecteur dépend du petit courant qui circule dans la base.  Selon vos besoins, vous pourrez utiliser le transistor comme commutateur, ou comme amplificateur.

Commutateur

C'est la façon la plus simple d'utiliser un transistor, puisqu'il n'y a que deux situations possibles:
  • aucun courant ne circule dans la base, donc aucun courant ne circule dans le collecteur (transistor bloqué)
  • un courant circule dans la base, donc un courant (plus intense) circule dans le collecteur (transistor saturé)

Par exemple, vous pourriez utiliser un transistor en mode commutation pour produire un son au moyen d'un haut-parleur branché à une carte Arduino, ou pour contrôler un moteur branché à l'Arduino.  Comme tous les microcontrôleurs, l'Arduino ne supporte pas de très forts courants:  vous alimentez donc la base du transistor avec le faible courant provenant de l'Arduino (en mettant dans le trajet de ce courant une résistance suffisamment grande pour que ce courant demeure faible), et vous vous servez du courant dans le collecteur et l'émetteur pour alimenter le haut-parleur ou le moteur.

Puisque les sorties de l'Arduino n'ont que deux états possibles (0 ou 5 V), votre transistor n'aura également que deux états possibles (présence de courant, ou absence de courant).

Amplificateur

À la condition de demeurer à l'intérieur de la zone linéaire du graphique, notre transistor amplifie le courant par un facteur constant.  Le gain en courant, qu'on symbolise par la lettre grecque β (ou parfois "hfe"), est égal au rapport Ic/Ib.  En utilisant les valeurs du graphique, je constate que mon transistor avait un gain β d'environ 330:  le courant qui traverse le collecteur est donc 330 fois plus intense que le courant qui traverse la base.

(Il ne faudrait pas croire que ce courant amplifié provient du transistor:  il est causé par l'alimentation de 5 volts.  Une augmentation du courant dans la base fait diminuer la résistance interne du transistor dans le trajet collecteur-émetteur, et il en résulte une augmentation du courant à cet endroit).

Cette faculté de produire un courant qui est multiplié par une valeur constante est extrêmement utile pour amplifier un signal analogique (un signal audio, par exemple):  le signal devient plus puissant, mais sa forme demeure la même.


Il y a tout de même un hic:  ce gain en courant β dépend de la température.  Ça signifie que votre transistor n'aura pas un comportement identique selon que vous l'utilisez sous le soleil de juillet ou pendant une randonnée en skis de fond.  Pire encore: la valeur de β peut être très différente d'un transistor à l'autre, mêmes s'ils ont tous le même numéro de modèle!  Un autre transistor 2N3904 utilisé dans les mêmes conditions pourrait très bien me donner un résultat de 100, ou 250!

Pour compenser, les ingénieurs en électronique on mis au point des agencements de résistances qui font en sorte qu'un circuit comportant un transistor se comporte de la même manière peu importe la valeur exacte de β (l'amplificateur de tension à émetteur commun, par exemple).

Tension minimale entre la base et l'émetteur

Si on revient à mon montage expérimental, je vous avais mentionné que j'avais également mesuré la différence de potentiel entre la base et l'émetteur du transistor:  voici le graphique du courant circulant dans le collecteur en fonction de cette différence de potentiel.

Ces données illustrent une caractéristique importante des transistors:  pour qu'ils puissent fonctionner, la différence de potentiel entre la base et l'émetteur doit être d'au moins 0,6 volts. De plus, cette valeur varie assez peu, même si vous faites varier les autres paramètres du circuit.  On peut donc affirmer que, pendant son fonctionnement, la différence de potentiel entre la base et l'émetteur d'un transistor se situe dans les environs de 0,7 volt (le concepteur du circuit doit s'assurer que le transistor sera correctement polarisé).

Et les transistors PNP?

Si vous voulez faire ce genre de mesures sur un transistor PNP (par exemple le 2N3906), vous pouvez utiliser le même montage dans lequel vous inversez la polarité de l'alimentation (ce qui aura pour effet d'inverser le sens du courant dans le transistor).


Yves Pelletier   (TwitterFacebook)

vendredi 15 janvier 2016

Mesurer la fréquence d'un son avec Arduino


Maintenant que je suis en mesure de capturer un signal audio avec mon Arduino, j'aimerais bien que l'Arduino détermine la fréquence fondamentale de ce signal. De cette façon, je pourrais utiliser l'Arduino pour accorder ma guitare.  Ou peut-être même que l'Arduino serait en mesure de reconnaître les notes jouées par la guitare et transmettre à un synthétiseur les messages MIDI correspondants?

Matériel

Aduino Uno, guitare électrique, et interface audio. L'interface audio joue deux rôles très importants: amplifier le minuscule signal électrique émis par la guitare électrique, et faire en sorte que ce signal amplifié demeure dans les limites de tension pouvant être supportées par une entrée de l'Arduino, c'est à dire entre 0 et 5 V. Une fois amplifié et additionné à une tension continue de 2,5 volts, le signal audio est acheminé à l'entrée analogique A0 de la carte Arduino.

Quelques notions de théorie concernant les sons

La fréquence d'un son émis par un instrument de musique détermine la hauteur de la note jouée.  Par exemple, un son dont la fréquence est de 262 Hz est un do, alors qu'un son dont la fréquence est de 440 Hz est un la (pour connaître la note associée à d'autres fréquences, voir ici).

Alors que la fréquence représente le nombre d'oscillations par seconde, la période est le temps nécessaire pour effectuer une oscillation complète.

Pour le signal audio ci-dessous, la période est d'environ 6 ms (ce qui correspond à une fréquence de 167 Hz).
Mesurer la fréquence d'un signal périodique simple comme un sinus ou une dent de scie n'a rien de bien compliqué:  la période est simplement égale au temps écoulé entre deux moments où le signal atteint sa valeur maximale, par exemple.  À la condition que la fréquence du signal soit significativement plus basse que la fréquence à laquelle l'Arduino effectue ses mesures, nous obtenons une mesure fiable au moyen d'un algorithme simple.

Mais les choses se compliquent sensiblement lorsqu'un désire déterminer la fréquence fondamentale d'une note produite par un instrument de musique.  Le signal se répète,  bien sûr, mais sa forme peut être très complexe:  il peut atteindre plusieurs fois la même valeur maximale à l'intérieure d'une même oscillation, traverser plusieurs fois la valeur médiane (qui est ici de 2,5 V) à l'intérieur d'une même oscillation, etc.  De plus, les oscillations ne sont pas toutes rigoureusement identique (par exemple, le signal émis par une corde de guitare devient de moins en moins intense avec le temps).

Le sketch d'Amanda Ghassaei

J'ai trouvé un sketch assez efficace proposé par la jeune physicienne Amanda Ghassaei sur le site Instructables.  Son sketch se trouve à la toute fin de l'article (4e page).

En gros, son algorithme consiste à mesurer la pente du signal chaque fois ce dernier passe par la valeur 2,5 V (qui est la valeur moyenne de notre signal audio), de chronométrer le temps écoulé entre chaque passage par cette valeur, et de vérifier s'il y a une répétition des paires pente/délai.

En général, le convertisseur analogique-numérique de l'Arduino n'est pas d'une très grande rapidité, ce qui peut devenir problématique lorsqu'on cherche à prendre des mesures sur un signal qui varie rapidement, comme c'est le cas ici.   Pour rendre l'Arduino plus rapide, Amanda Ghassaei manipule directement les ports de l'Atmega plutôt que d'utiliser des instructions typiques de la programmation Arduino comme "analogRead".

De plus, grâce à quelques lignes de code placés dans la partie "setUp" de son sketch, elle a modifié les paramètres du convertisseur analogique numérique. De cette façon, le taux d'échantillonnage de l'Arduino devient  38,5 kHz (c'est 4 fois plus rapide que la normale).  En contrepartie, sa résolution est diminuée ( les 5 volts sont réparties sur 255 valeurs possibles, alors que c'est généralement 1024) et les autres entrées analogiques de l'Arduino sont désactivée.

Tests du sketch d'Amanda Ghassaei avec ma guitare électrique

Voici ce que m'a présenté le moniteur série lorsque j'ai mis à l'essai le sketch d'Amanda Ghassei pour chacune des 6 cordes de ma guitare électrique:


Comme vous pouvez le constater, le sketch donne généralement une valeur plausible, mais de temps à autre (une ou deux fois sur dix), une fréquence incorrecte apparaît dans la liste.

Pour améliorer les performances de son programme, Amanda nous invite à modifier deux variables:  slopeTol et timerTol, qui contrôlent respectivement la tolérance lors de la comparaison des pentes et des durées chronométrées.  Je n'ai pas constaté d'améliorations notables en modifiant ces deux paramètres.

Le sktech modifié

J'ai plutôt décidé de filtrer les résultats, puisqu'ils ne sont mauvais qu'occasionnellement.

Avant d'afficher la fréquence au moniteur série, je m'assure d'abord qu'elle se trouve à l'intérieur des valeurs plausibles pour une guitare.   Ma guitare ne devrait pas produire des notes dont la fréquence est inférieure à 50 Hz ou supérieure à 1000 Hz, donc tous les résultats qui ne se situent pas entre 50 Hz et 1000 Hz sont nécessairement des anomalies, qui ne seront pas retenues.

De plus, chaque fois que la fréquence calculée est significativement différente de la fréquence précédente, j'attends une deuxième mesure similaire avant de l'afficher.

Voici ce que ça donne, suite à mes modifications:

(En fait, il arrive encore occasionnellement qu'une mauvaise fréquence soit affichée, mais c'est vraiment rare).

Et voici le sketch d'Amanda Ghassaei, avec une toute petite modification de ma part:


Oui, mais...

Les résultats sont corrects pour ma guitare électrique, mais ça ne fonctionne pas pour n'importe quel instrument.  Par exemple, pour le son de ma guitare acoustique capté par un micro, les faux résultats demeurent très nombreux malgré les modifications que j'ai apportées au sketch.  Pour les sons produits par un clavier musical, les résultats sont très variables dépendant du timbre choisi:  c'est parfois excellent, parfois catastrophiques.

On peut probablement obtenir un résultat intéressant pour un instrument donné en changeant la valeur des variables slopeTol et timerTol, mais il ne semble pas possible de rendre l'algorithme infaillible pour tous les sons possibles.

D'autres solutions

Il existe des algorithme plus robustes, mis au point par des mathématiciens dans le but spécifique de déterminer la fréquence fondamentale d'un signal sonore.  En gros, l'autocorrélation consiste à superposer deux segments sonores et déplacer progressivement l'un des deux segments jusqu'à ce qu'on trouve la position pour laquelle l'écart entre les deux signaux est minimal.   Puisque le sketch proposé plus haut semble répondre à mes besoins immédiats, je n'ai pas poussé très loin mon exploration du sujet, mais je vous indique rapidement quelques pistes intéressantes.

Voici d'abord un article du site Instructables (écrit par David Dein). Malheureusement, puisque ce sketch a été conçu pour un violon, il ne détecte pas les fréquences situées en-dessous de 196 Hz (qui correspond à la note la plus grave pouvant être émise par un violon).  C'est assez problématique pour une guitare, puisque la note la plus grave est de 82 Hz.  On peut certainement éliminer cet irritant en modifiant la valeur de la variable "delay_index_high_limit".  Je n'ai pas pris cette peine, ayant constaté que, même pour des notes au-dessus de 200 Hz, cet algorithme donnait des résultats pitoyables pour ma guitare électrique (il semblait beaucoup plus performant avec mon clavier, toutefois).

Frédéric Hamel a aussi utilisé un algorithme d'autocorrélation lors de la conception de son accordeur de guitare.  Il a été forcé de faire plusieurs compromis afin de rester à l'intérieur des limites de l'Arduino original, basé sur l'Atmega 168 (c'est un projet qui date de 2008).  Je n'ai pas pu tester les résultats car la portion de sketch concernant la détermination de la fréquence se trouve à l'intérieur du sketch complet  (incluant la gestion de l'afficheur LCD, l'envoi de messages MIDI, etc).

J'ai aussi trouvé ce projet très récent, apparemment mené par un garçon de 11 ans avec un peu d'aide de son père (mouais...).  C'est un projet assez complexe, mais très bien documenté,  et il semble que tout le nécessaire se trouve à l'intérieur du fichier "frequency.cpp".

Voilà!  J'espère que vous avez trouvé ici quelques informations utiles pour la réalisation de vos projet...

Yves Pelletier   (TwitterFacebook)

dimanche 10 janvier 2016

Visualisation d'un son avec le traceur série de l'Arduino

Dans mon article précédent, j'ai fabriqué une interface qui transforme un signal audio afin qu'il respecte les limites d'une entrée Arduino (minimum de 0 V, maximum de 5 V).  Grâce à un oscilloscope, j'avais pu constater le fonctionnement correct du circuit:  la forme du signal est préservée suite à l'amplification et la superposition à une tension continue de 2,5 V.

L'étape logique suivante:  si j'achemine ce signal sur une de ses entrées analogiques, l'Arduino voit-il la même chose que moi?

Le montage

La sortie pour casque d'écoute d'un clavier musical est branchée à l'entrée de l'interface précédemment fabriquée, et la sortie de l'interface est acheminée à l'entrée A0 d'une carte Arduino Uno.

Dans un premier temps, je règle le clavier pour qu'il produise un signal simple (dent de scie), et j'appuie sur la touche "do 3" (262 Hz), ce qui donne ce résultat si je mesure le signal à la sortie du clavier, avec un oscilloscope:


Première tentative (ratée...)

Au départ, j'ai naïvement affiché mes mesures une par une dans le moniteur série, puis je les ai copiées dans un tableur pour visualiser le signal.


Échec total; la forme du signal enregistré par l'Arduino  n'avait rien à voir avec la forme du signal d'origine.


Raison:  taux d'échantillonnage trop lent.  Le signal audio variait trop rapidement par rapport au rythme auquel l'Arduino prenait les mesures.

Deuxième tentative (ça fonctionne!)

J'ai croisé les doigts pour que le principal responsable de cette lenteur soit l'affichage de la valeur numérique sur le moniteur série.  Augmenter la vitesse de transmission (baud rate) a semblé améliorer les choses, mais pas suffisamment.

J'ai donc essayé un deuxième sketch, dans lequel je commençait par accumuler une centaine de données, pour ne les afficher qu'à la fin de la prise de mesures.



Et cette fois, le résultat a été beaucoup plus satisfaisant:


En utilisant la fonction "millis()", j'ai constaté qu'environ 11 millisecondes étaient nécessaires pour que l'Arduino effectue les 100 mesures.  Nous voyons sur le tracé que presque 3 périodes ont été effectuées pendant ces 11 millisecondes, ce qui donne une fréquence estimée de 273 Hz, très similaire à la valeur réelle de 262 Hz.

Troisième étape, le traceur série

Le nouveau traceur série de l'IDE Arduino m'a semblé une façon pratique de visualiser le signal audio en temps réel, sans avoir besoin de sortir de l'IDE. Pour étaler un peu l'échelle de temps (horizontale), je dois toutefois ajouter un délai lors du traçage.

Voici donc un sketch qui effectue 200 mesures du signal audio (ce qui nécessite un temps imperceptible de 22 ms), puis affiche le résultat au traceur série (ce qui nécessite une durée d'environ 2 secondes, à cause du délai que j'ai imposé).

J'ai aussi soustrait 512 à la valeur mesurée, qui correspond à la tension continue de 2,5 V, afin que le signal affiché oscille autour de zéro.   De plus j'ai ajouté une suite de zéros pour séparer les différentes suites de mesure.




 Le do situé un octave plus bas (131 Hz) comporte deux fois moins d'oscillations:






Et le do situé un octave plus haut (523 Hz) en comporte deux fois plus:





Essayons maintenant des formes plus complexes... Voici le do 262 Hz joué avec plusieurs timbres différents, en comparant le résultat affiché par l'Arduino (en haut, en bleu) à celui obtenu à l'oscilloscope (en bas, en rouge).

Imitation de clarinette:


Imitation de hautbois:


Imitation de saxophone alto:




Imitation de trompette:


Et un dernier test:  une guitare électrique branchée sans ampli (j'ai dû régler le gain de mon interface audio au maximum):





Yves Pelletier   (TwitterFacebook)

samedi 9 janvier 2016

Fabrication d'une entrée audio pour Arduino

Ayant en tête quelques projets impliquant le traitement d'un signal audio par une carte Arduino, j'ai construit une interface qui transforme la tension d'un signal audio pour qu'elle se situe entre 0 et 5 V.

Signal audio?

Le signal audio que je désire transformer est déjà sous forme électrique.  Il peut être issu d'un lecteur mp3, d'une chaîne stéréo, d'une guitare électrique, d'un clavier électronique, d'un microphone, de la carte de son d'un ordinateur... Il s'agit donc d'une tension électrique qui varie de la même façon qu'une onde sonore; si on y branche un haut-parleur, il en résulte un son audible.

Le problème...

Sauf que cette tension est centrée autour de 0 V, ce qui signifie qu'elle prend souvent des valeurs négatives.  De plus, elle est typiquement très faible (généralement 1 volt ou moins).


À titre d'exemple, la figure ci-dessus montre le signal obtenu à la sortie pour casque d'écoute d'un clavier électronique, réglé pour produire un son de trompette.  Le signal oscille entre -0,8 V et + 0,8 V environ.

Les entrées de l'Arduino sont conçues pour recevoir des tensions positives situées entre 0 et 5 V.  La fonction du circuit que je présente aujourd'hui est donc, d'une part,  d'amplifier le signal pour qu'il soit plus facile à mesurer au moyen de l'Arduino et, d'autre part, le superposer à une tension continue de 2,5 V afin que la tension reçue par l'Arduino ne soit jamais négative.


Ci-dessus:  le même signal, après transformation:  il oscille maintenant entre 1,5 V et 4,2 V environ: donc plus intense, et jamais négatif.

La solution!

Je n'ai eu aucune difficulté à trouver diverses propositions de circuit sur internet impliquant, sans surprise, un amplificateur opérationnel.  Dans la plupart d'entre elles, toutefois, l'amplificateur opérationnel est alimenté par une tension de 9 V, ce qui engendre à mon point de vue deux inconvénients:  la nécessité d'utiliser une source de tension distincte pour l'amplificateur opérationnel même quand l'Arduino est déjà branché à un ordinateur par un câble USB, et le danger que la tension de sortie de l'ampli soit supérieure à 5 V (ce qui est risqué pour l'Arduino).

Mon circuit est basé sur les résultats d'une discussion sur le forum Stack Exchange, sauf que j'utilise un amplificateur opérationnel TLC272 alimenté par la sortie 5 V de la carte Arduino.  De cette façon, aucun risque que la tension à la sortie de l'ampli soit plus petite que 0 ou plus grande que 5 V.

Autre différence par rapport au circuit d'origine:  j'ai ajouté un potentiomètre qui permet d'augmenter le gain de l'amplificateur.  Ça rend le circuit plus polyvalent:  je peux régler le gain à une valeur élevée si le son provient d'une guitare électrique (sans avoir d'abord passé par un ampli), ou à une valeur beaucoup plus faible si le son provient de la sortie déjà amplifiée conçue pour brancher un casque d'écoute.

Le circuit

Les résistances R1, R2 et R3 forment un diviseur de tension grâce auquel la tension à l'entrée + du TL272 est de 2,5 V.  Le condensateur de liaison C2 laisse passer le signal audio, qui viendra donc s'additionner à la tension continue de 2,5 V.  Par contre, il empêche cette tension de 2,5 V d'atteindre la source du signal audio (ce qui pourrait causer des dégâts!).

Le condensateur C1, allié à la résistance R1 forme un filtre qui empêche de possibles fluctuations de l'alimentation de 5 V de se superposer au signal sonore.

Les résistances R4, R5 et R6 sont branchées de façon à configurer le TLC272 en amplificateur non-inverseur.  Le gain de l'amplificateur est égal à 1 + (R5+R6)/R4.  Donc quand le potentiomètre est réglé à zéro, le gain est de 2, et quand il est réglé au maximum, le gain est de 5,5.

(Notez que la valeur de tous les autres composants du circuit ont été calculés en supposant l'absence de potentiomètre, on peut donc présumer que le comportement du circuit est optimal lorsque le potentiomètre est réglé à zéro.)

Le condensateur C3 permet d'éviter que la composante continue du signal (2,5 V) soit amplifiée en même temps que la composante alternative.

Connecteur 

Pour l'entrée du signal audio, j'ai utilisé une prise jack pour casque d'écoute.  Le signal audio est véhiculé par la pointe, alors que le manchon est relié à la masse (GND).  Je n'ai pas utilisé l'anneau, qui transporte un autre signal audio (pour un effet stéréophonique).



À suivre...

Dans le prochain article, nous tenterons de visualiser le signal audio grâce au traceur série de l'IDE Arduino.

Yves Pelletier   (TwitterFacebook)

vendredi 8 janvier 2016

Installation de l'IDE Arduino sous Linux Mint ou Ubuntu


Lorsque vous désirez installer un logiciel sous Ubuntu ou Linux Mint, on vous recommande généralement d'utiliser le "gestionnaire de logiciels" ou la "logithèque Ubuntu".  C'est simple, et ça garantit que l'application s'installe convenablement.  L'IDE Arduino est bel et bien disponible dans le gestionnaire de logiciels, mais il s'agit malheureusement de l'antique et désuète version 1.0.5  (elle date de mai 2013!).

Pour profiter des innombrables améliorations apportées au logiciel depuis cette antique version, il est nettement préférable d'installer manuellement la version la plus récente du logiciel.   Heureusement, ce n'est ni très long, ni très compliqué. Je vous propose donc cette petite marche à suivre.

N.B.:  Si votre intention est d'installer l'IDE Arduino sur un Raspberry Pi, il semble pour l'instant impossible d'installer autre chose que la version 1.0.5 (en écrivant "sudo apt-get install arduino" dans le terminal).  Les instructions ci-dessous ne fonctionnent pas pour le Raspberry Pi.

Désinstaller l'ancienne version

Si la version 1.0.5 de l'IDE Arduino est déjà présente sur votre ordinateur, il est préférable de la désinstaller.  Pour ce faire, allez dans la logithèque Ubuntu ou le gestionnaire de logiciels de Linux Mint, faites une recherche pour "Arduino" et cliquez sur le bouton "Suppression".  Ne vous inquiétez pas:  vos sketchs et les bibliothèques que vous avez vous-mêmes installées demeureront intacts à l'intérieur du répertoire que vous avez désigné comme "carnet de croquis".


Télécharger la nouvelles version

Vous vous dirigez ensuite sur la page web officielle de l'Arduino, et vous télécharger la version la plus récente conçue pour Linux (vous devez choisir entre 32 bits et 64 bits).



Décompression des fichiers

Le fichier que vous avez téléchargé est un fichier d'archive tar.xz.  Extrayez le répertoire qu'il contient à un endroit qui vous convient sur votre disque dur (l'emplacement exact n'est pas très important).


Script d'installation

Voici le répertoire suite à l'extraction.


À l'intérieur de ce répertoire , on trouve un script d'installation intitulé "install.sh". Si vous exécutez ce script, il va tenter d'installer un raccourci sur le bureau, et un lien vers l'application dans le menu de démarrage.

Sous Linux Mint, lorsque vous tentez d'ouvrir le fichier "intall.sh", il vous demande si vous désirez le lancer ou afficher son contenu:  cliquez sur le bouton "Lancer". 


Ensuite, allez vérifier si un raccourci est apparu sur le bureau...


...et si l'icône de l'application apparaît dans le menu de démarrage, dans la catégorie "Programmation" (étrangement, ça ne fonctionne pas toujours).



Sous Ubuntu, j'ai eu de la difficulté à exécuter le script (ils s'affichait obstinément dans un éditeur de texte au lieu de s'exécuter).  J'ai été obligé d'utiliser le terminal:

Naviguez d'abord jusqu'à l'intérieur du répertoire contenant le fichier "install.sh" au moyen de la commande "cd".

Ensuite, vous réglez les autorisations du fichier pour qu'il puisse être exécuté:

      chmod +x install.sh

...et vous exécutez le fichier:

      ./install.sh

Démarrage du logiciel

Peu importe que vous utilisiez le raccourci du bureau ou le lien dans le menu démarrer, vous devriez réussir à lancer le logiciel (si ça ne fonctionne pas...désolé...vous pouvez toujours retourner au gestionnaire de logiciels pour réinstaller la vieille version 1.0.5!).



Réglage de l'emplacement du carnet de croquis

Le carnet de croquis (ou sketchbook) est le répertoire où vous installez vos bibliothèques et enregistrez vos croquis/sketches/programmes.  Vous pouvez choisir l'emplacement de votre carnet de croquis dans les préférences (accessible par menu fichier).  C'est particulièrement important si vous désirez continuer d'utiliser le même carnet de croquis que vous utilisiez avec l'ancienne version de l'IDE.



Upload d'un sketch dans l'Arduino

Il ne vous reste plus qu'à télécharger un sketch dans votre Arduino, pour vérifier que tout fonctionne correctement.  




Si le téléchargement échoue avec une erreur du genre "Inappropriate ioctl for device":  pas de panique!  Il faut probablement vous ajouter au groupe "dialout".  Pour ce faire, vous ouvrez le terminal, et vous y écrivez la ligne suivante:

sudo usermod -aG dialout $(whoami)

J'ai dû ensuite redémarrer l'ordinateur pour que les changements prennent effet.

Ensuite, si vous écrivez  "groups" (toujour dans le terminal), ça vous présente une liste qui devrait contenir le mot "dialout".

Cette version à jour de l'IDE Arduino devrait maintenant être parfaitement fonctionnelle.

Yves Pelletier   (TwitterFacebook)