Arduino ? Vous avez dit Arduino ? Il est vrai que je ne vous ai pas encore présenté cet outil formidable !
Arduino, ce sont des cartes à microcontrôleur programmables. De manière plus claire, il s’agit d’un petite carte électronique, disposant de nombreuses entrées et sorties sur lesquelles ont peut connecter des boutons, voyants, ect, et que l’on peut programmer à l’aide d’un logiciel nommé IDE pour lui indiquer quoi faire avec l’état de ses entrées.
Pour un projet de simulateur comme FerroviSim, la (ou plutôt les) cartes Arduino jouent un rôle central. En effet, c’est sur elles que seront reliées toutes les commandes du pupitre, afin d’assurer ensuite la commande d’OpenRails en fonction des actions du conducteur : le fameux interfaçage dont je parlais précédemment. Sur cette page, je vais tout d’abord vous présenter ce qu’est plus en détail une carte Arduino (de manière non exhaustive, mais en insistant sur les points utiles à notre projet), et comment choisir la bonne carte pour un projet de simulateur.

La carte Arduino
Comme je l’ai dit, il s’agit d’une carte à microcontrôleur. Un microcontrôleur est un composant programmable capable d’exécuter des instruction et de calculer. Il est beaucoup moins performant qu’un microprocesseur, que l’on trouve dans les ordinateurs, mais très suffisant pour des applications qui ne nécessitent pas trop de puissance de calcul, tout en ayant un petit « cerveau » pour exécuter des commandes de manière automatisée. On se rapproche du fonctionnement d’un automate programmable, mais le tout de manière miniaturisé dans une petite puce de quelques centimètres de large.
La carte Arduino se connecte au PC à l’aide d’un câble USB. Cela permet d’une part de « téléverser » – comprenez injecter – notre programme dans la carte Arduino, mais également de communiquer avec la carte pendant l’exécution du programme. C’est d’ailleurs de cette façon que la carte Arduino pourra dans le présent projet commander OpenRails et recevoir le retour d’information.

Il existe plusieurs modèles de cartes Arduino, se différenciant par leurs performances mais également par leur nombres de ports d’entrée/sortie. Les performances de rapidité de calcul des cartes ne nous intéressent pas spécialement ici, car l’interfaçage d’un pupitre n’est pas très gourmand en ressources. C’est plutôt le nombres de broches d’entrées/sorties qui sera déterminant. En effet, il conditionnera le nombre de commandes que l’on pourra connecter à notre carte.
Les entrées de la carte Arduino sont de deux types : analogiques ou numériques.
– Les entrées numériques, dites tout-ou-rien, c’est à dire le courant passe ou non. On utilisera ce genre d’entrée pour tous les boutons poussoirs, interrupteurs, contacts électromécaniques, etc, du pupitre,
– Les entrées analogiques. Elles servent à connecter des potentiomètres. On ne s’en servira pas sur les projets CC72000, mais elles pourraient être utiles pour des pupitres ayant des manipulateurs à potentiomètre (comme les BB26000).
Les sorties sont toutes de type numériques tout ou rien. On s’en servira pour commander notamment tous les voyants.
La carte Arduino « de base » comporte 12 entrées/sorties numériques et 6 entrées analogiques utilisables également en numérique. Il s’agit de la carte « Uno ». On trouve ensuite la carte « Mega », disposant de 52 entrées/sorties numériques et 16 entrées analogiques. Ces cartes peuvent êtres très utiles pour commander des sous-systèmes.
Cependant ces deux cartes de base ne disposent pas d’une caractéristique essentielle nécessaire pour notre projet : la fonction d’émulation de clavier. J’ai donc pour ma part choisie pour le « cerveau » du pupitre une carte Arduino Due, identique à la Méga sur le plan entrée/sorties, mais autorisant l’émulation de clavier.
Une carte Mega n’était pas suffisante pour la multitude de commandes et de voyants sur le pupitre. J’utilise donc également plusieurs autres cartes Mega, pilotées par la carte Due, qui servent notamment à commander les différents voyants (Lumitex, SAL…), mais également le Tachro, le KVB ou encore la radio sol-train. A noter toutefois que la carte Due, contrairement aux autres cartes Arduino dont la Mega, fonctionne avec une tension de 3.3V, ce qui impose d’installer des convertisseurs de tension. C’est un problème simple à résoudre et j’y reviendrai par la suite.
Autre remarque, vous lirez peut-être que la carte Arduino Leonardo permet également l’émulation de clavier. Pour une raison obscure, il semble que cela ne fonctionne pas avec OpenRails, d’où le choix d’une carte Due.