Utiliser un arduino pour autopiloter mon contrôleur
Modérateur : Dehas
- crtleroy
- Messages : 6
- Enregistré le : lun. 31 juil. 2017 14:24
- Réputation : 0
Utiliser un arduino pour autopiloter mon contrôleur
Salut tout le monde,
Je bosse sur un octocopter, que je voudrais faire contrôler par un arduino. Mon idée est donc de ne pas utiliser une radiocommande mais d'embarquer mon arduino mega 2560 dans mon drone, et de le faire "passer" pour un recepteur RC ! Je précise que mon flight controller est un SP Racing F3 et j'utilise cleanflight.
Donc, plus précisément, je voudrais que mon arduino imite un récepteur en envoyant des signaux PWM dans les entrées RC de mon contrôleur de vol. Le premier truc à faire est donc déjà de connaître la nature des signaux PWM à la sortie d'un récepteur classique, chose que j'ai trouvée ici : http://diydrones.com/forum/topics/pwm-o ... m-receiver" onclick="window.open(this.href);return false;
A priori la commande PWM va de 1ms à 2ms sur une période totale de 20ms, pour un récepteur Spektrum classique. Je suppose donc qu'il me suffit de générer le même signal pour simuler une radiocommande. Ce qui me rassure pour la forme de l'onde c'est la nature de la commande sur cleanflight, qui va de 1000 à 2000 : il s'agit donc de 1000μs à 2000μs, c'est sûrement ça.
Donc, je génère un signal PWM de cette nature avec ce code Arduino très très simple :
void setup()
{
pinMode(13, OUTPUT);
}
void loop()
{
digitalWrite(13, HIGH);
delayMicroseconds(1300);
digitalWrite(13, LOW);
delayMicroseconds(20000 - 1300);
}
et je connecte la masse de l'arduino à l'entrée masse du récepteur (pin 1 de la broche IO-1 sur le SP F3) et la pin 13 de l'arduino sur n'importe laquelle des chaînes RC du contrôleur (j'ai tout essayé, pin 3, 4, etc, c'est à dire le throttle, les AUX, tout).
Bref, là, a priori j'envoie un signal PWM comme le récepteur est censé le faire. J'ouvre cleanflight et je regarde la commande sur les chaîne et rien du tout Elles sont toutes bloquées à 1500 comme d'hab. pourtant je pense avoir envoyé un signal de 1300...
Alors voilà, est ce que quelqu'un s'est déjà amusé à faire ça ? Ou s'y connaitrait un peu mieux que moi en PWM ou en communciation RC ? Je ne sais plus trop quoi faire
Votre soutien sera le bienvenu Merci d'avance !
Corentin
Je bosse sur un octocopter, que je voudrais faire contrôler par un arduino. Mon idée est donc de ne pas utiliser une radiocommande mais d'embarquer mon arduino mega 2560 dans mon drone, et de le faire "passer" pour un recepteur RC ! Je précise que mon flight controller est un SP Racing F3 et j'utilise cleanflight.
Donc, plus précisément, je voudrais que mon arduino imite un récepteur en envoyant des signaux PWM dans les entrées RC de mon contrôleur de vol. Le premier truc à faire est donc déjà de connaître la nature des signaux PWM à la sortie d'un récepteur classique, chose que j'ai trouvée ici : http://diydrones.com/forum/topics/pwm-o ... m-receiver" onclick="window.open(this.href);return false;
A priori la commande PWM va de 1ms à 2ms sur une période totale de 20ms, pour un récepteur Spektrum classique. Je suppose donc qu'il me suffit de générer le même signal pour simuler une radiocommande. Ce qui me rassure pour la forme de l'onde c'est la nature de la commande sur cleanflight, qui va de 1000 à 2000 : il s'agit donc de 1000μs à 2000μs, c'est sûrement ça.
Donc, je génère un signal PWM de cette nature avec ce code Arduino très très simple :
void setup()
{
pinMode(13, OUTPUT);
}
void loop()
{
digitalWrite(13, HIGH);
delayMicroseconds(1300);
digitalWrite(13, LOW);
delayMicroseconds(20000 - 1300);
}
et je connecte la masse de l'arduino à l'entrée masse du récepteur (pin 1 de la broche IO-1 sur le SP F3) et la pin 13 de l'arduino sur n'importe laquelle des chaînes RC du contrôleur (j'ai tout essayé, pin 3, 4, etc, c'est à dire le throttle, les AUX, tout).
Bref, là, a priori j'envoie un signal PWM comme le récepteur est censé le faire. J'ouvre cleanflight et je regarde la commande sur les chaîne et rien du tout Elles sont toutes bloquées à 1500 comme d'hab. pourtant je pense avoir envoyé un signal de 1300...
Alors voilà, est ce que quelqu'un s'est déjà amusé à faire ça ? Ou s'y connaitrait un peu mieux que moi en PWM ou en communciation RC ? Je ne sais plus trop quoi faire
Votre soutien sera le bienvenu Merci d'avance !
Corentin
- Crisssss
- Tricopter
- Messages : 113
- Enregistré le : sam. 3 juin 2017 13:21
- Réputation : 0
- Localisation : Neuville sur Ain
Re: Utiliser un arduino pour autopiloter mon contrôleur
Un signal pwm sert a controler une seule voie il me semble..
C'est plutot un signal ibus ou sbus que tu devrais generer
C'est plutot un signal ibus ou sbus que tu devrais generer
Youtube : https://www.youtube.com/user/vidalcris/" onclick="window.open(this.href);return false;
Thingiverse : https://www.thingiverse.com/Vidalcris/about" onclick="window.open(this.href);return false;
Shops : https://www.shapeways.com/designer/vidalcris/creations" onclick="window.open(this.href);return false;
https://www.shapeways.com/shops/superfa ... christophe" onclick="window.open(this.href);return false;
Thingiverse : https://www.thingiverse.com/Vidalcris/about" onclick="window.open(this.href);return false;
Shops : https://www.shapeways.com/designer/vidalcris/creations" onclick="window.open(this.href);return false;
https://www.shapeways.com/shops/superfa ... christophe" onclick="window.open(this.href);return false;
- furynick
- Administrateur du site
- Messages : 2754
- Enregistré le : mer. 5 févr. 2014 13:46
- Réputation : 5
- Localisation : Portet-sur-Garonne
- Contact :
Re: Utiliser un arduino pour autopiloter mon contrôleur
Utilises les pin PWM de ton arduino, ça sera déjà beaucoup plus pratique à coder.
Ensuite, la pin13 c'est la LED, mieux vaut éviter de l'utiliser.
Enfin, c'est particulièrement scabreux comme projet ... autant programmer directement le vol automatique sur le contrôleur sans quoi il te faudra coder le support d'une centrale inertielle tout comme un FC. Tu te retrouverais donc avec un FC complet qui pilote un FC.
Ensuite, la pin13 c'est la LED, mieux vaut éviter de l'utiliser.
Enfin, c'est particulièrement scabreux comme projet ... autant programmer directement le vol automatique sur le contrôleur sans quoi il te faudra coder le support d'une centrale inertielle tout comme un FC. Tu te retrouverais donc avec un FC complet qui pilote un FC.
Bourdons.fr
Tx:Taranis+ & T6J
Yon²:Talon v2, E600, 14x4.7, X2&M8N, APM3.2, T-2D, H3+S, X8R
Rēsu:ZMR 250, RCX10, 5x3, Naze32, X4R
Akuro:F450, Afro slim, 9x5 tri, X2&M8N, APM3.2, X4R
Tx:Taranis+ & T6J
Yon²:Talon v2, E600, 14x4.7, X2&M8N, APM3.2, T-2D, H3+S, X8R
Rēsu:ZMR 250, RCX10, 5x3, Naze32, X4R
Akuro:F450, Afro slim, 9x5 tri, X2&M8N, APM3.2, X4R
- crtleroy
- Messages : 6
- Enregistré le : lun. 31 juil. 2017 14:24
- Réputation : 0
Re: Utiliser un arduino pour autopiloter mon contrôleur
Alors non en fait, je ne compte pas remplacer mon contrôleur de vol, je me rends bien compte que ce serait tordu. Non, ce que je veux faire c'est juste remplacer la radiocommande par une commande externe automatisée et embarquée. Par exemple, pour écrire une chorégraphie, actionner les servos au bon moment, et plus généralement robotiser le drone.furynick a écrit :autant programmer directement le vol automatique sur le contrôleur sans quoi il te faudra coder le support d'une centrale inertielle tout comme un FC. Tu te retrouverais donc avec un FC complet qui pilote un FC.
A vrai dire je compte aller encore plus loin puisque je voudrais en fait effectivement avoir une radiocommande, mais dont le récepteur est branché sur l'arduino. Ce qui me permet de piloter directement en bypassant les informations ou d'actionner à tout moment un pilote automatique programmable à souhait. Finalement le contrôleur de vol reste toujours le pilote, mais l'arduino est un copilote.
- crtleroy
- Messages : 6
- Enregistré le : lun. 31 juil. 2017 14:24
- Réputation : 0
Re: Utiliser un arduino pour autopiloter mon contrôleur
Oh et effectivement sur les arduino les pins à utiliser de préférence sont les 3, 5, 6, 9, 10, et 11;furynick a écrit :Ensuite, la pin13 c'est la LED, mieux vaut éviter de l'utiliser.
Mais là je travaille avec un arduino Mega donc ça devrait fonctionner de la pin 2 à 13 et 44 à 46 (https://www.arduino.cc/en/Reference/AnalogWrite)
Bon en revanche , je me suis rendu compte que j'utilisais digitalwrite() au lieu d'analogwrite()... Donc voilà j'ai de quoi réessayer ce soir j'espère que ça fonctionnera
- crtleroy
- Messages : 6
- Enregistré le : lun. 31 juil. 2017 14:24
- Réputation : 0
Re: Utiliser un arduino pour autopiloter mon contrôleur
Alors oui, et pour l'instant ce que j'essaye de faire c'est de générer plusieurs PWM pour contrôler tous mes canaux.Crisssss a écrit :Un signal pwm sert a controler une seule voie il me semble..
Mais effectivement je considère carrément l'idée de générer un signal PPM, qui pourra contrôler mes 8 canaux avec une seule voie .
- furynick
- Administrateur du site
- Messages : 2754
- Enregistré le : mer. 5 févr. 2014 13:46
- Réputation : 5
- Localisation : Portet-sur-Garonne
- Contact :
Re: Utiliser un arduino pour autopiloter mon contrôleur
Je ne pense pas que tu puisses piloter un FC en pré-programmant des séquences de commande pour la simple et bonne raison que le milieu dans lequel l'appareil évolue et totalement instable.
Actionner la commande de roulis de 15% pendant 1s n'aura jamais le même effet.
Actionner la commande de roulis de 15% pendant 1s n'aura jamais le même effet.
Bourdons.fr
Tx:Taranis+ & T6J
Yon²:Talon v2, E600, 14x4.7, X2&M8N, APM3.2, T-2D, H3+S, X8R
Rēsu:ZMR 250, RCX10, 5x3, Naze32, X4R
Akuro:F450, Afro slim, 9x5 tri, X2&M8N, APM3.2, X4R
Tx:Taranis+ & T6J
Yon²:Talon v2, E600, 14x4.7, X2&M8N, APM3.2, T-2D, H3+S, X8R
Rēsu:ZMR 250, RCX10, 5x3, Naze32, X4R
Akuro:F450, Afro slim, 9x5 tri, X2&M8N, APM3.2, X4R
- crtleroy
- Messages : 6
- Enregistré le : lun. 31 juil. 2017 14:24
- Réputation : 0
Re: Utiliser un arduino pour autopiloter mon contrôleur
Je suis bien d'accord ! L'idée n'est pas vraiment de donner toute la main à un arduino pour le pilotage. C'est d'utiliser l'arduino, avec davantage de capteurs, pour réaliser des séquences plus compliquées. Par exemple pour larguer un colis, arrivé proche de la cible, l'arduino prend le relais, pour un atterrissage difficile, il prend le relais, pour une manoeuvre d'évitement automatique s'il y a un obstacle, il prend le relais, etc A côté de ça c'est la possibilité d'activer des modes de vols via l'arduino, ou même d'armer/désarmer via arduino, donc ça veut dire que je peux l'armer avec mon téléphone aussi (ce n'est qu'un exemple pour montrer l'ouverture que ça apporte)
Je note que l'implémentation de lois de commande et de correcteurs pour une stabilisation externe du drone ne me fait pas vraiment peur (et non, ce n'est pas une stabilisation en "plus" de celle du correcteur de vol, c'est simplement celle que l'on fait avec nos mains quand on pilote par exemple. notre cerveau dirige naturellement nos pouces pour stabiliser le drone, même s'il est déjà censé être stable)
Bref, et quoi qu'il en soit j'ai réussi hier soir à générer du PPM pour contrôler 8 canaux avec une seule voie . Du coup j'ai le contrôle sur 8 canaux directement depuis l'arduino. Je le mettrai en bypass pour piloter à la main et je m'occuperai d'implementer d'autres choses plus tard ! ais bon en tout cas ça a marché, c'est bon
Je note que l'implémentation de lois de commande et de correcteurs pour une stabilisation externe du drone ne me fait pas vraiment peur (et non, ce n'est pas une stabilisation en "plus" de celle du correcteur de vol, c'est simplement celle que l'on fait avec nos mains quand on pilote par exemple. notre cerveau dirige naturellement nos pouces pour stabiliser le drone, même s'il est déjà censé être stable)
Bref, et quoi qu'il en soit j'ai réussi hier soir à générer du PPM pour contrôler 8 canaux avec une seule voie . Du coup j'ai le contrôle sur 8 canaux directement depuis l'arduino. Je le mettrai en bypass pour piloter à la main et je m'occuperai d'implementer d'autres choses plus tard ! ais bon en tout cas ça a marché, c'est bon
- bruno
- Pilote toutes catégories
- Messages : 1820
- Enregistré le : mar. 15 avr. 2014 11:39
- Réputation : 1
- Localisation : Créteil (94)
Re: Utiliser un arduino pour autopiloter mon contrôleur
Y-a sylvain qui avait fait un gros travail déjà viewtopic.php?f=80&t=14875
Les modos: Désolé pour le déterrage ... mais Bruno is back
Les modos: Désolé pour le déterrage ... mais Bruno is back
Bon vol
Nicéphore
ALIEN 560 / FrSKY TARANIS.
=============
Mes contributions:
TARANIS: Traker d'antenne (suivi du modèle) en LUA
Le vocabulaire de l'impression 3D / CURA / Truc et Astuces
Tutoriel - Simplify 3D
Nicéphore
ALIEN 560 / FrSKY TARANIS.
=============
Mes contributions:
TARANIS: Traker d'antenne (suivi du modèle) en LUA
Le vocabulaire de l'impression 3D / CURA / Truc et Astuces
Tutoriel - Simplify 3D
- Dehas
- Administrateur du site
- Messages : 16171
- Enregistré le : ven. 3 juin 2011 12:50
- Réputation : 5
- Localisation : Saint Dié des Vosges
- Genre :
- Contact :
- klmnl
- Pilote toutes catégories
- Messages : 873
- Enregistré le : lun. 6 mai 2013 19:28
- Réputation : 1
- Localisation : Nice MAC Nice
Re: Utiliser un arduino pour autopiloter mon contrôleur
crtLeroy bonjour.
Va voir ici
viewtopic.php?f=10&t=22444
Ne concerne qu'un seul canal.
Mais éducatif tout de même.
Larguer un colis (une grenade par exemple), c'est facile : interruption de l'alimentation d'un électro aimant.
Éviter un obstacle, c'est plus dur. Furynic a déjà abordé le chapitre difficulté.
Arduino embarqué te permettra des choses simples, mais va probablement nécessiter son alimentation séparée.
Cdlt
PS va voir un site qui s'appelle locoduino (loco, comme locomotive) : un passionné d’Arduino et de modélisme ferroviaire. Beaucoup de choses à apprendre y compris des trucs un peu hard comme les timers.
Va voir ici
viewtopic.php?f=10&t=22444
Ne concerne qu'un seul canal.
Mais éducatif tout de même.
Larguer un colis (une grenade par exemple), c'est facile : interruption de l'alimentation d'un électro aimant.
Éviter un obstacle, c'est plus dur. Furynic a déjà abordé le chapitre difficulté.
Arduino embarqué te permettra des choses simples, mais va probablement nécessiter son alimentation séparée.
Cdlt
PS va voir un site qui s'appelle locoduino (loco, comme locomotive) : un passionné d’Arduino et de modélisme ferroviaire. Beaucoup de choses à apprendre y compris des trucs un peu hard comme les timers.
- azbloc
- Pilote toutes catégories
- Messages : 2152
- Enregistré le : lun. 13 juil. 2015 22:51
- Réputation : 2
- Contact :
Re: Utiliser un arduino pour autopiloter mon contrôleur
content de te lire ici Bruno
VENDU Vend valise de transport étanche grand volume, idéal multi-rotors ou RC. 50 €
Un petit TILT pou le rRaid Handbike Via Rhôna A.L.A.R.M.E. 2017 TILTER ICI!
Un petit TILT pou le rRaid Handbike Via Rhôna A.L.A.R.M.E. 2017 TILTER ICI!
- guiss
- Bicopter
- Messages : 12
- Enregistré le : mar. 24 mars 2020 13:14
- Réputation : 0
- Genre :
Re: Utiliser un arduino pour autopiloter mon contrôleur
Salut
Je déterre un peu ton post, mais as tu réussi a programmer ton arduino pou piloter ton contrôleur?
Je suis intéressé par ton projet.
Je déterre un peu ton post, mais as tu réussi a programmer ton arduino pou piloter ton contrôleur?
Je suis intéressé par ton projet.
- burna
- Messages : 2
- Enregistré le : mer. 12 oct. 2022 14:27
- Réputation : 0
- Genre :
Re: Utiliser un arduino pour autopiloter mon contrôleur
salut Bruno, c'est Burna qu'est ce que tu deviens ?
Je me suis aussi lancée dans un drône et j'ai besoin de conseil.
J'aimerai contrôler mon drône (controleur de vol f55 A pro II) grâce à un arduino pour lui donner des instructions de types fait un vol stationnaire à un mètre du sol.
Grosses bises mes bichons
Je me suis aussi lancée dans un drône et j'ai besoin de conseil.
J'aimerai contrôler mon drône (controleur de vol f55 A pro II) grâce à un arduino pour lui donner des instructions de types fait un vol stationnaire à un mètre du sol.
Grosses bises mes bichons
- mlebret
- Octocopter
- Messages : 575
- Enregistré le : sam. 9 mars 2013 11:27
- Réputation : 5
- Localisation : Sud Quimper
Re: Utiliser un arduino pour autopiloter mon contrôleur
La référence que tu donnes et celle d'un ESC?
Il pourrait être associé à une carte de vol (c'est parfois utile) capable de fonctionner avec "Arducopter", logiciel qui permet de gérer le stationnaire à un mètre du sol avec les bons périphériques (GPS et Lidar)