Assembler, lancer, étudier et développer des drones miniatures à l'aide d'un kit complet

Par Stephen Evanczuk

Avec la contribution de Rédacteurs nord-américains de DigiKey

Les drones à quatre rotors, ou quadricoptères, continuent de jouer un rôle de plus en plus important dans de nombreuses applications, mais leur conception reste une tâche complexe qui associe des connaissances en matière de sous-systèmes mécaniques, électroniques et logiciels. Bien que les concepteurs soient tout à fait capables d'acquérir les connaissances nécessaires, un kit de développement de drone peut représenter un bon point de départ, car il rassemble tous les éléments requis pour accumuler de l'expérience théorique et pratique en matière de vol de drone.

Cet article présente un kit de développement de STMicroelectronics qui fournit aux développeurs un quadricoptère miniature facile à assembler et démontre en détail les systèmes de contrôle de vol complexes qui se cachent derrière tout véhicule aérien à plusieurs rotors.

Dynamique d'un quadricoptère

Sous leur forme habituelle, les quadricoptères fournissent une plateforme particulièrement stable compatible avec une vaste gamme d'applications, telles que la photographie aérienne, l'inspection de terrain, la surveillance, et plus. Contrairement aux aéronefs à ailes fixes ou même aux hélicoptères dotés de rotors à pas variable, les drones à plusieurs rotors à pas fixe présentent une conception relativement simple et sont faciles à fabriquer grâce à la grande accessibilité de petits moteurs CC efficaces.

La simplicité mécanique et la stabilité aérodynamique de ces drones découlent de l'utilisation coordonnée de leurs rotors pour contrôler les manœuvres, plutôt que de l'utilisation de surfaces de vol avec un aéronef ou de la combinaison du rotor principal et de l'assemblage de la queue des hélicoptères.

Dans un quadricoptère, les deux moteurs situés sur la diagonale de la cellule tournent tous deux dans le même sens, mais dans le sens opposé aux deux autres moteurs. Si les quatre moteurs tournent à la même vitesse, le drone peut monter, descendre ou planer. Si une paire de moteurs en diagonale tourne plus vite que l'autre, le drone effectue un lacet, en tournant autour de son centre de gravité tout en restant sur le même plan horizontal (Figure 1, à gauche).

Figure 1 : Les drones se manœuvrent en variant la vitesse des rotors, c'est-à-dire en augmentant la vitesse de deux moteurs d'une paire en diagonale (M2, M4) pour effectuer une manœuvre en lacet (à gauche) ou en augmentant la vitesse d'un moteur en diagonale (M2) tout en réduisant celle du moteur opposé sur la même diagonale (M4) pour réaliser une manœuvre de tangage et de roulis plus complexe (à droite). (Source de l'image : STMicroelectronics)

Si la vitesse des rotors avant (ou arrière) varie, le drone s'incline vers le haut ou vers le bas comme un aéronef à ailes fixes qui monte ou qui descend en plein vol. Si celle des rotors de bâbord ou de tribord est ajustée de la même manière, le drone subit un mouvement de roulis et tourne sur son axe. Les drones peuvent facilement adopter des attitudes de vol plus complexes (combinaison de tangage, de lacet et de roulis) en ajustant les vitesses relatives des moteurs d'une paire en diagonale ou d'un seul moteur (Figure 1, à droite).

Le système de commande de vol du drone est responsable de la variation de vitesse des rotors qui servent à obtenir l'attitude de vol souhaitée, nécessaire à la réalisation de la manœuvre visée.

En pratique, le système de commande doit constamment ajuster la vitesse des rotors, non seulement lors d'un virage, par exemple, mais également lors d'un vol en palier pour résister aux forces perturbatrices comme le vent, les courants thermiques ou les turbulences. Même un drone miniature volant en intérieur doit être équipé d'un système de commande de vol capable d'évaluer la différence entre l'attitude réelle du drone et l'attitude souhaitée.

