Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Avion RC Arduino | 100% bricolage

Dans ce tutoriel, je vais vous montrer comment je construis un avion RC basé sur Arduino, et aussi, je vais vous montrer comment le contrôler à l'aide de l'émetteur Arduino personnalisé que j'ai construit dans l'une de mes vidéos précédentes.

Vous pouvez regarder la vidéo suivante ou lire le didacticiel écrit ci-dessous.

Aperçu

Ainsi, l'avion est entièrement fabriqué en polystyrène. Pour créer les formes, j'ai utilisé ma machine de découpe de mousse Arduino CNC dont je vous ai déjà montré comment je l'ai construite dans une vidéo précédente. Bien que j'utilise une machine CNC pour construire cet avion Arduino RC, je peux toujours dire que c'est 100 % de bricolage car la machine CNC est également une construction de bricolage.

De plus, le contrôle de l'avion est également 100% DIY, basé sur Arduino et le module NRF24L01 pour la communication radio.

En utilisant le joystick droit de l'émetteur, nous pouvons contrôler les ailerons et la profondeur de l'avion, et en utilisant le joystick gauche, nous pouvons contrôler le gouvernail et la manette des gaz.

En plus de cela, en utilisant le potentiomètre droit, nous pouvons régler la réactivité des commandes ou réduire la course du servo, et en utilisant le joystick gauche, nous pouvons sous-régler le gouvernail ou régler la position neutre du bras de servo.

Oh, et j'ai presque oublié la mention, la principale caractéristique de cet avion Arduino RC est de voler, alors oui, il peut voler.

Conception de l'avion RC - Modèle 3D

J'ai commencé par concevoir l'avion à l'aide d'un logiciel de modélisation 3D, Fusion 360 en l'occurrence. J'ai fait la conception en examinant certains avions RC commerciaux et en suivant certaines directives de base ou règles empiriques pour les paramètres des modèles réduits d'avions.

Le point de départ est l'envergure, et j'ai choisi d'être à 80 cm. De là, nous obtenons la longueur du fuselage, qui est généralement de 75% de l'envergure. En ce qui concerne le profil aérodynamique ou la section transversale de l'aile, j'ai choisi le profil aérodynamique CLARK Y, qui est un choix populaire pour les avions RC.

J'ai téléchargé la forme du profil aérodynamique à partir de airfoiltools.com en tant que fichier .SVG, puis je l'ai importé dans Fusion 360. J'ai ajusté la taille de manière appropriée, de sorte que la corde de l'aile, ou la longueur de l'aile dans le sens du courant, soit d'environ 1/5ème de l'envergure.

Les stabilisateurs horizontaux et verticaux sont également dimensionnés en fonction de ces directives de base. Voici quelques paramètres de conception de base d'un modèle d'avion RC :

Le fuselage de l'avion sera composé de deux côtés de 10 mm et d'un noyau de 50 mm qui sera creux pour accueillir l'électronique.

Vous pouvez télécharger le modèle 3D à partir des liens ci-dessus. Il existe deux versions de l'avion. La version 1 est celle montrée ici dans les images, et la version 2 a un nez un peu plus petit et le moteur peut être placé plus à l'avant afin d'améliorer le flux d'air.

Générer des codes G pour mon DIY CNC Foam Cutter

Maintenant, comme la zone de travail de ma machine de découpe de mousse Arduino CNC est limitée à 45 cm et que le fuselage mesure 60 cm de long, j'ai dû fabriquer le fuselage en deux parties.

Alors, j'ai coupé le fuselage à 34cm du point avant, et j'ai fait un nouveau croquis dans lequel j'ai projeté la forme et ajouté un point à côté. Ensuite, dans l'onglet de fabrication de Fusion 360, je peux générer le G-code pour découper les formes.

Ici, j'ai d'abord créé une nouvelle configuration dans laquelle j'ai sélectionné l'esquisse comme modèle, sélectionné le point que j'ai ajouté précédemment comme origine de la configuration et ajusté les axes X et Y de manière appropriée.

