24 mars 2013: voir la note que j'ai ajouté ce jour concernant le Loconet Shield de John Plocher. Cependant, le plan présenté plus bas pour un montage sur un Veroboard fonctionne...
March 24th, 2013: please refer to the entry of that date about an error in the Loconet Shield Gerber files. However, my version built on a Veroboard (that can be found above) works well.
Attention: l'auteur de ce blog dégage toute responsabilité quant à l'utilisation des montages électriques et électroniques décrits dans ces pages. Il incombe au lecteur d'agir avec prudence lorsqu'il s'agit d'utiliser tout dispositif électrique.
Que faire après une journée de travail déconcertante? Passer une bonne soirée à bricoler sur son réseau!!! Et pour rendre cette tâche encore plus agréable, pourquoi ne pas se consacrer à la réalisation d'un petit montage électronique afin d'utiliser un Arduino dans un contexte de gestion de réseau?
Tout d'abord, qu'est-ce qu'un Arduino? Il s'agit d'un micro-contrôleur programmable capable d'exécuter un micro-programme et d'interagir avec son environnement à l'aide de ports d'entrée/sortie. Son architecture est open-source ce qui signifie que tous les plans sont disponibles et que de nombreux fabricants produisent différents modèles d'Arduino. Aussi, son prix est très accessible: les premiers modèles varient entre 15 et 30$. Pour de plus amples informations et pour examiner toutes les variantes basées autour de ce micro-contrôleur, je vous invite à consulter le site original. Dans mon cas, j'utilise le modèle le plus courant: un Arduino Uno.
Je connaissais l'existence de ce micro-contrôleur depuis quelques temps déjà, mais je ne m'y étais jamais intéressé de près... C'est maintenant chose faite! Ce micro-contrôleur va me permettre de concrétiser quelques projets que j'ai en tête depuis longtemps et qui auraient nécessité un design électronique conséquent et hors de portée (en ce qui me concerne...). La facilité d'utilisation et de programmation de ce micro-contrôleur rend la tâche beaucoup plus simple, même s'il reste qu'en même un minimum d'électronique (élémentaire) à faire. Le succès de cet Arduino tient du fait que toute la logique hard qu'il était nécessaire de designer en électronique est maintenant convertie en logique soft programmable. L'interface avec l'environnement (entrées/sorties) reste constante. Seul le micro-programme change en fonction des besoins!
Mon premier projet est une interface LocoNet, condition nécessaire à la réalisation des projets suivants... LocoNet est le protocole créé par Digitrax pour communiquer entre la centrale DCC et tous les composants d'un réseau (commandes, cartes de détection, décodeurs, etc...). Avec cette interface, je vais être capable de lire et d'interpréter les informations qui circulent sur le réseau ainsi que d'envoyer des commandes spécifiques au besoin.
Pour cela, je me suis inspiré du travail de John Plocher et plus spécialement de son interface LocoNet. N'ayant aucun moyen à ma disposition pour réaliser le PCB, j'ai converti le schéma logique afin d'implanter les composants sur une plaque Veroboard (d'un accès beaucoup plus simple et ne nécessitant aucun équipement particulier puisqu'il suffit de souder les composants dessus).
Le schéma de l'interface sur le site de John Plocher. |
Mon implantation sur un VeroBoard. |
Bien évidemment, mon schéma est réalisé avec les moyens du bord et un simple logiciel de dessin... La liste des composants est disponible sur le site de John Plocher. Je ne rentrerai pas dans les détails pour indiquer seulement une simplification: les points de couleurs vert, rouge, bleu, blanc, jaune et noir en haut du schéma correspondent aux couleurs des fils d'un câble LocoNet. Lors de la réalisation de ce montage, j'ai simplifié la démarche en supprimant les prises RJ12 femelles pour souder directement les fils de deux câbles LocoNet. Cela revient au même... Ce montage ne coûte que quelques dollars et prend moins d'une heure à réaliser.
Ensuite, il est nécessaire de charger le micro-programme qui permet de décoder les paquets LocoNet transitant par le bus. Ce micro-programme est compilé puis chargé dans l'Arduino à l'aide des outils fournis avec celui-ci.
Ici aussi, je ne rentrerai pas dans les détails puisque de nombreux exemples de code source sont disponibles. Je vous renvoie au projet open-source écrit par Alex Shepherd et intitulé mrrwa (Model RailRoad With Arduino) créant l'interface logicielle entre le bus LocoNet et l'Arduino. Entre parenthèse, il doit être assez facile d'écrire une librairie équivalente basée sur un autre protocole. Je n'ai pas fait de recherche sur le web mais peut-être que de telles variantes ont déjà été développées...
Place aux résultats...
De gauche à droite, l'Arduino Uno, l'interface LocoNet sur un Veroboard et les câbles LocoNet. Une fois l'un des câbles connecté à ma centrale Zephyr, je suis capable de visualiser les informations qui circulent sur le bus LocoNet sous forme de paquets d'octets:
On peut distinguer entre autres, les informations de vitesse envoyées à un décodeur par la centrale, le feedback des détecteurs de position et l'envoi d'une commande à un aiguillage...
Pour résumer:
- les informations sous forme de paquets d'octets transitent par le câble LocoNet
- ce câble est connecté à l'interface LocoNet qui convertit le train de bits en impulsions 0-5V et les transmet à l'Arduino par un des ports d'entrée
- l'Arduino, qui exécute en boucle le micro-programme, interprète les impulsions captées par le port d'entrée et les transforme en messages
- l'Arduino communique avec l'ordinateur par le port USB (qui sert aussi lors de la programmation) et les messages sont affichés dans une console.
Voilà! Ce premier montage me permet de communiquer et d'interagir avec le bus LocoNet. Il ne reste plus qu'à trouver des applications intéressantes utilisant cette interface. Mais j'aurai l'occasion d'y revenir...