Pour un ingénieur, le problème de correction des vitesses des rotors indiqué par un signal d'erreur est un problème courant de contre-réaction à une boucle de commande résolu grâce à un régulateur PID. L'unique défi qui demeure en matière de conception correspond à la mise au point d'une méthode d'évaluation de l'attitude du drone, mais ce problème est sur le point d'être résolu grâce à des capteurs intelligents haute précision qui fournissent des données pour réaliser les calculs d'angles d'Euler.

Les angles d'Euler représentent l'orientation d'un objet dans un plan XYZ par rapport à un plan xyz de référence, où les deux plans se rejoignent sur une ligne N (Figure 2). Les angles d'Euler sont ensuite définis ainsi :

  • α, l'angle entre l'axe x et N
  • ß, l'angle entre les axes z et Z
  • γ, l'angle entre N et l'axe X

Figure 2 : Les angles d'Euler (α, ß, γ) décrivent l'orientation d'un objet en rotation dans un plan (XYZ) par rapport à un plan fixe de référence (xyz) se rejoignant sur une ligne N. (Source de l'image : Wikimedia Commons CC BY 3.0)

Dans le cadre d'un système de commande de vol, le plan de l'objet et le plan de référence correspondent directement à l'orientation actuelle (XYZ) du drone et à l'attitude souhaitée (xyz). Ensuite, les angles d'Euler indiquent les rotations axiales nécessaires pour que le drone adopte l'attitude souhaitée. Bien que les gyroscopes mécaniques aient pendant des années fourni les données essentielles utilisées pour déterminer l'orientation actuelle, l'utilisation d'accéléromètres et de gyroscopes MEMS (microsystèmes électromécaniques) haute précision a permis d'appliquer cette méthode même avec des drones miniatures légers.

Aujourd'hui, des drones de toutes formes et tailles s'appuient sur un système de référence de cap et d'attitude (AHRS) avec capteurs qui fournit des données sur la position pour calculer les angles d'Euler. Ensuite, les angles d'Euler sont utilisés pour émettre un signal d'erreur afin que le régulateur PID qui gère la vitesse des moteurs puisse exécuter la manœuvre de vol désirée. La difficulté réside dans l'implémentation de cette approche en utilisant un logiciel sur une plateforme mobile capable de calculer et d'ajuster précisément et rapidement la vitesse des moteurs.

Le kit de drone miniature STEVAL-DRONE01 de STMicroelectronics et son logiciel associé représentent un exemple concret de cette approche et servent de base pour étudier en détail les systèmes de commande de vol de drone.

Kit de drone miniature prêt à voler

Le kit STEVAL-DRONE01 contient tous les composants nécessaires pour construire un petit quadricoptère. En plus d'une cellule en plastique, le kit inclut quatre moteurs CC sans noyau 8520 de 3,7 V mesurant 8,5 mm x 20 mm. Chacun présente une poussée de 35 grammes grâce aux hélices de 65 mm incluses. Deux paires de moteurs et d'hélices sont fournies, l'une est configurée pour tourner dans le sens des aiguilles d'une montre et l'autre dans le sens inverse. Une fois le drone entièrement assemblé avec la batterie lithium-ion polymère (LiPo) de 3,7 V, son poids brut, ou poids total en charge (AUW), est inférieur à 70 grammes, ce qui correspond à un rapport poussée-poids approximatif de 2:1; un très bon rapport pour faire fonctionner le drone.

Cependant, en dehors de ses composants mécaniques, l'élément principal du kit est la carte de l'unité du contrôleur de vol (FCU) STEVAL-FCU001V1 de STMicroelectronics et le pack logiciel associé qui, ensemble, permettent de faire fonctionner le système de commande de vol mentionné précédemment. La carte FCU est un système sophistiqué et écoénergétique à plusieurs capteurs, avec connectivité Bluetooth Low Energy (BLE) (Figure 3).

Figure 3 : L'unité du contrôleur de vol STEVAL-FCU001V1 de STMicroelectronics est un système complet à plusieurs capteurs alimenté par batterie avec connectivité BLE et capacité de commande de moteur CC. (Source de l'image : STMicroelectronics)

