LOGICIEL DE TRAINING: ClearView RC

quand on debute en radio modelisme , particulierement avion et helicoptere , il est fortement conseillé de faire de l’ecolage en double commande et de s’entrainer sur logiciel de training. le meilleur et moins cher à ma connaissance est ClearView RC.

pour un cout tres modique : 40 $ mi 2024 , il propose de la simulation Helicopteres, avions et voitures.

une version gratuite est disponible pour une durée d’essais limitée .

lien de telechargment /achat: https://rcflightsim.com/

coté avions , c’est un panel de 53 modeles d’avions disponibles, et 17 lieux de vol mais on peux telecharger d’autres modeles d’avion , il existe un tas de fichiers disponibles en ligne .

la telecommande doit etre compatible USB et est parametrable via le menu de reglage/config.

la meteo et la visibilité sont parametrables , le temps de vol aussi (simulation de durée limite de batterie/carburant),

le realisme et les comportements avions tres convaincants , seul Bmol , un ecran plan ne donne pas le rendu 3D du vrai => difficulté d’apprécier les distances et altitudes .

attention la licence est adaptée au PC utilisé , je conseille d’installer le soft sur un PC portable pour la transportabilité mais de connecter un tres grand acran (gros televiseur LCD avec tres bonne définition) pour un plus grand plaisir d’utilisation ,

TELECOMMANDE FLYSKY FS-I6X

pour ceux qui débutent avec un petit budget , petite suggestion d’un émetteur low cost bien connu dans le milieu du radio modelisme : la FLYSKY FS-I6X

au moment de la publication de cette page (mai 2024) , on trouve cet émetteur radio pour 82 € sur amazone (avec un récepteur et le cable data USB) et pour 43 euros sur Aliexpress sans récepteur mais avec le cable DATA USB.

la radio est de base 6 canaux PWM/PPM et 10 canaux en mode I-BUS S-BUS et est compatible avec les simulateurs USB.

personnellement , j’ai fait le choix d’une version sans récepteur afin de pouvoir commander séparément des micro-recepteurs 4 Voies FS2H-4CH qui permettent l’integration dans des modeles RC ultra leger (indoor par exemple).

ces micro-recepteurs PWM 4 canaux , sont compatible des émetteurs FLYSKY FS-I6, FS-I6X, FS-I6S, FS-TM8, FS-TM10, FS-I10 et tous ceux compatible du protocole AFHDS 2A . avec une taille du circuit de 25mm par 12mm et un poids de 1gr sans l’antenne ils sont parfaitement adaptés a du petit modele RC.

on les trouve la aussi sur Aliexpress par lot de 4 pour moins de 27 € le lot soit environ 6,7 € piece; tarif imbattable …

l’émeteur , si acheté avec le cable DATA USB ci dessous peut etre mis a jour en ligne coté software mais peut aussi etre utilisé sur logiciel de training PC . voir par exemple ICI , le logiciel ClearView RC.

UNE RADIOCOMMANDE WIFI ESP32 – ESP8266

nous allons voir ici comment réaliser une télécommande WIFI basique à partir de 2 ESP32 Wroom AZ-Delivery., et une version plus light avec un ESP32 en emission et un ESP8266 en reception.

l’idée c’est d’utiliser le protocole wifi en liaison directe point a point entre un ESP32 émetteur et un ESP32 récepteur . la portée théorique de ce couple émetteur/récepteur est de l’ordre de 200m en espace libre avec des ESP32 simples . elle peut etre augmentée a priori a environ 300m avec des ESP muni d’antennes type ESP 32U ( connecteur antenne externe sur la carte au lieu de l’antenne intégrée).

PINOUT de l’ESP32

SCHEMA DE CABLAGE

coté emetteur, nous allons faire un dispositif similaire a une petite radio commande du commerce avec 2 joystick . voici le cablage :

les cables Vcc et GND des Joystick sont reliés respectivement au 3,3V et au GND de l’ESP32, et les broches VRX et VRY de chaque Joystick reliées aux broches 34 -35 et 36-39 de l’ESP32 .

le port USB de l’ESP32 est a brancher sur un port USB PC pour fournir le 5V , permettre le téléchargement du programme et de faire des test préliminaires via le moniteur série si nécessaire

coté récepteur , rien de particulier pour un montage proto , on se contente de relier l’ESP32 au PC via un port USB , ce qui va permettre le téléversement du programme, de fournir la masse et le 5V de l’USB PC et de permetre la visualisation des données reçues via le moniteur série .

LE MONTAGE PROTO

petite photo du montage proto réaliser pour les tests .