Ensuite, j'ai choisi l'opération de contour 2D et sélectionné ou généré un nouvel outil, avec un diamètre de 3 mm, car c'est la taille approximative des coupes que le fil chaud fait en passant à travers la mousse de polystyrène. Ici, nous pouvons également définir l'avance de coupe qui dépend du fil chaud lui-même et de la dureté du polystyrène. Je l'ai réglé sur 150 mm/m.

Ensuite, dans le robinet de géométrie, nous pouvons sélectionner le contour ou la forme à couper. En ce qui concerne les hauteurs, je les ai toutes réglées sur 1 mm car il n'y a aucun mouvement d'axe Z sur ma machine à découper la mousse. Enfin, dans le robinet de liaison, j'ai sélectionné la position d'entrée pour qu'elle soit le bord situé près du point d'origine.

Avec cela, le parcours d'outil est généré et nous pouvons y jeter un coup d'œil en cliquant sur le bouton Simulation. Le parcours d'outil doit être un passage unique en boucle fermée, et si c'est le cas, nous pouvons enfin générer le G-code. Pour cela, nous pouvons aller dans Post Processes, sélectionner le firmware GRBL, sélectionner le dossier de sortie, nommer le fichier et cliquer sur le bouton de publication.

Ensuite, nous pouvons enregistrer le fichier et voir le code G dans l'éditeur WordPad ou quelque chose de similaire.

Alors maintenant, une fois que nous avons le fichier de code G, nous pouvons le charger dans l'émetteur de code G universel et envoyer le code G à la machine CNC pour créer la forme.

Nous pouvons noter que le processus que je viens de vous montrer n'est probablement pas le meilleur ou pas du tout professionnel, mais il fait quand même le travail pour que les codes G fonctionnent avec ma machine de découpe de mousse CNC DIY. Bien sûr, pour plus de détails sur cette machine CNC de bricolage, vous pouvez consulter mon tutoriel particulier, le lien est dans la description de la vidéo.

Vous pouvez télécharger les fichiers G-code ici :

Comme je l'ai dit, pour les côtés, j'ai utilisé 1 cm de polystyrène et pour le milieu, j'ai utilisé 5 cm de polystyrène.

Quant à l'aile, j'ai utilisé du polystyrène de 10 cm que j'ai coupé à environ 30 cm de large car c'est la portée maximale que ma machine à fil chaud peut couper. J'ai placé deux profils d'aile dans un seul fichier G-code et j'en ai coupé quelques-uns.

Afin d'obtenir l'envergure de 80cm je vais coller 3 pièces de 27cm, et afin de les mettre bien droites, je coupe manuellement les extrémités des pièces afin qu'elles soient perpendiculaires.

Assemblage de l'avion RC

Voici donc toutes les pièces en polystyrène que j'ai découpées avec une machine CNC. Trois pièces pour le devant, trois pièces pour le dos et trois pièces pour l'aile. Je peux maintenant commencer à les assembler.

Je vais commencer par la partie avant. J'utilise un pistolet à colle pour coller les pièces ensemble. La colle chaude faisait fondre un peu la mousse de polystyrène mais j'ai quand même pu les coller en utilisant cette méthode.

Un autre bon moyen de coller du polystyrène consiste à utiliser de l'époxy 5 minutes. Avant de coller l'autre côté, je vais fabriquer le support pour le moteur. À cette fin, j'utilise un profilé en aluminium de 30 mm de large qui est assez léger. J'ai coupé le profil à environ 18 cm, marqué les trous pour le montage du moteur et les ai percés à l'aide d'un foret de 3 mm. Ensuite, j'ai plié le profil à 90 degrés. J'ai fixé le moteur au support à l'aide de boulons M3.

À l'aide de cet assemblage, j'ai fait un trou dans la partie avant de la mousse de polystyrène. Ensuite, à l'aide d'un couteau utilitaire, j'ai agrandi le trou à 30 mm de diamètre, identique au diamètre du moteur.

Ensuite, de l'autre côté du support moteur j'ai fait 4 trous qui serviront à fixer le support en place et aussi à fixer le train d'atterrissage. J'ai marqué l'emplacement de ces trous sur le fuselage et à l'aide d'un foret de 4 mm, j'ai fait des trous à travers la mousse de polystyrène manuellement. J'ai fabriqué une autre pièce en aluminium d'environ 7 cm de long avec les mêmes trous, et maintenant je peux l'utiliser pour fixer le support du moteur.