Conçue autour du microcontrôleur STM32F401 de STMicroelectronics intégrant un processeur Arm® Cortex®-M4 de 32 bits, la carte inclut trois capteurs MEMS différents pour mesurer diverses caractéristiques liées au positionnement et au pilotage du drone, notamment :

  • L'unité de mesure inertielle (IMU) iNEMO LSM6DSL de STMicroelectronics, qui intègre un accéléromètre et un gyroscope nécessaires au fonctionnement du système AHRS.
  • Le magnétomètre LIS2MDL de STMicroelectronics qui fournit les données permettant d'implémenter les fonctionnalités de direction et de détection.
  • Le capteur de pression LPS22HD de STMicroelectronics qui fournit les données permettant de déterminer le positionnement vertical avec une résolution de 8 cm.

Du côté de l'entrée du capteur, le microcontrôleur STM32F401 de l'unité du contrôleur de vol se connecte à chaque capteur via un bus SPI partagé. Du côté de la sortie du moteur, l'horloge universelle TIM4 du microcontrôleur émet le signal de modulation de largeur d'impulsion (PWM) utilisé pour commander les grilles des transistors de puissance MOSFET STL6N3LLH6 de STMicroelectronics qui entraînent les moteurs CC du drone.

Pour recevoir les commandes de l'utilisateur, l'unité du contrôleur de vol offre deux options : les utilisateurs peuvent commander leur drone à partir d'un smartphone connecté en Bluetooth à l'aide du module intégré SPBTLE-RF de STMicroelectronics, qui inclut l'émetteur-récepteur BlueNRG-MS de la société avec une pile Bluetooth écoénergétique complète. Autre option, les utilisateurs peuvent se servir d'une console radiocommandée (RC) PWM standard. Enfin, en matière de batterie et de gestion de l'alimentation, la carte inclut un circuit intégré de chargeur de batterie lithium-ion STC4054 et un régulateur à faible chute de tension (LDO) LD39015 de STMicroelectronics.

Comme indiqué à la Figure 3, l'unité du contrôleur de vol prend également en charge la connexion à un variateur de vitesse électronique externe (ESC) comme le STEVAL-ESC001V1 de STMicroelectronics. Un variateur de vitesse électronique permet au système d'entraîner des moteurs triphasés plus robustes, ce qui permet d'utiliser l'unité du contrôleur de vol dans des conceptions de quadricoptères plus puissantes.

Pour simplifier la préparation et le contrôle du vol, le kit est préconfiguré pour utiliser l'option de connexion par Bluetooth avec l'application mobile Android STDrone de STMicroelectronics. Conçue comme une console télécommandée virtuelle, l'application offre aux utilisateurs une interface de contrôle de vol simple avec des icônes de commande et deux joysticks virtuels (Figure 4).

Figure 4 : L'application mobile Android STDrone de STMicroelectronics offre aux utilisateurs une console télécommandée virtuelle pour faire fonctionner un drone miniature inclus dans le kit de développement STEVAL-DRONE01 de la société. (Source de l'image : STMicroelectronics)

Après avoir assemblé le drone, l'opérateur peut utiliser l'application STDrone pour lancer et commander le drone à partir de son téléphone. Avant le décollage, l'opérateur doit placer le drone sur une surface plane et appuyer sur l'icône d'étalonnage de l'application jusqu'à ce qu'elle devienne verte pour indiquer que l'étalonnage est terminé. Pour des raisons de sécurité, les moteurs du drone sont initialement désactivés via le logiciel, ce qui signifie que l'utilisateur doit « activer » le drone en appuyant sur une autre icône de l'application. L'interface utilisateur de l'application fonctionne alors comme une console télécommandée, ce qui permet à l'utilisateur d'actionner les joysticks virtuels pour ajuster la vitesse des rotors et l'attitude de vol du drone.

Bien que le produit ultraléger de STMicroelectronics ne pèse pas suffisamment lourd et n'ait pas assez de puissance pour être utilisé intensément en extérieur, les opérateurs du drone miniature qui essaieraient tout de même de l'utiliser dehors doivent connaître les restrictions de vol dans la zone où ils prévoient de le faire fonctionner. Les opérateurs de drone miniature n'ont pas l'obligation de posséder une licence ni d'enregistrer de si petits drones de cette catégorie. Néanmoins, ils doivent se conformer aux exigences.

