Accueil > Forum > Electronique > Arduino > Emetteur / récepteur

Emetteur / récepteur

Fredblock Fredblock 20 Messages
Bonjour à tous

Dans la continuité de mon travail sur mon drone, je me retrouve confronté à un autre problème.
Je suis au chapitre 6 utiliser sa radiocommande avec un arduino, et je bloque sur la partie récepteur.

Dans le chapitre, le câblage du récepteur se fait sur les pins channel 1 channel 2 channel 3 et channel 4.
comme ceci :

E8ok0L8

mais quel-est le nom des pins ?
Car ce que je comprend, c'est que chaque channel est un signal, et que donc cet émetteur/récepteur est capable d'envoyer / recevoir 6 signaux ?

Personnellement, je n'utilise pas encore ce matériel.
Alors pour la partie radio, je souhaite utiliser le module NRF24 que je possède en plusieurs exemplaires. (modèle : NRF24L01+PA+LNA)

LztR8fr

Mais visiblement je ne peux pas le câbler comme le FlySky du chapitre 6. et donc coder comme l'exemple sur le chapitre 6 en utilisant les mêmes bibliothèques
Et c'est ici que je m'y perd.

Après avoir visité le lien suivant, je ne suis pas plus avancé, et encore un peu plus confus.

https://static.cinay.xyz/2019/07/Module-sans-fil-nRF24L01-et-interface-avec-Arduino.html


Si quelqu'un peut me mettre sur la bonne voie.
Merci d'avance
Fred
lobodol lobodol 659 Messages BIG BOSS
Salut Fred, dans ton cas le module NRF24 est un transceiver, c'est à dire qu'il fonctionne aussi bien en émetteur qu'en récepteur. Mais surtout il utilise le protocole SPI. Rien à voir donc avec un récepteur radio de modélisme.
Du coup tu vas devoir pas mal adapter mon code. Le lien que tu as donné semble être un bon tuto pour ce module. Maintenant si tu ne sens pas d'y arriver, mieux vaut repartir sur un truc similaire au FlySky.

Quoi qu'il en soit, un peu de doc sur le module : https://pdf1.alldatasheet.com/datasheet-pdf/view/90050/ETC/NRF24.html

Bonne soirée !
Fredblock Fredblock 20 Messages
Hello

Merci pour ta réponse.
Je vais essayer de modifier le code en fonction du NRF.
Mais une question me vient à l'esprit. Lors du chapitre, tu parlais d'une notion de temps d'exécution avec la manipulation des ports vs DigitalWrite
N'ayant pas mon petit labo pour réaliser cette mesure de temps, à ton avis avec ce protocole SPI et ce genre de code, est-ce que les signaux seront aussi rapide que dans ton exemple ? Ou du moins plus rapide qu'avec les DigitalWrite classique ?

Merci
Fredblock Fredblock 20 Messages
Bonjour à tous

J'ai finalement investi dans une radiocommande flysky comme me l'a conseillé Lobodol.
J'aurai l'occasion de me confronter au nrf24 pour un autre projet amusant avec un ami (mini robot)

