STM32 premier pas et prise en main logiciel
STM32 — Premiers pas et prise en main logicielle
Cette page présente les bases logicielles STM32 utilisées pour la maquette Mini-Bee. Elle sert de guide rapide pour installer l’environnement, réaliser les premiers tests et comprendre le lien entre la carte Nucleo, le bus CAN, les BluePills et les modules L298N.
Objectif
L’objectif est de permettre à un nouveau contributeur de démarrer rapidement avec la carte STM32 Nucleo F446RE.
À la fin de cette prise en main, il doit savoir :
- installer l’environnement STM32 dans Arduino IDE ;
- téléverser un premier programme ;
- tester une sortie numérique ;
- lire un joystick ou un potentiomètre ;
- piloter un moteur DC ;
- comprendre le rôle du bus CAN dans l’architecture Mini-Bee.
Contexte Mini-Bee
Dans le projet Mini-Bee, la STM32 Nucleo joue le rôle de contrôleur principal du Flight Control Unit.
Elle reçoit les consignes pilote, lit les données capteurs et transmet les ordres aux modules moteurs.
center|800px|thumb|Vue Mini-Bee utilisée pour présenter le contexte du Flight Control Unit.
L’architecture étudiée vise à rendre le Mini-Bee contrôlable sur trois axes :
- Roll : roulis ;
- Pitch : tangage ;
- Yaw : lacet.
Matériel utilisé
| Élément | Rôle |
|---|---|
| STM32 Nucleo F446RE | Carte maître du système |
| BluePill STM32F103 | Carte esclave locale pour le pilotage moteur |
| SN65HVD230 | Transceiver de communication CAN |
| L298N | Pont en H pour piloter les moteurs DC |
| Joystick / potentiomètre | Entrée de commande |
| Moteurs DC | Actionneurs de test de la maquette |
center|600px|thumb|Carte STM32 Nucleo F446RE utilisée comme contrôleur principal.
Installation logicielle
La carte STM32 peut être programmée avec Arduino IDE.
Étapes principales :
- Installer Arduino IDE.
- Ajouter le gestionnaire de cartes STM32duino.
- Installer le support STM32 depuis le gestionnaire de cartes.
- Importer la bibliothèque STM32duino X-NUCLEO-IKS01A2 au format ZIP.
- Sélectionner la carte Nucleo-64.
- Sélectionner le modèle Nucleo F446RE.
- Choisir le port série de la carte.
center|800px|thumb|Bibliothèque STM32duino X-NUCLEO-IKS01A2 utilisée dans Arduino IDE.
Point de vigilance : importer la bibliothèque directement en fichier ZIP, sans la décompresser.
Premier test : clignotement LED
Le premier exercice consiste à faire clignoter une LED sur la broche D13 / PA5.
Il valide :
- le câblage ;
- la reconnaissance de la carte ;
- le téléversement du programme ;
- la commande d’une sortie numérique.
center|650px|thumb|Montage de test LED avec breadboard et carte STM32 Nucleo.
<syntaxhighlight lang="cpp">
- define LED_PIN PA5
- define BLINK_DELAY 500
void setup() {
Serial.begin(115200); pinMode(LED_PIN, OUTPUT);
}
void loop() {
digitalWrite(LED_PIN, HIGH); delay(BLINK_DELAY); digitalWrite(LED_PIN, LOW); delay(BLINK_DELAY);
} </syntaxhighlight>
Lecture d’un joystick
Le joystick permet de transformer une action pilote en signal électrique.
Deux cas sont possibles :
- joystick numérique : lecture ON / OFF ;
- joystick analogique : lecture proportionnelle sur les axes X et Y.
Le joystick analogique est le plus intéressant pour le Mini-Bee, car il permet de générer une consigne progressive.
center|600px|thumb|Exemple de montage joystick pour lecture de consigne pilote.
<syntaxhighlight lang="cpp">
- define JOYSTICK_X_PIN PA0
- define JOYSTICK_Y_PIN PA1
void setup() {
Serial.begin(115200); pinMode(JOYSTICK_X_PIN, INPUT); pinMode(JOYSTICK_Y_PIN, INPUT);
}
void loop() {
int x = analogRead(JOYSTICK_X_PIN); int y = analogRead(JOYSTICK_Y_PIN);
Serial.print("X: ");
Serial.print(x);
Serial.print(" | Y: ");
Serial.println(y);
delay(200);
} </syntaxhighlight>
Pilotage moteur avec L298N
La STM32 ne doit pas alimenter directement un moteur.
Le module L298N sert d’étage de puissance. Il reçoit des signaux logiques et alimente le moteur avec une source adaptée.
center|550px|thumb|Module L298N utilisé comme pont en H pour piloter les moteurs DC.
Principe de commande :
| IN1 | IN2 | Effet |
|---|---|---|
| HIGH | LOW | Rotation sens A |
| LOW | HIGH | Rotation sens B |
| LOW | LOW | Arrêt |
Bus CAN
Le bus CAN permet de connecter la STM32 Nucleo aux modules moteurs sans multiplier les câbles.
Il est adapté au Mini-Bee car il offre :
- une communication robuste ;
- une transmission différentielle sur CAN_H et CAN_L ;
- une meilleure résistance aux parasites ;
- une architecture multipoint ;
- une extension plus simple vers plusieurs moteurs.
center|500px|thumb|Transceiver CAN SN65HVD230 utilisé pour la communication entre les modules.
Architecture de commande
L’architecture Mini-Bee sépare la commande et la puissance.
La STM32 décide. La BluePill exécute localement. Le L298N fournit la puissance aux moteurs.
Joystick / capteurs
↓
STM32 Nucleo F446RE
↓ Bus CAN
SN65HVD230
↓
BluePill STM32F103
↓ PWM + direction
L298N
↓
Moteurs DC
center|850px|thumb|Schéma de principe de l’architecture STM32, CAN, BluePill et L298N.
Montage maquette
Le montage final reprend cette logique sur plusieurs branches moteurs.
Chaque branche comprend :
- un module CAN ;
- une BluePill ;
- un L298N ;
- un ou deux moteurs DC.
center|700px|thumb|Montage physique de la maquette avec STM32, modules CAN, L298N et moteurs.
Bonnes pratiques
Avant chaque test :
- vérifier les masses communes ;
- tester sans hélice ;
- limiter la vitesse moteur ;
- numéroter les BluePills ;
- noter les identifiants CAN ;
- conserver une version stable du code ;
- documenter chaque modification.
Sécurité : ne jamais faire un premier test moteur avec hélices montées.
Conclusion
La prise en main STM32 constitue la première étape du Flight Control Unit Mini-Bee.
Les exercices simples — LED, joystick, potentiomètre, moteur, CAN — permettent de construire progressivement une architecture distribuée.
Cette base prépare les prochaines étapes :
- synchronisation des moteurs ;
- intégration des capteurs ;
- stabilisation roll / pitch / yaw ;
- ajout du correcteur PID ;
- validation des cas de vol sur la maquette.