Cette centrale utilise un ARDUINO MEGA 2560 qui dispose d'une mémoire Flash de 256K et qui offre 54 entrées/sorties numériques et 16 entrées analogiques, ce qui est suffisant pour un réseau de taille moyenne.
La centrale réalisée offre 6 modes de fonctionnement:
- mode manuel sans ordinateur avec commande d'une loco par un boitier régulateur connecté par un cable à la centrale. Le boitier commande également les accessoires en utilisant l'adresse 1.
- mode manuel sans ordinateur avec commande d'une loco par radio avec un E/R à 41 MHz Le récepteur radio à 41 MHz est connecté à un ARDUINO UNO qui traite les 2 canaux et envoie les signaux à l'ARDUINO MEGA .
- mode manuel sans ordinateur avec commande vocale d'une loco Il est possible de commander une loco par la voix en utilisant un module de reconnaissance vocale EasyVR et un micro HF. Le module EasyVR assure aussi la sonorisation du réseau (annonces en gare, sonnerie du passage à nivau, etc...)
La portée dépend du micro HF utilisé et peut dépasser 50 mètres..
- mode automatique sans ordinateur. Dans ce mode de fonctionnement, les détecteurs de passage sont connectés à l'ARDUINO qui permet de gérer jusqu'à 4 locos en automatique et une autre en manuel avec la commande radio.
- mode manuel avec ordinateur. L'intérêt de ce mode est de pouvoir utiliser le logiciel JMRI et la commande par smartphone ou tablette que j'utilisais déjà avec le SPROG.
- mode automatique avec ordinateur. Dans ce mode, c'est le programme Excel et Visual Basic de l'ordinateur qui gére les trajets et l'ARDUINO se contente de générer le signal DCC et d'envoyer au PC les signaux de rétrosignalisation. Il est possible d'avoir 4 locos en fonctionnement simultané.
Actuellement, j'ai testé ces 6 modes de fonctionnement et tout semble marcher.
L'ARDUINO est vraiment intéressant, vu son prix
2 Schéma de la centrale
La centrale DCC est constituée des éléments suivants:
- un boîtier de commande (régulateur)
- une unité centrale
- une radiocommande
- un booster réalisé avec un module LMD18200 .
Le schéma de la centrale est donné sur la figure ci-dessous.
3 Régulateur
3.1 Régulateur manuel
Le boitier de commande (appelé généralement régulateur) est relié par un cable en nappe à l'ARDUINO. Ses fonctions sont les suivantes: :
- choix de l'adresse
- choix du mode de pilotage du réseau
- commande de la vitesse et du sens de marche
- commande des fonctions des décodeurs de locomotives (F0 à F4)
- commande des accessoires
Le régulateur actuellement réalisé est constitué des composants suivants:
- un potentiomètre pour le choix de l'adresse (entre 1 et 9).connecté à une entrée analogique de l'ARDUINO MEGA
- un potentiomètre pour la commande de la vitesse et du sens de marche connecté à une entrée analogique de l'ARDUINO MEGA
- un module rotacteur DFRobot SEN0156 à 12 positions pour le choix du mode de fonctionnement. La sortie analogique, proportionnelle à la position choisie, est.connectée à une entrée analogique de l'ARDUINO MEGA
- un clavier à 5 touches de DFRobot (commande des fonctions F0 à F4) relié à une entrée analogique de l'ARDUINO MEGA
Vous pouvez voir ci-dessous une photo du régulateur réalisé.
3.2 Régulateur sans fil
Actuellement, j'utilise une radiocommande deux canaux à 41 MHz que je possédais déjà. Ce système marche bien mais est très limité en fonctionnalités (vitesse, sens de marche, 2 fonctions). Il faudra trouver autre chose dans le futur
Vous pouvez voir ci-dessous une photo de l'émetteur
4 Unité centrale
L'unité centrale installée dans un vieux boîtier de magnétoscope, est constituée des composants suivants:
- un module ARDUINO MEGA 2560
- un afficheur 4 lignes de 20 caractères
- un récepteur de radiocommande
- un module de reconnaissance vocale EasyVR connecté à un ARDUINO UNO
- un booster
4.1 Module ARDUINO MEGA 2560
Le module ARDUINO MEGA réalise les actions suivantes:
- génération des trames DCC
- gestion de l'interface avec le régulateur
- gestion de l'interface avec le PC (en USB)
- gestion de l'interface avec les modules de rétrosignalisation
- commande des accessoires
- gestion de l'interface avec l'afficheur
- gestion de l'interface avec l'ARDUINO UNO pour la radiocommande
- gestion de l'interface avec le deuxième ARDUINO UNO pour la reconnaissance vocale
L'affectation des ports est la suivante:
Voici une photo de l'ARDUINO MEGA dans l'unité centrale.
Et voici une photo de la station de commande.
4.2 Afficheur
L'afficheur est un module SainSmart à LED rétroéclairé de 4 lignes de 20 caractères acheté
ici.
Il est connecté sur les broches SDA et SCL de l'ARDUINO MEGA.
Vous pouvez télécharger la librairie pour ce module en cliquant ici.
Voici une photo de l'afficheur installé sur la face avant de l'unité centrale.
Les instructions à placer en début du programme ARDUINO sont les suivantes:
#include
//Addr: 0x3F, 20 chars & 4 lines
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
Dans void setup(), placer les instructions:
lcd.begin(20,4);
lcd.backlight(); // allume l'éclairage
Les instructions pour écrire sur l'écran sont:
lcd.setCursor(9, 0); // place le curseur au caractère 9 de la ligne 0
lcd.print("manuel"); // écrit sur l'écran "manuel" à partir du caractère 10
4.3 Récepteur de radiocommande à 41 MHz
Le canal 2 commande la vitesse et le sens de marche et le canal 1 commande les fonctions F1 (mise en marche de la sonorisation) et F2 (activation du sifflet ou du klaxon).
Le récepteur est connecté à un module ARDUINO UNO qui décode les signaux des deux canaux et transmet les informations de vitesse, sens de marche et fonctions au module ARDUINO MEGA qui génère le signal DCC. La liaison entre les deux ARDUINO utilise l'interface série (broche TX sur l'UNO et RX sur le MEGA.
Vous pouvez télécharger le programme de l'ARDUINO UNO intitulé " radio_commande_v2" en cliquant ici.
La photo ci-dessous montre le récepteur radio et l'ARDUINO UNO dans l'unité centrale.
4.4 Booster DCC
Le booster est un cirtcuit LMD18200
L'entrée GND est reliée à la masse de l'ARDUINO MEGA
L'entrée PWM est reliée au +5V
L'entrée DIR est reliée à la sortie DCC de l'ARDUINO ( pin 13)
L'entrée BRAKE est reliée à la masse.
Le signal DCC amplifié est disponible sur les sorties OUT1 et OUT2
L'amplitude du signal DCC dépend de la tension d'alimentation continue appliqué sur l'entrée V+ du module. Avec une alim de 16 Volts, on obtient un signal DCC de 16 Volts efficaces environ. qui est suffisant pour faire fonctionner un réseau DCC. .
5 Alimentation
J'utilise une alimentation secteur qui délivre une tension de 15 Volts continu et qui est connectée à l'ARDUINO et au booster. Un régulateur 7806 fournit également une tension de 6 volts pour les servos. Le courant consommé à vide sans loco est de 170 mA sans servo et de 250 mA avec un servo en marche.
6 Description du mode manuel sans ordinateur avec commande par régulateur
Ce mode permet de piloter une loco en manuel avec le régulateur
La loco doit avoir une adresse comprise entre 3 et 9.
L'adresse 1 est affectée à la commande des accessoires avec l'allocation suivante des touches de fonction:
- touche F0: commande du servo qui actionne les barrières du passage à niveau
- touche F1: commande de l'aiguille N° 1
- touche F2: commande de l'aiguille N° 2
- touche F3: commande de l'aiguille N° 3
- touche F4: commande de l'aiguille N° 4
Si l'ARDUINO MEGA est connecté à l'ordinateur, ce mode permet aussi d'enregistrer le trajet dans un tableau EXCEL. Ce tableau pourra ensuite être transféré dans le programme de l'ARDUINO pour être exécuté en mode automatique.
7 Description du mode manuel sans ordinateur avec commande d'une loco par radio.
L'adresse est sélectionnée par le potentiomètre du régulateur manuel.
La radiocommande à 41 MHz permet les commandes suivantes:
- le canal 2 commande la vitesse et le sens de marche
- le canal 1 commande les fonctions F1 (mise en marche de la sonorisation) et F2 (activation du sifflet ou du klaxon).
8 Description du mode automatique sans ordinateur
Dans ce mode de fonctionnement, les détecteurs de passage sont connectés à l'ARDUINO qui permet de gérer une ou deux locos en automatique et une autre en manuel avec la commande radio.
En mode automatique, l'ARDUINO commande l'exécution d'un trajet constitué par une suite de lignes de commandes qui sont exécutées séquentiellement.
Une ligne de commande est constituée par les paramètres suivants:
- le numéro de la ligne de commande
- l'adresse de la loco
- le sens de marche
- la vitesse
- les fonctions à exécuter (F0 à F8)
- les accessoires à commander (aiguillages, feux de signalisation, ...)
- la durée de la ligne de commande entre 1 et 99 secondes.
La ligne de commande sera exécutée pendant la durée indiquée puis le programme exécutera la ligne de commande suivante jusqu'à la fin du programme.
La ligne de commande peut aussi se terminer par la réception d'un signal venant d'un détecteur de passage. Lorsque le signal est reçu, le programme passe à la ligne de commande suivante.
Par exemple, la détection de passage à l'entrée en gare provoque l'arrêt du train (vitesse 0).
Les durées de valeur supérieures à 100 sont utilisées pour la rétrosignalisation suivant la règle suivante: durée = 100 + N° du détecteur de passage (ou du canton).
Par exemple, une ligne de commande de durée 102 signifie que la ligne de commande sera exécutée jusqu'à ce que la loco passe devant le détecteur N°2. Lorsque le détecteur 2 est activé, le programme exécute la ligne de commande suivante.
Pour les adresses supérieures à 1, l'affectation des fonctions est la suivante:
- F0: commande de l'allumage des phares
- F1: mise en marche de la sonorisation
- F2: commande du sifflet ou klaxon
- F3: mise en marche du fumigène
- F4: commande du dételeur automatique
La commande des accessoires est effectuée par l'adresse 1 avec l'allocation suivante:
- F8: commande du servomoteur qui actionne les barrière du passage à niveau
- F4: commande de l'aiguille N° 1
- F5: commande de l'aiguille N° 2
- F6: commande de l'aiguille N° 3
9 Description du mode de commande du réseau avec ordinateur
Dans ce mode de fonctionnement, l'ARDUINO est utilisé pour générer les trames DCC et gérer la rétrosignalisation. C'est le logiciel installé sur le PC qui génère les commandes. La liaison entre le PC et l'ARDUINO s'effectue par le cable USB L'ARDUINO utilise la communication série (Software Serial Library) pour communiquer avec le PC.
9.1 Mode manuel
9.1.1 Fonctionnalités
L'intérêt de ce mode est de pouvoir utiliser le logiciel JMRI DecoderPro. .
En effet, JMRI DecoderPro est un logiciel libre qui permet de modifier les CV des décodeurs DCC et de piloter une loco avec un régulateur affiché sur l'écran du PC ou encore en WiFi avec un smartphone ou une tablette avec l'application "Engine Driver".
DecoderPro est compatible avec la plupart des centrales du commerce et en particulier avec le SPROG.
J'ai décidé d'utiliser les commandes du module SPROG pour piloter mon ARDUINO.
Il faut noter que je n'utilise DecoderPro avec l'ARDUINO que pour piloter une loco et pas pour programmer les CV. Je continue à utiliser le SPROG pour la programmation des CV.
Ainsi, dans DecoderPro, il suffit de sélectionner le SPROG dans la liste des centrales et de choisir comme port COM celui de l'ARDUINO pour pouvoir piloter une loco avec l'ARDUINO..
9.1.2 Commandes envoyées par DecoderPro sur le port série (port COM virtuel de l'ARDUINO)
Les commandes sont les suivantes:
- Adresse: lettre A + espace + adresse en décimal +point
Exemple de commande envoyée pour l'adresse 8: "A 8."
- Vitesse et sens de marche
commande envoyée pour la marche avant: ">vitesse."
commande envoyée pour la marche arrière: "
Exemple vitesse 8 et marche avant: ">8."
- Commande des fonctions
C'est un peu plus compliqué
DecoderPro envoie la lettre O suivie de 3 octets codés en hexadécimal:
- l'octet d'adresse
- l'octet de commande des fonctions
- l'octet de controle
Par exemple pour tranmettre la fonction F1 à l'adresse 8, la séquence suivante est envoyée:
"O 08 81 89"
9.1.3 Réception et traitement des commandes par l'ARDUINO
L'ARDUINO reçoit les commandes envoyées par DecoderPro sur l'interface série et transmet le signal DCC sur la sortie 13.
L'ARDUINO traite les octets reçus en ASCII . Par exemple, la valeur de l'octet reçu correspondant à l'envoi du caractère A a pour valeur 65. Pour les valeurs décimales, si la valeur envoyée est N (entre 0 et 9), la valeur de l'octet reçu par l'ARDUINO a pour valeur N + 48.
Pour la commande des accessoires, l'ARDUINO peut gérer jusqu'à 63 décodeurs d'accessoires .La règle utilisée est la suivante:
- les accessoires reliés directement à l'ARDUINO sont commandés par l'adresse 1 avec les numéros 1 à 4 avec l'allocation suivante: les numéros 1 à 3 commandent les aiguilles 1 à 3 et le servo est commandé par le numéro 4.
- les accessoires commandés par un décodeur d'accessoires DCC doivent utiliser des numéros supérieurs à 4.
9.1.4 Paramétrage de JMRI DecoderPro
Lancer DecoderPro et choisir le SPROG comme centrale et indiquer comme port COM celui de l'ARDUINO.
Pour utiliser le régulateur, cliquer sur Actions puis sur NewThrottle.
Après avoir indiqué l'adresse de la locomotive, vous pouvez la piloter et utiliser les fonctions F0 à F8.
Pour commander les accessoires, cliquer sur Actions puis sur Turnout Control et indiquer le numéro de l'accessoire à commander.
Pour utiliser la commande par smartphone, cliquer sur Actions puis sur Start WiThrottle Server.
Sur le smartphone, ouvrir l'application "Engine Driver".
9.1.5 Enregistrement d'un trajet
Il est possible d'enregistrer avec DecoderPro un trajet qui sera ensuite stocké sur l'ordinateur sous forme d'une feuille d'un classeur Excel. La procédure est décrite dans la rubrique logiciels.
Le trajet peut ensuite être exécuté en automatique par le logiciel CARTO-DCC installé sur l'ordinateur.
9.2 Mode automatique
Dans ce mode, c'est le programme CARTO-DCC installé sur le PC qui gère les trajets.
Les commandes envoyées par CARTO-DCC sur le port série vers l'ARDUINO sont constituées d'une suite d'octets.
Pour la commande des locos, les octets envoyés sont:
caractère "C" (octet de valeur 67)
adresse dizaines
adresse unités
caractère ">" si MAV ou "<" si MAR
vitesse dizaines
vitesse unités
fonctions du groupe 1 dizaines
fonctions du groupe 1 unités
fonctions du groupe 2 dizaines
fonctions du groupe 2 unités
Pour la commande des accessoires, les octets envoyés sont:
caractère "O"
octet d'adresse de l'accessoire en hexa
octet de commande de l'accessoire en hexa
octet de controle en hexa
Pour la rétrosignalisation, dans le sens ARDUINO vers PC, l'ARDUINO envoie au PC un nombre appelé retroc constitué de deux octets indiquant l'état des détecteurs d'occupation.
Ce nombre est calculé comme suit:
retroc = retro[1] + 2^ retro[2] +4^retro[3]+8^retro[4]
avec retro[i]=1 si le canton est occupé ou 0 si le canton est libre.
10. Description et téléchargement des logiciels
10.1 Logiciel pour l'ARDUINO MEGA
Ce logiciel gère les modes de fonctionnement décrits ci-dessus avec les restrictions suivantes
- mode manuel sans PC : commande d'une seule loco d'adresse comprise entre 3 et 99 avec les fonctions F0 à F4.
L'adresse 1 est réservée à la commande des accessoires (3 aiguilles et un servo)
- mode automatique sans PC: commande simultanée de deux locomotives en automatique et d'une loco en manuel avec les restrictions ci-dessus.Il est possible de céer jusqu'à 8 trajets différents.L'adresse 1 est réservée à la commande des accessoires (3 aiguilles et un servo)
- mode manuel avec PC : commande d'une seule loco d'adresse comprise entre 3 et 99 avec les fonctions F0 à F8 et commande des accessoires ( 4 accessoires connectés à l'ARDUINO et jusqu'à 200 accessoires reliés à des décodeurs d'accessoires DCC)
- mode automatique avec PC: commande simultanée de 4 locos et des accessoires avec le logiciel
CARTO-DCC décrit ci-après.
Vous pouvez télécharger ce logiciel intitulé ARDUINO_MEGA_DCC_V1 en cliquant ici.
10.2 Logiciels installés sur le PC
Ces logiciels sont constitués de classeurs EXCEL incluant des macros écrites avec le language VBA (Visual Basic for Applications). VBA est fourni avec Excel. Pour gérer l'accès au port COM virtuel de l'ARDUINO, les macros VBA utilisent le composant NETComm.
Il existe deux versions de ce composant: NetCommOCX pour Windows XP et NetcommW7 pour Windows Vista et 7.
J'ai développé deux logiciels pour la commande du réseau avec un ARDUINO:
- un logiciel intitulé ETA_DCC (Enregistrement d'un Trajet ARDUINO en DCC) qui permet d'enregistrer un trajet en mode manuel et aussi de créer le programme pour l'ARDUINO en mode automatique sans PC.En effet, la modification d'un programme ARDUINO pour piloter une loco en automatique est une opération fastidieuse car il faut écrire de nombreuses lignes de code pour créer un nouveau trajet.Il vaut mieux laisser Excel s'en charger.
- un logiciel intitulé CARTO-DCC (Commande Automatique d'un Réseau de Trains par Ordinateur) qui permet de commander en automatique jusqu'à 4 trains simultanément.
10.2.1 ETA-DCC
Pour créer un trajet, l'ordinateur doit être connecté à l'ARDUINO. Il suffit de piloter un train avec le régulateur ou la radiocommande et l'ordinateur enregistre automatiquement dans une feuille Excel les mouvements du train et crée le trajet.
Les tableaux Excel sont créés automatiquement par l'ordinateur en mode "enregistrement" mais il est tout à fait possible de les modifier par la suite.
Ensuite, une macro Excel écrite en VBA crée le programme qui sera téléchargé dans l'ARDUINO.
Il est possible de créer un itinéraire avec deux trajets, c'est à dire d'avoir deux trains en pilotage automatique sans l'ordinateur, plus un trosième en pilotage manuel par la radiocommande.
La figure ci-dessous montre les donneées d'un tableau Excel correspondant à un trajet.
Chaque ligne du tableau correspond à une commande qui sera exécutée pendant un temps indiqué dans la colonne intitulée durée.La liste des colonnes est la suivante::
colonne A: adresse loco (l'adresse 1 est affectée à la commande des accessoires)
colonne B: sens de marche. ma=1 correspond à la marche avant et ma=0 correspond à la marche arrière
colonne C: vitesse entre 0 et 99
colonnes D à H: fonctions F0 à F4
colonne I: durée de la séquence entre 1 et 99 secondes. Les valeurs supérieures à 100 correspondent à l'attente du signal d'un détecteur de passage ou d'occupation de canton
La macro VBA lit les données du tableau Excel et génère le programme pour l'ARDUINO
Vous pouvez télécharger ce programme ETA-DCC .inclant les composants Netcomm.en cliquant ici.
Le dossier comprend
- le classeur Excel intitulé "enregistrement.xls" avec la macro VBA.
- les composants Netcomm à installer pour accéder au port COM de l'ARDUINO
- le programme pour l'ARDUINO MEGA intitulé "arduino_dcc.ino"
- Un mode d'emploi succint dans le dossier "mode d'emploi"
10.2.2 CARTO-DCC
Ce programme écrit en Visual Basic permet de piloter un réseau de trains miniatures par ordinateur en DCC. Il est décrit ici.
J'ai créé une version pour l'ARDUINO basée sur un classeur Excel avec une macro écrite en VBA. Ce logiciel s'utilise conjointement avec JMRI DecoderPro.
Ce logiciel se distingue des autres logiciels de pilotage de réseau en ce sens qu'il n'y a pas d'interface graphique avec création d'un dessin de réseau.
Pour créer un trajet, il suffit d'utiliser DecoderPro et de piloter un train avec un smartphone ou une tablette. L'ordinateur enregistre automatiquement les mouvements du train et crée un trajet qui peut ensuite être reproduit automatiquement par l'ordinateur avec CARTO-DCC. La prise en main du logiciel est ainsi très rapide. Il suffit de s'habituer à l'utilisation du smartphone et de Engine Driver.
Il est possible de se passer du smartphone en utilisant le régulateur de DecoderPro mais cette solution ne permet pas de suivre les trains sur le réseau, ce qui n'est pas pratique.
Les trajets créés automatiquement par l'ordinateur sont associés à des itinéraires. Un trajet correspond à la circulation d'un ou deux trains. Un itinéraire peut contenir jusqu'à 4 trajets. Il est donc possible de faire circuler simultanément jusqu'à 8 trains sur le réseau.
Les itinéraires sont décrits dans des tableaux Excel.
La figure ci-dessous montre les donneées d'un tableau Excel correspondant à un trajet.
Chaque ligne du tableau correspond à une commande qui sera exécutée pendant un temps indiqué dans la colonne intitulée durée.La liste des colonnes est la suivante::
colonne A: adresse loco
colonne B: sens de marche. ma=1 correspond à la marche avant et ma=0 correspond à la marche arrière
colonne C: vitesse entre 0 et 27
colonnes D à L: fonctions F0 à F8
colonne M: durée de la séquence entre 1 et 99 secondes. Les valeurs supérieures à 100 correspondent à l'attente du signal d'un détecteur de passage ou d'occupation de canton
colonne N: numéro de l'aiguillage à commander
colonne O: commande la position de l'aiguille (0 pour direct et 1 pour dévié)
Le numéro zéro de la colonne N est réservé pour la sonorisation du réseau
La macro VBA lit les données des feuilles Excel sélectionnées pour un itinéraire et exécute les commandes correspondantes.
Vous pouvez télécharger le progamme CARTO-DCC en cliquant ici.
Un mode d'emploi est fourni.
11. Commande du réseau par la voix
11.1 Description du module Easy VR
Il est possible de commander un train par la voix en utilisant le module de reconnaissance vocale Easy VR.
Ce module peut reconnaître 32 mots ou expressions de commande que l'utilisateur enregistre au préalable, dans n'importe quelle langue. Ces commandes enregistrées sont de type mono-locuteur (le module ne réagit qu'à l'ordre de la personne qui a enregistré la commande).
EasyVR peut être connecté à toute carte disposant d'une interface UART et en particulier à un module ARDUINO.
Voici une photo du module.
Le module EasyVR dispose également de 26 commandes pré-enregistrées pour chaque langage supporté. Ces expressions sont reconnues quelle que soit la personne qui les prononce. Ces expressions sont: robot, action, bouge, tourne, cours, regarde, attaque, arrête, salut, à gauche, à droite, vers le haut, vers le bas, en avant, en arrière, zéro, un, deux, trois, quatre, cinq, six, sept, huit, neuf, dix)
Vous trouverez une description de ce module en cliquant ici.
Sur ce site, on peut télécharger les logiciels et le mode d'emploi (en Anglais).
On peut aussi trouver un excellent mode d'emploi en Français sur le site de Le Dan-TECH
J'ai connecté le module Easy VR à une carte ARDUINO UNO qui communique avec le module ARDUINO MEGA par une liaison série ( TX et RX sur l'ARDUINO UNO et RX2 et TX2 sur l'ARDUINO MEGA).
J'utilise aussi ce module pour la sonorisation du réseau. En effet, il est possible d'enregistrer des sons et le module dispose d'une sortie haut-parleur. J'ai plaçé un haut-parleur dans la gare pour générer les annonces de départ de trains et un haut-parleur près du passage à niveau pour générer la sonnerie qui précède l'arrivée d'un train.
11.2 Programmes ARDUINO
Les mots utilisés pour la commande d'une loco sont divisés en trois groupes Voici les deux premiers groupes:
Lorsqu'un mot est reconnu, le programme de l'ARDUINO UNO envoie deux octets. Le premier octet est le numéro du groupe et le deuxième octet est l'index du mot dans le groupe.
A partir de ces deux octets, le programme de l'ARDUINO MEGA génère la commande à envoyer à la loco.
L'ARDUINO MEGA envoie à l'ARDUINO UNO (TX2 vers RX) un octet qui a pour valeur le numéro du groupe.
Les valeurs 5 à 7 sont utilisés pour générer les sons stockés sur le module Easy VR.
11.2.1 programme installé sur l'ARDUINO UNO
Le programme installé sur l'ARDUINO UNO est donné ci-dessous.
EasyVRBridge bridge;//group et idx seront utilisés pour communiquer avec le module
int8_t group, idx; // group = valeur passée au module et idx = valeur de retour du moduleint erreur = 7; //LED ROUGE d'erreur
byte octet;
void setup()
{
// bridge mode?
if (bridge.check())
{
cli(); //Désactivation des interruptions sur Arduino
bridge.loop(0, 1, 12, 13); //Configuration du mode bridge - liaison série logicielle port 12 et 13
}
// configuration liaison série
Serial.begin(9600);
port.begin(9600);
if (!easyvr.detect())
{
Serial.println("EasyVR non détecté!");
for (;;);
}
easyvr.setPinOutput(EasyVR::IO1, LOW);
Serial.println("EasyVR detecté!");
easyvr.setTimeout(5); //Conf. du module timeout = 5s
easyvr.setLanguage(5); // langue francaise
group = 1; // Référence au groupe prédéfini
}
void loop()
{
easyvr.setPinOutput(EasyVR::IO1, HIGH); // Led sur module allumée
easyvr.recognizeCommand(group); //Procédure de reconnaissance lancée, le module reçoit la trame de définition du groupe de mot
do
{
// Réception de l'octet en provenance de l'ARDUINO MEGA
while (Serial.available() > 0)
{
octet = Serial.read();
}
group = octet - 48 ;
}
while (!easyvr.hasFinished()); // true dès réception d'une trame réponse du module
easyvr.setPinOutput(EasyVR::IO1, LOW); // LED sur Module éteinte
idx = easyvr.getCommand(); //Récupération de l'index fournit par le module quand il y a détection
if (idx >= 0)
{
// transmission des octets à l'ARDUINO MEGA
Serial.print(group);
Serial.print(idx);
}
// lecture des sons stockés sur le module Easy VR
if (group==5) easyvr.playSound(1, EasyVR::VOL_FULL);;
if (group==6) easyvr.playSound(2, EasyVR::VOL_FULL);;
if (group==7) easyvr.playSound(3, EasyVR::VOL_FULL);;
}
11.2.2 Programme installé sur l'ARDUINO MEGA
Vous pouvez voir le traitement des commandes reçues de l'ARDUINO UNO dans le mode 10 du programme ARDUINO_DCC_V1 décrit ci-dessus.et que vous pouvez télécharger en cliquant
ici.