À l'aide de boulons M4, nous pouvons facilement fixer le support du moteur en place sans endommager la mousse de polystyrène. Cependant, je le ferai plus tard, alors je les ai enlevés et j'ai continué à coller l'autre côté. En utilisant la même méthode, j'ai également collé les pièces du dos.

La prochaine étape est le mariage, ou la connexion de l'avant et de l'arrière du fuselage. Afin de renforcer la connexion, j'ajouterai de simples bâtons de barbecue entre eux.

Je suggérerais même d'utiliser des bâtons plus gros, car lorsque l'avion s'écrasera, il pourrait facilement se casser ici. J'ai ajouté une bonne quantité de colle chaude sur le site de connexion et les ai serrés ensemble. Alors voilà, le fuselage est prêt et je pense que ça a l'air plutôt cool.

Ensuite, à l'aide d'un couteau utilitaire, je coupe deux morceaux de bâton de styromousse de 10 mm qui seront les stabilisateurs horizontaux et verticaux. J'ai biseauté les bords pour qu'ils soient plus beaux et aussi un peu plus aérodynamiques. Les stabilisateurs seront directement collés à l'arrière du fuselage mais avant cela, je vais d'abord fabriquer leurs surfaces de contrôle.

Pour cela, j'ai coupé environ 1/3 de leur longueur, et ce sera leur gouverne ou la gouverne de profondeur pour le stabilisateur horizontal et le gouvernail pour le stabilisateur vertical. Afin de pouvoir articuler les gouvernes sur les stabilisateurs, j'avais besoin de biseauter leur surface de contact. Encore une fois, je l'ai fait à l'aide d'un couteau utilitaire, et nous avons en fait besoin d'un couteau assez tranchant pour nettoyer ces coupes.

J'ai continué à rendre les stabilisateurs un peu plus aérodynamiques. Pour cela, j'ai utilisé un papier de verre et fait arrondir leurs bords d'attaque. J'ai aussi poncé un peu les bords de fuite.

Maintenant, comme le Styrofoam est assez fragile, je vais envelopper toute la zone des stabilisateurs et leurs surfaces de contrôle avec un simple ruban adhésif. Cela rendra non seulement les pièces plus solides, mais augmentera également l'aérodynamisme, car le ruban est beaucoup plus lisse que la mousse de polystyrène elle-même.

Après l'avoir emballé, j'ai coupé la partie inférieure du gouvernail à 45 degrés, afin de faire de la place pour que la gouverne de profondeur puisse se déplacer librement.

Maintenant, enfin, je peux faire la charnière pour cela, et je le fais en utilisant à nouveau le ruban adhésif. Donc, j'ai juste connecté les deux parties ensemble avec le ruban adhésif, et cela fait une charnière assez solide.

J'ai également répété ce processus pour le stabilisateur horizontal. Pour rendre la charnière encore plus solide, nous pouvons également ajouter du ruban adhésif de l'autre côté. En utilisant le même ruban adhésif, j'ai enroulé les côtés et avec cela les deux stabilisateurs sont faits.

Je suis passé au collage du stabilisateur horizontal au fuselage à l'aide d'une colle chaude. Pour fixer le stabilisateur vertical, j'ai d'abord inséré et collé 3 bâtons de barbecue à travers le stabilisateur horizontal et le fuselage. Ensuite, j'ai mis de la colle chaude sur eux et sur la surface de contact et j'ai appuyé fermement sur le stabilisateur.

Avec cela, nous en avons terminé avec les stabilisateurs et nous pouvons passer à la fabrication de l'aile.

Donc, comme je l'ai déjà dit, l'aile sera composée de 3 pièces en raison de la zone de travail limitée de ma machine de découpe de mousse DIY CNC. Encore une fois, j'utilise des bâtons de barbecue pour fournir des forces supplémentaires lors du collage des pièces. Pour les fixer précisément en ligne, j'utilise une bande de bois droite sur laquelle je peux glisser les pièces.