Ces exigences en matière de vol incluent : garantir une visibilité directe, respecter une altitude maximale de 120 mètres (400 pieds), éviter les zones aériennes interdites (par exemple dans un rayon de 8 km autour d'un aéroport aux États-Unis ou de 1 km au Royaume-Uni) et éviter toute utilisation à proximité d'événements sportifs ou d'opérations d'urgence, entre autres. Les opérateurs de drone peuvent utiliser des applications mobiles comme l'application B4UFLY de l'autorité de l'aviation civile américaine aux États-Unis ou l'application Drone Assist de la NATS, l'autorité équivalente au Royaume-Uni. Ces applications fournissent des informations sur les restrictions concernant l'espace aérien local en fonction de la position GPS de l'utilisateur.

Logiciel de commande de vol

Pour les ingénieurs, l'unité du contrôleur de vol du kit de drone de STMicroelectronics intègre une fonctionnalité attrayante : un pack logiciel associé que STMicroelectronics propose sous un référentiel GitHub open-source. Intégrée dans l'infrastructure STM32Cube de STMicroelectronics, l'application est basée sur un intergiciel avec pile Bluetooth et sur une couche pilote sous-jacente. La couche pilote gère les données des interactions matérielles grâce à la couche d'abstraction matérielle (HAL) STM32Cube et du BSP (Board Support Package) STEVAL-FCU001V1, qui inclut des pilotes pour les dispositifs de la carte d'unité du contrôleur de vol décrits précédemment.

L'architecture logicielle de l'application est conçue autour de trois modules distincts, pour la commande à distance, la détermination de la position et la régulation PID (Figure 5) :

  • Le module de commande à distance traite les données entrantes provenant de l'application mobile STDrone ou d'une console radiocommandée, en collectant les informations issues de l'application ou en convertissant les données PWM de la console télécommandée, avant de transformer ces valeurs en angles d'Euler pour adopter l'attitude de vol souhaitée.
  • Le module de détermination de la position collecte les données de l'accéléromètre et du gyroscope provenant de l'unité de mesure inertielle LSM6DSL qui permettent d'estimer la position grâce au système de référence de cap et d'attitude, nécessaire aux calculs des angles d'Euler pour connaître l'attitude de vol actuelle du drone. Les données du magnétomètre LIS2MDL et du capteur de pression LPS22HD sont collectées, mais ne sont pas utilisées dans les calculs relatifs à la commande de vol du drone dans la version du logiciel disponible au moment de la parution de cet article.
  • Le module de régulation PID calcule l'erreur de position en comparant les angles d'Euler relatifs à l'attitude actuelle et à l'attitude souhaitée. En suivant les méthodes de régulation PID traditionnelles, ce module s'appuie sur ce signal d'erreur pour ajuster la vitesse de chaque moteur afin que le drone adopte l'attitude souhaitée.

Figure 5 : Le logiciel de commande de vol du drone miniature de STMicroelectronics fonctionne grâce à des modules distincts traitant les données entrantes de commande à distance (rectangles bleus, étiquetés [1]), la détermination de la position (rectangles rouges, [2]) et la régulation PID (rectangle bleu foncé, [3]). La régulation PID permet ensuite d'entraîner les quatre moteurs du quadricoptère. (Source de l'image : STMicroelectronics)

En s'appuyant sur cette architecture fonctionnelle, l'application du drone rassemble ces modules dans le processus nécessaire à la transformation des commandes utilisateur de manœuvre en ajustements de la vitesse des moteurs permettant de réaliser ces manœuvres (Figure 6). Bien que le fonctionnement général reste complexe, la boucle principale de mise à jour des paramètres de commande de vol est relativement simple.

