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 .