Fabrication d'une radiocommande (base nRF24L01+)

J'ai pas mal avancé sur ma radiocommande, le code source est totalement fini (en 4 semaines), il fait 4000 lignes environ, et sera bientôt disponible en téléchargement :wink:

En attendant, voici les caractéristiques de ma radiocommande:

  • Automate programmable MODULABLE M32 équipé du microcontrôleur ATmega1284P.
  • Émetteur/récepteur radio 2.4Ghz (composant nRF24L01+, portée 1km environ).
  • Communication bi-directionelle.
  • Antenne Trèfle omnidirectionnelle 3 branches.
  • Communication par trames de 32 bits.
  • Affichage digital avec afficheur à digits MAX7219.
  • Buzzer de signalement.
  • Système à tolérance de pannes (fail-safe) envoyé au modèle sur 6 bits (0 à 63).
  • 1 menu principal + 1 menu des paramètres/réglages.
  • Réglage de la tension de batterie faible du modèle (de 0V à 100V).
  • Réglage d'une temporisation (de 0s à 3600s).
  • Aucune mémoire de modèles (la mémoire est située dans les modèles).
  • Possibilité de copier les réglages d'un modèle vers un autre très facilement.
  • Jusqu'à 16 paramètres/réglages personnalisés envoyés par le modèle.
  • Verrouillage des menus (plus de réglages possibles, ni d'extinction de la radiocommande).
  • Affichage de la tension de la batterie de la radiocommande.
  • Alarme (visuelle et sonore) niveau de batterie faible de la radiocommande.
  • Affichage de la tension de la batterie du modèle.
  • Alarme (visuelle et sonore) niveau de batterie faible du modèle (si paramétrée).
  • Affichage d'une temporisation (temps d'utilisation du modèle/autre).
  • Affichage des trims (verrouillage et remise à 0 possible par le bouton de sélection).
  • Affichage d'une télémétrie personnalisée.
  • Affichage des paramètres/réglages personnalisés.
  • Menu de mise à jour des paramètres/réglages du modèle.
  • Allumage ou extinction de la radiocommande ou du modèle dans n'importe quel ordre.
  • Accumulateur NIMH (+1.2V par élément) 8S 600mAh (+9.6V).
  • Prise de charge de la batterie (XT30).
  • Boîtier fermé en Aluminium, Acier inoxydable, bois (contreplaqué 5mm), et Ertalon.
  • Dimensions: 214mm x 204mm x 117mm.

L'interface physique:

  • 2 manches analogiques (1 gaz/rouli + 1 tangage/lacet) sur 10 bits (0 à 1023).
  • 4 interrupteurs de trims (3 positions) sur 2 bits chacun (0 à 2).
  • 1 interrupteur de coupure moteur/autre (2 positions) sur 1 bit (0 à 1).
  • 3 interrupteurs auxiliaires (3 positions) sur 2 bits chacun (0 à 2).
  • 1 bouton rotatif auxiliaire sur 10 bits (0 à 1023).
  • 1 bouton rotatif de sélection du menu sur 10 bits (0 à 1023).
  • 1 bouton poussoir de sélection du menu (2 positions, dont 1 momentanée) sur 1 bit (0 à 1).
  • 1 interrupteur d'alimentation maintenue on/off (2 positions).

Pour plus d'infos et si vous souhaitez en savoir plus, tout est expliqué ici: http://sylvainmahe.xyz/projectRadioControl.html

N'hésitez pas si vous avez des questions que je n'évoque pas dans l'article :wink:

Petite info, j'ai à présent spécialisé et optimisé ma bibliothèque MODULE pour 8 microcontrôleurs qui peuvent équiper mes 2 automates programmables, c'est à dire l'ATmega48P, l'ATmega88P, l'ATmega168P et l'ATmega328P qui peuvent équiper mon automate MODULABLE M20, et l'ATmega164P, l'ATmega324P, l'ATmega644P et l'ATmega1284P qui peuvent équiper mon automate MODULABLE M32.

Dans le dossier module téléchargeable sur mon site vous trouverez donc maintenant 8 répertoires:
atmega48p
atmega88p
atmega168p
atmega328p
atmega164p
atmega324p
atmega644p
atmega1284p