Une fois cela fait, l'aile est en fait assez fragile car elle est longue et en étain. Par conséquent, je vais le renforcer en y ajoutant un bâton en bois. J'ai coupé le bâton à la bonne taille et j'ai marqué l'aile où je dois faire une poche pour pouvoir y insérer le bâton. À l'aide du couteau utilitaire, j'ai lentement et soigneusement fait la poche. J'y ai ajouté de la colle chaude et je l'ai fixé en place sans trop perturber la forme du profil aérodynamique.

Maintenant, l'aile est beaucoup plus solide avec le bâton en bois en place. Bien que plus solide, il se briserait facilement s'il touchait le sol, donc je vais tout emballer avec le ruban adhésif comme je l'ai fait avec les stabilisateurs. J'ai commencé à ajouter le ruban depuis la face arrière ou le bord de fuite de l'aile, vers la face avant ou le bord d'attaque.

De cette façon, l'air entrant par l'avant n'aura pas tendance à détacher la bande. Bien que ce processus semble assez simple, il peut être un peu ennuyeux si vous n'avez pas les mains stables et assez de patience. Je pense que l'aile est juste parfaite. Maintenant, il est beaucoup plus solide, plus aérodynamique et il a l'air plutôt bien.

Très bien, la prochaine étape consiste à fabriquer les gouvernes des ailes ou des ailerons. Je vais les faire 22 cm de large et environ 1/4 de la corde de l'aile en longueur. Afin de pouvoir bouger librement, j'en ai coupé environ un demi-centimètre.

Et bien sûr, j'ai enveloppé tous les bords exposés avec la coupe. Ensuite, j'ai biseauté la partie inférieure de l'aileron à 45 degrés, et de la même manière que précédemment, je peux maintenant l'articuler à l'aile. Afin de tenir sur le fuselage et de pouvoir fixer facilement l'aile au fuselage, j'ai dû faire un évidement supplémentaire au milieu de l'aile.

Ensuite, il est temps d'installer les servomoteurs pour contrôler les ailerons. J'utilise les micro servos 9g. J'ai marqué l'endroit où ils seront placés et à l'aide du couteau utilitaire, j'ai soigneusement fait une ouverture dans l'aile pour que le servo puisse s'y adapter. Pendant ce temps, j'ai retiré les supports de montage des servos afin que leur forme soit plus simple. J'ai mis de la colle sur le servo et inséré dans l'ouverture.

À l'aide du couteau utilitaire, j'ai fait une petite rainure du servo au centre de l'aile afin que je puisse y installer le câblage des servos. Enfin, j'ai recouvert le tout avec un morceau de ruban adhésif. J'ai répété le même processus pour l'autre côté également.

J'ai continué à faire les cornes de contrôle. Je vais les fabriquer à partir du profilé en aluminium que j'ai utilisé auparavant pour fabriquer le support moteur. Je dessine la forme à la main pour qu'elle corresponde approximativement à la hauteur du klaxon du servomoteur et pour pendre au-dessus du point d'articulation. J'ai coupé la forme à l'aide d'une scie à métaux.

J'utiliserai du fil d'acier de 2 mm comme tige de commande, j'ai donc fait une ouverture dans le klaxon à l'aide d'une perceuse de 2,5 mm. J'ai fait une petite rainure dans l'aileron et collé le klaxon en place. Ensuite, j'ai mesuré la longueur de la tige de commande et je l'ai fabriquée avec du fil d'acier de 2 mm à l'aide d'une pince. Nous devons noter que lors de la mesure et de l'insertion des tiges de commande, les servomoteurs doivent être en position neutre.

Nous pouvons le faire en le plaçant manuellement au milieu de sa plage de mouvement, ou en le connectant à un servotesteur ou en le faisant avec un Arduino. J'ai répété le processus pour l'autre côté, et avec cela l'aile est maintenant complètement terminée.

Ensuite, je dois installer les servos pour contrôler le gouvernail et la profondeur. J'utilise également les mêmes micro-servos 9g ici, et le processus de leur installation est en fait à peu près le même que celui que je viens d'expliquer. Tout d'abord, j'ai marqué l'emplacement, fait l'ouverture à l'aide d'un couteau utilitaire et collé les deux moteurs en place. Ici, ils sont côte à côte mais avec leurs arbres de sortie du côté opposé.