Concernant mon drone et la Flysky, après avoir transféré le code (merci encore lobodol :) )
J'ai observé une phénomène étrange.
Après avoir bougé le stick de gauche en bas à gauche, afin de passer en mode started, 
Les moteurs se mettent en rotation à mi gaz
Et donc un micro déplacement du stick des gazs fait décoller le drone comme une balle (mon 1er start c'est résumé en un crash dans une chaise)
En effet le moteurs sont visiblement à mi gaz en mode started soit 1500 micro-secondes.
Et visiblement c'est la limite de décollage pour mon drone.

Pourtant, lorsque je transfère le code de la radio (et uniquement celui de la radio (chapitre 6), et que j'ouvre le moniteur, stick throttle channel 3 en bas, je suis bien à 1000 micro-secondes
Remarque : une fois le code du dernier chapitre transféré, il n'y a plus rien dans le moniteur.

Pour celles et ceux qui sont arrivés à ce stade, avez vous observé ce comportement ?
Cela me semble étrange car lorsque le drone à finalisé sa procédure de start, les moteurs ne doivent pas tourner. Enfin je l'imagine comme cela.

Seconde remarque : lors de ma 1ère tentative de vol qui s'est soldé par un échec, j'ai remarqué juste avant le.crash, que le drone a effectué une demie révolution sur l'axe X
Pour ce problème je pense que c'est dû à mauvais réglage des coefficients, qu'en dites-vous ?

Dans l'attente de vos réponses 
Cordialement 
Fred
lobodol lobodol 659 Messages BIG BOSS
Salut Fred, concernant le mode started la longuer d'impulsion devrait être autour 1100µs quand le stick est au plus bas. Ça assure une rotation minimum des moteurs sans  pour autant le faire décoller. Que tu sois à 1500 n'est pas normal 🤔

D'après moi le problème peut venir de deux choses :
  • La partie IMU
  • La partie régulateur
Pour identifier le problème il faudrait d'abord vérifier que les angles calculés par l'IMU sont correctes. Si les valeurs indiquées semblent correctes alors le problème se situe sûrement au niveau du régulateur.
Je conseilles de faire des Serial.print des valeurs pour débuguer.

Tiens-nous au courant !
Fredblock Fredblock 20 Messages
Hello

tout d'abord merci pour ta réponse :)

Je viens de faire le 1er contrôle. la partie IMU.
En réitérant le chapitre 5, j'obtiens les offsets suivant : -4494 / -2428 / 1133 puis 13 / 53 / 3
je précise que, à iso conditions et routage, j'obtiens des valeurs répétables .

Et après codage en fonction des offsets obtenus, mon moniteur affiche bien des angles faciles à reproduire, tel que 45 et - 45 °, 90 et - 90° etc etc ...
Donc il semblerait que mon capteur MPU fonctionne correctement.
Fredblock Fredblock 20 Messages
Bon, après avoir réfléchit pendant la pause déjeuné, je me suis fait la réflexion suivante :
si mes moteurs tournent réellement à 1500 Us, et que le drone ne décolle pas, c'est que le drone doit être extrêmement lourd. Hors ce n'est pas le cas
et si un drone ne peut décoller uniquement sur la moitié de plage throttle, il y a un sérieux problème.
donc j'ai bien checké que mon pulse_length_esc = minMax(pulse_length_esc  était compris entre 1100 et 2000 comme il doit l'étre (en suivant ton exemple).
C'est bien cas.

J'ai donc fait une nouvelle simulation de démarrage du drone et captant bien la fréquence à l'oreille.
j'ai modifié suite à cela mon pulse_length_esc = minMax(pulse_length_esc en le passant cette fois-ci a 1050 / 2000.
Et on observe bien une différence lors d'une nouvelle simulation de démarrage.

Donc visiblement mes moteurs tournent bien à 1100 au start.
Je pense que le problème lié au crash était le suivant : soit le stick du throttle n'était pas revenu à 0 % après la procédure de start, soit j'ai fais l'erreur de mettre du gaz.

Maintenant il ne reste plus que le problème de dérive à régler :)
lobodol lobodol 659 Messages BIG BOSS
Quand tu as fait ton test de la partie IMU tu as utilisé le code complet ou celui du chapitre dédié ?
Bonne nouvelle en tout cas si la partie IMU fonctionne.

Quelles sont les dimensions de ton drone ? Car les coeff PID fonctionnent pour un drone ayant des dimensions semblables à un F450. Sinon il faudra les adapter.
Fredblock Fredblock 20 Messages
Pour le test, le code du chapitre à été utilisé.

Pour les dimensions, c'est un cadre de F330 que j'utilise pour le moment. Le temps de m'habituer. Donc 330mm de diagonale
Pour la suite avec un peu plus d'expérience, j'utiliserais un cadre que j'ai déjà réalisé en impression 3D
lobodol lobodol 659 Messages BIG BOSS
 Pour le test, le code du chapitre à été utilisé.
Ok, test avec le code complet pour être sûr qu'il n'y a pas d'interférences entre la partie IMU et régulateur.
Fredblock Fredblock 20 Messages
Tu veux parler du code complet qui a pour nom : "drone flight controler" ?
Si oui, la console ne m'affiche absolument rien.
lobodol lobodol 659 Messages BIG BOSS
Tu veux parler du code complet qui a pour nom : "drone flight controler" ?
Oui, c'est ce code qu'il faut vérifier car il contient tous les éléments fonctionnant conjointement (régulateur, IMU, calcul des erreurs, etc). Le but est de voir s'il n'y a pas un bloc fonctionnel qui interfère avec un autre.
C'est pas normal que tu n'ai s rien en sortie de console. Tu as bien initialisé la communication avec Serial.begin() ?
Tu fais bien des Serial.print réguliers ?
Vous devez être connecté pour pouvoir répondre à ce sujet.
Utilisation des données

Afin d'améliorer ton expérience utilisateur, nous utilisons des cookies 🍪