Présentation de la carte Arduino
Arduino est une carte électronique construite en matériel libre sur lequel se trouve un microcontrôleur. La carte est programmable à l'aide d'un logiciel afin de réaliser des tâches très diverses, en domotique, robotique...
Fig.1 : un modèle d'Arduino : la Uno Les plans de la carte elle-même sont publiés en licence libre, la plus part des composants sont du matériels libres. La carte est basée sur un microcontroleur Atmel.
Arduino est une plateforme utilisée dans de nombreux projets de type drone ou imprimante 3D. Arduino est une solution idéale pour le prototypage de projet.
Fig.2 : exemple de projet à base d'Arduino : drone Arducopter
Différents modèles de carte existent, nous utilisons dans la suite les modèles Uno ou Leonardo.
Descriptif des broches et ports de la carte Uno
Fig.3 : la connectique de la carte
La carte présente deux modes de fonctionnement :
- Reliée par le port USB à un ordinateur, ce mode permet à la fois d'alimenter en énergie la carte et de pouvoir communiquer avec celle-ci (programmation du microcontrolleur et échange de données) ;
- En autonomie, cette carte peut être reliée à une alimentation séparée (7 à 12 V) et devient indépendante de l'ordinateur.
La carte présente de nombreuses connexions :
- Des entrées analogiques, c'est à dire des broches pouvant recevoir une tension comprise entre 0 à 5 V (au delà, il faut prévoir un pont diviseur).
- Des entrées/sorties numériques fonctionnant en tout ou rien (TOR) sur des niveaux électriques proches de 0 et 5 V. Il est tout de même possible de simuler une sortie analogique en utilisant la modulation de largeur d'impulsion (PWM)
Le logiciel de programmation de la carte Arduino
Fig.4 : L'interface utilisateur du logiciel Arduino
Le logiciel de programmation des modules Arduino est une application Java, libre et multi-plateforme, servant d'éditeur de code et de compilateur, et qui peut transférer le firmware et le programme.
Le langage de programmation utilisé est le C++, compilé avec avr-g++ 4 et lié à la bibliothèque de développement Arduino, permettant l'utilisation de la carte et de ses entrées/sorties. La mise en place de ce langage standard rend aisé le développement de programmes sur les plates-formes Arduino, à toute personne maîtrisant le C ou le C++.
Vous écrivez votre programme dans la zone de texte du logiciel Arduino.
Fig.5 : barre d'outils du logiciel
Le principal bouton de la barre des outils (second bouton depuis la gauche) est le bouton “Téléverser”. Son action consiste à vérifier la syntaxe de votre programme, le compiler et le téléverser dans la carte.
Structure d'un programme
Considérons le programme suivant fourni dans les exemples du logiciel Arduino :
// AnalogReadSerial // Reads an analog input on pin 0, prints the result to the serial monitor. // Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground. // This example code is in the public domain. // the setup routine runs once when you press reset: const int analogInPin = A0; void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); } // the loop routine runs over and over again forever: void loop() { // read the input on analog pin 0: int sensorValue = analogRead(analogInPin); // print out the value you read: Serial.println(sensorValue); delay(1); // delay in between reads for stability }
Le programme est écrit dans un langage proche du C++. Il est composé de 3 parties :
- Ligne 6 : affectation des variables qui auront alors une portée globale (utilisable dans toutes les autres parties du programme). Voir portée des variables ;
- Ligne 7 : fonction setup(). Cette fonction d'initialisation n'est exécutée qu'une seule fois.
- Ligne 12 : fonction loop(). Cette fonction est exécutée en boucle infinie et ne peut être stoppée que par un reset de la carte.
L'algorigramme de fonctionnement est le suivant :
Fig.6 : algorigramme montrant le fonctionnement du microcontroleur
Remarque : la condition dans le test 1 > 0 est toujours vraie et correspond donc bien à une boucle infinie.
Augmenter les capacités de la carte : les boucliers ou shields
Il s'agit de carte électronique qui viennent se fixer sur la carte arduino dans le but d'apporter des fonctionnalités supplémentaires :
Fig.7 : exemple de shield : carte relais
Il existe des dizaines de shields différents dans les domaines ethernet, wifi, gsm, moteur pas à pas, afficheurs ...