Encore une fois, j'ai fait une petite rainure dans le fuselage afin de conduire le câblage des servos vers le compartiment électronique. J'ai couvert les servos avec un morceau de ruban adhésif et j'ai fait des ouvertures pour les cornes de servo. De la même manière que précédemment, j'ai fabriqué les cornes de contrôle et les ai collées en place à l'aide d'un pistolet à colle. Enfin, j'ai fabriqué la tige de commande appropriée et je les ai installées en conséquence.

Ok, ensuite je vais installer deux tiges en bois de 8mm qui serviront à fixer l'aile au fuselage. J'ai fait les trous manuellement à l'aide d'un foret de 6 mm. Les tiges doivent dépasser d'environ 1 cm des deux côtés. Je les ai également fixés au fuselage avec de la colle chaude et voici comment ils fonctionnent réellement.

Nous utilisons des élastiques pour fixer l'aile au fuselage. De cette façon, l'aile peut être facilement retirée et en cas d'écrasement, les élastiques réduiront considérablement l'impact sur l'aile. En même temps, l'assemblage est très solide.

Ensuite, je vais fabriquer le train d'atterrissage. Pour cela, encore une fois, j'utiliserai le profil en aluminium et les roues en polystyrène. Je les ai fabriqués à l'aide de la machine CNC comme indiqué précédemment. J'ai fait de petites rainures sur le profilé en aluminium pour pouvoir le plier facilement. Voici à quoi devrait ressembler le train d'atterrissage.

Pour fixer les roues au profil, j'utiliserai des boulons M5 et un tube en aluminium de 6 mm de diamètre intérieur. Le tube est fixé au support à l'aide du boulon et de l'écrou M5, et sur les côtés, j'ai ajouté des rondelles M5 pour que la roue puisse tourner librement autour du tube. Avec la même méthode, j'ai fabriqué la roue pour l'arrière de l'avion.

Ok, maintenant tous les composants sont prêts et avant de les assembler, jetons un coup d'œil à l'électronique de ce projet.

Électronique d'avion Arduino RC - Schéma de circuit

Donc, comme je l'ai déjà dit, cet avion RC est entièrement basé sur l'Arduino, l'émetteur et le récepteur sont des constructions personnalisées basées sur la carte Arduino Pro Mini.

J'ai déjà des tutoriels détaillés sur la construction et le fonctionnement de l'émetteur et du récepteur, vous pouvez donc les consulter pour plus de détails. Ici, je vais vous expliquer le schéma de circuit et le principe de fonctionnement de cet avion Arduino RC et comment tout doit être connecté.

Vous pouvez obtenir les composants nécessaires à ce projet à partir des liens ci-dessous :

  • NRF24L01 + PA + LNA …………..…..…….
  • Arduino Pro Mini………………..……….…..
  • Servomoteur ……………………………………
  • Moteur sans balais ………………………..……
  • ESC 30A ……………………………….…………
  • Batterie Li-Po ……………………..……………

Ainsi, la communication radio est basée sur les modules NRF24L01. Bien que cela puisse sembler un peu compliqué, cet émetteur DIY Arduino est en fait assez simple. Il a plusieurs contrôleurs, les manettes, les potentiomètres et quelques boutons, et il envoie constamment leurs données au récepteur. Le récepteur accepte ces données sans fil via le module NRF24L01 et envoie les commandes appropriées aux servos et au moteur sans balais pour contrôler l'avion.

Le contrôle des servos et des moteurs sans balais avec Arduino est également assez simple, donc je pense que tout ce concept d'avion Arduino RC n'est pas si difficile à comprendre. Le moteur sans balais que j'utilise dans ce projet a une puissance nominale de 1000KV et nécessite un ESC de 30A. L'ESC entraîne le moteur et alimente également l'Arduino et les servos grâce à sa fonction de circuit d'élimination de batterie qui produit 5V. Et l'alimentation de l'ESC et du moteur brushless provient d'une batterie Li-Po 3S.

