À propos du projet

Ce projet est un micrologiciel pour un robot auto-équilibré à deux roues basé sur le microcontrôleur STM32F103C8T6. Il utilise la bibliothèque HAL et le système d'exploitation temps réel FreeRTOS, maintient l'équilibre du châssis grâce au capteur d'attitude MPU6050 et à trois boucles de contrôle PID en cascade (boucle d'angle, boucle de vitesse, boucle de direction), et prend en charge la télécommande et le réglage des paramètres via un module Bluetooth. **Caractéristiques principales :** * **Schéma de contrôle :** Contrôle PID en cascade à trois boucles, toutes les boucles de contrôle étant exécutées dans l'interruption du timer TIM1, garantissant un temps réel strict de 1 kHz, non affecté par l'ordonnancement des tâches FreeRTOS. * **Architecture logicielle :** Basée sur FreeRTOS, la logique applicative est divisée en trois tâches : tâche bouton (keyTask), tâche de communication Bluetooth (commTask) et tâche d'affichage OLED (displayTask), par priorité décroissante. * **Calcul d'attitude :** Utilisation d'un algorithme de filtrage complémentaire pour fusionner les données de l'accéléromètre et du gyroscope du MPU6050 afin de calculer l'angle d'inclinaison du châssis. * **Communication et contrôle :** Communication avec le module Bluetooth via USART2, prise en charge d'un protocole personnalisé (format `[étiquette,donnée]`) pour la télécommande en temps réel (joystick) et le réglage des paramètres (curseur). Les paramètres PID ajustés doivent être confirmés par le bouton K2 pour prendre effet, évitant ainsi les erreurs de manipulation. * **Plateforme matérielle :** Basée sur une carte de contrôle spécifique pour robot auto-équilibré (schéma dans `docs/`), le contrôleur principal est un STM32F103C8T6, utilisant un TB6612FNG pour piloter des moteurs à courant continu avec réducteur, et équipé d'un écran OLED. * **Environnement de développement :** Génération du code d'initialisation avec STM32CubeMX, CLion comme IDE de développement, chaîne de compilation arm-none-eabi-gcc. **Détails techniques :** * **Contrôle PID :** Boucle d'angle (Kp=5, Ki=0.1, Kd=5), boucle de vitesse (Kp=2, Ki=0.05, Kd=0), boucle de direction (Kp=4, Ki=3, Kd=0). Paramètres réglés manuellement. * **Protection des données partagées :** Conception sans verrou, exploitant les lectures/écritures atomiques 32 bits du Cortex-M3, et utilisation de drapeaux de requête (`StartReq`/`ApplyReq`) pour que les tâches d'interruption gèrent les changements d'état, évitant les problèmes de section critique. * **Occupation des ressources :** En compilation Debug, occupation Flash d'environ 94,6 % (61956 octets), occupation RAM d'environ 78,0 % (15976 octets). * **Origine du projet :** Ce projet est basé sur le projet de robot auto-équilibré en bibliothèque standard STM32 de l'UP主 Bilibili « 江协科技 (江科大) », porté et restructuré en remplaçant la bibliothèque standard par HAL + FreeRTOS, avec ajustement de la structure du projet. Toute l'originalité du matériel, du schéma de contrôle et de la logique du code appartient à 江协科技. **Instructions d'utilisation :** * **Opération :** Après mise sous tension, appuyer sur le bouton K1 pour démarrer le contrôle PID. Le bouton K2 sert à soumettre les paramètres PID reçus par Bluetooth. * **Réglage des paramètres :** Il est possible d'envoyer via Bluetooth depuis un téléphone des paquets au format `[slider,nom_paramètre,valeur]` pour ajuster les paramètres PID ; après ajustement, appuyer sur K2 pour les appliquer. * **Compilation et flashage :** Ouvrir le répertoire racine du projet avec CLion, configurer la chaîne d'outils et le programmateur, puis compiler et flasher. **Remarques :** * Le projet est uniquement destiné à l'apprentissage et à la référence, toute utilisation commerciale est interdite. * Les droits d'auteur du schéma appartiennent à 江协科技. * La dérive du zéro du gyroscope et le décalage de l'angle central doivent être calibrés en fonction du matériel réel. * Le débit de communication Bluetooth est de 9600.