Aller au contenu

Microcontrôleur

Ce que dit Wikipédia

Un microcrontrôleur est un circuit intégré qui rassemble les éléments essentiels d'un ordinateur : processeur, mémoires (morte et mémoire vive), unités périphériques et interfaces d'entrées-sorties.

Par rapport à des systèmes électroniques à base de microprocesseurs, ils permettent de diminuer la taille, la consommation électrique et donc le coût des produits pour des performances satisfaisantes.

Plusieurs types

On retrouve essentiellement, l'ATmega328(carte Arduino), l'ESP32(populaire pour les applications IoT), le PIC16(systèmes embarqués industriels), ...

Un microcrontrôleur ne contient pas de système d'exploitation: il ne peut contenir qu'un seul programme!

Le principe

Les cartes intégrées supportant les contrôleurs, ont des entrées(pour les capteurs) et des sorties(pour les actionneurs).

Par exemple, un programme peut lire sur une entrée, la valeur donnée par un capteur de luminosité et en conséquence peut allumer une led branchée sur une sortie. L'essentiel de nos programmes reposera sur ce concept d'entrée/sortie.

En ce qui nous concerne, nous nous concentrerons d'abord sur l'Arduino avant de découvrir les possibilités de l'ESP32.

La gamme Arduino

Il existe de nombreuses carte Arduino. Commençons avec la plus commune, la carte Uno.

arduino_uno

La carte Uno

La carte possède une alimentation, des broches d'entrées et des broches de sorties: c'est minimaliste mais suffisant pour comprendre son fonctionnement.

arduino_uno

Digital contre Analogique

Les entrées/sorties (E/S) digitales sont numériques et n'ont donc que deux états(0V ou 5V). Les E/S analogiques proposent des valeurs continues entre 0V et 5V(donc beaucoup plus de possibilités...)

Vous remarquerez aussi la présence d'un port USB qui permet non seulement d'alimenter la carte en 5V mais surtout de téléverser le programme sur la carte!

Téléverser??

Téléverser c'est l'action qui consiste à écrire puis à installer le programme dans le microcontrôleur.

L'environnement Arduino

Il faut pour cela un environnement de travail pour écrire un programme Arduino (l'équivalent de Thonny pour Python...). Nous utiliserons naturellement l'IDE d'Arduino:

arduino_uno

Première manipulation

C'est parti!

Clignotage de led

  1. Tout d'abord brancher votre carte Arduino sur un port USB de votre ordinateur.
  2. Lancer l'IDE arduino et vérifier bien qu'il reconnaît la carte. (Menu Outils-> Type de carte et Port)
  3. Recopiez le programme ci-dessous dans la zone de script et enregistrez sous le nom clignotage_led.
  4. Téléverser dans l'arduino en appuyant sur le bon bouton (je vous laisse chercher...)
Code à copier
💻 Script C++
//***** FONCTION SETUP = Code d'initialisation *****
// La fonction setup() est exécutée en premier et une seule fois, au démarrage du programme

void setup()    // début de la fonction setup()
{
    pinMode(13, OUTPUT);  // Initialise la broche 13 comme sortie
    Serial.begin(9600);   // Ouvre le port série à 9600 bauds
}               // fin de la fonction setup()

//***** FONCTION LOOP = Boucle sans fin = cœur du programme *****
// la fonction loop() s'exécute sans fin en boucle aussi longtemps que l'Arduino est sous tension

void loop()     // début de la fonction loop()
{
    digitalWrite(13, HIGH);// Met la broche 13 au niveau haut = allume la LED
    Serial.println("diode allumée");
    delay(500);              // Pause de 500 ms
    digitalWrite(13, LOW);   // Met la broche 13 au niveau bas = éteint la LED
    Serial.println("diode éteinte");
    delay(2500);              // Pause 500 ms
}               // fin de la fonction loop()

Vous pouvez remarquez les instructions Serial.println qui permettent d'imprimer dans la console. Mais où se trouve t-elle? Il suffit de cliquer sur le bouton en haut à droite (en forme de loupe) de l'IDE. Vérifier bien que la transmission se fait avec la bonne valeur de baud...

Première synthèse

Le langage utilisé pour programmer une carte Arduino est le C++.

Toutes les instructions se terminent par un ; et l'indentation n'est ici pas du tout obligatoire (elle permet de visualiser les différentes structures du code).

Toutes les instructions d'une fonctions sont regroupées autour d'accolades.

Il existe deux fonctions de base reconnaissables par la particule void:

  • la fonction setup(): c'est une fonction écrite au départ qui définit la configuration de base comme définir les broches d'entrées et de sorties. Elle n'est exécutée qu'une seule fois au début du programme.
  • la fonction loop(): c'est une boucle infinie! Toutes les instructions qui s'y trouvent sont répétées sans fin...