⚙ Spécialité Sciences de l’ingénieur Première Générale · Chapitre 6

Information numérique et programmation embarquée

Microcontrôleur et carte de développement, entrées-sorties logiques et analogiques, signal MLI (PWM) et rapport cyclique, structure d'un programme embarqué (initialisation, boucle), algorigrammes, liaisons série et bus de communication.

1. Le microcontrôleur

Définition

Un microcontrôleur réunit sur une puce un processeur, de la mémoire et des interfaces d'entrées-sorties. Monté sur une carte (Arduino, micro:bit, ESP32), il lit des capteurs et commande des actionneurs selon un programme stocké en mémoire.

Propriété · Entrées et sorties

Entrées logiques : bouton, fin de course (digitalRead, $0$ ou $1$). Entrées analogiques : tension convertie par le CAN (analogRead). Sorties logiques : LED, relais (digitalWrite). Sorties MLI : variation de vitesse d'un moteur, de luminosité d'une LED (analogWrite).

2. Le signal MLI (PWM)

0t (ms)UtH = 15 msT = 20 msrapport cyclique ? = tH / T = 0,755 V
Signal MLI (PWM) : en faisant varier la durée à l'état haut, on règle la tension moyenne (ici 0,75 × 5 = 3,75 V).

Propriété · Rapport cyclique

Un signal MLI alterne état haut et état bas à fréquence fixe. Le rapport cyclique $\alpha = \dfrac{t_H}{T}$ fixe la valeur moyenne $U_\text{moy} = \alpha \times U_\text{max}$. Sur Arduino, analogWrite(broche, v) avec $v$ de $0$ à $255$ donne $\alpha = \dfrac{v}{255}$.

3. Structure d'un programme embarqué

Exemple · Allumer une lampe quand il fait sombre

void setup() {
  pinMode(13, OUTPUT);
}
void loop() {
  int lum = analogRead(A0);
  if (lum < 300) {
    digitalWrite(13, HIGH);
  } else {
    digitalWrite(13, LOW);
  }
  delay(100);
}

setup s'exécute une fois (initialisation) ; loop se répète indéfiniment. Le même programme peut s'écrire en MicroPython avec une boucle while True.

Méthode · Algorigramme

Avant de coder, on représente l'algorithme par un algorigramme (début, actions dans des rectangles, tests dans des losanges, flèches) ou un diagramme d'états.

4. Communiquer

Propriété · Liaisons

Liaison série (UART) : les bits sont envoyés un par un sur un fil, à un débit en bauds (par exemple $9\,600$ bits/s) ; utile pour dialoguer avec un ordinateur. Bus I2C : deux fils (données SDA, horloge SCL), un maître et plusieurs esclaves identifiés par une adresse. Liaisons sans fil : Bluetooth, Wi-Fi, LoRa.

Activité · Varier la vitesse d'un ventilateur

Matérielcarte Arduino, petit moteur CC avec transistor de commande, potentiomètre.
ConsigneLire le potentiomètre ($0$ à $1\,023$) et commander le moteur en MLI ($0$ à $255$).
RésultatanalogWrite(9, analogRead(A0) / 4); dans loop : la vitesse suit la position du potentiomètre.
BilanLa division par $4$ adapte l'échelle de l'entrée ($10$ bits) à celle de la sortie ($8$ bits).

S'entraîner

Exercices corrigés

🎓 20 exercices corrigés et un quiz vous attendent dans ce chapitre.

Créez votre compte gratuit pour voir les corrections, faire les quiz et suivre votre progression.

2

Entrée ou sortie

★☆☆

Classer : bouton, LED, capteur de lumière, moteur, buzzer.

🔒 Correction réservée aux membres Créer un compte gratuit →
4

Rapport cyclique

★☆☆

Un signal MLI a une période de $10$ ms et reste $4$ ms à l'état haut. Rapport cyclique ?

🔒 Correction réservée aux membres Créer un compte gratuit →
5

Tension moyenne

★☆☆

Suite : tension moyenne si l'état haut vaut $12$ V ?

🔒 Correction réservée aux membres Créer un compte gratuit →
6

analogWrite

★★☆

Quelle valeur passer à analogWrite pour un rapport cyclique de $50\,\%$ ?

🔒 Correction réservée aux membres Créer un compte gratuit →
7

Lecture de la figure

★☆☆

D'après la figure du cours, calculer la tension moyenne du signal.

🔒 Correction réservée aux membres Créer un compte gratuit →
8

Fréquence MLI

★★☆

Quelle est la fréquence du signal de la figure ?

🔒 Correction réservée aux membres Créer un compte gratuit →
10

Seuil d'éclairement

★★☆

Dans le programme du cours, que se passe-t-il si analogRead(A0) renvoie $450$ ?

🔒 Correction réservée aux membres Créer un compte gratuit →
11

Hystérésis

★★★

Près du seuil, la lampe clignote. Proposer une amélioration.

🔒 Correction réservée aux membres Créer un compte gratuit →
12

Mise à l'échelle

★★☆

Pourquoi divise-t-on par $4$ dans l'activité ?

🔒 Correction réservée aux membres Créer un compte gratuit →
13

Fonction map

★★☆

Que fait map(x, 0, 1023, 0, 180) en Arduino ?

🔒 Correction réservée aux membres Créer un compte gratuit →
14

Algorigramme

★★☆

Décrire l'algorigramme d'une alarme : si la porte s'ouvre alors que l'alarme est armée, déclencher la sirène.

🔒 Correction réservée aux membres Créer un compte gratuit →
15

Liaison série

★★☆

Combien de temps pour transmettre $1\,000$ octets à $9\,600$ bauds (environ $10$ bits par octet avec les bits de contrôle) ?

🔒 Correction réservée aux membres Créer un compte gratuit →
16

Bus I2C

★★☆

Combien de fils utilise le bus I2C ? Comment le maître choisit-il l'esclave ?

🔒 Correction réservée aux membres Créer un compte gratuit →
17

Sans fil

★☆☆

Citer deux technologies de communication sans fil utilisées par les objets connectés.

🔒 Correction réservée aux membres Créer un compte gratuit →
18

MicroPython

★★★

Traduire la boucle du cours en MicroPython (fonctions lire() et lampe(etat) supposées).

🔒 Correction réservée aux membres Créer un compte gratuit →
19

Résistance de pull-down

★★★

Pourquoi une entrée reliée à un bouton a-t-elle besoin d'une résistance de rappel ?

🔒 Correction réservée aux membres Créer un compte gratuit →
20

Vrai ou faux

★★☆

a) La MLI fait varier la fréquence. b) loop s'exécute une fois. c) Le rapport cyclique est compris entre $0$ et $1$.

🔒 Correction réservée aux membres Créer un compte gratuit →

Vérifier

Avez-vous bien compris ?

Répondez au quiz : la correction s'affiche immédiatement.