l’ESP 32 émétteur a ete monté sur une plaque de contreplaqué pour simuler l’ergonomie une manette type PS4 afin de rendre la manipulation des joystick plus facile.

les 2 ESP sont reliés au PC via un Hub USB . l’ESP émétteur est sur le port COM3 et le récepteur sur le port COM6.

LES PROGRAMMES DE TEST:

les programme émetteur et récepteur sont relativement similaires. ils sont basés sur les librairies WIFI et ESP_NOW . ils ont ete construits a partir des exemples ESP_NOW fournis dans l’IDE ARDUINO une fois l’environnement ESP32 installé et les bibliotheques adéquates installées. le principe est construit sur les bases d’une connexion directe “Peer to peer”.

on va lire la valeur des 4 potentiomètres des 2 joysticks coté émetteur , puis envoyer les valeurs entieres (int) “myData n” ( n de 1 a 4) dans un message de données , qui sera reçu coté récepteur puis coté récepteur on demandera l’impression dans le moniteur série .

RAPPEL: pour telecharger un programme ARDUINO via L’IDE dans un ESP 32 , apres la compilation , quand l’IDE cherche a se connecter a l’ESP32 , il faut appuyer sur la touche BOOT a droite du port USB de l’ESP . on peut relacher tout de suite , la procedure de televersement se fait ensuite toute seule.

Ne pas oublier de bien selectionner le type de carte ESP32 dans l’option OUTILS de l’IDE et de selectionner le PORT COM adéquat (celui sur lequel est rélié l’ESP sur lequel on televerse ). c’est une cause frequente de disfonctionnement surtout quand 2 ESP sont reliés en meme temps au PC sur un HUB USB.

#include <esp_now.h>
#include <WiFi.h>
// config Mac Adress du recepteur
uint8_t broadcastAddress[] = {0x2,40x6F, 0x28, 0xB4, 0x62, 0x7C};
// Structure d'envoi de données
typedef struct struct_message {int a;int b;int c;int d;} struct_message;
// creation de la structure du message => nom = myData
struct_message myData;
esp_now_peer_info_t peerInfo;
 
void setup() {
  pinMode(36, INPUT);
  pinMode(39, INPUT);
  pinMode(34, INPUT);
  pinMode(35, INPUT);
  Serial.begin(115200); 
  // ESP32 en station wifi
  WiFi.mode(WIFI_STA);
  // Init ESP-NOW
  esp_now_init();
  // enregistrement  peer
  memcpy(peerInfo.peer_addr, broadcastAddress, 6);
  peerInfo.channel = 0;  
  peerInfo.encrypt = false;  
  // ajout peer
  esp_now_add_peer(&peerInfo);     
}
 
void loop() {
  // Set values to send
  myData.c = analogRead(36);
  myData.d = analogRead(39);
  myData.a = analogRead(34);
  myData.b = analogRead(35);

  Serial.print("J1: ");
  Serial.print(myData.a);  
  Serial.print("-");
  Serial.print(myData.b);
  Serial.print(" J2: ");
  Serial.print(myData.c);
  Serial.print("-");
  Serial.println(myData.d);
  // Send message via ESP-NOW
  esp_err_t result = esp_now_send(broadcastAddress, (uint8_t *) &myData, sizeof(myData));
  delay(2000);
}
#include <esp_now.h>
#include <WiFi.h>
// Structure de reception données(doit correspondre a celle d'envoi)
typedef struct struct_message {int a;int b;int c;int d;} struct_message;
// creation de la structure du message => nom = myData
struct_message myData;
// function executée en reception de données
void OnDataRecv(const uint8_t * mac, const uint8_t *incomingData, int len) {
  memcpy(&myData, incomingData, sizeof(myData));
  Serial.print("J1: ");
  Serial.print(myData.a);
  Serial.print("-");
  Serial.print(myData.b);
  Serial.print("  J2: ");
  Serial.print(myData.c);
  Serial.print("-");
  Serial.println(myData.d);
  }
 void setup() {
  // Initialize Serial Monitor
  Serial.begin(115200);  
  // Set device as a Wi-Fi Station
  WiFi.mode(WIFI_STA);
  // Init ESP-NOW
  esp_now_init();  
  // enregistrement pour reception des données
  esp_now_register_recv_cb(OnDataRecv);
}
 
void loop() {
}

le résultat quand on ouvre le moniteur série coté récepteur et que l’on manipules les 2 joystick coté émetteur , les valeurs de position sont affichées et varient au gres des déplacements des 2 joysticks .