J'ai ajouté une fonctionnalité supplémentaire à cet avion, et c'est une simple LED qui indiquera si la batterie est vide. À l'aide d'un simple diviseur de tension, nous abaissons les 12V provenant de la batterie Li-Po à environ 5V afin de pouvoir les lire avec l'entrée analogique Arduino et ainsi savoir quand la batterie descendra en dessous de 11V. Le récepteur a encore plusieurs canaux libres, nous pouvons donc ajouter plus de fonctionnalités à cet avion si nous le voulons, comme des lumières stroboscopiques, des volets, des mécanismes de largage, etc.

Finir l'assemblage

Néanmoins, terminons le montage maintenant. Donc, j'ai tout connecté comme expliqué dans le schéma de circuit. Sur le canal 1 se trouve la gouverne de direction, le canal 2 la gouverne de profondeur, les canaux 3 et 4 les ailerons et sur le canal 6 la LED. J'ai collé la LED d'un côté et l'interrupteur d'alimentation de l'autre.

On peut noter ici comment le train d'atterrissage est fixé à l'avion à l'aide des deux boulons du support moteur. En quelques mots, j'ai simplement inséré le moteur avec le support à partir de cette ouverture supérieure, boulonné en place comme indiqué précédemment, et j'ai également fixé le train d'atterrissage. Lors de l'insertion du support, j'ai également ajouté des élastiques afin qu'ils puissent maintenir la batterie en place.

Donc, une fois que j'ai connecté la batterie à l'ESC, j'ai tout inséré. Enfin, à l'aide des câbles d'extension, je peux facilement connecter les ailerons d'aile au récepteur, puis fixer l'aile au fuselage.

À l'avant, j'ai attaché l'hélice au moteur et il ne reste plus qu'à vérifier le CG ou le centre de gravité de l'avion.

Le CG est probablement le facteur le plus important pour que l'avion vole bien ou vole pas du tout.

L'avion était initialement lourd à l'arrière, j'ai donc déplacé la batterie vers l'avant et ajouté du poids (quelques boulons et écrous) et il s'est équilibré.

Voilà, notre avion RC basé sur Arduino est maintenant terminé et nous pouvons sortir pour l'essayer.

Test de l'avion RC Arduino

Eh bien, le premier essai ou le vol inaugural n'était pas si cool. Surtout après avoir vu le résultat du coup de foudre.

Ma conclusion ici était que l'avion était toujours lourd à l'arrière et que le moteur n'avait pas assez de puissance. Comme je n'avais pas d'autre moteur ou hélice à essayer, j'ai modifié le nez de l'avion pour qu'il soit un peu plus petit, j'ai déplacé le moteur plus vers l'avant pour qu'il ait un meilleur flux d'air et j'ai également arrondi les bords à l'avant. Quant à la structure, je l'ai renforcée avec des baguettes en bois et des profilés en aluminium que j'ai collés à l'intérieur du fuselage.

Au bas du compartiment électronique, j'ai fait deux trous, un pour que l'air s'échappe de l'ouverture avant, et l'autre pour faire sortir l'antenne NRF24L01 à l'extérieur pour avoir une portée de pâte.

Ok alors voici l'essai numéro deux. Encore une fois, presque la même chose, même si j'avais l'impression qu'il y avait un meilleur flux d'air ou une meilleure puissance maintenant.

Le fuselage s'est à nouveau cassé, ce qui indique que cette mousse de polystyrène est assez faible pour cet usage. J'ai fait un nouveau fuselage, et cette fois j'ai utilisé un peu de ruban adhésif pour le renforcer.

Essayez le numéro trois. Cela semblait prometteur mais le terrain que j'ai pour le décollage n'est en fait pas bon du tout. L'avion a commencé à se déplacer vers la droite, a heurté le bord de la route et s'est de nouveau cassé.

Je l'ai réparé et cette fois j'ai enveloppé presque tout le fuselage avec du ruban adhésif et du ruban adhésif. J'aurais dû le faire beaucoup plus tôt car cela a donné la bonne résistance au fuselage et il ne s'est pas cassé même après plusieurs écrasements supplémentaires.

