Difference between revisions of "STM32 premier pas et prise en main logiciel"
Wiki.admin (talk | contribs) (Created page with "{{DISPLAYTITLE:STM32 — Premiers pas et prise en main logicielle}} <div style="background:#f5f9fb; border-left:6px solid #0b4f6c; padding:18px 22px; margin-bottom:24px;"> <h...") |
Wiki.admin (talk | contribs) |
||
| Line 3: | Line 3: | ||
<div style="background:#f5f9fb; border-left:6px solid #0b4f6c; padding:18px 22px; margin-bottom:24px;"> | <div style="background:#f5f9fb; border-left:6px solid #0b4f6c; padding:18px 22px; margin-bottom:24px;"> | ||
<h1 style="margin-top:0;">STM32 — Premiers pas et prise en main logicielle</h1> | <h1 style="margin-top:0;">STM32 — Premiers pas et prise en main logicielle</h1> | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
<p> | <p> | ||
| − | + | 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. | ||
</p> | </p> | ||
</div> | </div> | ||
| Line 15: | Line 11: | ||
__TOC__ | __TOC__ | ||
| − | == | + | == 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. | |
| − | + | [[Fichier:STM32_wiki_09_20260511_FCU_MINIBEE_image36.png|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 ; | * '''Roll''' : roulis ; | ||
| Line 47: | Line 38: | ||
* '''Yaw''' : lacet. | * '''Yaw''' : lacet. | ||
| − | + | == Matériel utilisé == | |
| − | |||
| − | |||
| − | |||
| − | == | ||
{| class="wikitable" style="width:100%;" | {| class="wikitable" style="width:100%;" | ||
! Élément | ! Élément | ||
| − | ! Rôle | + | ! Rôle |
| − | |||
|- | |- | ||
| − | | | + | | STM32 Nucleo F446RE |
| Carte maître du système | | Carte maître du système | ||
| − | |||
|- | |- | ||
| − | | | + | | BluePill STM32F103 |
| − | | Carte esclave locale | + | | Carte esclave locale pour le pilotage moteur |
| − | |||
|- | |- | ||
| − | | | + | | SN65HVD230 |
| − | | Transceiver | + | | Transceiver de communication CAN |
| − | |||
|- | |- | ||
| − | | | + | | L298N |
| − | | Pont en H | + | | Pont en H pour piloter les moteurs DC |
| − | |||
|- | |- | ||
| − | | | + | | Joystick / potentiomètre |
| − | | | + | | Entrée de commande |
| − | |||
|- | |- | ||
| − | | | + | | Moteurs DC |
| − | | | + | | Actionneurs de test de la maquette |
| − | |||
|} | |} | ||
| − | [[Fichier: | + | [[Fichier:STM32_wiki_11_20260511_FCU_MINIBEE_image50.png|center|600px|thumb|Carte STM32 Nucleo F446RE utilisée comme contrôleur principal.]] |
| − | == | + | == Installation logicielle == |
| − | La | + | 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. | ||
| − | + | [[Fichier:STM32_wiki_01_Maquette_et_code_fin_image1.png|center|800px|thumb|Bibliothèque STM32duino X-NUCLEO-IKS01A2 utilisée dans Arduino IDE.]] | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
<div style="background:#fff8e5; border:1px solid #e4c46a; border-radius:10px; padding:14px; margin:18px 0;"> | <div style="background:#fff8e5; border:1px solid #e4c46a; border-radius:10px; padding:14px; margin:18px 0;"> | ||
| − | ''' | + | '''Point de vigilance :''' importer la bibliothèque directement en fichier ZIP, sans la décompresser. |
| − | |||
</div> | </div> | ||
| − | + | == 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. | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | [[Fichier: | + | [[Fichier:STM32_wiki_02_Maquette_et_code_fin_image3.png|center|650px|thumb|Montage de test LED avec breadboard et carte STM32 Nucleo.]] |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
<syntaxhighlight lang="cpp"> | <syntaxhighlight lang="cpp"> | ||
| Line 166: | Line 105: | ||
Serial.begin(115200); | Serial.begin(115200); | ||
pinMode(LED_PIN, OUTPUT); | pinMode(LED_PIN, OUTPUT); | ||
| − | |||
} | } | ||
void loop() { | void loop() { | ||
digitalWrite(LED_PIN, HIGH); | digitalWrite(LED_PIN, HIGH); | ||
| − | |||
delay(BLINK_DELAY); | delay(BLINK_DELAY); | ||
| − | |||
digitalWrite(LED_PIN, LOW); | digitalWrite(LED_PIN, LOW); | ||
| − | |||
delay(BLINK_DELAY); | delay(BLINK_DELAY); | ||
} | } | ||
</syntaxhighlight> | </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. | |
| − | |||
| − | |||
| − | + | [[Fichier:STM32_wiki_03_Maquette_et_code_fin_image6.png|center|600px|thumb|Exemple de montage joystick pour lecture de consigne pilote.]] | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | [[Fichier: | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
<syntaxhighlight lang="cpp"> | <syntaxhighlight lang="cpp"> | ||
| Line 290: | Line 136: | ||
pinMode(JOYSTICK_X_PIN, INPUT); | pinMode(JOYSTICK_X_PIN, INPUT); | ||
pinMode(JOYSTICK_Y_PIN, INPUT); | pinMode(JOYSTICK_Y_PIN, INPUT); | ||
| − | |||
} | } | ||
| Line 301: | Line 146: | ||
Serial.print(" | Y: "); | Serial.print(" | Y: "); | ||
Serial.println(y); | Serial.println(y); | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
delay(200); | delay(200); | ||
| Line 318: | Line 151: | ||
</syntaxhighlight> | </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. | |
| − | + | [[Fichier:STM32_wiki_14_20260511_FCU_MINIBEE_image61.png|center|550px|thumb|Module L298N utilisé comme pont en H pour piloter les moteurs DC.]] | |
| − | + | Principe de commande : | |
{| class="wikitable" style="width:100%;" | {| class="wikitable" style="width:100%;" | ||
! IN1 | ! IN1 | ||
! IN2 | ! IN2 | ||
| − | ! | + | ! Effet |
|- | |- | ||
| HIGH | | HIGH | ||
| Line 353: | Line 178: | ||
| LOW | | LOW | ||
| Arrêt | | Arrêt | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
|} | |} | ||
| − | == | + | == Bus CAN == |
| − | Le | + | 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. | |
| − | + | [[Fichier:STM32_wiki_13_20260511_FCU_MINIBEE_image60.png|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. | ||
| − | + | <pre style="background:#f5f9fb; border:1px solid #c8dde6; border-radius:10px; padding:16px;"> | |
| − | <pre style=" | ||
Joystick / capteurs | Joystick / capteurs | ||
↓ | ↓ | ||
| Line 549: | Line 215: | ||
Moteurs DC | Moteurs DC | ||
</pre> | </pre> | ||
| − | |||
| − | + | [[Fichier:STM32_wiki_08_Maquette_et_code_fin_image14.png|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. | ||
| − | + | [[Fichier:STM32_wiki_07_Maquette_et_code_fin_image12.jpeg|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 ; | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | * vérifier les | ||
| − | * tester | ||
| − | * limiter la vitesse | ||
| − | |||
| − | |||
* numéroter les BluePills ; | * numéroter les BluePills ; | ||
* noter les identifiants CAN ; | * noter les identifiants CAN ; | ||
| − | * conserver une version du code | + | * conserver une version stable du code ; |
| + | * documenter chaque modification. | ||
| − | <div style="background:#fff1f1; border:1px solid #d99; border-radius:10px; padding: | + | <div style="background:#fff1f1; border:1px solid #d99; border-radius:10px; padding:14px; margin:18px 0;"> |
| − | '''Sécurité :''' | + | '''Sécurité :''' ne jamais faire un premier test moteur avec hélices montées. |
| − | |||
</div> | </div> | ||
| − | == | + | == Conclusion == |
| − | La prise en main | + | 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 ; | * synchronisation des moteurs ; | ||
| − | * | + | * intégration des capteurs ; |
| − | |||
* stabilisation roll / pitch / yaw ; | * stabilisation roll / pitch / yaw ; | ||
| − | * | + | * ajout du correcteur PID ; |
| − | + | * validation des cas de vol sur la maquette. | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
Revision as of 16:55, 22 May 2026
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.