pour commander 4 servos , il suffit tout simplement de charger la librairie servo.h et , de connecteur 4 servo commande a 4 broches de l’ESP récepteur et d’utiliser ces valeurs reçues pour faire tourner des servo moteurs a l’angle désiré via une fonction map() qui va convertir la plage de valeurs potards( 0 – 4095) en plage angulaire PWM.

pour memo , ci dessous lien vers une page qui explique la commande d’un servo :

https://www.e-techno-tutos.com/2020/12/05/arduino-servo-libre/

un ESP 8266 comme Récepteur:

un ESP32 wroom , compte tenu de sa taille et du nombre de broche est un peu riche ou contraignant en terme de poids comme organe de réception , nous allons voir ici une version plus light avec un ESP8266 D1 mini qui offre malgré tout 11 GPIO ce qui permet déjà pas mal d’actionneurs .

ci dessous une photo comparative des 2 versions : l’un pese 10gr avec ses barettes de broches , l’autre 4 gr sans les broches.

ESP8266 D1 mini pinout

LE PROGRAMME:

le programme de réception est un quasi copy/paste de celui de l’ESP32 a 2 différences prés (en rouge dans le code pgme ci dessous) ;

  • les 2 bibliothèques “espnow.h” et “ESP8266WiFi.h” remplacent celles de l’ESP32, elles sont spécifiques a l’ESP8266
  • une petite modification de la synthaxe de la fonction OnDataRecv()

#include <espnow.h>
#include <ESP8266WiFi.h>
// Structure de reception données(doit correspondre a celle d'envoi)
typedef struct struct_message {int a;int b;int c;int d;} struct_message;
// creation de la structure du message => nom = myData
struct_message myData;
// function executée en reception de données
void OnDataRecv(uint8_t * mac, uint8_t *incomingData, uint8_t len) {
  memcpy(&myData, incomingData, sizeof(myData));
  Serial.print("J1: ");
  Serial.print(myData.a);
  Serial.print("-");
  Serial.print(myData.b);
  Serial.print("  J2: ");
  Serial.print(myData.c);
  Serial.print("-");
  Serial.println(myData.d);
  }
 void setup() {
  // Initialize Serial Monitor
  Serial.begin(115200);  
  // Set device as a Wi-Fi Station
  WiFi.mode(WIFI_STA);
  // Init ESP-NOW
  esp_now_init();  
  // enregistrement pour reception des données
  esp_now_register_recv_cb(OnDataRecv);
}
 
void loop() {
}

Si on ouvre le moniteur serie du recepteur , le resultat est identique avec le meme affichage des valeurs de potards J1 et J2 .

pour piloter des servo , meme chose qu’avec un ESP32 , il suffit de les connecter a des broches GPIO du D1 mini et de modifier le programme en consequence => librairie servo et declaration et instructions spécifiques a la gestion du ou des servos.

NOTA: de la meme façon il est possible de remplacer l’ESP32 emetteur par un ESP8266 classique mais il ne sera pas adapté car la gamme ESP8266 ne possède qu’une seule entrée analogique , ce qui est insuffisant pour par exemple 2 joystick qui nécessitent a minima 4 entrées analogiques . il serait envisageable d’utiliser un multiplexeur pour brancher plusieurs actionneurs analogiques , mais cela fait perdre l’interet d’un ESP8266 , ne serait ce qu’en terme de cout , autant prendre un ESP32 .

GENERALITES RC

petit topo général sur l’électronique de commande d’un modèle réduit , ici dans le cas d’un avion Radio Commandé.

pour faciliter la compréhension, ci dessous une photo jointe de l’ensemble de commande simplifié avec 1 seul servomoteur connecté pour éviter la multiplication inutile de fils et composants

  • le cœur du systeme est le récepteur radio (en haut au milieu) , ici 8 voies et 2,4Ghz. il reçoit via ondes radio les information de l’émetteur radio tenu par le télé pilote , le nombre de voies possibles correspond au nombre d’éléments pouvant être commandés a distance .dans le cas de l’avion carton : 1 voie pour le moteur (variation de la vitesse de rotation) et 2 voies pour chaque ailerons en mode élevons (mixage du rouli et du tangage)
  • l’alimentation electrique de l’ensemble se fait au moyen d’une batterie CC LiPo de 11v au travers de l’ESC (Electronic Speed Controler)qui alimente le moteur et le récepteur radio. le récepteur radio redistribue le courant aux autres voies
  • la manœuvre des élevons ou ailerons se fait via des servomoteurs (ou servocommande). ils sont connectés au récepteur radio via 3 fils : 1 pour la masse electrique, 1 pour la tension positive, et 1 pour le signal PWM (Pulse Width Modulation) , le servo moteur tourne d’une valeur angulaire proportionnelle au signal PWM reçu.
  • la puissance est transmise a l’helice au moyen d’un moteur Brushless, c’est tout simplement un moteur triphasé dont la variation de vitesse est obtenues par variation de fréquence de la tension sur chaque fil de phase.
  • l’ ESC (Electronic Speed Controler) qui alimente le moteur brushless est donc un variateur de fréquence triphasé, il transforme du 11V courant continu en courant triphasé sur les 3 cables du moteurs brushless . il intègre un circuit de variation de fréquence commandé par des impulsions PWM reçues du récepteur radio.

