07 – GTRC – Installer et configurer le logiciel d’un récepteur
Le récepteur est maintenant installé dans la locomotive. Il reste à lui indiquer comment cette locomotive est équipée.
Le programme GTRC a été organisé pour que cette étape demande le moins possible de modifications dans le code.
Le principe est simple tous les récepteurs utilisent le même programme.
Les différences entre les locomotives sont regroupées dans des fichiers de configuration.
Il n’est donc normalement pas nécessaire de modifier les fichiers qui assurent la communication radio, la commande du moteur ou les différentes fonctions de sécurité.
Pour ajouter une locomotive, l’essentiel du travail consiste à choisir puis adapter son fichier Config_LocoXX.h.
Télécharger le programme du récepteur
Le programme GTRC Receiver V1.0 est disponible dans le dépôt GitHub du projet. Après téléchargement, l’ensemble des fichiers doit être conservé dans le même dossier portant le nom GTRC_Receiver_V1_0.
L’ouverture du fichier : GTRC_Receiver_V1_0.ino dans Arduino IDE permet de charger le projet complet.
Arduino IDE affiche alors les différents fichiers du programme sous forme d’onglets.
L’installation d’Arduino IDE, des bibliothèques nécessaires, la compilation et le téléversement ont déjà été présentés dans les articles précédents. Ces opérations sont identiques pour le récepteur.
Organisation du programme
Comme pour la télécommande, le logiciel du récepteur est divisé en plusieurs fichiers. Cette organisation permet de séparer les différentes fonctions du programme. Il n’est pas nécessaire de comprendre leur contenu en détail pour construire et configurer un récepteur GTRC.
Voici simplement leur rôle.
GTRC_Receiver_V1_0.ino
C’est le programme principal. Il initialise le récepteur au démarrage puis coordonne les différentes parties du logiciel.
Il appelle notamment les fonctions chargées :
- du moteur ;
- de la radio ;
- de la batterie ;
- des commandes et sécurités.
Il n’y a normalement rien à modifier dans ce fichier.
Radio.cpp et Radio.h
Ces fichiers gèrent la communication avec le NRF24L01.
Ils assurent notamment :
- l’initialisation de la radio ;
- la réception des commandes ;
- l’envoi des réponses du mode diagnostic.
Leur contenu est commun à toutes les locomotives.
Motor.cpp et Motor.h
Ces fichiers assurent la commande du moteur.
Le même programme sait actuellement gérer deux types de drivers utilisés dans GTRC :
- L298N ;
- DRV8871.
Le choix du driver et des broches utilisées n’est pas réalisé en modifiant Motor.cpp, mais dans le fichier de configuration de la locomotive.
Battery.cpp et Battery.h
Ces fichiers assurent la mesure et la surveillance de la batterie.
Cette fonction peut être activée pour certaines locomotives et désactivée pour d’autres.
Rusty utilise par exemple la surveillance batterie alors que Tommy ne l’utilise actuellement pas.
Là encore, aucun changement de Battery.cpp n’est nécessaire.
Functions.cpp et Functions.h
Ces fichiers regroupent une grande partie du fonctionnement du récepteur.
Ils assurent notamment :
- le traitement des commandes de conduite ;
- l’arrêt d’urgence ;
- le mode MEM ;
- la gestion de l’éclairage ;
- le timeout de communication ;
- la surveillance périodique de la batterie ;
- le mode diagnostic.
C’est en quelque sorte le cœur fonctionnel du récepteur.
Il n’est normalement pas nécessaire de le modifier pour ajouter une locomotive.
Types.h
Ce fichier décrit les commandes et la structure des messages radio utilisés par GTRC.
Cette structure doit rester identique entre la télécommande et les récepteurs.
Il ne faut donc pas modifier ce fichier pour personnaliser une locomotive.
Config.h
Ce fichier contient les paramètres généraux du réseau GTRC et permet surtout de sélectionner la locomotive dont la configuration doit être utilisée.
C’est le premier fichier à ouvrir lors de la préparation d’un nouveau récepteur.
Config_Loco10.h à Config_Loco21.h
Ce sont les fichiers les plus importants pour la personnalisation.
Chaque fichier contient la configuration d’une locomotive.
Par exemple :
Config_Loco10.h → locomotive 10
Config_Loco11.h → locomotive 11
Config_Loco12.h → locomotive 12
...
Config_Loco21.h → locomotive 21
Dans la configuration actuelle :
LOCO 10 = Rusty
LOCO 12 = Tommy
C’est principalement dans ces fichiers que seront effectuées les modifications.
Un seul programme pour toutes les locomotives
Cette organisation constitue un principe important de GTRC. Il ne faut pas créer une copie différente de Motor.cpp, Radio.cpp ou Functions.cpp pour chaque locomotive. Le programme reste identique. Seule sa configuration change.
Le principe peut être représenté ainsi :
GTRC Receiver V1.0
│
▼
Config.h
│
sélection de la locomotive
│
┌─────────────────┼─────────────────┐
│ │ │
▼ ▼ ▼
Config_Loco10.h Config_Loco11.h Config_Loco12.h
Rusty Tommy
Cette méthode présente un avantage important : lorsqu’une amélioration est apportée au programme GTRC, elle peut profiter à toutes les locomotives sans devoir maintenir une version différente du logiciel pour chacune.
Le fichier Config.h
Sélectionner la locomotive à programmer
Le fichier Config.h contient la liste des fichiers de configuration disponibles.
On trouve par exemple :
//#include "Config_Loco10.h"
//#include "Config_Loco11.h"
#include "Config_Loco12.h"
//#include "Config_Loco13.h"
//#include "Config_Loco14.h"
Une seule ligne doit être active.
Dans cet exemple :
#include "Config_Loco12.h"
la locomotive sélectionnée est la loco 12, donc Tommy. Pour programmer Rusty, il suffit de commenter cette ligne et d’activer celle de la locomotive 10 :
#include "Config_Loco10.h"
//#include "Config_Loco12.h"
Il faut toujours vérifier qu’un seul fichier Config_LocoXX.h est sélectionné avant de compiler.
C’est cette simple opération qui permet d’utiliser le même dossier GTRC pour programmer les différents récepteurs.
Les paramètres communs dans Config.h
Config.h contient également quelques paramètres communs à tout le réseau GTRC.
Par exemple :
#define GTRC_RADIO_NETWORK_ID 200
#define RADIO_CHANNEL 100
#define RADIO_BITRATE NRFLite::BITRATE2MBPS
#define RADIO_ID 1
Ces paramètres doivent normalement rester identiques sur l’ensemble du réseau.
GTRC_RADIO_NETWORK_ID définit l’adresse radio physique commune utilisée par les récepteurs.
RADIO_CHANNEL définit le canal utilisé par les NRF24L01.
RADIO_BITRATE définit ici une communication à 2 Mbit/s.
Enfin :
#define RADIO_ID 1
correspond à l’identifiant radio de la télécommande utilisé notamment pour lui retourner les informations du mode diagnostic.
Pour une installation GTRC standard, ces valeurs n’ont donc pas besoin d’être modifiées lors de l’ajout d’une locomotive.
Le fichier Config_LocoXX.h
C’est dans ce fichier que se trouve réellement la personnalité du récepteur. Pour comprendre son fonctionnement, les configurations de Rusty et Tommy constituent deux bons exemples. Elles utilisent exactement le même programme GTRC mais avec un matériel très différent.
Rusty utilise :
Arduino Nano
NRF24L01 externe
L298N
Mesure batterie
Tommy utilise :
RF-Nano
NRF24L01 intégré
DRV8871
Pas de mesure batterie
Les différences sont entièrement décrites dans leurs fichiers de configuration.
L’identifiant de la locomotive
Le premier paramètre important est :
#define LOCO_ID 10
pour Rusty et :
#define LOCO_ID 12
pour Tommy.
Cet identifiant doit correspondre à celui attribué à la locomotive dans la télécommande. Il permet au récepteur de savoir si un message reçu lui est destiné.
Chaque locomotive doit donc posséder son propre LOCO_ID.
Avec la configuration actuelle de GTRC, les identifiants prévus vont de 10 à 21.
Il ne faut pas d’attribuer le même identifiant à deux locomotives.
Configurer les broches du NRF24L01
Les deux paramètres suivants définissent les broches CE et CSN :
#define PIN_RADIO_CE 9
#define PIN_RADIO_CSN 10
C’est la configuration de Rusty avec son Arduino Nano et son NRF24L01 externe.
Tommy utilise un RF-Nano dont le NRF24L01 est intégré :
#define PIN_RADIO_CE 7
#define PIN_RADIO_CSN 8
Ces valeurs doivent correspondre au câblage réel ou aux connexions internes de la carte utilisée.
C’est précisément l’intérêt du fichier de configuration : Radio.cpp reste identique dans les deux locomotives.
Le timeout radio
Le paramètre :
#define RADIO_TIMEOUT 500UL
définit le délai de sécurité utilisé en conduite normale en cas de disparition des commandes radio.
La valeur est exprimée en millisecondes.
Ici :
500 ms = 0,5 seconde
Cette temporisation constitue une sécurité importante.
Elle évite qu’une locomotive continue simplement à exécuter une ancienne commande normale si la communication avec la télécommande disparaît.
La valeur de 500 ms utilisée dans les configurations fournies constitue une bonne base et n’a normalement pas besoin d’être modifiée pour une première installation.
La durée maximale du mode MEM
Chaque locomotive possède également son propre timer MEM :
#define MEM_TIMEOUT 300000UL
La valeur est exprimée en millisecondes.
300000 ms = 300 secondes = 5 minutes
Lorsqu’une locomotive est placée en mode MEM, elle peut continuer à rouler pendant que la télécommande contrôle une autre locomotive.
Cette temporisation limite la durée maximale pendant laquelle elle peut rester dans cet état.
Le réglage est volontairement placé dans Config_LocoXX.h car il peut être adapté à chaque locomotive et à la manière de jouer sur le réseau.
Par exemple, une locomotive utilisée sur une petite boucle pourra recevoir un timer plus court qu’une machine circulant sur une grande ligne.
Pour régler une durée de 3 minutes :
#define MEM_TIMEOUT 180000UL
Pour 10 minutes :
#define MEM_TIMEOUT 600000UL
Il est préférable de conserver une durée raisonnable correspondant au temps de parcours réel de la locomotive.
Les paramètres du mode diagnostic
Le retour de la tension batterie en mode diagnostic utilise deux paramètres :
#define DIAG_RESPONSE_DELAY_MS 20
#define DIAG_RESPONSE_REPEAT_COUNT 10
Le premier introduit un court délai avant la réponse du récepteur.Cela laisse le temps à la télécommande, qui vient d’envoyer sa demande, de revenir en réception.
Le second indique combien de fois la réponse doit être répétée.
GTRC utilise une communication sans accusé de réception pour ce fonctionnement. La répétition augmente donc les chances que la réponse soit correctement reçue sans compliquer le protocole radio.
Ces paramètres ont été placés dans Config_LocoXX.h afin de pouvoir être ajustés individuellement si nécessaire.
Les valeurs fournies :
20 ms
10 répétitions
peuvent être conservées pour une installation standard.
Choisir le driver moteur
La configuration du moteur commence par le choix du driver.
Pour Rusty :
#define MOTOR_DRIVER_L298N
Pour Tommy :
#define MOTOR_DRIVER_DRV8871
Il ne faut activer que le type correspondant au matériel réellement installé. Le programme Motor.cpp utilise ensuite automatiquement la bonne méthode pour commander le moteur. C’est ce qui permet d’utiliser le même logiciel avec les deux montages présentés dans l’article précédent.
Configurer les broches du moteur
Avec le L298N de Rusty :
#define PIN_MOTOR_IN1 4
#define PIN_MOTOR_IN2 3
#define PIN_MOTOR_ENA 5
Cela correspond au câblage présenté dans l’article de construction :
IN1 → D4
IN2 → D3
ENA → D5
Pour le DRV8871 de Tommy :
#define PIN_MOTOR_IN1 5
#define PIN_MOTOR_IN2 3
soit :
IN1 → D5
IN2 → D3
Le DRV8871 n’utilise pas de sortie ENA séparée.
Le fichier de configuration contient néanmoins une définition PIN_MOTOR_ENA afin de conserver une organisation commune aux différents drivers. Elle n’est simplement pas utilisée lorsque MOTOR_DRIVER_DRV8871 est sélectionné.
Inverser le sens du moteur sans refaire le câblage
Une locomotive peut avancer dans le mauvais sens lors des premiers essais.
Il serait possible d’inverser physiquement les fils du moteur, mais GTRC prévoit une solution beaucoup plus simple :
#define MOTOR_REVERSED false
Si le sens est correct, conserver :
false
Si la locomotive roule en marche arrière lorsque la télécommande demande la marche avant, remplacer par :
#define MOTOR_REVERSED true
Il n’est alors pas nécessaire de modifier le câblage du moteur ni le programme.
Ce paramètre est particulièrement pratique lorsqu’un même montage est installé dans des locomotives dont les moteurs ne sont pas orientés de la même manière.
La valeur MOTOR_PWM_MIN
Le paramètre :
#define MOTOR_PWM_MIN 60
définit la valeur PWM minimale utilisée pour le moteur. Un moteur de locomotive ne commence pas forcément à tourner dès les toutes premières valeurs PWM. Une tension trop faible peut simplement produire un bourdonnement sans parvenir à lancer le moteur.
MOTOR_PWM_MIN permet donc d’adapter la commande aux caractéristiques de la locomotive.
La valeur 60 constitue le réglage actuellement utilisé pour Rusty et Tommy.
Si une autre locomotive nécessite davantage de puissance pour commencer à rouler, cette valeur pourra être ajustée après essais. Il faut cependant éviter de choisir une valeur inutilement élevée, qui provoquerait un démarrage trop brutal à faible vitesse.
Configurer l’éclairage
L’éclairage mérite un peu plus d’attention car GTRC prévoit plusieurs façons de le commander. Le choix dépend du matériel réellement installé dans la locomotive.
Trois modes sont actuellement prévus dans le fichier Config_LocoXX.h :
#define LIGHT_MODE_NONE
//#define LIGHT_MODE_L298N
//#define LIGHT_MODE_LED
Une seule de ces trois lignes doit être active.
Le principe est similaire au choix du driver moteur : le programme principal reste identique, seul le fichier de configuration indique quelle méthode doit être utilisée.
LIGHT_MODE_NONE – Aucun éclairage commandé
Le choix le plus simple est :
#define LIGHT_MODE_NONE
Il indique que le récepteur ne commande aucun éclairage. C’est actuellement le cas de Rusty et Tommy dans leurs configurations GTRC V1.0.
Dans ce mode, les paramètres concernant les broches d’éclairage peuvent rester présents dans le fichier, mais ils ne sont pas utilisés par le programme.
Par exemple :
#define PIN_LIGHT_IN3 6
#define PIN_LIGHT_IN4 7
#define PIN_LIGHT_LED 6
ne provoquent aucune action tant que :
#define LIGHT_MODE_NONE
est sélectionné.
Éclairage avec le deuxième pont du L298N
Le L298N possède deux ponts en H.
Lorsque le premier est utilisé pour commander le moteur, le second peut être utilisé pour alimenter une ampoule de locomotive.
Dans ce cas, il faut sélectionner :
#define LIGHT_MODE_L298N
et désactiver les deux autres choix :
//#define LIGHT_MODE_NONE
#define LIGHT_MODE_L298N
//#define LIGHT_MODE_LED
GTRC utilise alors deux sorties de l’Arduino :
#define PIN_LIGHT_IN3 6
#define PIN_LIGHT_IN4 7
Le câblage de commande devient :
| L298N | Arduino |
|---|---|
| IN3 | D6 |
| IN4 | D7 |
| GND | GND |
L’ampoule, elle, n’est pas raccordée directement à l’Arduino. Elle est raccordée aux sorties du deuxième pont du L298N, généralement repérées :
OUT3
OUT4
Le principe est donc :
Arduino D6 ─────► IN3
Arduino D7 ─────► IN4
L298N
┌─────────┐
Batterie ───────►│ │
│ Pont B │──── OUT3 ───┐
│ │ │
│ │──── OUT4 ───┤ Ampoule
└─────────┘ │
┘
Le deuxième pont doit évidemment être activé. Sur les modules L298N courants, cela revient généralement à conserver le cavalier ENB en place afin que ce canal soit continuellement autorisé. GTRC ne commande pas ENB par une sortie Arduino.
Il commande uniquement :
IN3
IN4
Lorsque l’éclairage est demandé, le programme applique :
IN3 = HIGH
IN4 = LOW
Lorsqu’il doit être éteint :
IN3 = LOW
IN4 = LOW
L’intérêt de cette solution est que l’Arduino ne fournit pas le courant de l’ampoule. C’est le L298N qui assure la partie puissance.
Cette configuration convient donc notamment à une locomotive équipée d’une ampoule dont la tension et la consommation ne permettraient pas une connexion directe à une sortie Arduino.
Attention à la tension de l’ampoule
Dans ce montage, l’ampoule est alimentée depuis le circuit de puissance du L298N.
Il faut donc vérifier qu’elle est compatible avec la tension utilisée dans la locomotive.
Une ancienne locomotive prévue pour fonctionner sur une alimentation de voie relativement élevée pourra disposer d’une ampoule adaptée, tandis qu’une petite ampoule basse tension nécessitera une alimentation différente ou une adaptation.
Éclairage avec une LED directement sur l’Arduino
La seconde possibilité est destinée à un éclairage de faible puissance utilisant une LED.
Il faut sélectionner :
#define LIGHT_MODE_LED
et désactiver les deux autres modes :
//#define LIGHT_MODE_NONE
//#define LIGHT_MODE_L298N
#define LIGHT_MODE_LED
La broche utilisée est définie par :
#define PIN_LIGHT_LED 6
Dans cet exemple, la LED est donc commandée par D6.
Le principe de câblage est très différent du cas précédent :
Arduino D6
│
│
Résistance
│
▼
LED
│
GND
La LED est ici commandée directement par une sortie numérique de l’Arduino.
Lorsque l’éclairage est demandé, la sortie passe à l’état HIGH.
Pour l’éteindre, elle repasse à LOW.
La résistance de limitation est indispensable
Une LED ne doit jamais être raccordée directement entre une sortie Arduino et la masse sans résistance. Une résistance doit être placée en série pour limiter le courant.
La valeur à utiliser dépend :
- de la tension de la sortie Arduino ;
- de la tension directe de la LED ;
- du courant souhaité.
Pour un éclairage de locomotive utilisant une ou quelques LED de faible puissance, cette solution est très simple.
En revanche, une sortie Arduino ne doit pas être utilisée pour alimenter directement une lampe ou un ensemble de LED consommant un courant important.
Dans ce cas, il faut ajouter un étage de puissance adapté.
Quel mode d’éclairage choisir ?
Le choix peut être résumé simplement.
| Équipement de la locomotive | Configuration GTRC |
|---|---|
| Aucun éclairage commandé | LIGHT_MODE_NONE |
| Ampoule alimentée par le deuxième pont d’un L298N | LIGHT_MODE_L298N |
| LED de faible puissance commandée directement par l’Arduino | LIGHT_MODE_LED |
Il faut également vérifier les broches associées.
Avec le L298N
#define LIGHT_MODE_L298N
#define PIN_LIGHT_IN3 6
#define PIN_LIGHT_IN4 7
Le câblage est :
D6 → IN3
D7 → IN4
Ampoule → OUT3 / OUT4 du L298N
ENB → activé
Avec une LED
#define LIGHT_MODE_LED
#define PIN_LIGHT_LED 6
Le câblage est :
D6 → résistance → LED → GND
Sans éclairage
#define LIGHT_MODE_NONE
Aucune sortie n’est utilisée.
Attention aux conflits de broches
Lors de la préparation d’une nouvelle configuration, il faut vérifier qu’une même broche Arduino n’est pas utilisée simultanément pour deux fonctions différentes.
Par exemple, les valeurs proposées dans les fichiers de configuration contiennent :
#define PIN_LIGHT_IN3 6
#define PIN_LIGHT_IN4 7
#define PIN_LIGHT_LED 6
Cela ne constitue pas un conflit tant qu’un seul mode d’éclairage est sélectionné.
Si :
#define LIGHT_MODE_L298N
est actif, D6 et D7 sont utilisées comme IN3 et IN4.
Si :
#define LIGHT_MODE_LED
est actif, seule D6 est utilisée pour la LED.
Les paramètres inutiles restent simplement ignorés par le programme.
Il faut néanmoins vérifier l’ensemble du fichier lorsqu’un câblage différent de ceux proposés est utilisé, notamment avec un RF-Nano dont certaines broches sont déjà réservées à son NRF24L01 intégré.
Activer ou désactiver la mesure batterie
La surveillance de batterie est elle aussi configurable individuellement.
Rusty utilise :
#define BATTERY_MONITOR_ENABLED true
Tommy utilise :
#define BATTERY_MONITOR_ENABLED false
Avec :
true
GTRC effectue la mesure de batterie et peut utiliser cette information pour le diagnostic et la protection contre une tension trop faible.
Avec :
false
toute cette partie est désactivée.
Le même programme peut donc fonctionner sur une locomotive ne possédant aucun circuit de mesure batterie.
Configurer le pont diviseur de batterie
Lorsque la mesure batterie est activée, il faut indiquer la broche analogique utilisée et les valeurs des résistances du pont diviseur.
Pour Rusty :
#define PIN_BATTERY A2
#define BATTERY_R1 27000.0
#define BATTERY_R2 10000.0
Ces valeurs correspondent au montage présenté dans l’article précédent :
+ Batterie
│
27 kΩ
│
├────────► A2
│
10 kΩ
│
GND
Il est important que les valeurs inscrites dans le fichier correspondent réellement aux résistances installées dans la locomotive.
Le programme utilise ces valeurs pour convertir la tension mesurée sur A2 en tension réelle de la batterie.
Régler le seuil minimum de batterie
Rusty utilise :
#define BATTERY_MIN_VOLTAGE 13.2
Cette valeur correspond au seuil minimum choisi pour sa batterie. Lorsque la surveillance est active, GTRC peut arrêter le moteur lorsque la tension descend sous cette limite.
Le seuil doit être choisi en fonction :
- du nombre de cellules ;
- du type de batterie ;
- des caractéristiques des accumulateurs utilisés.
Il ne faut donc pas recopier automatiquement la valeur de Rusty sur une locomotive utilisant une batterie différente.
Le fichier de configuration doit correspondre au matériel réellement installé.
Fréquence de contrôle de la batterie
La vérification périodique utilise également :
#define BATTERY_CHECK_INTERVAL 1000UL
La valeur est exprimée en millisecondes.
Ici, la batterie est contrôlée toutes les :
1000 ms = 1 seconde
Il n’est pas nécessaire de mesurer la batterie plusieurs centaines de fois par seconde.
Une vérification périodique permet de surveiller son évolution sans effectuer des mesures inutiles en permanence.
La valeur fournie peut normalement être conservée.
Tableau récapitulatif des paramètres d’un Config_LocoXX.h
Une fois le principe compris, la personnalisation d’une locomotive peut être résumée dans ce tableau.
| Paramètre | Fonction | À modifier ? |
|---|---|---|
LOCO_ID | Identifiant logique de la locomotive | Oui, pour chaque locomotive |
PIN_RADIO_CE | Broche CE du NRF24L01 | Selon Arduino / RF-Nano |
PIN_RADIO_CSN | Broche CSN du NRF24L01 | Selon Arduino / RF-Nano |
RADIO_TIMEOUT | Délai de sécurité en cas de perte radio | Généralement non |
MEM_TIMEOUT | Durée maximale du fonctionnement en MEM | À adapter à l’utilisation |
DIAG_RESPONSE_DELAY_MS | Délai avant réponse diagnostic | Généralement non |
DIAG_RESPONSE_REPEAT_COUNT | Nombre de répétitions de la réponse diagnostic | Généralement non |
MOTOR_DRIVER_L298N / MOTOR_DRIVER_DRV8871 | Type de driver moteur | Oui, selon le matériel |
MOTOR_REVERSED | Inversion logique du sens du moteur | À vérifier lors des essais |
PIN_MOTOR_IN1 | Première entrée du driver | Selon câblage |
PIN_MOTOR_IN2 | Deuxième entrée du driver | Selon câblage |
PIN_MOTOR_ENA | PWM du L298N | Si L298N utilisé |
MOTOR_PWM_MIN | Valeur minimale permettant de lancer le moteur | À régler par essais |
LIGHT_MODE_NONE | Aucun éclairage commandé | Selon locomotive |
LIGHT_MODE_L298N | Éclairage via le deuxième pont du L298N | Selon locomotive |
LIGHT_MODE_LED | LED directement commandée par l’Arduino | Selon locomotive |
PIN_LIGHT_IN3 | Commande IN3 du deuxième pont L298N | Si LIGHT_MODE_L298N |
PIN_LIGHT_IN4 | Commande IN4 du deuxième pont L298N | Si LIGHT_MODE_L298N |
PIN_LIGHT_LED | Sortie Arduino utilisée pour une LED | Si LIGHT_MODE_LED |
BATTERY_MONITOR_ENABLED | Active ou désactive la surveillance batterie | Selon installation |
PIN_BATTERY | Entrée analogique de mesure | Si mesure batterie active |
BATTERY_R1 | Résistance supérieure du pont diviseur | Selon montage réel |
BATTERY_R2 | Résistance inférieure du pont diviseur | Selon montage réel |
BATTERY_MIN_VOLTAGE | Seuil d’arrêt pour batterie faible | Selon la batterie |
BATTERY_CHECK_INTERVAL | Fréquence de contrôle de la batterie | Généralement non |
Pour préparer une nouvelle locomotive, les paramètres en gras dans la dernière colonne sont ceux qui méritent le plus d’attention.
Les autres peuvent généralement reprendre les valeurs fournies avec GTRC V1.0, sauf si le matériel utilisé impose une autre configuration.
Une configuration peut donc rester très simple
Malgré le nombre de paramètres disponibles, il n’est pas nécessaire de tous les modifier.
Pour une nouvelle locomotive, les choix essentiels sont généralement :
Quel numéro de locomotive ?
│
▼
Quel Arduino / quelle radio ?
│
▼
Quel driver moteur ?
│
▼
Quelles broches ?
│
▼
Le moteur tourne-t-il dans le bon sens ?
│
▼
Quel éclairage ?
│
▼
Mesure batterie : oui ou non ?
│
▼
Quelle durée pour le mode MEM ?
Une fois ces quelques choix effectués, le reste du programme GTRC reste inchangé.
Préparer la configuration d’une nouvelle locomotive
Pour ajouter une nouvelle locomotive, le plus simple est de partir d’un fichier Config_LocoXX.h existant correspondant au numéro choisi.
Les points à vérifier sont alors principalement :
LOCO_ID;- les broches CE et CSN du NRF24L01 ;
- le type de driver moteur ;
- les broches du driver ;
MOTOR_REVERSED;MOTOR_PWM_MIN;- le type d’éclairage ;
- l’activation de la mesure batterie ;
- les valeurs du pont diviseur si celui-ci est présent ;
- le seuil minimum de batterie ;
- la durée maximale du mode MEM.
Les paramètres radio et diagnostic peuvent dans un premier temps conserver les valeurs fournies.
Cette méthode évite d’avoir à intervenir dans les fichiers fonctionnels du programme.
Sélectionner le bon fichier avant le téléversement
Une fois le Config_LocoXX.h préparé, il reste une étape importante.
Il faut revenir dans :
Config.h
et sélectionner le fichier correspondant.
Pour Rusty :
#include "Config_Loco10.h"
Pour Tommy :
#include "Config_Loco12.h"
Une seule ligne doit être active. Le programme peut ensuite être compilé et téléversé dans le Nano ou le RF-Nano comme n’importe quel programme Arduino.
Avant chaque téléversement dans une nouvelle locomotive, il est donc utile de prendre l’habitude de vérifier :
quel Config_LocoXX.h est actuellement sélectionné ?
Cela évite par exemple de programmer accidentellement deux locomotives avec le même identifiant.
Les premiers essais
Après le téléversement, les premiers essais permettent surtout de valider la configuration.
Il faut vérifier :
- que la locomotive sélectionnée sur la télécommande répond bien ;
- que les autres locomotives ne réagissent pas ;
- que le sens avant/arrière est correct ;
- que le moteur démarre correctement à faible vitesse ;
- que l’arrêt fonctionne ;
- que l’ARU arrête la locomotive ;
- que la mesure batterie fonctionne si elle est activée ;
- que le mode diagnostic retourne bien la tension ;
- que le mode MEM fonctionne avec la durée prévue.
Si le sens est inversé, MOTOR_REVERSED permet de le corriger.
Si le moteur peine à démarrer à faible vitesse, MOTOR_PWM_MIN peut être ajusté.
Les adaptations restent ainsi concentrées dans le fichier de configuration.
Ce qu’il faut retenir
L’organisation du logiciel des récepteurs GTRC repose sur une idée simple :
le programme ne doit pas être réécrit pour chaque locomotive.
Les fichiers :
Radio
Motor
Battery
Functions
Types
forment le programme commun.
Config.h sélectionne la locomotive.
Enfin :
Config_LocoXX.h
décrit son matériel et ses réglages.
Pour la plupart des utilisateurs, la personnalisation d’un récepteur peut donc se limiter à ces fichiers de configuration.
Rusty et Tommy en donnent un bon exemple : leurs électroniques sont très différentes, mais elles fonctionnent avec exactement le même cœur logiciel.
Cette séparation permet également de faire évoluer GTRC plus facilement : une amélioration apportée au programme commun peut ensuite être utilisée par l’ensemble des locomotives sans devoir maintenir une version différente pour chacune.