Le problème maintenant était qu'après plusieurs coups de cœur, j'ai cassé les 4 hélices que j'avais, alors dans cet essai, j'utilise une hélice collée. Bien sûr, l'hélice s'est déchirée au décollage.

J'ai essayé avec une autre hélice collée composée de deux hélices déjà cassées et cette fois j'ai eu de la chance et l'avion a finalement décollé correctement.

Eh bien, la chance n'a pas duré longtemps car l'hélice s'est de nouveau cassée en l'air.

Néanmoins, comme il s'agissait de ma toute première expérience de pilotage d'un avion RC, je suppose que je peux considérer ce projet comme un succès, car j'ai réussi à prouver le concept de création d'un système entièrement basé sur Arduino pour contrôler les avions RC.

A part ça, on peut noter d'après le vol que les commandes venant de l'émetteur sont effectivement trop dures. C'est parce que les joysticks ne sont pas bons du tout à cet effet, ils ont une petite plage de mouvement et une mauvaise réponse.

Afin de résoudre ce problème, j'ai ajouté une fonctionnalité au programme grâce à laquelle nous pouvons contrôler la réactivité des commandes à l'aide du potentiomètre droit sur l'émetteur. De plus, j'ai ajouté une fonction grâce à laquelle nous pouvons régler le gouvernail à l'aide du potentiomètre gauche.

Code d'avion Arduino RC

Alors enfin, jetons un coup d'œil au code Arduino de cet avion RC basé sur Arduino et terminons ce projet. Le code est exactement le même que celui expliqué dans le tutoriel précédent, pour contrôler les servos et les moteurs brushless à l'aide des modules émetteurs-récepteurs NRF24L01.

Voici le code complet de ce projet d'avion Arduino RC :

/*
   Arduino RC Airplane
   == Receiver Code =
  by Dejan, www.HowToMechatronics.com
  Library: TMRh20/RF24, https://github.com/tmrh20/RF24/
*/
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <Servo.h>

#define led 9

RF24 radio(3, 2);   // nRF24L01 (CE, CSN)
const byte address[6] = "00001";
unsigned long lastReceiveTime = 0;
unsigned long currentTime = 0;

Servo throttle;  // create servo object to control the ESC
Servo rudderServo;
Servo elevatorServo;
Servo aileron1Servo;
Servo aileron2Servo;