un moteur brushless est caracterisé par son KV => nombre de tours/minute/Volt d’alimentation. ici sur la photo c’est un 1400 KV , il est alimenté en 11V , sa vitesse de rotation maxi possible est donc de 11 x 1400 = 15400 tr/mn.- principe de la commande en mode PWM : le canal PWM reçoit une série d’impulsions dont la durée et donc la fréquence est variable, les éléments connectés , traitent cette série d’impulsion un peu comme un code binaire et font varier des vitesses ou des angles proportionnellement a la fréquence des impulsions PWM reçues .

pour plus d’info sur le PWM, voir ici: https://fr.wikipedia.org/wiki/PWM

les batteries LiPo utilisées en modelisme sont des batteries 2S/3S:…./xS . le nombre devant le S quantifie le nombre de section de cellules Lipo. chaque cellule Lipo a une tension de 3,7 Volts . ici sur la photo c’est une batterie 3S soit une tension disponible de 3×3,7V = 11,1 V . une batterie 2S délivre donc 7,4 volts , une 6S délivre 22,2 V. la deuxieme caracteristique d’une batterie est le nbre de mA délivrable , ici c’est une 650mA.

MOTEUR BRUSHLESS

tres largement utilisé en Radio Modelisme, le Moteur Brushless ; “Moteur sans balais” en francais, est un moteur synchrone a aimants permanents.

il fonctionne a la base a partir de courant continu au travers d’un ESC (Electronic Speed Controler) qui va transformer une tension de courant continu en une tension triphasée de courant alternatif , cette tension va etre envoyée au moteur (qui a donc 3 fils d’entrées pour les 3 phases) et qui va tourner a une vitesse proportionnelle a la fréquence du courant triphasé reçu.

comme avec tout moteur triphasé , on peut changer le sens de rotation du moteur en intervertissant 2 fils de phase (au hasard) par rapport aux connecteurs d’alimentation de l’ESC.

il en existe différentes tailles et différents type avec différentes caractéristiques.

les caracteristiques importnates pour le choix d’un brushless:

la Vitesse de rotation: N

la vitesse de rotation est en general donnée en tours par minutes (Tr/mn) elle se calcule a partir du KV du moteur => point suivant

le KV

il s’agit d’une grandeur sans unité qui caractérise la vitesse de rotation par volt de courant envoyé a l’ESC. par exemple , un moteur dont le KV est de 1400 => 1400 tr/mn/volt, qui est alimenté par une batterie Lipo de 11,1 Volts au travers de l’ESC va avoir une vitesse de rotation N maxi de:

N=11,1 x 1400 = 15540 tr/mn

la Tension U :

c’est la plage de tension mini-maxi admissibles par le moteur . l’unité de mesure et le Volt(V)

l’Intensité : I

c’est la plage d’ampérage mini et maxi admissible par le moteur , on fourni en général surtout le max admissible. l’unité est l’ampere(A)

la puissance : P

c’est une résultante des 2 caractéristiques précédente , elle se calcule avec la formule suivante :

P = U x I

avec U en Volts et I en Ampères, la puissance résultante s’exprime en Watts (W)

exemple de calcul:

un moteur tournant sous 11,1 Volts avec un intensité admissible de 20 Ampères fournira donc une puissance P :

P=11,1 x 20 = 222 Watts.

le couple: C

il est la résultante de la puissance et de la vitesse de rotation , il se calcule à partir d’une autre formule donnant la puissance d’un moteur:

P = C x Omega

ou C est le couple en metre-Newton (mN) et Omega la vitesse de rotation en Radians par seconde (Rd/s)

on obtient donc le couple en inversant la formule soit

C = P / Omega

Omega se calcule en convertissant la vitesse de rotation en Tour par minute en radians par seconde via la formule:

Omega = (3,14/60) x N

exemple:

nous avons vu dans les exemples précédents que le moteur de 1400 KV alimenté sous 11,1V , tournait a 15540 tr/mn et développais 222 Watts soit un couple résultant :

C = 222 /[(3,14/60)x 15540] = 0,27 Nm