Un microcontrôleur est un composant électronique qui regroupe les principaux composants d'un ordinateur.
Ils sont utilisés dans des systèmes électroniques et informatiques de taille limitée et spécialisée dans une tâche, ce sont les systèmes embarqués, où ils tiennent le rôle de “cerveau”, en traitant l'information et en permettant l'automatisation du système grâce à un programme implémenté.
Un microcontrôleur n'est pas aussi puissant qu'un micro-ordinateur (un ordinateur personnel). Il est destiné à réaliser une tâche unique/répétitive plutôt simple. Sa faible puissance de calcul permet une faible consommation d'énergie, sa taille réduite permet une incorporation dans de nombreux systèmes.
Un microcontrôleur est composé (principalement) de:
Les microcontrôleurs sont implémentés sur une carte électronique qui est reliée à des périphériques. Ces périphériques peuvent être des périphériques de capture ou chargé d’exécuter une action.
Par exemple un thermomètre capture l'information liée à la température, un moteur peut être chargé de l'action “tourner” afin d'actionner les palles d'un ventilateur.
Le microcontrôleur est chargé de faire le lien entre informations entrantes et informations sortantes en fonction du programme qui lui a été donné d’exécuter.
Par exemple: en fonction de la température détectée par le thermomètre, le microcontrôleur est chargé de commander au moteur de s'allumer ou de s’éteindre.
La notion de transport de l'information est importante, elle est réalisée par le BUS.
Un microcontrôleur est programmable. C'est-à-dire qu'un programme ou algorithme peut être implémenté. L'algorithme écrit dans le langage de programmation utilisé est d'abord transcrit dans un langage que comprend le microcontrôleur puis enregistré dans la ROM. L'algorithme est ensuite exécuté.
Pour programmer une carte Arduino il est nécessaire d'écrire un algorithme dans un langage particulier. Ce langage est le C++ avec des bibliothèques de fonctions et de classes déjà importées et destinées à faciliter la programmation.
Une fois écrit via l'IDE Arduino, l'algorithme est compilé et transféré à la ROM de la carte (tout ceci de manière automatique via l'IDE).
La compilation est l'action de transcription d'un algorithme écrit en langage de programmation (compréhensible par l'humain) en un langage directement compréhensible et exécutable par la machine.
Les langages Python et Matlab ne sont pas compilables (sauf manipulation spéciale), ils nécessitent un système plus complexe fonctionnant “derrière eux” : un interpréteur (ce sont des langages interprétés), hormis les avantages de cette technique, l'interprétation impacte de manière négative les performances. Les langages C, C++, Fortran sont des langages dont le code une fois compilé est un fichier qui peut être directement exécuté par le processeur, hormis les inconvénients, la compilation permet de bonne performances.
Ainsi les microcontrôleurs ne possèdent pas de systèmes d'exploitations, ce qui leur permet une efficacité relative dans l’exécution des algorithmes, bien que leurs ressources soient limitées.
L’exécution de l'algorithme est réalisée séquentiellement, c'est-à-dire que les instructions sont réalisées l'une après l'autre. Chaque instruction attendant que la précédente soit achevée pour être exécutée (sauf indications spéciales dans le code).
L’exécution d'une instruction est réalisée en plusieurs étapes, qui sont en général :
Les parties lire en mémoire et écrire en mémoire nécessite un adressage des données, une sorte de carte où les coordonnées dans la mémoire de chaque donnée est écrite.
Le cycle d'horloge est la période du signal d'horloge, qui est un signal périodique oscillant qui rythme les actions du processeur.
L'Instruction par cycle d'horloge est une grandeur qui indique la performance du processeur, elle compte le nombre d'instructions exécutées pendant un cycle d'horloge.
1. Port USB
2. Port d'alimentation
3. Microcontrôleur
4. Pins digitaux
5. Pins analogiques
6. Sortie de tension et masses (GND)
On se sert d’une breadboard pour faire des circuits sans avoir besoin de souder les composants, ce qui est pratique pour l'apprentissage le prototypage.
Dans cet exemple, la résistance est reliée à l’alimentation grâce aux fils rouge et vert (lien horizontale) alors que la résistance et la LED sont liées grâce à un lien vertical (encadré orange).
Un IDE (Integrated Developpement Environment) est un logiciel qui fournit des outils facilitant le développement, la programmation de programme ou d'application.
L’IDE d’Arduino est l’un des moyen les plus simples et le plus pratiques pour développer un programme puis le téléverser (l’enregistrer sur la carte). Il automatise de nombreuses tâches et facilite la communication avec la carte.
Il est disponible gratuitement sur ce lien: Software Arduino
La zone 1 est la zone de saisie. C’est ici que le code devra être typer.
La zone 2 est le terminal, c’est ici que s’afficheront les éventuels messages d’erreurs.
Le bouton:
Le moniteur série permet d'afficher des données, des résultats, mais aussi d'envoyer des données à l'Arduino.
Voici comment connecter une carte à votre ordinateur.
Le langage utilisé avec Arduino est le langage C++, avec des bibliothèques importées par défaut. Ceux ayant déjà codé en C++ ou C ne seront donc pas dépaysés.
Ces langages induisent des principes que ceux n’ayant utilisé que python peuvent ne pas connaître, nous en détaillons quelques-uns.
int a; //déclaration de la variable a de type int a = 10; //attribution de la valeur 10 à la variable a double b; //déclaration de la variable b de type double b = 10.05; //attribution de la valeur 10.05 à b int c = 5; //forme contracté de déclaration & attribution
;
// exemple
/* exemple */
for(int k = 0; k < n; k++){ //bloc de code }
if(condition == true){ //bloc de code }
while(condition == true){ //bloc de code }
Nous détaillons ici les fonctions de bases d'Arduino.
pinMode(5, INPUT); pinMode(1, OUTPUT); //ou en encore : int nom_pin = 2; pinMode(nom_pin, INPUT);
int valeur; valeur = digitalRead(5);
int nom_pin = 5; int valeur = LOW; digitalWrite(nom_pin, valeur);
int valeur; valeur = analogRead(A5);
int valeur; valeur = 500; int nom_pin; analogWrite(nom_pin, valeur);
delay(3000); //pause de 3s
Le site d'Arduino fourni une liste des fonctions disponibles et des détails les concernant : Arduino Reference
Il se fait avant toute chose. on y insérer les différent nom de pin en gardant des noms caractéristiques.
Par exemple :
int Led = 2;
Elle se fait durant la bloc setup(), on y insère tous les digitalMode() afin de définir comment seront utilisés les différents pin.
Le bloc de code loop() est l'endroit où insérer votre code afin qu'il soit exécuté en boucle…
Le baud concerne la commande énigmatique Serial.begin(9600);. Cette commande précise la vitesse de communication entre la carte et l’ordinateur. Il est nécessaire de la préciser si plus tard dans votre projet vous souhaitez utiliser le moniteur série (voir partie IDE) qui permet par exemple d’afficher en temps réel les données des capteurs de la carte.
La catode d'une LED ou diode électroluminescente est sa plus longue pate.
Allumer une LED avec une carte Arduino.
Faire clignoter une LED avec une carte Arduino.
Même si un bouton poussoir a quatre pattes, il reste un dipôle. Les pattes sont reliées deux à deux.
Allumer la LED si le bouton poussoir est activé.
Allumer ou éteindre la LED lorsqu'on appuie sur le bouton poussoir.
Plus la photorésistance reçoit de la lumière, plus la résistance est faible. Elle renvoie à la carte Arduino une valeur entre 0 et 1023.
Si la valeur de la photorésistance est supérieure à 500, allumez la LED. Sinon éteignez-la.