[ Arduino 104] Le matériel

Présentation de la carte

Pour commencer notre découverte de la carte Arduino, je vais vous présenter la carte en elle-même. Nous allons voir comment s’en servir et avec quoi. J’ai représenté en rouge sur cette photo les points importants de la carte.


Présentation de la carte Arduino

Constitution de la carte

Voyons quels sont ces points importants et à quoi ils servent.

Le micro-contrôleur

Voilà le cerveau de notre carte (en 1). C’est lui qui va recevoir le programme que vous aurez créé et qui va le stocker dans sa mémoire puis l’exécuter. Grâce à ce programme, il va savoir faire des choses, qui peuvent être : faire clignoter une LED, afficher des caractères sur un écran, envoyer des données à un ordinateur, …

Alimentation

Pour fonctionner, la carte a besoin d’une alimentation. Le microcontrôleur fonctionnant sous 5V, la carte peut être alimentée en 5V par le port USB (en 2) ou bien par une alimentation externe (en 3) qui est comprise entre 7V et 12V. Cette tension doit être continue et peut par exemple être fournie par une pile 9V. Un régulateur se charge ensuite de réduire la tension à 5V pour le bon fonctionnement de la carte. Pas de danger de tout griller donc! Veuillez seulement à respecter l’intervalle de 7V à 15V (même si le régulateur peut supporter plus, pas la peine de le retrancher dans ses limites)

Visualisation

Les trois « points blancs » entourés en rouge (4) sont en fait des LED dont la taille est de l’ordre du millimètre. Ces LED servent à deux choses :

  • Celle tout en haut du cadre : elle est connectée à une broche du microcontrôleur et va servir pour tester le matériel. Nota : Quand on branche la carte au PC, elle clignote quelques secondes.
  • Les deux LED du bas du cadre : servent à visualiser l’activité sur la voie série (une pour l’émission et l’autre pour la réception). Le téléchargement du programme dans le micro-contrôleur se faisant par cette voie, on peut les voir clignoter lors du chargement.

La connectique

La carte Arduino ne possédant pas de composants qui peuvent être utilisés pour un programme, mis a par la LED connectée à la broche 13 du microcontrôleur, il est nécessaire de les rajouter. Mais pour ce faire, il faut les connecter à la carte. C’est là qu’intervient la connectique de la carte (en 5a et 5b). Par exemple, on veut connecter une LED sur une sortie du microcontrôleur. Il suffit juste le la connecter, avec une résistance en série, à la carte, sur les fiches de connections de la carte. Cette connectique est importante et a un brochage qu’il faudra respecter. Nous le verrons quand nous apprendrons à faire notre premier programme. C’est avec cette connectique que la carte est « extensible », car l’on peut y brancher tous types de montages et modules ! Par exemple, la carte Arduino Uno peut être étendue avec des shields, comme le « Shield Ethernet » qui permet de connecter cette dernière à internet.


Une carte Arduino étendue avec un Ethernet Shield

Installation

Afin d’utiliser la carte, il faut l’installer. Normalement, les drivers sont déjà installés sous GNU/Linux. Sous mac, il suffit de double cliquer sur le fichier .mkpg inclus dans le téléchargement de l’application Arduino et l’installation des drivers s’exécute de façon automatique.

Sous Windows

Lorsque vous connectez la carte à votre ordinateur sur le port USB, un petit message en bas de l’écran apparaît. Théoriquement, la carte que vous utilisez doit s’installer toute seule. Cependant, si vous êtes sous Win 7 comme moi, il se peut que ca ne marche pas du premier coup. Dans ce cas, laisser la carte branchée puis ensuite allez dans le panneau de configuration. Une fois là, cliquez sur « système » puis dans le panneau de gauche sélectionnez « gestionnaire de périphériques ». Une fois ce menu ouvert, vous devriez voir un composant avec un panneau « attention » jaune. Faites un clic droit sur le composant et cliquez sur « Mettre à jour les pilotes ». Dans le nouveau menu, sélectionnez l’option « Rechercher le pilote moi-même ». Enfin, il ne vous reste plus qu’à aller sélectionner le bon dossier contenant le driver. Il se trouve dans le dossier d’Arduino que vous avez du décompresser un peu plus tôt et se nomme « drivers » (attention, ne descendez pas jusqu’au dossier « FTDI »). Par exemple, pour moi le chemin sera:

