Bonjour à toutes et à tous,
Railuino est la bibliothèque de référence pour qui s’intéresse au pilotage de son réseau en DIY (Do It Yourself) avec le protocole CAN de Marklin. Il en a été plusieurs fois question sur quelques fils du forum (sans que certains ne sache d’ailleurs de quoi il s’agissait exactement).
A quoi peut servir cette bibliothèque et pour qui ?
Si l’on veut par exemple piloter des locomotives avec un Arduino sans se palucher à la main tout le code nécessaire, la bibliothèque Railuino est faite pour cela.
Voici un exemple qui, même si vous n’êtes pas un expert du code, vous laissera comprendre de quoi il s’agit.
void setup() {
Serial.begin(115200);
while (!Serial);
ctrl.begin();
Serial.println("Power on");
ctrl.setPower(true);
Serial.println("Headlights on");
ctrl.setLocoFunction(LOCO, 0, 1);
}
void loop() {
byte b;
Serial.println("Direction forward");
ctrl.setLocoDirection(LOCO, DIR_FORWARD);
if (ctrl.getLocoDirection(LOCO, &b)) {
Serial.print("(Direction is ");
Serial.println(b == DIR_FORWARD ? "forward)" : "reverse)");
}
delay(TIME);
Serial.println("Direction reverse");
ctrl.setLocoDirection(LOCO, DIR_REVERSE);
if (ctrl.getLocoDirection(LOCO, &b)) {
Serial.print("(Direction is ");
Serial.println(b == DIR_FORWARD ? "forward)" : "reverse)");
}
delay(TIME);
}
Tout ce qui commence par “Serial.print » n’est pas du code de commande mais de debug. On voit donc qu’avec des commandes assez simples, on demande à la centrale de se mettre en route, d’allumer les feux de la locomotive, on commande la direction de la locomotive et l’on devrait alors voir les feux de la loco commuter. On ne la fait pas rouler, mais la commande n’est pas plus compliquée.
Alors, que peut-on en faire ? Des applications simples comme un va-et vient automatique où l’on mettrait des tempos dans le code ou des actions « sous » événements liés à l’état de capteurs sur la voie…
Et l’on peut s’en servir pour des choses beaucoup plus complexes comme fabriquer son propre gestionnaire de réseau. D’ailleurs, DestopStation, le logiciel dont nous a parlé récemment Alain3R repose sur le moteur Railuino. Lien vers le site Desktop Station - Railuino preparation mais je vous préviens, là aussi tout est viellot !
Alors qui ça intéresse ? Bien sûr les modélistes qui ont un peu d’appétence pour l’Arduino et l’envie de réaliser leurs propres applications. La compétence s’acquière facilement, c’est ce qui à fait la popularité d’Arduino.
J’avais tenté de mettre en œuvre cette bibliothèque mais à presque chaque fonction, je me trouvais confronté à l’âge du logiciel. Ecrit en 2013 et jamais mis à jour, il est considérablement bridé et ne fonctionne pas sur les OS modernes (ESP32 en particulier), ne permet pas de se connecter en WiFi par exemple. Et ne parlons pas d’héberger des applications comme le pilotage de locomotives au travers d’un smartphone par exemple.
Pour toutes ces raison, j’ai entrepris une réécriture profonde du programme. Comme celui-ci est particulièrement bien écrit, en programmation orientée objets du c++, le travail de réécriture est vraiment facilité. En deux jours à peine, j’ai déjà réécrit 25 à 30% du code mais ce qui correspond à au moins 50 à 70% des commandes utilisées. Celles qui reste sont plutôt marginales.
Le nouveau code est ici : GitHub - BOBILLEChristophe/Railuino: Rewrite of version 0.9.0 of Joerg Pleumann's Railuino library
Ça m’intéresse de savoir s’il y en a parmi vous qui utilisent cette bibliothèque ou envisagent de le faire.
Comme je l’ai toujours proposé, je répondrai volontiers à toutes vos questions, ou du moins j’essayerais.
Christophe