int throttleValue, rudderValue, elevatorValue, aileron1Value, aileron2Value, travelAdjust;
// Max size of this struct is 32 bytes - NRF24L01 buffer limit
struct Data_Package {
  byte j1PotX;
  byte j1PotY;
  byte j1Button;
  byte j2PotX;
  byte j2PotY;
  byte j2Button;
  byte pot1;
  byte pot2;
  byte tSwitch1;
  byte tSwitch2;
  byte button1;
  byte button2;
  byte button3;
  byte button4;
};
Data_Package data; //Create a variable with the above structure
void setup() {
  Serial.begin(9600);
  radio.begin();
  radio.openReadingPipe(0, address);
  radio.setAutoAck(false);
  radio.setDataRate(RF24_250KBPS);
  radio.setPALevel(RF24_PA_MAX);
  radio.startListening(); //  Set the module as receiver
  resetData();
  throttle.attach(10);
  rudderServo.attach(4);   // CH1
  elevatorServo.attach(5); // CH2
  aileron1Servo.attach(6); // CH3
  aileron2Servo.attach(7); // CH4
  pinMode(led, OUTPUT);    // CH6
}
void loop() {
  // Check whether we keep receving data, or we have a connection between the two modules
  currentTime = millis();
  if ( currentTime - lastReceiveTime > 1000 ) { // If current time is more then 1 second since we have recived the last data, that means we have lost connection
    resetData(); // If connection is lost, reset the data. It prevents unwanted behavior, for example if a drone jas a throttle up, if we lose connection it can keep flying away if we dont reset the function
  }
  // Check whether there is data to be received
  if (radio.available()) {
    radio.read(&data, sizeof(Data_Package)); // Read the whole data and store it into the 'data' structure
    lastReceiveTime = millis(); // At this moment we have received the data
  }

  // Controlling throttle - brushless motor with ESC
  throttleValue = constrain(data.j1PotY, 80, 255); // Joysticks stays in middle. So we only need values the upper values from 130 to 255
  throttleValue = map(throttleValue, 80, 255, 1000, 2000);
  throttle.writeMicroseconds(throttleValue);

  // Adjusting the servos responsiveness
  travelAdjust = map(data.pot2, 0, 255, 0, 25);  
  
  // Elevator control
  elevatorValue = map(data.j2PotY, 0, 255, (85 - travelAdjust), (35 + travelAdjust));
  elevatorServo.write(elevatorValue);
  
  // Ailerons control
  aileron1Value = map(data.j2PotX, 0, 255, (10 + travelAdjust), (80 - travelAdjust));
  aileron1Servo.write(aileron1Value);
  aileron2Servo.write(aileron1Value);

  // Rudder trimming function
  if (data.j1PotX > 127) {
    rudderValue = data.pot1 + (data.j1PotX - 127);
  }
  if (data.j1PotX < 127) {
    rudderValue = data.pot1 - (127 - data.j1PotX);
  }
  // Rudder control
  rudderValue = map(rudderValue, 0, 255, (10 + travelAdjust), (90 - travelAdjust));
  rudderServo.write(rudderValue);

  // Monitor the battery voltage
  int sensorValue = analogRead(A3);
  float voltage = sensorValue * (5.00 / 1023.00) * 3; // Convert the reading values from 5v to suitable 12V i
  // If voltage is below 11V turn on the LED
  if (voltage < 11) {
    digitalWrite(led, HIGH);
  }
  else {
    digitalWrite(led, LOW);
  }
}
void resetData() {
  // Reset the values when there is no radio connection - Set initial default values
  data.j1PotX = 127;
  data.j1PotY = 80; // Motors stops // the central point of the joystick is not starting point for the throttle, its at value of 80 instead of 127
  data.j2PotX = 127;
  data.j2PotY = 127;
  data.j1Button = 1;
  data.j2Button = 1;
  data.pot1 = 1;
  data.pot2 = 1;
  data.tSwitch1 = 1;
  data.tSwitch2 = 1;
  data.button1 = 1;
  data.button2 = 1;
  data.button3 = 1;
  data.button4 = 1;
}Code language: Arduino (arduino)

Description: I will just quickly explain the main functions of the code and for all other details you can check the previous tutorial. So, after receiving the data coming from the transmitter, we use the Joystick1 Y axis value for controlling the throttle of the airplane. We convert the values from 80 to 255 coming from the transmitter into values from 1000 to 2000 which are used for controlling the brushless motor.

For controlling the elevator, we use the Joystick2 Y axis value which we convert to values from 85 to 35. These values directly set the position of the servo motor in degrees. Right next to them we can note that we have the travelAdjust variables, which value depends on the position of the right potentiometer. We actually use that value to decrease the position or the movement of the servos although the joysticks will go to their maximum position.

The same principle is applied for controlling the ailerons and the rudder.  Additionally, we use the data from the left potentiometer to adjust the neutral point of the rudder.

Lastly, using the analogRead() function and some math we control the battery voltage indicator LED.

So that’s it. I would like to hear your thoughts about this project in the comments section below, especially from you who have experience with building and flying RC airplanes. For those who are beginners and thinking of getting into this, I would suggest to check the FliteTest YouTube channel because it’s an amazing resource for learning about this RC world. I will put a link to it in the description.

I hope you enjoyed this project and learned something new. Feel free to ask any question in the comments section below and don’t forget to check my Arduino Projects Collection.


Processus de fabrication

  1. Visualiseur de musique Arduino DIY LUMAZOID
  2. Fabriquer une machine à écrire pour les devoirs à la maison
  3. Console d'édition Photoshop DIY utilisant Arduino Nano RP 2040
  4. Voltmètre DIY utilisant Arduino et Smartphone
  5. Planche à roulettes en réalité virtuelle DIY
  6. Oscilloscope DIY 10Hz-50kHz sur écran LCD 128x64
  7. Traitement DIY Arduino RADIONICS MMachine
  8. Simulateur DIY 2D Motion Racing
  9. Bras robotique programmable local et à distance