[le-chemin-jusqu’au-dossier]\arduino-0022\arduino-0022\drivers

Il semblerait qu’il y est des problèmes en utilisant la version francaise d’Arduino (les drivers sont absents du dossier). Si c’est le cas, il vous faudra télécharger la version originale (anglaise) pour pouvoir installer les drivers.

Après l’installation et une suite de clignotement sur les micro-LED de la carte, celle-ci devrait être fonctionnelle; une petite LED verte témoigne de la bonne alimentation de la carte :


Carte connectée et alimentée

Tester son matériel

Avant de commencer à programmer la tête baissée, il faut, avant toutes choses, tester le bon fonctionnement de la carte. Car ce serait idiot de programmer la carte et chercher les erreurs dans le programme alors que le problème vient de la carte ! :mrgreen: Nous allons tester notre matériel en chargeant un programme qui fonctionne dans la carte.

Mais, on n’en a pas encore fait de programmes ? o_O

Tout juste ! Mais le logiciel Arduino contient des exemples de programmes. Et bien ce sont ces exemples que nous allons utiliser pour tester la carte.

1ère étape : ouvrir un programme

Nous allons choisir un exemple tout simple qui consiste à faire clignoter une LED. Son nom est Blink et vous le trouverez dans la catégorie Basics :

Menu de choix d'un exemple

Une fois que vous avez cliqué sur Blink, une nouvelle fenêtre va apparaître. Elle va contenir le programme Blink. Vous pouvez fermer l’ancienne fenêtre qui va ne nous servir plus à rien.

Fenêtre du programme blink

2e étape

Avant d’envoyer le programme Blink vers la carte, il faut dire au logiciel quel est le nom de la carte et sur quel port elle est branchée. Choisir la carte que l’on va programmer. Ce n’est pas très compliqué, le nom de votre carte est indiqué sur elle. Pour nous, il s’agit de la carte « Uno ». Allez dans le menu « Tools » (« outils » en français) puis dans « Board » (« carte » en français). Vérifiez que c’est bien le nom « Arduin Uno » qui est coché. Si ce n’est pas le cas, cochez-le.

Menu de sélection de la carte cible

Choisissez le port de connexion de la carte. Allez dans le menu Tools, puis Serial port. Là, vous choisissez le port COMX, X étant le numéro du port qui est affiché. Ne choisissez pas COM1 car il n’est quasiment jamais connecté à la carte. Dans mon cas, il s’agit de COM5 :

Menu de sélection du port com

Pour trouver le port de connexion de la carte, vous pouvez aller dans le gestionnaire de périphérique qui se trouve dans le panneau de configuration. Regardez à la ligne Ports (COM et LPT) et là, vous devriez avoir Arduino Uno (COMX). Aller, une image pour le plaisir :

Le panneau de configuration Windows et la carte Arduino

Dernière étape

Très bien. Maintenant, il va falloir envoyer le programme dans la carte. Pour ce faire, il suffit de cliquer sur le bouton Téléverser, en jaune-orangé sur la photo :

Compilation en cours...

Vous verrez tout d’abord le message « Compilation du croquis en cours… » pour vous informer que le programme est en train d’être compilé en langage machine avant d’être envoyé. Ensuite vous aurez ceci :

Chargement du programme en cours...

En bas dans l’image, vous voyez le texte : « Téléversement…« , cela signifie que le logiciel est en train d’envoyer le programme dans la carte. Une fois qu’il a fini, il affiche un autre message :

Le chargement est terminé !

Le message afficher : « Téléversement terminé » signale que le programme à bien été chargé dans la carte. Si votre matériel fonctionne, vous devriez avoir une LED sur la carte qui clignote :

Si vous n’obtenez pas ce message mais plutôt un truc en rouge, pas d’inquiétude, le matériel n’est pas forcément défectueux!

