LOCODUINO

La génèse d’un réseau 100% Arduino

De l’architecture matérielle à l’informatique ferroviaire en objet C++

. Par : Dominique, Pierre59

Aujourd’hui je me lance dans la réalisation d’un réseau plus grand en double voie + une voie unique, avec 4 gares, un vingtaine d’aiguilles et de signaux, une quarantaine de zones, au moins 8 trains en circulation simultanée possibles, et je souhaite disposer de toutes les sécurités et automatismes nécessaires, des signaux qui fonctionnent sur (…)

Retourner à l'article

Vous répondez à :

La génèse d’un réseau 100% Arduino 17 novembre 2018 14:51, par Dominique

Mais votre intrusion est tout à fait positive !

Vous pouvez construire votre centrale DCC pour piloter 2 trains en partant des nombreux articles que vous trouverez en tapant « centrale DCC » dans la recherche en haut à droite de la page d’acceuil de Locoduino.

Le choix ne manque pas ! Votre question ressemble plus à “ comment commander la centrale pour 2 trains » . Il faut choisir l’interface utilisateur qui vous convient : je répondrai plus en détail ensuite.

Maintenant si votre question concerne la programmation des adresses des locos, avec DCCpp ou DCC++, vous pouvez le faire.

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

11 Messages

  • La génèse d’un réseau 100% Arduino 10 mars 2016 12:44, par Christian

    Bravo à tous les deux pour cet article passionnant : c’est du très lourd !

    Je suis pour ma part bien convaincu qu’un seul Arduino pour gérer tout un réseau est insuffisant. Le concept d’en utiliser plusieurs et de les faire communiquer permet une mise au point plus facile et permet de rajouter d’autres "cartes fonction" comme le démontre cet article.

    Je vais m’empresser de lire la suite et j’aurais certainement des questions. Mais avant de les poser, je dois avoir une connaissance globale du sujet. A plus.

    Répondre

    • Tout s’est illuminé pour moi quand j’ai compris comment faire fonctionner le gestionnaire du réseau, avec sa modélisation.

      De toute façon, un seul Arduino sera limité par :

      • son nombre de pattes
      • sa mémoire flash, ram et EEPROM
      • ses performances
      • ses limites en périphériques SPI
      • la complexité du câblage.

      Donc il faut répartir !

      Mais pour le gestionnaire ça doit rester transparent.

      Dominique

      Répondre

  • La génèse d’un réseau 100% Arduino 17 novembre 2018 13:05, par Philippe

    Excusez mon intrusion, j’ai compris le principe énoncé-ci dessus mais étant débutant je voudrais commencer par piloter 2 trains ensemble su le même réseau et donc commencer par affecter deux adresses différentes à mes deux locos : et je ne trouve pas sur Locoduino !
    Pouvez-vous me guider ?
    Merci

    Répondre

    • La génèse d’un réseau 100% Arduino 17 novembre 2018 14:51, par Dominique

      Mais votre intrusion est tout à fait positive !

      Vous pouvez construire votre centrale DCC pour piloter 2 trains en partant des nombreux articles que vous trouverez en tapant « centrale DCC » dans la recherche en haut à droite de la page d’acceuil de Locoduino.

      Le choix ne manque pas ! Votre question ressemble plus à “ comment commander la centrale pour 2 trains » . Il faut choisir l’interface utilisateur qui vous convient : je répondrai plus en détail ensuite.

      Maintenant si votre question concerne la programmation des adresses des locos, avec DCCpp ou DCC++, vous pouvez le faire.

      Répondre

  • Faire circuler 2 trains en même temps 19 novembre 2018 14:35, par Philippe

    Dominique,
    j’ai bien lu tous vos articles mais je ne trouve pas de réponse a deux questions !
    J’ai une carte Arduino Uno que j’ai relié comme expliqué à un booster LMD 18200, j’ai équipé une loco avec un décodeur LokPilot V4.0 et le tout fonctionne sur mon réseau Fleischmann en "N" (sauf que le point arrêt est difficile à trouver).
    Je voudrais faire circuler sur le même réseau une deuxième loco avec un deuxième décodeur LokPilot V4.0 qui a la même adresse par défaut (3) ;
    Est-ce possible ? si oui ou puis-je trouver un exemple pour faire circuler deux trains en même temps ? (j’ai essayé de nommer deux loco dans le programme mais ça plante !)
    Comment changer l’adresse du deuxième décodeur (j’ai passé plusieurs nuit sur les modes d’emploi mais je n’ai pas trouvé !!!
    Merci

    Répondre

    • Faire circuler 2 trains en même temps 19 novembre 2018 16:50, par Dominique

      Difficile de vous répondre si je ne connais pas les détails de la centrale DCC++ faite d’après un article de Locoduino et lequel, pour savoir ce que vous pouvez faire, notamment programmer l’adresse des locos.

      Deux locos DCC ayant la même adresse ne peuvent pas être commandées individuellement. Il faudrait qu’elles aient des adresses différentes pour avoir des comportements différents. C’est le principe du DCC, chaque loco à sa propre adresse.

      Répondre

  • La génèse d’un réseau 100% Arduino 20 novembre 2018 09:46, par Philippe Savoyat

    Bonjour,
    Voici le sketch que j’utilise (ci-dessous) comment ajouter une deuxième loco ? :

    de plus, j’ai bien compris qu’il faut deux adresses différentes, ma question est : comment changer l’adresse d’une loco sachant que les décodeurs sont livrés avec la même adresse ?
    Merci encore de vos réponses

    /********************
    * Creates a minimum DCC command station from a potentiometer connected to analog pin 0,
    * and a button connected to ground on one end and digital pin 4 on the other end. See this link
    * http://www.arduino.cc/en/Tutorial/A...
    * The DCC waveform is output on Pin 9, and is suitable for connection to an LMD18200-based booster directly,
    * or to a single-ended-to-differential driver, to connect with most other kinds of boosters.
    * The Differential DCC waveform is output on Pins 9 and 10.
    ********************/

    #include <DCCPacket.h>
    #include <DCCPacketQueue.h>
    #include <DCCPacketScheduler.h>

    DCCPacketScheduler dps ;
    unsigned int analog_value ;
    char speed_byte, old_speed = 0 ;
    byte count = 0 ;
    byte prev_state = 1 ;
    byte F0 = 0 ;

    void setup()
    Serial.begin(115200) ;
    dps.setup() ;

    //set up button on pin 4
    pinMode(4, INPUT) ;
    digitalWrite(4, HIGH) ; //activate built-in pull-up resistor

    void loop()
    //handle reading button, controls F0
    byte button_state = digitalRead(4) ; //high == not pushed ; low == pushed
    if(button_state && (button_state != prev_state))

    //toggle !
    F0 ^= 1 ;
    Serial.println(F0,BIN) ;
    dps.setFunctions0to4(3,DCC_SHORT_ADDRESS,F0) ;

    prev_state = button_state ;

    //handle reading throttle
    analog_value = analogRead(0) ;
    speed_byte = (analog_value >> 2)-127 ; //divide by four to take a 0-1023 range number and make it 1-126 range.
    if(speed_byte != old_speed)

    if(speed_byte == 0) //this would be treated as an e-stop !

    if(old_speed > 0) speed_byte = 1 ;
    else speed_byte = -1 ;

    Serial.print("analog = ") ;
    Serial.println(analog_value, DEC) ;
    Serial.print("digital = ") ;
    Serial.println(speed_byte, DEC) ;
    dps.setSpeed128(3,DCC_SHORT_ADDRESS,speed_byte) ;
    old_speed = speed_byte ;

    dps.update() ;

    ++count ;

    Répondre

Rubrique Projets

Les derniers articles

Les articles les plus lus