Arduino, une carte à jouer

Gamme des cartes Arduino

Dans le langage courant des électroniciens et autres "bricoleurs" avertis, une Arduino est une carte électronique utilisée pour créer des montages, des prototypes et des robots en tout genre.

Présentation résumée de ce qu'est Arduino

Arduino est un ensemble d'outils matériel et logiciel pour le prototypage électronique et l'apprentissage de la programmation des micro-contrôleurs. Les schémas électroniques des cartes Arduino et les codes sources pour la partie développement des programmes, sont distribués librement et téléchargeables gratuitement.
L'environnement Arduino a été conçu pour être utilisé facilement par les débutants sans expérience de la programmation ou de connaissances en électronique.

Que pouvons nous faire avec ?

Avec une carte Arduino, vous pouvez construire des modules qui peuvent commander la lumière et le son, mesurer une distance ou une température et piloter des moteurs, des leds ou des relais.
Les utilisations sont quasiment infinies et en voici quelques exemples :

  • des robots,
  • des instruments de musique,
  • des animations lumineuses,
  • des jeux interactifs et ludiques,
  • des gadgets originaux ou futiles,
  • des bijoux électroniques pour costumes et chapeaux en tout genre,
  • des générateurs de morse pour radio amateur,
  • une station météo,
  • une régulation pour chauffage,
  • un module de poursuite du soleil pour optimiser l'orientation d'un panneau solaire.

Pour qui ?

