Table of Contents
C'est un article de RocNet pour le journal MERG Journal prévu pour le Vol 48-4, l'Édition Noël. (En Aglais) |
Automatisation de réseaux ferroviaires avec un Raspberry Pi.
Le petit ordinateur Raspberry Pi populaire et bon marché 1) propose quelques E/S intéressantes comme l'I2C et le GPIO. Parce que le bus I2C est courant et standard, l'idée de l'utiliser pour l'automatisation de réseaux ferroviaires est née en 2013.
Avec Peter Giling, qui vit aux Pays-Bas, nous avons développé une gamme de modules pour une utilisation avec des réseaux ferroviaires.
Et je suis Rob Versluis, habitant en Allemagne, le fondateur et développeur principal du projet Rocrail: http://www.rocrail.net
Historique
En septembre 2011, avant que le Raspberry Pi ne soit sorti, un membre du forum a mentionné que le Raspberry Pi pourrait servir pour un serveur Rocrail sous le réseau. Personne n'a réalisé à quel point la popularité, la puissance, et la flexibilité le Raspberry Pi serait. En mai 2013 l'expérimentation a été faite en utilisant une variété de méthodes de communication. En mai 2003 la première mention de Rocnet comme moyen de communication entre le PC et un Raspberry Pi s'est produit. En août 2013 la première version du client Rocnet du Raspberry a été créée. C'est un simple périphérique d'extension de port. Simple, robuste, et facile à implémenter, c'est une solution presque parfaite… et pas cher en plus. Viennent ensuite le servo/contrôleur LED, puis les autres modules.
Divers membres du forum ont également essayés une variété de protocoles TCP/IP comme le SRCP (1).
Bien que la SRCP soit certainement une possibilité, il manque de capacités plug-and-play car il est basé sur un socket TCP/IP (2). Rocnet, qui est basé sur la multidiffusion, est plug-and-play.
Pendant cela, diverses autres expériences ont été menées par Peter et d'autres.
Une variété de périphériques (3) ont été essayés pour diverses fonctions.
Certains ont réussi, certains moins. Un fait est devenu de plus en plus clair à la suite de ces expériences, le Raspberry Pi (et son bus I2C) est stable, robuste et est une plateforme très performante.
Le meilleur de ces prototypes a donné lieu à des modules disponibles auprès de GCA (= Giling Computer Applications).
Rétrospectivement, le Raspberry basé sur Linux s'est avéré être plus qu'un simple contrôleur pour les trains miniatures.
Couplé avec Rocrail/Rocnet il devient ce que certains appellent une Super-Controlleur.
(1) SCRP = Simple Railraod Command Protocol (Protocole de commande de réseaux ferroviaire simple)
(2) Les communications par socket TCP/IP requièrent que l'adresse IP du nœud distant soit connu avant que les communications puissent démarrer.
Pour résoudre ce problème, IP-Multicast est utilisé pour que les communications du nœud distant puissent avoir lieu sans connaissance préalable de l'adresse IP de destination.
Cela signifie également que l'adresse IP du Raspberry peut changer sans impact. (Les changements d'adresse IP sont courants lorsque le DHCP est utilisé pour attribuer des adresses IP.)
(3) I2C = IIC = Inter Integrated Circuit.
Ce matériel se base sur le protocole de communication, à l'origine créé par Philips, c'est un système de communication 2 fils entre les puces sur la même carte.
Les améliorations ultérieures et l'accélération, ensemble avec disponibilité d'émetteurs-récepteurs de bus et de tampons comme ceux utilisés dans les modules RocNet, a permis d'étendre les lignes de communication à plus de 10 mètres.
Installation
L'ensemble du système est un peu 'Plug&Play', mais il a besoin d'un réseau local Ethernet dans lequel IP-Multicast n'est pas bloqué par un pare-feu.
Une passerelle Internet n'est nécessaire que pour la mise à jour du logiciel Rocnetnode.
Petit ou Grand
Le diagramme suivant montre un petit et un grand exemple de configuration:
Le DHCP-Switch (une petite boite utilisé pour inter-connecter des périphériques TCP/IP) est responsable de l'attribution des adresses IP aux RasPi et Rocrail.
L'exemple de grande configuration est particulièrement intéressant pour les aménagements modulaires comme le mien 'Plan-F': http://wiki.rocrail.net/doku.php?id=plan-f:plan-f-en.
Logiciel
Le projet Rocrail a développé un protocole basé sur la communication Ethernet IP-Multicast qui a été choisi pour cette solution RasPi.
Le Rocnetnode est la partie logicielle en cours d'exécution sur le RasPi et va gérer les E/S, les Servos et les manettes. Tous les modules matériel sont basés sur l'I2C et ne nécessite aucun firmware; Rocnetnode s'occupe de tout.
Le protocole Rocnet est Open Source et est documenté dans les pages du Wiki Rocrail: http://wiki.rocrail.net/doku.php?id=rocnet:rocnet-prot-fr
Matériel
Ce diagramme montre les nombreuses et flexibles possibilités de la solution Raspberry Pi en combinaison avec Rocrail et Rocnetnode:
Modules disponibles
Interface | 32-E/S | 16-Servo | Manette | Décodeur-G | Alimentation | Détecteur par transformateur |
---|---|---|---|---|---|---|
GCA-Pi01 | GCA-Pi02 | GCA-Pi03 | GCA-Pi04 | GCA-Pi05 | GCA-Pi06 | GCA-Pi07 |
Il y a sept modules matériel disponibles:
Pi01 | Le module principal qui est directement connecté sur le connecteur GPIO du RasPi. |
Pi02 | Module E/S 32 port qui est compatible avec tous les modules d'interface GCA: http://wiki.rocrail.net/doku.php?id=france#materiels. |
Pi03 | Module 16 port PWM pour contrôler des servos. C'est un adaptateur pour le contrôleur PWM Adafruit PCA9685. Également utilisable pour la gradation de LEDs (4095 pas) |
Pi04 | Une manette à main avec 28 fonctions. |
Pi05 | Décodeur grande échelle qui peut reporter les étiquettes RFID scannés entre les rails. (Ceci est toujours en cours.) |
Pi06 | Alimentation 3A et hub I2C ensemble |
Pi07 | Détection d'occupation sans perte qui peut gérer les courants faibles et élevés pour les locomotives à grande échelle. |
Tous les modules ont des pilotes de ligne I2C pour permettre de longs câbles.
Vous pouvez choisir entre les type de connecteurs RJ45(CAT) et RJ12(LocoNet).
Je préfère personnellement le RJ12 parce que ce type est facile à assembler par soi-même avec des câbles très flexibles, et ils ne peuvent pas être accidentellement échangé avec les câbles Ethernet RJ45.
Branchement du Pi01 au Raspberry Pi
Le Pi01 se branche au connecteur GPIO du RasPi et sert également d'alimentation lorsqu'il est connecté au Pi06.
La carte offre deux LEDs et un bouton. La LED verte commence à clignoter si Rocnetnode est démarré.
La LED rouge est utilisée pour l'identification est requise par Rocrail, ce qui est très utile en cas d'une installation importante.
Un appui court sur le bouton identifiera ce Rocnetnode à Rocrail et affichera l'utilitaire de configuration avec ce nœud sélectionné.
Un appui long de plusieurs secondes arrêtera ce RasPi comme indiqué par le clignotement rapide de la LED verte.
Il n'est pas nécessaire d'arrêter le RasPi parce que la configuration est sauvegardée sur la carte SD. Mais pour ceux qui auront mauvaise conscience en débranchant la prise d'alimentation d'un Raspberry Pi, l'option d'arrêt(tous) est disponible avec certaines variantes.
Pi02
Le Pi02 est un module avec 32 E/S programmable pour une large gamme d'applications comme:
- LEDs (Signaux)
- Boutons poussoirs
- Polarisation de cœur d'aiguillage
- Bobines d'aiguillages
- Servos
- etc…
Interfaces
La liste d'interfaces compatibles pour le Pi02 est longue et est documentée ici: http://wiki.rocrail.net/doku.php?id=france#materiels.
Une petite vue d'ensemble des interfaces possibles:
- Détection d'occupation basée sur le courant: GCA93
- Détecteurs à effet Hall et contacts reed (Aimants): GCA173
- Contrôleur de faisceau de voies / pont tournant / pont transbordeur: GCA145
- Pilotes de bobine jusqu'à 10A: GCA76, GCA77
- Carte relais pour polarisation de cœur d'aiguillage: GCA107
- Pilotes de servos: GCA136
Les LEDs et autres composants basse consommation peuvent être connectés directement avec les résistances nécessaires.
Les boutons poussoirs peuvent être connectés directement pour être capable de créer un TCO.
Contrôleur PWM Pi03
Le Pi03 utilise le contrôleur PWM Adafruit PCA9685 comme carte d’accueil car l'empreinte de la puce est trop petite pour nos techniques.
Une alternative aurait été de laisser la puce être montée directement sur une carte professionnelle mais cet investissement ne rentrerait pas dans notre budget de loisir.
Mais également la solution de carte d’accueil est tout simplement génial pour les servos et le PWM général. (Éclairage de jour et de nuit.)
Manette Pi04
Cette manette, également appelé 'Rocmouse', est indépendant de la Centrale Numérique et a l'apparence d'un FREMO Fredi.
Les commandes sont scannées par Rocnetnode fonctionnant sur le RasPi et sont renvoyé à Rocrail.
Rocrail enverra les commandes reçues vers le Centrale Numérique configurée dans son propre protocole natif comme Xpressnet par exemple.
Il peut être branché à chaud sur n'importe quel connecteur I2C libre.
Caractéristiques
- Bouton rotatif pour la vitesse; 50 pas qui sont recalculés pour correspondre aux pas réels de la vitesse de la locomotive.
- Commutateur de direction avec position V=0.
- 28 fonctions divisées par groupes de 4. le numéro de groupe est représenté sous forme de nombre binaire par les LED au-dessus des boutons.
- Lumières.
- LED clignotante Scan/Marche.
- Jusqu'à 8 manettes connectées sur un RocNetNode.
Alimentation Pi06
Le Pi06 sert d'alimentation pour tous les modules et le RasPi.
C'est aussi un concentrateur pour le bus I2C.
Il a seulement quatre connecteurs mais tous les modules peuvent être chaînés en série.
Le projet a démarré en utilisant les alimentations 5V USB communes mais cette solution a été abandonné en raison de la mauvaise qualité de ces unités et elles n'ont jamais livré le 5V promis.
Le Pi06 a rendu le projet plus acceptable en évitant de nombreux adaptateurs 5V indésirables.
Détection de courant sans perte Pi07
L'idée originale vient de Richard Andrews (Texas).
Peter et moi ne l’avons pas pris très au sérieux au début, mais les expériences de Richards ont abouti à un bon résultat utilisable.
Après le prototypage par Peter, nous l'avons ajouté à la gamme de matériel Pi.
Exemple de module
J'ai déjà migré deux modules. Le module 2 est vu sur l'image ci-dessus avec tout son matériel:
- Logiciel de Centrale Numérique: RocNetNode + DCC232 + ORD3/4 → http://wiki.rocrail.net/doku.php?id=dcc232-fr
- Seulement un seul transformateur 16V AC 70VA est nécessaire pour l'ensemble de la configuration du 'Plan-F'.
- Un petit Switch Ethernet pour un petit budget de moins de 10€ qui peut être connecté en chaîne d'un module d'implantation à l'autre.
Configuration
Pour configurer les options Rocnetnode, les E/S et les Servos il y a un utilitaire très avancé dans Rocrail dans lequel chaque détail peut être visualisé et réglé.
Onglets de Configuration
Nom de l'onglet | Configuration |
---|---|
Index | Une liste des Rocnetnodes automatiquement enregistrés. |
RocNet | Une arborescence de tous les nœuds avec les paramètres de base. |
Options | Définit quel matériel est connecté; Même le SPROG peut être inclus. |
Pi02 Port Setup | Configuration E/S. |
Pi03 Channel Setup | Configuration Servo et/ou PWM. |
Macro | Spécialement pour le système de signaux avec plus de 4 aspects. |
Update | Mise à jour à la volée du logiciel Rocnetnode. |
Voir pour une information détaillée: http://wiki.rocrail.net/doku.php?id=rocnet:rocnetnode-setup-fr.
Cartes et Kits
Les cartes et les kits de qualité professionnels peuvent être commandés sur le site Web de Peter Giling : http://www.phgiling.net/.
Une carte SD ou Micro-SD pré-configurée avec Raspbian et Rocnetnode installé est également disponible avec une commande.
Support
Le support de Rocrail et tout le Matériel associé est couvert par le très bon Forum avec beaucoup de bons modérateurs.
L'adresse du Forum Internet est: http://forum.rocrail.net
Le Futur
Parce que l'OS du Raspberry Pi est Open Source, le système Rocrail/Rocnet est facilement ajouté ou modifié.
Un client son est une idée en utilisant la sortie audio du RasPi.
Abréviations
Abréviation | Signification | Lien Internet |
---|---|---|
E/S | Entrée/Sortie | http://en.wikipedia.org/wiki/I/O |
I2C | Bus informatique série inventé par Philips. | http://en.wikipedia.org/wiki/I%C2%B2C |
GPIO | E/S à usage général | http://en.wikipedia.org/wiki/GPIO |
TCP/IP | Suite de protocole Internet | http://en.wikipedia.org/wiki/Tcp/ip |
SRCP | Protocole de Commande de voie ferrée Simple | http://srcpd.sourceforge.net/ |
GCA | Applications Informatique de Giling | http://www.phgiling.net/ |
DHCP | Protocole de Configuration d'Hôte Dynamique | http://en.wikipedia.org/wiki/Dhcp |
Adresse IP | Protocole d'adressage Internet | http://en.wikipedia.org/wiki/Ip_address |
IP Multicasting | Envoie des datagrammes du Protocole Internet (IP) à un groupe de récepteurs intéressés | http://en.wikipedia.org/wiki/IP_multicast |
RasPi | Nom court du "Raspberry Pi" | http://www.raspberrypi.org/ |
PWM | Modulation en Largeur d'Impulsion | http://en.wikipedia.org/wiki/Pulse-width_modulation |
SD-Card | Secure Digital (SD) est un format de carte mémoire non volatile pour une utilisation des des périphériques portables. | http://en.wikipedia.org/wiki/SD-card |
CTC | Tableau de Commande Optique | http://en.wikipedia.org/wiki/Centralized_traffic_control |
FREMO | Freundeskreises Europäischer Modellbahner – FREMO e. V. | http://www.fremo-net.eu/3.html?&L=6 |
Switch Ethernet | Switch(Hub) Réseau | http://en.wikipedia.org/wiki/Ethernet_switch |