Mes routines de compilation pour linux et windows (également dispos dans l'archive de MODULE) qui utilisent avr-gcc, avr-dude, etc.. détectent automatiquement le microcontrôleur qui équipe la carte électronique.

Je recopie ici les différences notables entre les différents microcontrôleurs:

Microcontrôleur ATmega48P:

  • Mémoire Flash = 4096 octets (4k)
  • Mémoire EEPROM = 256 octets (0.25k)
  • Mémoire SRAM = 512 octets (0.5k)

Microcontrôleur ATmega88P:

  • Mémoire Flash = 8192 octets (8k)
  • Mémoire EEPROM = 512 octets (0.5k)
  • Mémoire SRAM = 1024 octets (1k)

Microcontrôleur ATmega168P:

  • Mémoire Flash = 16384 octets (16k)
  • Mémoire EEPROM = 512 octets (0.5k)
  • Mémoire SRAM = 1024 octets (1k)

Microcontrôleur ATmega328P:

  • Mémoire Flash = 32768 octets (32k)
  • Mémoire EEPROM = 1024 octets (1k)
  • Mémoire SRAM = 2048 octets (2k)

Microcontrôleur ATmega164P:

  • Mémoire Flash = 16384 octets (16k)
  • Mémoire EEPROM = 512 octets (0.5k)
  • Mémoire SRAM = 1024 octets (1k)

Microcontrôleur ATmega324P:

  • Mémoire Flash = 32768 octets (32k)
  • Mémoire EEPROM = 1024 octets (1k)
  • Mémoire SRAM = 2048 octets (2k)

Microcontrôleur ATmega644P:

  • Mémoire Flash = 65536 octets (64k)
  • Mémoire EEPROM = 2048 octets (2k)
  • Mémoire SRAM = 4096 octets (4k)

Microcontrôleur ATmega1284P:

  • Mémoire Flash = 131072 octets (128k)
  • Mémoire EEPROM = 4096 octets (4k)
  • Mémoire SRAM = 16384 octets (16k)

N'hésitez pas si vous avez des interrogations :wink:

Bon exercice intellectuel que de "partir from scratch" pour le code et les cartes - mais pas forcément sa place ici qui reste le forum de discussion "Arduino" sur lequel les participants utilisent des librairies et cartes s'intégrant dans cette chaîne de production (cette partie du forum s'appelant "Présentations de projets complets ou de réalisations à base d'Arduino")

Bonjour, j'ai écrit un nouveau paragraphe sur mon site pour expliquer une fonctionnalité qui peut vous intéresser: Système multidirectionnel (multiceiver) :wink: (voir: sylvainmahe.site).

Le système de radiocommande 2.4GHz que je propose ici permet la communication multidirectionnelle entre la radiocommande et un ou plusieurs modèles, autorise le dialogue entre les modèles eux-mêmes (réseau d'émetteurs/récepteurs, ou multiceivers), et rend possible l'ajout de plusieurs émetteurs/récepteurs (tranceivers) embarqués dans un même véhicule (pour les gros modèles notamment).

Tout projet est alors possible, sans même évoquer le modélisme piloté dont il est question ici:

Par exemple des applications robotiques mettant en œuvre des réseaux de robots qui communiquent entre-eux, et bien d'autres projets encore. Libre à vous d'imaginer vos propres applications en fonction de vos besoins !

Ce principe d'émetteur/récepteur intégré donne également la possibilité à l'utilisateur d'effectuer des communications longues distances en basse puissance d'émission (inférieure à 100mW), ceci par transmission de données de la radiocommande vers des périphériques relais qui se chargent non pas de traiter l'information et de l'utiliser, mais plutôt de la relayer vers d'autres périphériques afin d'atteindre la portée radio vers le modèle.

Cette propriété de pouvoir recevoir et émettre avec de multiples périphériques ainsi que de relayer l'information, est effectué de manière complètement transparente pour l'utilisateur ou le programmeur via l'utilisation de ma classe Nrf24l01p.h.

Il est envisageable d'imaginer un robot d'exploration de décombres hors de portée radio directe avec le poste de pilotage (à cause des bardages métalliques des bâtiments par exemple), mais étant à portée radio de plusieurs relais qui se chargent seulement de transmettre (relayer) les informations aux téléopérateurs.

Toutes ces propriétés multidirectionnelles (multiceivers) sont à définir non pas dans la radiocommande, mais uniquement à la conception des programmes à bord de vos modèles, robots, et autres systèmes embarqués (libre à chacun de créer une logique en rapport avec le type de système piloté).

À noter que les paragraphes qui relatent de l'utilisation de ma radiocommande sur mon site font état d'une utilisation avec un seul modèle, car c'est mon application principale (l'aéromodélisme). Néanmoins tout ce qui est expliqué (utilisation des menus, fonctionnalités, etc...) fonctionne avec plusieurs modèles (suivant la logique que vous avez programmé dans leurs microcontrôleurs respectifs bien entendu).

