100%
GRIMOIRE
GrimoireCorpus DindonVolumes de SynthèseLe Socle du Fer
FRENAR
RATIO
LE SOCLE DU FER · SUPPORT DE COURS · SEMAINE 4
◆◆◆
BASES DE LA
PROGRAMMATION EMBARQUÉE
Semaine 4 sur 26 · Bloc 2 — Automatisation Physique
10h théorie · 25h pratique
◆ OBJECTIFS PÉDAGOGIQUES DE LA SEMAINE

1. Comprendre l'architecture d'un microcontrôleur (CPU, mémoire, broches E/S)
2. Distinguer capteur et actionneur, comprendre la notion de boucle de contrôle
3. Écrire et téléverser un premier programme Arduino
4. Lire un capteur numérique et analogique
5. Commander un actionneur (moteur, relais) depuis un programme

◆◆◆
NOTE D'USAGE POUR LE FORMATEUR

Cette semaine fait le lien direct avec le bloc 1 : la logique booléenne (S3) se retrouve dans les conditions de programme, et la lecture de tension (S1) dans les capteurs analogiques. Le rappeler explicitement aide les apprenants à voir la continuité du parcours.

Amine RAITI · Architecte Infrastructure & SRE
Document public · CC BY-NC-SA 4.0 · AI Powered by Amine
Opération Dindon
RATIO
PLAN DE COURS · 10H
FIL CONDUCTEUR THÉORIQUE
4.1 · Architecture d'un microcontrôleur3h
— CPU, mémoire flash (programme), RAM (variables), broches d'entrée/sortie (E/S)
— Différence microcontrôleur / microprocesseur (système intégré autonome vs nécessitant des périphériques externes)
— Présentation de la carte Arduino utilisée (broches numériques, analogiques, alimentation)
4.2 · Capteurs et actionneurs3h
— Capteur = transforme une grandeur physique en signal électrique (ex : bouton, capteur de luminosité, capteur de distance)
— Actionneur = transforme un signal électrique en action physique (ex : LED, moteur, relais)
— Signal numérique (0/1) vs signal analogique (valeur continue) — lien avec le binaire de S2
4.3 · La boucle de contrôle2h
— Structure d'un programme Arduino : setup() (initialisation, une fois) et loop() (boucle infinie)
— Notion de boucle de contrôle : lire un capteur → décider → agir sur un actionneur → répéter
— Lien direct avec la logique booléenne de S3 : les conditions (if/else) utilisent AND/OR/NOT
4.4 · Lecture analogique et conversion2h
— Conversion analogique-numérique (CAN) : une tension continue devient une valeur numérique (0-1023 sur Arduino, 10 bits)
— Lien avec S1 (tension) et S2 (binaire, puissances de 2 : 2^10 = 1024 valeurs possibles)
EXEMPLE À DÉVELOPPER AU TABLEAU

Un capteur de luminosité alimenté en 5V et lu par une entrée analogique 10 bits renvoie une valeur entre 0 (0V, obscurité totale) et 1023 (5V, pleine lumière). Cette valeur peut ensuite être comparée à un seuil dans une condition (if valeur > 500).

RATIO
TP1 · PREMIERS PROGRAMMES ARDUINO ET LECTURE DE CAPTEUR · 12H

Matériel : carte Arduino Uno (1 par binôme), câble USB, ordinateur avec IDE Arduino installé, LED, résistance 220Ω, bouton poussoir, capteur de luminosité (photorésistance LDR), breadboard, câbles de liaison.

(1h30) Installation et prise en main de l'IDE Arduino, téléversement du programme "Blink" fourni (faire clignoter la LED intégrée), vérification du fonctionnement.
(2h) Câblage d'une LED externe sur breadboard avec résistance de protection, modification du programme pour la faire clignoter à une fréquence différente.
(2h30) Câblage d'un bouton poussoir en entrée numérique, écriture d'un programme qui allume la LED uniquement quand le bouton est appuyé (lien direct avec la logique conditionnelle vue en 4.3).
(3h) Câblage d'un capteur de luminosité (photorésistance) en entrée analogique, lecture et affichage de la valeur brute (0-1023) sur le moniteur série.
(2h) Écriture d'un programme combinant capteur et actionneur : allumer la LED automatiquement si la luminosité mesurée descend sous un seuil donné (simulation d'éclairage automatique).
(1h) Tests, ajustement du seuil de déclenchement, validation du comportement attendu.
CORRIGÉ TP1

Programme attendu pour le point 3 (bouton → LED) : dans la fonction loop(), lire l'état de la broche du bouton avec digitalRead(), puis utiliser une structure if (etatBouton == HIGH) { digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); }.

Programme attendu pour le point 5 (capteur → LED automatique) : lire la valeur du capteur avec analogRead() (variable entre 0 et 1023), puis comparer à un seuil (par exemple 400) avec if (valeurCapteur < 400) { digitalWrite(ledPin, HIGH); }.

Point d'attention pour la correction : vérifier que chaque binôme a bien identifié le sens de variation du capteur (valeur qui diminue ou augmente selon l'obscurité, ce qui dépend du montage en pont diviseur de tension utilisé).

RATIO
TP2 · COMMANDE DE MOTEUR ET DE RELAIS · 13H

Matériel : module relais 5V, petit moteur DC, transistor NPN (si relais non disponible), alimentation externe pour le moteur, multimètre (acquis S1), breadboard, câbles de liaison.

(2h) Présentation du module relais : pourquoi un relais est nécessaire pour commander une charge de puissance supérieure à celle que peut fournir directement une broche Arduino (rappel du calcul de puissance vu en S1).
(3h) Câblage du relais commandé par une broche numérique Arduino, programme de test (activation/désactivation toutes les 2 secondes).
(3h) Câblage d'un petit moteur DC via le relais, alimenté par une source externe, commandé par le programme Arduino.
(3h) Écriture d'un programme intégrant capteur (du TP1) et actionneur (moteur via relais) : démarrer le moteur automatiquement selon une condition de capteur (par exemple, ventilateur qui démarre si une simulation de température dépasse un seuil).
(2h) Tests complets du système, mesure au multimètre du courant consommé par le moteur en fonctionnement, vérification de la cohérence avec les notions de puissance de S1.
CORRIGÉ TP2

Justification attendue pour le point 1 : une broche Arduino délivre typiquement un courant maximal de 20-40 mA, insuffisant pour la plupart des moteurs DC qui nécessitent plusieurs centaines de mA. Le relais permet de commander, avec un faible courant de pilotage, un circuit de puissance totalement séparé électriquement.

Programme attendu pour le point 4 : structure similaire au TP1 (lecture capteur + condition + action), mais avec digitalWrite() sur la broche du relais plutôt que sur une LED — démonstration que la même logique de programmation s'applique à n'importe quel actionneur.

◆ FICHE DE SYNTHÈSE — AUTO-ÉVALUATION SEMAINE 4
1. Je sais décrire l'architecture de base d'un microcontrôleur (CPU, mémoire, E/S).
2. Je sais distinguer un capteur d'un actionneur.
3. Je sais écrire et téléverser un programme Arduino simple.
4. Je sais lire une entrée numérique (bouton) et une entrée analogique (capteur).
5. Je sais utiliser une condition (if/else) pour déclencher une action selon une lecture de capteur.
6. Je sais pourquoi un relais est nécessaire pour commander une charge de puissance.
7. Je sais câbler et commander un moteur DC via un relais.
8. Je sais intégrer capteur et actionneur dans un même programme.