En effet, plusieurs erreurs sont possibles:

  • – l’IDE recompile avant d’envoyer le code, vérifier la présence d’erreur
  • – La voie série est peut-être mal choisi, vérifier les branchements et le choix de la voie série
  • – l’IDE est codé en JAVA, il peut-être capricieux et bugger de temps en temps (surtout avec la voie série…) : réessayez l’envoi!

LED sur la carte qui clignote

Fonctionnement global

Nous avons vu précédemment ce qu’était une carte électronique programmable. Nous avons également vu de quels éléments se basait une carte électronique pour fonctionner (schéma électronique, schéma de câblage). Je viens de vous présenter la carte, de quoi elle est principalement constituée. Enfin, je vous ai montré comment l’utiliser de manière à faire clignoter une petite lumière. Dorénavant, nous allons voir comment elle fonctionne de façon globale et répondre à quelques questions qui pourraient vous trotter dans la tête : « Comment la carte sait qu’il y a une LED de connectée ? », « Et comment sait-elle que c’est sur telle broche ? », « Et le programme, où-est-ce qu’il se trouve et sous quelle forme ? », « Comment la carte fait pour comprendre ce qu’elle doit faire ? », … De nombreuses questions, effectivement ! 😛

Partons du programme

Le contenu

Le contenu du programme, donc le programme en lui-même, est ce qui va définir chaque action que va exécuter la carte Arduino. Mais ce n’est pas tout ! Dans le programme il y a plusieurs zones, que nous verrons plus en détail tout au long de la lecture de ce cours, qui ont chacune un rôle particulier.

  • La première zone sert principalement (je ne vais pas m’étendre) à dire à la carte de garder en mémoire quelques informations qui peuvent être : l’emplacement d’un élément connecté à la carte, par exemple une LED en broche 13, ou bien une valeur quelconque qui sera utile dans le programme :
  • La zone secondaire est l’endroit où l’on va initialiser certains paramètres du programme. Par exemple, on pourra dire à la carte qu’elle devra communiquer avec l’ordinateur ou simplement lui dire ce qu’elle devra faire de le LED qui est connectée sur sa broche 13. On peut encore faire d’autres choses, mais nous le verrons plus tard.
  • La dernière zone est la zone principale où se déroulera le programme. Tout ce qui va être écrit dans cette zone sera exécuté par la carte, se sont les actions que la carte fera. Par exemple, c’est ici qu’on pourra lui dire de faire clignoter la LED sur sa broche 13. On pourra également lui demander de faire une opération telle que 2+2 ou bien d’autres choses encore !

En conclusion, tout (vraiment tout !) ce que va faire la carte est inscrit dans le programme. Sans programme, la carte ne sert à rien ! C’est grâce au programme que la carte Arduino va savoir qu’une LED est connectée sur sa broche 13 et ce qu’elle va devoir faire avec, allumer et éteindre la LED alternativement pour la faire clignoter.

Et l’envoi

Le programme est envoyé dans la carte lorsque vous cliquez sur le bouton . Le logiciel Arduino va alors vérifier si le programme ne contient pas d’erreur et ensuite le compiler (le traduire) pour l’envoyer dans la carte :


Au départ, le programme est sous forme de texte, puis il est transformé en un langage composé uniquement de 0 et de 1 (ce qui est absolument illisible en soi ! 😛 ).

L’envoi du programme est géré par votre ordinateur : le programme passe, sous forme de 0 et de 1, dans le câble USB qui relie votre ordinateur à votre carte et arrive dans la carte. Le reste se passe dans la carte elle-même…

Réception du programme

Le programme rentre donc dans la carte en passant en premier par le connecteur USB de celle-ci. Il va alors subir une petite transformation qui permet d’adapter le signal électrique correspondant au programme (oui car le programme transite dans le câble USB sous forme de signal électrique) vers un signal plus approprié pour le microcontrôleur. On passe ainsi d’un signal codé pour la norme USB à un signal codé pour une simple voie série (que l’on étudiera plus tard d’ailleurs). Puis ce « nouveau » signal est alors intercepté par le microcontrôleur.

Tout le reste se passe alors…

A l’intérieur du microcontrôleur

L’emplacement du programme

Le microcontrôleur reçoit le programme sous forme de signal électrique sur ses broches Tx et Rx, d’ailleurs disponible sur les broches de la carte (cf. image). Une fois qu’il est reçu, il est intégralement stocké dans une mémoire de type Flash que l’on appellera « la mémoire de programme ». Ensuite, lorsque la carte démarre « normalement » (qu’aucun programme n’est en train d’être chargé), le cerveau va alors gérer les données et les répartir dans les différentes mémoires :

  • La mémoire programme est celle qui va servir à savoir où l’on en est dans le programme, à quelle instruction on est rendu. C’est à dire, en quelque sorte, pointer sur des morceaux des zones 2 et 3 que l’on a vu dans le précédent exemple de programme.
  • La mémoire de données, aussi appelé « RAM » (comme dans votre ordinateur) va stocker les variables telles que le numéro de la broche sur laquelle est connectée une LED, ou bien une simple valeur comme un chiffre, un nombre, des caractères, etc.

Voici un petit synoptique qui vous montre un peu l’intérieur du microcontrôleur (c’est très simplifié !) :

Démarrage du microcontrôleur

Lorsque le microcontrôleur démarre, il va commencer par lancé un bout de code particulier : le bootloader. C’est ce dernier qui va surveiller si un nouveau programme arrive sur la voie USB et s’il faut donc changer l’ancien en mémoire par le nouveau. Si rien n’arrive, il donne la main à votre programme, celui que vous avez créé. Ce dernier va alors défiler, instruction par instruction. Chaque fois qu’une nouvelle variable sera nécessaire, elle sera mise en RAM pour qu’on ai une mémoire de cette dernière (et supprimer lorsqu’elle n’est plus nécessaire). Sinon, les instructions vont se suivre une par une, dans l’ordre que vous les avez écrites.

