• accueil
  • réseaux à l'échelle 0
    • réseau jouet ancien
      • présentation
      • catalogue LR
      • photos du matériel roulant
    • réseau jouet moderne
      • présentation
      • quelques videos
      • matériel roulant
      • 131T ETS et fumigènes
      • portique intermodal
    • réseau modulaire
      • présentation
      • photos
      • vidéos
      • exploitation du réseau
      • matériel roulant
      • le parc d'attractions
      • le pont tournant
  • réseaux de monorails
    • introduction
    • histoire des monorails
    • maquettes de monorails gyroscopiques
    • principes de la levitation magnétique
    • monorail jouet à sustentation magnétique
    • maquette de lévitation électromagnétique
  • train de jardin
    • présentation
    • Matériel roulant
    • 030T CDN
    • autorail de Dion
    • autorail Billard
    • Mallet LGB
    • BB400 des CP
    • Vapeur vive Emma
    • Vapeur vive Millie
    • Vapeur vive MIKADO
    • Loco vapeur 031T ACO
    • Exploitation du réseau
    • Rétrosignalisation
    • Wagon dételeur
    • Liens
  • techniques
    • électronique
      • présentation
      • alimentation pwm
      • Détecteur de passage infra rouge
      • Commande d'une plaque tournante
      • Comment réaliser un oscillo pas cher
      • Utilisation d'un servomoteur
      • Commande d'aiguille par décharge capacitive
      • Commande d'un fumigène pulsé par un décodeur ESU Loksound
    • informatique
      • généralités
      • port parallèle
      • port série
      • port USB
      • Qbasic et Freebasic
      • Visual Basic
      • Exploitation d'un réseau en Visual Basic
      • Commande d'un réseau par manette de jeu
      • Commande vocale d'un réseau
    • ARDUINO
      • introduction
      • Sonorisation d'une locomotive
      • Radiocommande et sonorisation d'une loco sans DCC
      • Module de sonorisation d'un réseau
      • Applications du BLUETOOTH au modélisme ferrovaire
    • Fumigènes
    • dcc
      • Introduction
      • Structure des paquets DCC
      • ARDUINO et DCC
      • Utilisation d'un ampli audio comme booster
      • Création d'un signal DCC avec un PC
      • Contrôle d'un signal DCC
      • Rétrosignalisation
      • Détecteurs d'occupation
      • Utilisation du LokProgrammer
      • SPROG II
      • DCC transmis par radio
      • Présentation du programme CARTO-DCC
      • Commande d'un réseau DCC en WiFi
      • programmation des locos MTH
      • Régulateur DCC à commande vocale en Français
      • Commande des aiguilles en DCC
      • Les décodeurs sonores
  • Contact




  • Commande d'un réseau en DCC avec un module ARDUINO

    Commande vocale d'une locomotive


    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.

    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.

    2.1 programme installé sur l'ARDUINO UNO

    Le programme installé sur l'ARDUINO UNO est donné ci-dessous.

    #if defined(ARDUINO) && ARDUINO >= 100
    #include "Arduino.h"
    #include "SoftwareSerial.h"
    SoftwareSerial port(12,13);
    #else // Arduino 0022 - use modified NewSoftSerial
    #include "WProgram.h"
    #include "NewSoftSerial.h"
    NewSoftSerial port(12,13);
    #endif

    #include "EasyVR.h"
    EasyVR easyvr(port);

    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);;
    }


    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.

    Retour page Arduino DCC


    Retour page d'accueil