Manuel pour apprendre a programmer Arduino

Préface
Contenu de cet ebook
Ce livre numérique vous propose de découvrir l'environnement de développement Arduino. Arduino est une plateforme de développement électronique et informatique embarqué. Elle doit son succès auprès des hobbyistes et amateurs d'électronique grâce à un faible coût, un gain de temps pour des phases de prototypage et une très grande communauté active autour de cette plateforme. Afin de faire profiter au plus grand nombre de la puissance de cette petite plateforme, ce tutoriel a vu le jour pour proposer une ressource qui soit accessible aux néophytes tout en restant rigoureuse et explorant de nombreux aspects. Après une longue écriture, nous sommes fiers de vous présenter cet ebook regroupant l'ensemble du tutoriel que vous pourrez dorénavant emmener partout avec vous, sans avoir besoin d'une connexion internet ! Ce livre est l'exacte copie de sa version en ligne. Les schémas sont les mêmes et les codes sources aussi. Seules peuvent différer quelques corrections de fautes ou d'imprécisions et éventuellement de nouvelles annexes qui ne seraient alors pas écrites. Pour cela, la date de publication est visible en première de couverture. Afin de vous tenir au courant des modifications, rendezvous sur la page de présentation du livre qui tiendra un compte rendu des modifications du document.
À propos des auteurs et de la rédaction
Cet ouvrage a été réalisé par deux auteurs : Eskimon et olyte. Ils se sont rencontrés sur feu le Site du Zéro. olyte, l'initiateur du projet avait besoin d'un coup de main pour écrire et a alors proposé à Eskimon de le rejoindre pour travailler à deux sur le tutoriel.
Plus de deux ans plus tard, après de nombreuses pages écrites, montages bricolés, schémas dessinés et vidéos réalisées, le tutoriel touche enfin à sa fin. 7 parties regroupant une trentaine de chapitres permettent alors de découvrir de manière très large et détaillée le framework Arduino.
Depuis début 2014, le tutoriel est disponible dans une version à jour sur le blog d'Eskimon. En effet, le site du zéro ayant évolué et ne permettant plus de continuer l'écriture, des mesures ont du être prises pour pouvoir continuer à faire vivre et évoluer l'écriture au fil de nos idées.
Le tutoriel est en licence Creative Common CC BYNCSA. Cela signifie que vous pouvez recopier le contenu du tuto si vous ne comptez pas faire d'utilisation commerciale (clause NC) de ce dernier et que vous n'oubliez pas de dire d'où il vient et par qui il a été écrit (clause BY) ?) . Vous devez aussi le redistribuer sous cette même licence (clause SA).
Remerciements
De nombreuses paires de mains et d'yeux se sont penchées sur ce document. Parmiselles, on retrouve des validateurs pour le côté technique de la rédaction et des relecteurs pour toute la partie orthographique.
Je tiens sincèrement à remercier toutes ces personnes qui se sont relayées et ont eu la patience de relire, d'approuver, de corriger ou de reformuler certaines phrases et voyant leurs rétines souffrir sur nos fautes d'écritures nocturnes et trop rapides.
Merci donc à Astalaseven, cshark, elyppire933, mewtow, Nathalya, PG06, Sandhose, zeqL et sûrement d'autres personnes qui se reconnaitront (excusez ma pauvre mémoire et mon étourderie). Merci aussi à vous, lecteurs, pour tous les encouragements, propositions et corrections que vous avez pu apporter au fil des années. L'écriture d'un tutoriel est un travail de longue haleine et n'aurait su être terminée si vous n'aviez pas été là pour nous supporter.
Je vous souhaite maintenant une bonne lecture et j'espère que vous l'apprécierez.
À bientôt !
Sommaire
- Partie I Découverte de l'Arduino
- Présentation
- Quelques bases élémentaires
- Le logiciel
- Le matériel
- Le langage Arduino (1/2)
- Le langage Arduino (2/2)
- Partie II Gestion des entrées / sorties
- Notre premier programme !
- Introduire le temps
- [TP] Feux de signalisation routière
- Un simple bouton
- Afficheurs 7 segments
- [TP] Parking
- Partie III La communication avec Arduino
- Généralités
- Envoyer/Recevoir des données
- [TP] Baignade interdite
- Votre ordinateur et sa liaison série
- Partie IV Les grandeurs analogiques
- Les entrées analogiques de l'Arduino
- [TP] Vumètre à LED
- Et les sorties "analogiques", enfin presque !
- [Exercice] Une animation "YouTube"
- Partie V Les capteurs et l'environnement autour d'Arduino
- Généralités sur les capteurs
- Différents types de mesure
- Des capteurs plus évolués
- Partie VI Le mouvement grâce aux moteurs
- Moteur à courant continu
- ServoMoteur
- Moteur pas à pas
- Partie VII L'affichage, une autre manière d'interagir
- Les écrans LCD
- Votre premier texte !
- [TP] Supervision
[Arduino 1] Découverte de l’Arduino
Dans cette première partie, nous ferons nos premiers pas avec Arduino. Nous allons avant tout voir de quoi il s’agit exactement, essayer de comprendre comment cela fonctionne, puis installerons le matériel et le logiciel pour ensuite enchainer sur l’apprentissage du langage de programmation nécessaire au bon fonctionnement de la carte Arduino. Soyez donc attentif afin de bien comprendre tout ce que je vais vous expliquer. Sans les bases, vous n’irez pas bien loin…
[Arduino 101] Présentation d’Arduino
Comment faire de l’électronique en utilisant un langage de programmation ? La réponse, c’est le projet Arduino qui l’apporte. Vous allez le voir, celuici a été conçu pour être accessible à tous par sa simplicité. Mais il peut également être d’usage professionnel, tant les possibilités d’applications sont nombreuses.
Qu’estce que c’est ?
Une équipe de développeurs composée de Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino, David Mellis et Nicholas Zambetti a imaginé un projet répondant au doux nom de Arduino et mettant en œuvre une petite carte électronique programmable et un logiciel multiplateforme, qui puisse être accessible à tout un chacun dans le but de créer facilement des systèmes électroniques. Étant donné qu’il y a des débutants parmi nous, commençons par voir un peu le vocabulaire commun propre au domaine de l’électronique et de l’informatique.
Une carte électronique
Une carte électronique est un support plan, flexible ou rigide, généralement composé d’epoxy ou de fibre de verre. Elle possède des pistes électriques disposées sur une, deux ou plusieurs couches (en surface et/ou en interne) qui permettent la mise en relation électrique des composants électroniques. Chaque piste relie tel composant à tel autre, de façon à créer un système électronique qui fonctionne et qui réalise les opérations demandées.
Exemples de cartes électroniques
Évidemment, tous les composants d’une carte électronique ne sont pas forcément reliés entre eux. Le câblage des composants suit un plan spécifique à chaque carte électronique, qui se nomme le schéma électronique.
Exemple de schéma électronique – carte Arduino Uno
Enfin, avant de passer à la réalisation d’un carte électronique, il est nécessaire de transformer le schéma électronique en un schéma de câblage, appelé typon.
Exemple de typon – carte Arduino
Une fois que l’on a une carte électronique, on fait quoi avec ?
Eh bien une fois que la carte électronique est faite, nous n’avons plus qu’à la tester et l’utiliser ! Dans notre cas, avec Arduino, nous n’aurons pas à fabriquer la carte et encore moins à la concevoir. Elle existe, elle est déjà prête à l’emploi et nous n’avons plus qu’à l’utiliser. Et pour cela, vous allez devoir apprendre comment l’utiliser, ce que je vais vous montrer dans ce tutoriel.
Programmable ?
J’ai parlé de carte électronique programmable au début de ce chapitre. Mais savezvous ce que c’est exactement ? Non ? pas vraiment ? Alors voyons ensemble de quoi il s’agit. La carte Arduino est une carte électronique qui ne sait rien faire sans qu’on lui dise quoi faire. Pourquoi ? Eh bien c’est du au fait qu’elle est programmable. Cela signifie qu’elle a besoin d’un programme pour fonctionner.
Un programme
Un programme est une liste d’instructions qui est exécutée par un système. Par exemple votre navigateur internet, avec lequel vous lisez probablement ce cours, est un programme. On peut analogiquement faire référence à une liste de course :
Chaque élément de cette liste est une instruction qui vous dit : “Va chercher le lait” ou “Va chercher le pain”, etc. Dans un programme le fonctionnement est similaire :
Attendre que l’utilisateur rentre un site internet à consulter
Rechercher sur internet la page demandée Afficher le résultat
Tel pourrait être le fonctionnement de votre navigateur internet. Il va attendre que vous lui demandiez quelque chose pour aller le chercher et ensuite vous le montrer. Eh bien, tout aussi simplement que ces deux cas, une carte électronique programmable suit une liste d’instructions pour effectuer les opérations demandées par le programme.
Et on les trouve où ces programmes ? Comment on fait pour le mettre dans la carte ? o_O
Des programmes, on peut en trouver de partout. Mais restons concentré sur Arduino. Le programme que nous allons mettre dans la carte Arduino, c’est nous qui allons le réaliser. Oui, vous avez bien lu. Nous allons programmer cette carte Arduino. Bien sûr, ce ne sera pas aussi simple qu’une liste de course, mais rassurezvous cependant car nous allons réussir quand même ! Je vous montrerai comment y parvenir, puisque avant tout c’est un des objectifs de ce tutoriel. Voici un exemple de programme :
Vous le voyez comme moi, il s’agit de plusieurs lignes de texte, chacune étant une instruction. Ce langage ressemble à un véritable baragouin et ne semble vouloir à priori rien dire du tout… Et pourtant, c’est ce que nous saurons faire dans quelques temps ! Car nous apprendrons le langage informatique utilisé pour programmer la carte Arduino. Je ne m’attarde pas sur les détails, nous aurons amplement le temps de revenir sur le sujet plus tard. Pour répondre à la deuxième question, nous allons avoir besoin d’un logiciel…
Et un logiciel ?
Bon, je ne vais pas vous faire le détail de ce qu’est un logiciel, vous savez sans aucun doute de quoi il s’agit. Ce n’est autre qu’un programme informatique exécuté sur un ordinateur. Oui, pour programmer la carte Arduino, nous allons utiliser un programme ! En fait, il va s’agir d’un compilateur. Alors qu’estce que c’est exactement ?
Un compilateur
En informatique, ce terme désigne un logiciel qui est capable de traduire un langage informatique, ou plutôt un programme utilisant un langage informatique, vers un langage plus approprié afin que la machine qui va le lire puisse le comprendre. C’est un peu comme si le patron anglais d’une firme Chinoise donnait des instructions en anglais à l'un de ses ouvriers chinois. L’ouvrier ne pourrait comprendre ce qu’il doit faire. Pour cela, il a besoin que l’on traduise ce que lui dit son patron. C’est le rôle du traducteur. Le compilateur va donc traduire les instructions du programme précédent, écrites en langage texte, vers un langage dit “machine”. Ce langage utilise uniquement des 0 et des 1. Nous verrons plus tard pourquoi. Cela pourrait être imagé de la façon suivante :
Donc, pour traduire le langage texte vers le langage machine (avec des 0 et des 1), nous aurons besoin de ce fameux compilateur. Et pas n’importe lequel, il faut celui qui soit capable de traduire le langage texte Arduino vers le langage machine Arduino. Et oui, sinon rien ne va fonctionner. Si vous mettez un traducteur Français vers Allemand entre notre patron anglais et son ouvrier chinois, ça ne fonctionnera pas mieux que s’ils discutaient directement. Vous comprenez ?
Et pourquoi on doit utiliser un traducteur, on peut pas simplement apprendre le langage machine directement ?
Comment dire… non ! Non parce que le langage machine est quasiment impossible à utiliser tel quel. Par exemple, comme il est composé de 0 et de 1, si je vous montre ça : “0001011100111010101000111?, vous serez incapable, tout comme moi, de dire ce que cela signifie ! Et même si je vous dis que la suite “01000001? correspond à la lettre “A”, je vous donne bien du courage pour coder rien qu’une phrase ! Bref, oubliez cette idée. C’est quand même plus facile d’utiliser des mots anglais (car oui nous allons être obligé de faire un peu d’anglais pour programmer, mais rien de bien compliqué rassurezvous) que des suites de 0 et de 1. Vous ne croyez pas ?
Envoyer le programme dans la carte
Là, je ne vais pas vous dire grand chose car c’est l’environnement de développement qui va gérer tout ça. Nous n’aurons qu’à apprendre comment utiliser ce dernier et il se débrouillera tout seul pour envoyer le programme dans la carte. Nah ! Nous n’aurons donc qu’à créer le programme sans nous soucier du reste.
Pourquoi choisir Arduino ?
Que vaton faire avec ?
Avec Arduino, nous allons commencer par apprendre à programmer puis à utiliser des composants électroniques. Au final, nous saurons créer des systèmes électroniques plus ou moins complexes. Mais ce n’est pas tout…
D’abord, Arduino c’est…
… une carte électronique programmable et un logiciel gratuit :
Mais aussi
Un prix dérisoire étant donné l’étendue des applications possibles. On comptera 20 euros pour la carte que l’on va utiliser dans le cours. Le logiciel est fournit gratuitement !
Une compatibilité sous toutes les plateformes, à savoir : Windows, Linux et Mas OS.
Une communauté ultra développée ! Des milliers de forums d’entreaide, de présentations de projets, de propositions de programmes et de bibliothèques, …
Un site en anglais et un autre en français où vous trouverez tout de la référence Arduino, le matériel, des exemples d’utilisations, de l’aide pour débuter, des explications sur le logiciel et le matériel, etc. Une liberté quasi absolue. Elle constitue en elle même deux choses :
Le logiciel : gratuit et open source, développé en Java, dont la simplicité d’utilisation relève du savoir cliquer sur la souris
Le matériel : cartes électroniques dont les schémas sont en libre circulation sur internet
Cette liberté a une condition : le nom « Arduino » ne doit être employé que pour les cartes « officielles ». En somme, vous ne pouvez pas fabriquer votre propre carte sur le modèle Arduino et lui assigner le nom « Arduino ».
Et enfin, les applications possibles
Voici une liste non exhaustive des applications possible réalisées grâce à Arduino :
contrôler des appareils domestiques donner une “intelligence” à un robot réaliser des jeux de lumières
permettre à un ordinateur de communiquer avec une carte électronique et différents capteurs
télécommander un appareil mobile (modélisme) etc
Il y a tellement d’autres infinités d’utilisations, vous pouvez simplement chercher sur votre moteur de recherche préféré ou sur Youtube le mot “Arduino” pour découvrir les milliers de projets réalisés avec !
Arduino dans ce tutoriel
Je vais quand même rappeler les principaux objectifs de ce cours. Nous allons avant tout découvrir Arduino dans son ensemble et apprendre à l’utiliser. Dans un premier temps, il s’agira de vous présenter ce qu’est Arduino, comment cela fonctionne globalement, pour ensuite entrer un peu plus dans le détail. Nous allons alors apprendre à utiliser le langage Arduino pour pouvoir créer des programmes très simple pour débuter. Nous enchainerons ensuite avec les différentes fonctionnalités de la carte et ferons de petits TP qui vous permettront d’assimiler chaque notion abordée. Dès lors que vous serez plutôt à l’aise avec toutes les bases, nous nous rapprocherons de l’utilisation de composants électroniques plus ou moins complexes et finirons par un plus “gros” TP alliant la programmation et l’électronique. De quoi vous mettre de l’eau à la bouche !
Arduino à l’école ?
Pédagogiquement, Arduino a aussi pas mal d’atout. En effet, ses créateurs ont d’abord pensé ce projet pour qu’il soit facile d’accès. Il permet ainsi une très bonne approche de nombreux domaines et ainsi d’apprendre plein de choses assez simplement.
Des exemples
Voici quelques exemples d’utilisation possible :
Simuler le fonctionnement des portes logiques
Permettre l’utilisation de différents capteurs
Mettre en œuvre et faciliter la compréhension d’un réseau informatique
Se servir d’Arduino pour créer des maquettes animées montrant le fonctionnement des collisions entres les plaques de la croute terrestre, par exemple
Donner un exemple concret d’utilisation des matrices avec un clavier alphanumérique 16 touches ou plus
Être la base pour des élèves ayant un TPE à faire pour le BAC
…
De plus, énormément de ressources et tutoriels (mais souvent en anglais) se trouvent sur internet, ce qui offre un autonomie particulière à l’apprenant.
Des outils existant !
Enfin, pour terminer de vous convaincre d’utiliser Arduino pour découvrir le monde merveilleux de l’embarqué, il existe différents outils qui puissent être utilisé avec Arduino. Je vais en citer deux qui me semble être les principaux : Ardublock est un outil qui se greffe au logiciel Arduino et qui permet de programmer avec des blocs. Chaque bloc est une instruction. On peut aisément faire des programmes avec cet outil et mêmes des plutôt complexes. Cela permet par exemple de se concentrer sur ce que l’on doit faire avec Arduino et non se concentrer sur Arduino pour ensuite ce que l’on doit comprendre avec. Citons entre autre la simulation de porte logique : plutôt créer des programmes rapidement sans connaitre le langage pour comprendre plus facilement comment fonctionne une porte logique. Et ce n’est qu’un exemple. Car cela permet aussi de permettre à de jeunes enfants de commencer à programmer sans de trop grandes complications.
Exemple de programmes réalisés avec Ardublock
Processing est une autre plateforme en lien avec Arduino. Là il n’y a pas de matériel, uniquement un logiciel. Il permet entre autre de créer des interfaces graphiques avec un langage de programmation très similaire à celui d’Arduino. Par contre, cela demande un niveau un peu plus élevé pour pouvoir l’utiliser, même si cela reste simple dans l’ensemble.
Voilà un exemple de ce que j’avais réalisé avec Processing pour faire communiquer mon ordinateur avec ma carte Arduino
J’espère avoir été assez convaincant afin que vous franchissiez le pas et ayez du
Les cartes Arduino
Le matériel que j’ai choisi d’utiliser tout au long de ce cours n’a pas un prix excessif et, je l’ai dit, tourne aux alentours de 25 € TTC. Il existe plusieurs magasins en lignes et en boutiques qui vendent des cartes Arduino. Je vais vous en donner quelquesuns, mais avant, il va falloir différencier certaines choses.
Les fabricants
Le projet Arduino est libre et les schémas des cartes circulent librement sur internet. D’où la mise en garde que je vais faire : il se peut qu’un illustre inconnu fabrique lui même ses cartes Arduino. Cela n’a rien de mal en soi, s’il veut les commercialiser, il peut. Mais s’il est malhonnête, il peut vous vendre un produit défectueux. Bien sûr, tout le monde ne cherchera pas à vous arnaquer. Mais la prudence est de rigueur. Faites donc attention où vous achetez vos cartes.
Les types de cartes
Il y a trois types de cartes :
Lesdites « officielles » qui sont fabriquées en Italie par le fabricant officiel : Smart Projects
Lesdits « compatibles » qui ne sont pas fabriqués par Smart Projects, mais qui sont totalement compatibles avec les Arduino officielles.
Les « autres » fabriquées par diverse entreprise et commercialisées sous un nom différent (Freeduino, Seeduino, Femtoduino, …).
Les différentes cartes
Des cartes Arduino il en existe beaucoup ! Voyons celles qui nous intéressent… La carte Uno et Duemilanove Nous choisirons d’utiliser la carte portant le nom de « Uno » ou « Duemilanove ». Ces deux versions sont presque identiques.
Carte Arduino “Duemilavove” et “Uno” avec laquelle nous allons travailler