38 commentaires

  1. Bonjour, j’ai acheté une carte arduino uno ainsi que tout le matériel nécessaire pour suivre ce blog vraiment bien fait. J’étais super enthousiaste et j’avais envie de vite recevoir ma carte pour commencer a apprendre a programmer, jusqu’à que je la reçoive et que je n’arrive pas du tout a installer le driver, que ce soit sur mon pc avec Windows 7 ou sur mon pc avec Windows 8.1. J’ai tester tout les chose qui sont proposer sur le web, sur les forum etc… résultat mon pc ne veut toujours pas installer le driver (il ne le trouve pas malgré que j’ai le ficher Arduino.inf dans mon dossier drivers). Je n’arrive pas a installer le logiciel en anglais comme vous le recommandez si sa ne marche pas (le logiciel s’installe automatiquement en français même sur le site officiel). Je suis vraiment désespéré, aidez moi s’il vous plait.
    Merci d’avance.

    • Hum… La du coup j’ai plus trop d’idée. Il doit bien y avoir un truc qui cloche cote installation des drivers qui permettra de débloquer le tout… Essaye de regarder une vidéo pas a pas sur youtube qui te permettra de vérifier que tu fais bien toutes les étapes correctement.

      • Oui j’ai bien fait toutes les etapes corectement, mais dans les videos, windows trouve le driver sauf que moi non 🙁 je vais essayé avec une ancienne version du logiciel en esperant que sa marche… j’ai envie de comencer les tutos moi 🙁

          • J’ai eu le même problème et je l’ai résolu de manière très simple (au cas où quelqu’un a également le problème). Après avoir sélectionné la recherche « manuelle » (après avoir cliqué sur « Rechercher un pilote sur mon ordinateur » puis « Choisir parmi une liste de pilotes de périphériques sur mon ordinateur »), il faut cliquer sur disque fourni (si Arduino ne figure pas dans la liste des Fabricants) puis Parcourir pour aller chercher le fichier arduino.inf présent dans le dossier « drivers » (même pour la version française). Puis une liste s’affichera, il suffira juste de sélectionner le modèle de sa carte et cliquer sur suivant 🙂

    • Attention : il y a de nouvelles cartes (clones) avec un contrôleur différent dont les pilotes ne sont pas dans le logiciel arduino. Après avoir bien ramé (2 cartes, 4 câbles USB, 3 ordis sous seven et XP), j’ai relu un peu mieux l’annonce du vendeur (sur ebay), et j’y ai trouvé le lien vers le pilote ! (contrôleur CH340).

    • alors on est en bts electrocombustion programation nucleotechnique nous somme entrain d’étudier votre demande la réponse a votre question vous sera donner dans un délais de 2 mois, ci-joint un devis.

  2. salut, tu dit que le signal électrique est converti, puis tu dit qu’il est sous forme électrique quand le microcontrôleur le reçoit.J’ai donc l’impression que tu te contredit.Ou alors j’ai mal compris?

    • En fait non, je ne dis pas tout a fait ca (ou alors on parle pas des memes phrase). Ce que je veux dire c’est que le signal voit sa forme changée. Au début on est sous forme différentielle (D+ et D- pour l’USB) puis ensuite on est sous forme TTL (du 0/5V pour Rx et Tx de l’uart (voie série) de l’Arduino)

  3. ok merci je comprend mieux.Autre chose que j’ai du mal a comprendre: la différence entre courant tension et intensité.Je sais que l’intensité est le débit des électron.La tension c’est la différence de potentiel mais le courant qu’est ce que ça représente?Ce qui fait griller une led c’est une trop grande tension ou une trop grande intensité?
    Merci pour ton temps et ton site très intéressant et utile.

    • Ce qui fait griller une led c’est une trop grande tension ou une trop grande intensité?

      Les deux 😀 . Si tu mets une trop grande tension tu vas péter la liaison a l’intérieur. La plupart des composants électroniques ont des tensions maximums a respecter, c’est pas un hasard 😉 . Si tu mets un trop grand courant eh bien idem.

      • Une LED est une diode qui a une tension appelée Vbe0 (#2.3v) Quand on veut l’activer, il lui faut un courant de 25mA. Donc pour la faire fonctionner normalement, il lui faut au moins une tension de 2.3V et 25mA
        soit si on applique une tension Vcc de 5V, la loi d’ohm s’applique et le courant est fixé par la résistance que l’on met en série avec la diode en déterminant l’inconnue suivant l’équation suivante:
        (Vcc-Vbe0)/ Rx= Id ici Id=25mA Vcc=5V et Vbe0=2.3V => Rx = (5V-2.3V)/ 25 10(-3) soit Rx=108Ohms
        disons 100 Ohms. Maintenant il faut déterminer la puissance que doit tenir la résistance; et comme la tension à ses bornes est de 2.7V (parce que Vcc-Vbe0) alors la formule de puissance est de U²/R soit: (2.7×2.7)/100.
        soit une puissance de 0.0729W ou 73mW. donc une résistance de 1/4W (ou 250mW) sera largement suffisante. Pour traduire cela, il n’y aura pas de surtension sur la diode car c’est la résistance qui supportera la
        tension car au dessus de 25mA Vbe0 ne change pratiquement pas.
        – cours de 1ere année BEP électricité, électronique électrotechnique ou Seconde lycée général et technique

  4. Pingback: Arduino | Pearltrees

  5. Bonjour,

    Je viens de parcourir votre tutorial . Bravo.
    Question : ARDUINO est-il compatible avec Windows 10 ?
    Si oui quels sont les problèmes rencontrés (cf. les problèmes de chargement avec Windows 7 ou Windows 8).
    Merci pour votre réponse.

  6. Pour répondre à différents problèmes
    le logiciel Arduino fonctionne avec toute les versions de Windows, Win 10 inclus.
    Les problèmes de drivers sont dus, souvent, a un refus de Windows qui trouve les drivers non certifiés. Une ruse qui fonctionne très bien c’est de télécharger le logiciel libre CURA (slicer pour imprimante 3D) qui propose à l’installation les drivers ARDUINO, donc cocher « installer les drivers Arduino  » car eux sont certifiés.
    A la fin de l’installation de CURA pas de problème pour faire fonctionner la carte Arduino.
    Bravo à Eskimon qui ,grâce a ces tutoriaux m’a fait découvrir un monde d’invention infini.

  7. Bonjour Eskimon, j’ai 68 ans, une très faible connaissance en electronique et informatique (autodidacte) et j’ai décidé de m’initier à l’Arduino
    un grand merci à vous car c’est en lisant votre excellent blog que j’ai franchi le cap et acheté une carte UNO
    tout c’est bien passé pour l’installation et le test.
    je compte bien aller plus loin et essayer de faire une application pratique
    je voudrai fabriquer une automation pour la fermeture et l’ouverture de la porte d’un petit poulailler.afin ne ne plus oublier mes 2 pondeuses.
    existe t’il du code déjà écrit pour ce genre d’appli, j’ai aussi acheté une carte horloge et une carte relais

    vous aurez surement de mes nouvelles.
    a suivre et encore merci!!!!!!!!
    cordialement
    Pablo

  8. Bonjour,

    Après avoir parcouru quelque site sur la carte Arduino je ne trouve aucune réponse à mes questions, j’espère en trouvé ici.

    J’ai déjà commencé a faire quelque petit montage simple pour retrouvé mes bases en programmation et en électronique et lorsque j’ai voulu testé mes montages sans que la carte soit connecté à mon ordi grâce à l’alimentation 9V il ne se passe rien la carte ne fonctionne pas pourtant la pile et neuve. Un problème de soudure sur la carte ou de moi ??

    Ensuite j’ai une autre question lorsque je compile sur mon ordi (W7) aucun soucis c’est très rapide, mais quand je compile sur mon ordi portable (W10) la compilation est très longue. Il y aurais t’il un problème avec W10 et le logiciel ?

    Merci d’avance pour vos réponse.

  9. Bonsoir, Bonjour à tous,

    j.’ai quelque chose d’inhabituel sur ma carte uno: j’ai les voyants tx et rx qui sont continuellement allumés en orange et je ne trouve pas ma carte dans le gestionnaire de périférique de win10… est ce que quelqu’un aurait un début d’idiée de solution ? 🙂 !

    PS dois je préciser que …. 30 min avant il y a eu une étincel sur la carte ? ..maintenant la pièce a gauche (quand on a la prise usb en face de soi) je disais a gauche de la prise d’alimentation il ya une petite pièce plate qui chauffe un peut.

    Merci d’avance pour vos réponses

  10. Pingback: Arduino | Pearltrees

  11. Pingback: Deguillage (pascaldeguillage) | Pearltrees

  12. Pingback: Technorossetto | Pearltrees

  13. Pingback: Arduino | Pearltrees

  14. bonjour, super votre blog pour une fois que j’y comprend quelque chose merci a vous malheureusement je n’arrive pas a réalise ce que je voudrai faire, a savoir le pilotage de voies de dépôt wagons (19) suis passionné de petit train ho j’ai fait l’acquisition d’une carte arguino mega 2560 en raisons du nombre de sorties, et avec relais de sorties (5×8) je ne suis pas capable d’écrire le programme si quelqu’un pouvais écrire ce programme je lui serais reconnaissant , j’ai maintenant 72ans très difficile pour ma pauvre tète d’apprendre cela , pour info je suis électrotechnicien de formation, travail que j’ai effectuer pendant 43 ans je sais faire les sorties et câblages mais le language c++ ouha je donnera les details du projet si interessé

  15. Pingback: Arduino | Pearltrees

  16. Pingback: Arduino | Pearltrees

  17. Bonsoir, pour ceux qui veulent utiliser le module en milieu industriel, il faut se prémunir contre les parasites (i.e les verins hydrauliques ou moteurs électriques à proximité ou ligne de commandes longues pouvant pouvant perturber l’alim) il faut s’en protéger par deux manières:

    1- par anti parasitage électrique: mettre une capa de 100 Microfarads15V Chimique en // avec l’alim, ajouter
    une capa ceramique de 100nanoFarads (pour la bande HF, car les chimiques sont des self à cette fréquence)
    et enfin une zener de 4.7V 1W pour écréter les pics de surtensions

    2- par inclure dans son programme le fait que le parasite peut modifier le programme inclus. Pour cela
    il faut en tenir compte dans son algorithme par une astuce. Mais il faut déjà une certaine aisance en
    programmation. contactez moi si cela vous intéresse, je ne répondrais que s’il y aura de nombreuses requêtes.
    (gratuit et tout a fait bénévole. je suis à la retraite et ai trimmé dans des milieux industriels pour robotique)

Laisser un commentaire