Dans les caractéristiques de la radiocommande j'ai donc rajouté:

  • Communication multidirectionnelle vers (sol/air air/sol) et entre (air/air) plusieurs modèles.
  • Communication vers périphériques relais pour applications longues distances basse puissance.

:wink:

Bonjour Sylvain
je vais lire ça avec intérêt 8)

J'ai monté hier la dernière version de mes automates programmables 32 entrées/sorties et courant max de 8A qui iront à bord du quadri et de la radiocommande si vous voulez voir:

La régulation de tension est linéaire et est basée sur un simple LM7805 assisté par un transistor Darlington BD646 (schéma inspiré de celui-ci: http://deltajp.pagesperso-orange.fr/montages/renfor78.html)

Description et plus de photos ici: http://www.sylvainmahe.site/projectModulableM32.html

J'ai monté également une version améliorée de mon buzzer:

Voir description complète et plan de la carte: sylvainmahe.site

super photos !

curieux sur les pins qui dépassent vers le haut - je suppose que c'est pour votre version de test et que dans l'embarqué vous souderez directement sur une carte et donc avec les pins en dessous ?

Bonjour, merci pour les encouragements :wink:

Il y a également ces photos:

Étant passionné de nature j'ai décidé maintenant de faire pousser mes cartes dans mon jardin (lol).

Pour les connecteurs au dessus de la carte, non c'est décidé comme ça depuis les premières versions, voir ce que ça donne une fois sur mon hélico:

(photo d'il y a 2 ans avec récepteur de modélisme du commerce, un futaba dont j'avais enlevé le boîtier)

Contrairement à Arduino, je n'aime pas les embrochages de cartes les unes sur les autres. Ici mes connecteurs permettent de brancher directement les périphériques, cela comprend des servo-moteurs standards par exemple.

Il y a 32 entrées/sorties (partie commande), avec 32 +5V et 32 GND (partie puissance). Voir description complète ici: http://www.sylvainmahe.site/projectModulableM32.html

OK - faudra me donner l'adresse de votre fleuriste, j'ai quelques composants à faire pousser :slight_smile:

vous n'avez pas peur qu'avec les vibrations les câbles se débranchent ? (je suppose qu'il n'y a pas besoin de haute fréquence non plus)

:wink:

Pour les câbles qui se débranchent non, ça peut vibrer comme une patate rien ne se débranchera, ce sont des câbles modélisme de mode marque (graupner, a2pro, futaba, ou hitec).

Sachant qu'en plus sur un quadri il n'y a quasiment pas de vibrations, les accéléromètres aimeraient pas de tout façon... :wink:
Pour dire, sur le mien je ne filtre pas les valeurs brutes du MPU6050, et le quadri vole de façon bien lisse.

ok - oui avec un bon câble (ou une bonne soudure) c'est jouable sans doute et le câble a l'avantage d'être modulaire

Oui, surtout que c'est comme ça que je fait en modélisme sur tous mes modèles (et que font les autres aussi), thermiques ou électriques peut importe. On relie tout par câble avec le signal, le +5V et la masse.

Mon projet de compteur Geiger est câblé comme ça également:

En fait ça permet de distribuer facilement le +5V et la masse.

C'est très pratique aussi pour le SPI, les 3 fils du câble deviennent alors MOSI/MISO/SCK, et un autre câble est SS/+5V/GND.

J'ai acheté récemment une alim stabilisée ALR3003 ELC pour finaliser mes différents tests (n'en possédant aucune), mais sans même l'avoir branchée je l'ai démontée pour voir l'intérieur car je me doutais du coté "low cost" du montage en usine (comme beaucoup d'appareils en dessous d'un certain prix).

J'ai donc refait au moins la moitié du câblage car je le trouvais moyen, j'ai également mis la carcasse à la terre avec un autre câble d'alim par sécurité.