Figure 6 : Le logiciel de commande de vol du drone miniature de STMicroelectronics implémente un processus qui lit constamment les données des capteurs pour ajuster l'attitude de vol actuelle du drone et la vitesse de ses quatre moteurs afin d'obtenir la combinaison de poussée, tangage, roulis et lacet souhaitée. (Source de l'image : STMicroelectronics)

Après une série d'appels permettant d'initialiser les systèmes matériel et logiciel, la principale routine de l'application, main.c, entre dans une boucle infinie (Liste 1). Dans cette boucle principale, le processus de mise à jour utilise une série d'appels pour établir les algorithmes de commande de vol essentiels décrits précédemment.

Copierwhile (1) { . . .
        
    if (tim9_event_flag == 1) { // Timer9 event: frequency 800Hz tim9_event_flag = 0; . . .
           


      // AHRS update, quaternion & true gyro data are stored in ahrs ahrs_fusion_ag(&acc_ahrs, &gyro_ahrs, &ahrs); // Calculate euler angle drone QuaternionToEuler(&ahrs.q, &euler_ahrs); #ifdef REMOCON_BLE gRUD = (joydata[2]-128)*(-13); gTHR = joydata[3]*13; gAIL = (joydata[4]-128)*(-13); gELE = (joydata[5]-128)*13; /* joydata[6]: seek bar data*/ /* joydata[7]: additional button data first bit: Takeoff (0 = Land, 1 = Takeoff) second bit: Calibration When it changes status is active third bit: Arming (0 = Disarmed, 1 = Armed) */ gJoystick_status = joydata[7]; if ((gJoystick_status&0x04)==0x04){ rc_enable_motor = 1; fly_ready = 1; BSP_LED_On(LED2); } else { rc_enable_motor = 0; fly_ready = 0; } if (connected){ rc_connection_flag = 1; /* BLE Remocon connected flag for enabling motor output */ SendMotionData(); SendBattEnvData(); SendArmingData(); } else{ rc_connection_flag = 0; gTHR=0; rc_enable_motor = 0; fly_ready = 0; BSP_LED_Off(LED1); BSP_LED_Off(LED2); } if (joydata[7]&0x02){ rc_cal_flag = 1; BSP_LED_On(LED1); } #endif #ifdef REMOCON_PWM . . .
      #endif // Get target euler angle from remote control GetTargetEulerAngle(&euler_rc, &euler_ahrs); . . .
      
      FlightControlPID_OuterLoop(&euler_rc_fil, &euler_ahrs, &ahrs, &pid); . . .

    } . . .
  } 

Dans cette boucle, l'horloge universelle TIM9 du microcontrôleur permet d'identifier des événements pour contrôler la fréquence de mise à jour. Lorsqu'un événement de mise à jour identifié par l'horloge se produit, la boucle principale fait appel à la routine de mise à jour du système de référence de cap et d'attitude, ahrs_fusion_ag(), qui utilise les dernières données de l'accéléromètre (acc_ahrs) et du gyroscope (gyro_ahrs) pour effectuer les calculs à partir des valeurs regroupées des capteurs générées lors de la mise à jour. Les données qui en résultent, sous forme de quaternions, sont ensuite utilisées par la routine QuaternionToEuler() pour calculer les angles d'Euler relatifs à l'attitude de vol actuelle du drone.

À ce stade de la boucle principale, l'application recueille des données sur l'attitude de vol souhaitée à l'aide des données Bluetooth si la connexion Bluetooth est activée (#ifdef REMOCON_BLE) ou à l'aide de la console radiocommandée si elle est activée. Ici, le code permet de mettre à jour quatre variables qui reflètent les données de la console radiocommandée : gRUD (position de la gouverne de direction ou lacet), gAIL (position de l'aileron ou roulis), gELE (position de la gouverne de profondeur ou tangage) et gTHR (position de la manette des gaz). Après la collecte de ces données, la boucle utilise la routine GetTargetEulerAngle() pour calculer les angles d'Euler de l'attitude de vol souhaitée que l'opérateur du drone a demandée. Toutefois, avant d'effectuer ces calculs, cette partie de la boucle illustre une fonctionnalité d'une importance capitale pour l'opérateur du drone. Si la connexion Bluetooth échoue pour quelque raison que ce soit, le code arrête les moteurs, ce qui signifie bien sûr que le drone effectuera immédiatement une descente non contrôlée. Une extension logicielle sûre mais complexe permet d'utiliser les données du magnétomètre LIS2MDL et du capteur de pression LPS22HD pour ramener le drone à son point de départ et le faire atterrir de manière contrôlée avant l'arrêt des moteurs.

La boucle principale se termine finalement par un appel à FlightControlPID_OuterLoop() qui met à jour les valeurs cibles du régulateur PID. Indépendamment, la fonction FlightControlPID_innerLoop() est exécutée dans le cadre d'une séquence d'opérations effectuées lors d'un rappel de l'interruption associée à l'événement identifié par l'horloge TIM9, programmée pour fonctionner à une fréquence de 800 Hz. À chaque interruption, la routine de rappel lit les données des capteurs, filtre les données brutes et met à jour les tampons de type FIFO (premier entré, premier sorti) associés aux variables acc_ahrs et gyro_ahrs mentionnées ci-dessus dans la boucle principale. En utilisant ces données mises à jour avec l'attitude de vol actuelle du drone, la routine de rappel fait appel à FlightControlPID_innerLoop(), qui calcule les nouvelles valeurs PWM de chaque moteur. Le rappel met fin au processus de mise à jour en faisant appel à set_motor_pwm(), qui définit les nouvelles valeurs PWM de sortie du microcontrôleur.

Les développeurs peuvent facilement étudier d'autres scénarios de commande de vol en modifiant le pack logiciel open-source à l'aide de plusieurs chaînes d'outils, notamment IAR Embedded Workbench pour ARM, le kit de développement de microcontrôleur KEIL RealView pour le STM32, ainsi que l'environnement de développement intégré (IDE) System Workbench for STM32 gratuit et exclusif de STMicroelectronics basé sur Windows. Après la compilation du code modifié, les développeurs peuvent charger leur micrologiciel dans l'unité du contrôleur de vol à l'aide d'un débogueur et programmateur connecté ST-LINK/V2 de STMicroelectronics ou d'une carte de développement STM32 Nucleo de STMicroelectronics connectée à une carte d'adaptateur JTAG SWD (Serial Wire Debug) fournie avec le kit.

Conclusion

Grâce à leur conception mécanique simple, les drones à plusieurs rotors sont désormais très populaires pour la photographie aérienne, l'inspection de terrain, la surveillance et bien d'autres applications. En s'appuyant sur des algorithmes de commande alimentés par des capteurs intelligents, ces drones utilisent des logiciels de commande de vol sophistiqués capables de réaliser des opérations stables et de répondre rapidement aux commandes de l'opérateur pour effectuer des manœuvres.

Même si les développeurs peuvent trouver et assembler eux-mêmes les composants mécaniques, électriques et logiciels requis, le kit de développement de drone miniature complet de STMicroelectronics permet de se lancer plus facilement dans la conception et l'utilisation d'un drone miniature. En étudiant et même en modifiant le logiciel de commande de vol open-source associé, les développeurs peuvent rapidement acquérir une certaine expérience en matière de dynamique de vol et d'algorithmes de commande de drone.

DigiKey logo

Avertissement : les opinions, convictions et points de vue exprimés par les divers auteurs et/ou participants au forum sur ce site Web ne reflètent pas nécessairement ceux de DigiKey ni les politiques officielles de la société.

À propos de l'auteur

Image of Stephen Evanczuk

Stephen Evanczuk

Stephen Evanczuk affiche plus de 20 ans d'expérience dans la rédaction de contenu pour et sur l'industrie électronique, couvrant un large éventail de sujets, notamment le matériel, les logiciels, les systèmes et les applications, y compris l'IoT. Il a obtenu son doctorat (Ph.D.) en neurosciences sur les réseaux neuronaux et a travaillé dans l'industrie aérospatiale sur les systèmes sécurisés massivement distribués et les méthodes d'accélération par algorithmes. Actuellement, lorsqu'il n'écrit pas d'articles techniques, il travaille sur l'application de l'apprentissage approfondi pour les systèmes de reconnaissance et de recommandation.

À propos de l'éditeur

Rédacteurs nord-américains de DigiKey