Arduino est utilisée dans de nombreux programmes éducatifs à travers le monde, en particulier par les écoliers ou les étudiants qui peuvent créer facilement des prototypes sans avoir besoin d'une connaissance approfondie des détails techniques pour animer leurs créations.
Elle convient parfaitement à tous ceux qui s'intéressent à la création de montages et bricolages en interaction avec l'environnement (sur le sol, dans les airs et pourquoi pas sous l'eau).
Elle est donc pré-destinée aux débutants électroniciens et/ou roboticiens, aux artistes et créateurs, aux hobbyistes et modélistes.

Est ce matériel ou logiciel ?

Arduino est surtout connu pour son matériel (carte uno, mega, shield…), mais vous avez aussi besoin d'un logiciel pour programmer les cartes. Cette combinaison matériel/logiciel s'appelle "Arduino".
Le logiciel est gratuit, en sources-libres et multi-plateforme (Linux, Mac® et Windows®). Il est télécchargeable à partir de l'adresse www.arduino.cc/fr/ en cliquant sur le lien [télécharger].

Les schémas électroniques sont également en accès libre sur le même site et vous pouvez donc construire vos propres cartes électroniques à partir de ces documentations techniques. Ces fabrications "faite le vous-même" sont réservées à des techniciens avertis ou aux personnes désireuses d'en apprendre plus sur la réalisation de cartes à micro-contrôleur.

Arduino peut recueillir des informations par le biais d'entrées logiques et analogiques (couplées à des capteurs adéquats) et peut commander des actionneurs. Les projets à base d'Arduino peuvent être autonomes et mobiles, mais aussi interfacés et communiquants grâce au logiciel exécuté sur un ordinateur.
Les cartes électronique Arduino prêtes à l'emploi sont peu coûteuses, largement distribuées et disponibles dans toutes sortes de boutiques en ligne.

Du côté logiciel

L'IDE ou environnement de développement

L'IDE mis à disposition par l'équipe Arduino est un logiciel qui affiche une fenêtre graphique. Un menu par icônes est intégré à la zone de saisie de votre programme. Il propose les fonctions principales dont nous avons le plus souvent besoin pendant la phase de mise au point.
Nous avons dans la partie supérieure de la fenêtre une barre de menu où l'on retrouve les items classiques : créer un nouveau fichier, en ouvrir un, le sauvegarder et tous ceux spécifiques à cet environnement.
Fenetre de l'environnement de développement

L'IDE transfère également les instructions (les codes que vous avez saisis) vers la carte Arduino (par un câble USB). La zone inférieure de la fenêtre de développement, nous renseigne sur l'évolution et l'état de l'application lors de ces opérations de téléchargement.

Parce qu'il est conçu pour être utilisé par des personnes non techniques, le logiciel inclut aussi de nombreux exemples de code pour montrer comment utiliser les diverses possibilités matérielles de la carte Arduino.
Une petite fenêtre appelée "moniteur série" vous permet d'établir un dialogue entre la carte Arduino et le PC. Il est donc possible de réaliser des programmes permettant d'afficher le contenu des variables recueillies ou manipulées par la carte Arduino.

P.O.P. : Programmation Orienté Périphérique

Le langage de programmation est directement tiré du langage C et nous retrouvons les fonctions classiques disponibles du C.
Mais c'est sous la forme d'un "super-langage" que le langage Arduino est orienté pour la programmation des périphériques de micro-contrôleur. En effet, la syntaxe des fonctions est très simple et efficace ; nous pouvons citer comme exemples les fonctions :

  • pinMode,
  • digitalWrite,
  • digitalRead,
  • analogRead,
  • pulseIn,
  • ou tone pour jouer des sons ou une petite musique.

Les librairies

Pour faire fonctionner un afficheur LCD, un servo-moteur, un clavier matriciel ou un moteur de lecteur de CD avec votre carte arduino, vous avez besoin de fonctions spécifiques. Les librairies fournies par Arduino vous permettent d'interfacer ce genre de périphérique. Il sera alors très facile de piloter un servo-moteur ou un afficheur à cristaux liquides. A l'aide de l'instruction #include vous demanderez au logiciel Arduino d'inclure la librairie Servo et LCD.

Développement rapide d'application

Les gens qui travaillent déjà avec les micro-contrôleurs sont aussi attirés par Arduino pour ses capacités de développement flexibles et sa facilité de mise en oeuvre rapide des idées.
En outre, il y a une communauté Arduino active et solidaire, accessible dans le monde entier via les forums et le wiki Arduino. Les exemples de développement et les solutions aux problèmes posés, peuvent vous fournir l'inspiration et l'aide nécessaire à vos propres projets.

Pour avoir un aperçu des aspects de la programmation, vous pouvez regarder comment programmer avec Arduino et suivre les tutoriels en réalisant de petits programmes d'apprentissage et de prise en main de cet environnement.
Je vous montre également deux exemples de programme en fin d'article.

Les cartes électroniques

Pour débuter

Carte électronique Aduino unoLa carte Arduino de base est la "Uno". Elle se décline également sous des versions appelées "Duemilanove" et "Léonardo". C'est aussi la préférée des débutants. De petite taille (6,86 cm par 5,33 cm), elle se loge partout et s'emporte facilement en voyage. Elle se connecte à votre ordinateur avec un câble USB standard et contient la partie logiciel (bootloader) qui permet de programmer vos idées électroniques et le pilotage de votre robot "fabrication maison".

Les connecteurs disponibles sur la carte permettent par exemple : le branchement de capteurs (interrupteurs, accéléromètres, mesureur de distance à ultrasons), la commande d'actionneurs (leds, haut-parleurs, moteurs, afficheurs LCD) ou la connexion d'une "carte fille".
Sur les quatorze broches d'entrées/sorties numériques, six peuvent être utilisées en tant que sorties à modulation de largeur d'impulsion (MLI).

Des projets plus importants avec la Mega

La carte Arduino "Mega" convient aux réalisations qui réclament plus de puissance. Avec un nombre d'entrées/sorties passant à 54, nous pouvons prétendre à plus de variables analogiques d'entrées (16) et piloter jusqu'à 14 sorties MLI (ou PWM).
Un gros avantage est que la carte Mega reste compatible avec les cartes Duemilanove et Diecimila.

Une version 32 bits : la Due

La carte Arduino Due embarque un micro-contrôleur Atmel® SAM3X/A incluant un processeur RISC 32 bits (ARM Cortex-M3). Voici quelques caractéristiques remarquables par rapport aux Arduino basiques.

  • Horloge externe cadencée à 84 MHz,
  • 512 Kbytes de mémoire flash pour le code,
  • 96 Kbytes de SRAM disponiles,
  • convertisseurs AD en 12 bits,
  • deux convertisseurs DA en 12 bits,
  • un contrôleur DMA.

Avec ce genre de matériel vous jouez dans la cours des grands. Vous pouvez envisager des applications industrielles, domotiques/immotiques et multimédias. Nous retrouvons une certaine compatibilité avec la Uno.

Les compatibles Arduino

Ce sont des cartes électroniques programmables basées sur le micro-contrôleur ATmega328. Elles possèdent des configurations matérielles spécifiques et restent compatibles Arduino au niveau de la programmation car elles embarquent le bootloader Arduino. Nous en trouvons des spéciales robotique (avec circuits de commande de moteurs pas à pas), des miniaturisées ou d'autres munies de 48 pilotes de servo-moteurs.

Les Shield

Une carte Arduino ne délivre que des signaux analogiques ou numériques. Nous ne pouvons pas alimenter directement des actionneurs gourmands en courant. Il en est de même pour les entrées : il ne faut pas dépasser les valeurs limites de 5 Volts (3,3 V pour la Due).
Il faudra alors mettre en place une interface entre Arduino et vos capteurs ou actionneurs.

Afficheur lcd pour Arduino
Ce shield est un circuit muni d'un ecran LCD et de six boutons de commande à impulsion.

Pour l'esthétique et le côté pratique, il faudra réaliser une carte d'extension directement adaptable sur votre Arduino. Elle doit être compatible mécaniquement et électriquement.
Ce genre de cartes électroniques qui se connectent directement sur une carte Arduino, se désigne communément "Shield". Nous pouvons transcrire "Shield" comme étant une carte d'extension ou une carte fille. Les versions développées par positron-libre sont désignées comme Module Electronique Compatible Arduino (MECA©).

Modules à fonctions spécifiques ou briques hardware

Pour ceux qui désirent aller vite dans le prototypage ou la construction sans conception préliminaire, il existe un nombre suffisant de modules pré-câblés. Nous y retrouvons des capteurs à ultra-son, à infra-rouge, laser, des caméras, des émetteurs/récepteurs de télécommande infra-rouge, des micro-interrupteurs et toutes sortes d'éléments électroniques déjà câblés sur un circuit imprimé.
Avec ces modules vous pouvez tester rapidement un petit robot ou toutes autres réalisations personnelles en vous occupant que de la programmation de l'Arduino.

Capteur de distance à ultrasons
Ce module capteur à ultrasons s'interface avec votre Arduino pour mesurer des distances comprise entre le capteur lui-même et un obstacle.

Exemples avec Arduino Uno

Débuter en programmation avec le moniteur série

Nous allons, dans cet exemple, utiliser (ou simuler) un port série en utilisant le moniteur série.
Ce premier programme vous permet d'appliquer les pratiques suivantes :

  • Ecrire dans la zone mémoire (appelée buffer) du port série et afficher dans la fenêtre du moniteur,
  • saisir une chaîne de caractères et l'envoyer à Arduino (dans le buffer série),
  • lire le contenu du buffer du port série et l'afficher en utilisant une boucle.

Le matériel

Vous avez seulement besoin de la carte Arduino reliée à votre ordinateur par son câble USB.

Le code

Il faut configurer correctement L'IDE pour la carte utilisée et le port COM disponible.
Recopier le code ci-dessous dans la fenêtre de saisie. Enregistrez puis transférez le programme.


char inchar = 0;
void setup()
{
Serial.begin(9600);
Serial.println("Bonjour !");
Serial.println("Entrez quelques caracteres SVP");
Serial.flush();
delay(100);
}

void loop()
{
while (Serial.available() > 0)
	{
	inchar = Serial.read(); // lecture
	Serial.println(inchar); // affiche
	}
// www.positron-libre.com - 2014
}

Explications et fonctionnement

Cliquez sur le symbole du moniteur série : une fenêtre s'ouvre, affiche les messages.
Fenetre du moniteur série

Vous pouvez ensuite saisir, au clavier du PC, quelques caractères dans le champ supérieur de la fenêtre du moniteur série (1).
Saisie dans le champ du moniteur série

Vous appuyez ensuite sur le bouton [Envoyer] situé à droite du champ (2).
Affiche les caractères contenus dans le port série
Le moniteur affiche les octets contenus dans le buffer du port série (3) ; ici, ce sont les caractères que vous avez entrés dans le champ du terminal.

Le guide pdf et les codes sont téléchargeables en fin d'article.

Pour débuter en électronique : son et lumière

Dans cet exemple vous allez voir comment allumer des LEDs et jouer quelques notes de musique dès que vous appuyer sur un bouton poussoir. Nous allons utiliser les instructions :

  • digitalWrite pour allumer la led verte sur la sortie digitale 9,
  • analogWrite pour allumer et éteintre progressivement (dimmer) la led rouge sur la sortie PWM 10,
  • tone() et notone() pour jouer des notes sur la sortie digitale 8,
  • digitalRead() pour savoir si le bouton poussoir a été actionné sur la sortie digitale 13.

Le matériel

  • Une led rouge,
  • une led verte,
  • 2 resistances de 330 à 1000 ohms (code des couleurs [ noir marron rouge ] pour 1000 ohms ou 1 Kilo-ohm),
  • un petit haut parleur de 8 ohms d'impédance,
  • une resistance de 100 ohms (noir marron noir),
  • un bouton poussoir ou micro-switch à contact momentané "marche" (NO),
  • et quelques fils de câblage.

Schéma de principe

Les développeurs ont pris l'habitude de représenter leurs montages avec des images illustrant le câblage à réaliser, pour faire fonctionner le programme associé. Un petit dessin permet d'expliquer les branchements à effectuer sur les connecteurs de la carte Arduino.
Implantation Haut-parleur et LEDs sur Arduino
Schéma de principe du montage pour le programme "son et lumière".

Le câblage

En pratique, il est préférable d'utiliser des plaques de prototypage ; nous les appelons souvent "breadboard", ce qui signifie "planche à pain". Cette dénomination est historiquement utilisée depuis que les premiers électroniciens réalisaient des montages avec tubes à vide, gros transformateurs et composants de filtrage sur des planches en bois (type planche à pain). Elles servaient de support solide et rigide pour accueillir leurs expérimentations souvent lourdes et encombrantes.

Aujourd'hui nous utilisons des plaquettes de prototypage à trous. Elles accueillent les composants à pattes (oubliez les cms) et les supports de circuits intégrés.
Cablage sur breadbord
Voici donc notre montage sous forme de schéma d'implantation pour breadboard.

Le Shield BOE

Vous pouvez aussi utiliser, pour des raisons pratiques, le Shield BOE de Parrallax® qui est en même temps un shield Arduino et le module électronique fournie avec le "BOE Shield Bot" kit.
Nous voyons ci-après une photo du câblage avec un microswitch et un petit haut-parleur. Le commutateur "power" de la BOE est à configurer en position 2 pour disposer de la tension de 5 Volts sur les connecteurs accolés à la mini-breadboard.Implantation  sur le shield BOE

Le code

Recopier le code ci-dessous dans la fenêtre de saisie. Enregistrer puis transférer le programme.


//Définition des variables
int MLIrouge = 10;
int LEDverte = 9;
int dcy = 13;
boolean set = false;
// Définition des constantes
#define NOTE_B2  123
#define NOTE_C3  131
#define NOTE_CS3 139
#define NOTE_D3  147
#define NOTE_DS3 156
#define NOTE_E3  165
#define NOTE_F3  175
#define NOTE_FS3 185
#define NOTE_A3  220
#define NOTE_B3  247
// Tableau des notes de la mélodie
int melodie[] = {
  NOTE_B2, NOTE_CS3,NOTE_D3, NOTE_E3, 
  NOTE_FS3, NOTE_D3, NOTE_FS3,
  NOTE_F3, NOTE_CS3, NOTE_F3, NOTE_E3, 
  NOTE_C3, NOTE_E3, 0,
  NOTE_B2, NOTE_CS3,NOTE_D3, NOTE_E3, 
  NOTE_FS3, NOTE_D3, NOTE_FS3, NOTE_B3,
  NOTE_A3, NOTE_FS3, NOTE_D3, NOTE_FS3, NOTE_A3  
};
//Tableau des durées des notes
int dures[] = {
  4, 4, 4, 4, 4, 4, 2,
  4, 4, 2, 4, 4, 2, 8,
  4, 4, 4, 4, 4, 4, 4, 4,
  4, 4, 4, 4, 1
  };
void setup()
{
  // Initialisation des Entrées/Sorties
  analogWrite(MLIrouge, 0);
  pinMode(LEDverte, OUTPUT);
  pinMode(dcy, INPUT);
  digitalWrite(LEDverte, LOW);
  delay(100);
}

void loop()
{
analogWrite(MLIrouge, 0); //init
// Départ du cycle
// on appuie brièvement sur le bouton
if((digitalRead(dcy) == true) || (set == true))
{
 delay(100);//anti rebond 
 set = true ;// mémoire
 }
else set = false; 
//***************************
// La séquence :
// si on a appuyé sur le bouton
// un nouveau cycle commence
if (set == true)
{
// **********************
// variation montante
// de la LED rouge
for (int j = 0; j <= 255; j++)
  { 
  analogWrite(MLIrouge, j); 
  delay(15); // pause de 15ms 
  }
// **************************
//Phare de Cordouan
// avec la LED verte
digitalWrite(LEDverte,HIGH);// allume la LED
delay(3600); // attente 3600ms
digitalWrite(LEDverte,LOW);// éteint la LED
delay(1200); // attente 1200ms
digitalWrite(LEDverte,HIGH);
delay(1200); 
digitalWrite(LEDverte,LOW);
delay(1200); 
 digitalWrite(LEDverte,HIGH);
delay(3600); 
digitalWrite(LEDverte,LOW);
delay(1200);
// *************************  
// La musique :
// Le roi descend de la montagne
// Peer Gynt : Edvard Grieg 
for (int maNote = 0; maNote < 27; maNote++)
  {
  int dure = 900/dures[maNote];
  // joue une note :
  tone(8, melodie[maNote],dure);
  // pause entre les notes
  int pause = dure * 1.30;
  delay(pause);
  }
// stop le générateur :
noTone(8);
// Fin de la période musicale
//**********************  
// variation descendante
// de la LED rouge
for (int i = 255; i >= 0; i--)
  {
  analogWrite(MLIrouge, i);
  delay(10); // pause de 10ms 
  }
set = false;//le cycle stopera
}
else set = false;
}// fin de la boucle loop 

Déroulement de la séquence

Après un appui bref sur le bouton poussoir, une séquence commence. La LED rouge s'illumine progressivement, puis la LED verte reproduit le cycle du phare de Cordouan. Nous avons ensuite le petit morceau de musique qui joue les deux premières mesures de "Le roi descends de ma montagne" d'Edvard Grieg dans Peer Gynt. L'extinction progressive de la LED rouge termine la séquence.
Il faudra appuyer à nouveau sur le bouton, pour redémarrer l'enchaînement de ces mini-programmes son et lumière.

Le guide complet de la réalisation étape par étape est téléchargeable en bas de page.

Faire soit même un shield ou une extension MECA

Dans le mondes des "makers" et autres bricoleurs professionnels, nous sommes toujours tentés de construire soit même les cartes électroniques ad hoc pour notre application. Arduino n'échappe pas à cette règle. Je vous donne une vue mécanique minimum requise de la connectique shield d'une carte arduino. Attention à l'écart des deux connecteurs "DIGITAL" qui est de 1,6 dixième de pouce au lieu d'être au pas de 2,54mm.

Plan du circuit

Vue mécanique de la connectique shield pour arduino

Plan d'implantation de la connectique arduino (vu de dessus).
Cliquez ici pour la vue en pleine page de cette empreinte Arduino.
Les trous des pastilles supportant les connecteurs fille mesurent 1 mm de diamètre, 0,8 mm pour les autres perçages et 3 mm pour les vis de la fixation mécanique du circuit.

Dossiers techniques, schémas ISIS, routage ARES et fichiers GERBER téléchargeables en bas de page.

Conclusion : un jeux de carte qui ne manque pas d'atouts

Les cartes Arduino Uno conviennent à toutes les personnes passionnées et/ou désireuses d'apprendre l'électronique numérique, la programmation informatique, de s'initier à la robotique ou de réaliser des objets ou maquettes animées. C'est une bonne base pour concevoir ensuite ses propres Shield, extensions et programmes.
Les cartes Mega ou Due restent souvent destinées à des projets importants et à des personnes possédant une première expérience Arduino.

Points forts :

  • Disponibilité et donc facilité de remplacement,
  • gamme étendue de cartes,
  • nombreux exemples de programmes sur le web et dans les livres,
  • schémas électroniques et programmation en sources libres,
  • facllité de fabriquer ses propres extensions,
  • possibilité de programmer ses propres librairies,
  • une communauté de développeurs forte.

Points faibles :

  • Bien faire attention aux alimentations,
  • les e/s dédiées (TX, Rx…) sont "confondues" avec les autres.

Ma note : 5 sur 5

Acces aux guides