J'ai viré l’autocollant en façade, je trouvais dommage que ce ne soit pas une vraie sérigraphie, j'ai plongé la tôle dans de l'acétone pour dissoudre toute la colle, puis j'ai poncé et brossé le tout.

J'ai changé les connecteurs banane en façade qui étaient soudés à l'arrache, mis 2 vrais "Y" entre les connecteurs banane et les 2 cartes électroniques (une qui gère l'affichage, l'autre la régulation de 0V à 30V). L'interrupteur on/off est changé également, et les boutons de potentiomètres (2 gros pour la tension et l'intensité, 1 petit pour affiner la tension).

Toute la visserie/rondelle/écrous est aussi changée, car toutes les vis quasiment étaient cruciforme et abîmées au niveau de la tête. J'ai donc mis de la vis M3 inox 6 pans creux pour fixer les cartes et les patins sous le boîtier, et 4 cruciformes à tôle + rondelles pour refermer le tout.

Je pense initialement que l'intérieur de cette alim aurait convenu à pas mal de monde, mais pas à moi.

Au final cette alim est vraiment très précise sur toute sa plage de tension (0V à 30V), et m'a permis de valider (même si j'en étais quasiment sûr) mes nouvelles cartes automates.

Donc j'espère finir ma radiocommande dans les semaines à venir et passer de la phase de tests, au montage définitif.

Bonjour, je donne des nouvelles du projet.

Je me suis aperçu que je n'arriverais pas à refermer le boîtier de la radio tout en faisant des passages de câbles qui ne se prennent pas dans les mécanismes des manches.

Donc j'ai décidé de fermer dans deux boites alu les mécanismes des deux manches, c'est par ailleurs plus propre comme ça. J'ai découpé, percé et plié une tôle alu 0.5mm d'épaisseur pour faire ces deux pièces:

Ensuite j'ai graissé toutes les parties mobiles des manches (roulements, paliers, têtes de ressort, butées) avec de la graisse silicone de bonne marque avant de refermer le tout. J'ai fait dépasser les vis de fixation des manches à travers le boîtier de la radio pour venir mettre derrière 3 écrous freins M3 + 3 rondelles par manche.

Cela m'a permis également de fixer correctement les câbles qui bougent au niveau des manches (ceux qui sortent maintenant au centre par le dessous), et de les envelopper dans une durite silicone fixée à l'aide d'un collier.

J'ai tout testé au niveau de l'interface (inters, potars, etc..), et de la tension (dropout du régulateur de tension notamment). J'attends maintenant de Hong Kong le PCB final pour l'automate programmable et l'affichage, ceux que j'utilise étant des versions en cours de développement. Ensuite je brancherais le tout et pourrait refermer le boîtier définitivement :wink:

Quelques photos de l'assemblage final du projet :wink:

Branchement des cartes, tests, et première charge de la batterie boîtier ouvert pour vérifier la température des éléments:

Fermeture du boîtier avec des vis M3:

Montage de l’antenne trèfle:

Test de programmation du microcontrôleur via la prise mini XLR:

Autres vues:

J'ai essayé au sol un montage type quadcopter avec un servo de branché à la place d'un esc, ça marche impeccable comme prévu.

Maintenant je dois contrôler différentes choses avant de mettre en l'air un modèle: nouveau test de portée radio boîtier fermé, vérifier l'intensité consommé à différentes plages de tensions d'entrée, et l'autonomie.

J'attends un dernier PCB pour remonter le quadcopter, mais je pense monter avant cela une planche en dépron qui vole avec 2 servos et 1 moteur pour faire des essais en extérieur dans un champ sans prendre de risques :wink:

Joli!

oui, joli boulot et bien fait. :slight_smile:

chapeau Monsieur

Bonjour,
Superbe réalisation et, en plus, très pro.

Bonjour, merci pour les encouragements :wink:

J'ai assemblé un autre automate programmable pour le mettre à bord d'un avion en dépron. Je préfères attendre de valider ça avant de refaire voler le quadri, même si tout est presque prêt.

Bravo et magnifique projet !

J'aime beaucoup le design Steampunk de ce que tu fabrique ( surtout le compteur ) mélange de métaux, avec du bois, et des afficheurs segment.

Bravo!

Pour ce qui est de la radio j'avais étudier pour un projet de créer sa radiocommande a partir d'un 2560 en utilisant OpenTX.
Faute de temps ça n'a pas abouti :confused: