LOCODUINO

Un capteur RFID

Pour connaitre les numéros de trains à coup sûr !

.
Par : Dominique

DIFFICULTÉ :

Il est difficile d’animer un réseau digital (en DCC) dans lequel peuvent évoluer plusieurs trains, avec des automatismes de conduite, sans que ceux-ci connaissent les numéros des trains.

La plupart des logiciels de pilotage demandent à l’opérateur de positionner les trains dans un état initial prédéterminé avant de démarrer. Mais la moindre désynchronisation peut aboutir à des catastrophes.

Certains systèmes adoptent la lecture d’un code-barre collé sous les locos.

Je vais présenter ici la solution basée sur la technologie RFID (radio identification).

RFID qu’est-ce que c’est ?

Selon Wikipedia, la radio-identification, le plus souvent désignée par le sigle RFID (de l’anglais radio frequency identification), est une méthode pour mémoriser et récupérer des données à distance en utilisant des marqueurs appelés « radio-étiquettes » (« RFID tag » ou « RFID transponder » en anglais).

Un système de radio-identification activé par un transfert d’énergie par onde électromagnétique se compose de marqueurs, nommés radio-étiquettes ou transpondeurs (de l’anglais transponder, en contraction des mots transmitter et responder) et d’un lecteur. Un marqueur est composé d’une puce et d’une antenne.

Voilà le détecteur-lecteur ID12 que j’ai choisi d’utiliser. Il n’y a pas beaucoup de choix d’ailleurs.

Ce détecteur est distribué par Sparkfun : choisir la version ID-12LA actuellement.

Il peut détecter la proximité de petites capsules de ce type :

J’en ai d’abord collé une sous une loco avec une goutte de colle epoxy, puis je me suis contenté de la placer dans un wagon du convoi. L’emplacement n’est pas critique et peut ainsi changer.

Tests d’un capteur RFID ID-12 de ID Innovations

Le schéma de montage est le suivant :

Avec un Arduino UNO, on connecte les pins suivantes de l’ID12 :

  • Pin 1 : Gnd au Gnd Arduino
  • Pin 2 : RST d’abord au +5V pour le programme de capture de tags, puis à la pin 13 Arduino pour le programme de reconnaissance
  • Pin 11 : +5V au +5V Arduino
  • Pin 7 : FS au Gnd
  • Pin 9 : D0 à la pin 0 (RX) de l’Arduino (débrancher ce fil lors des chargements de programme pour éviter un conflit avec l’IDE)

On trouvera des sketches de test sur le site Sparkfun :

J’utilise en fait 2 procédures :

// -----------------------------------------------------
//                       RFID
// -----------------------------------------------------

void checkRFID1(void)
{
  int readByte;
  while(Serial1.available()) {
   digitalWrite(13, HIGH); // led indicatrice de détection
   readByte = Serial1.read(); //lecture de l'octet suivant
   if(readByte == 2) RFIDreading1 = true; //debut de tag
   if(readByte == 3) RFIDreading1 = false; //fin de tag
   if(RFIDreading1 && (readByte != 2) && (readByte != 10) && (readByte != 13)) {    
     tagString1[RFIDindex1] = readByte;  //enregistrement du tag
     if (RFIDindex1 < 12) RFIDindex1 ++;
   }   
   delay(10); // pour garantir l'arrivée du caractere suivant s'il existe
 }
}


///////////////////////////////////
//comparaison de 2 tags
///////////////////////////////////

boolean compareTag(char one[], char two[]){

 if(strlen(one) == 0) return false; //vide

 for(int i = 7; i < 12; i++){
   if(one[i] != two[i]) return false;
 }

 return true; //valide
}

Dans la routine checkRFID1(), je capture le tag envoyé par le détecteur et avec la routine compareTag(), je recherche si ce tag est bien parmi ceux attendus.

Premières conclusions

Ca marche ! Mais...
L’expérience à révélé 2 problèmes que j’ai contournés. Voici les résultats :

  • Si le détecteur ID12 est placé sous le support de voie, à environ 1 bon centimètre de la capsule, soit la moitié de la distance minimum de détection. La présence des rails métalliques et du moteur de la loco n’ont pas l’air d’affecter la détection (c’est une onde radio à 125 kHz, qui pourrait interférer avec le décodeur, mais en fait ça passe). Mais le gros SOUCI est la vitesse maxi de la loco : j’ai testé différentes vitesses et ça marche jusqu’à la valeur 36 sur un maximum de 128 (pour une commande DCC en 128 pas), soit 1/3 de la vitesse maxi.
  • Finalement, j’ai testé un autre emplacement pour le détecteur : sur le coté de la voie, avec le transpondeur à l’intérieur d’un wagon (scotché sur la paroi latérale située du coté du détecteur). Et là les résultats sont plus qu’encourageants : la vitesse de détection est nettement meilleure et il semble qu’il n’y ait plus de vitesse limite.

Pour l’esthétique, le meilleur moyen est de cacher le détecteur dans une petite maison en bord de voie :

On verra plus loin qu’un autre emplacement bien pratique est "au-dessus" de la voie, ce qui n’est possible que dans un tunnel bien entendu.

Et si on voulait 2 détecteurs ?

Autre problème éventuel : Il est quasiment impossible de placer 2 détecteurs sur le circuit lorsque chaque détecteur est activé en permanence !

En effet, il se trouve que le détecteur émet des ondes à 125 kHz et le rayonnement est suffisant pour apporter l’énergie nécessaire à la capsule qui doit répondre aux interrogations du détecteur. Le détecteur est aussi très sensible pour recevoir le faible signal de réponse de la capsule. Tant qu’il n’y a qu’un seul détecteur, tout va bien car ce dernier émet et reçoit alternativement, jamais en même temps. Mais si deux détecteurs sont présents sur le circuit, il est impossible d’éviter qu’un détecteur ne reçoive pas le signal émis par un autre détecteur et alors les 2 détecteurs s’aveuglent mutuellement. Dans ce cas ils s’auto-inhibent et ne reçoivent plus rien.

Pour éviter cela, il faut faire fonctionner un seul détecteur à la fois ou blinder les zones de détection, ce qui est difficile !

J’ai donc décidé de limiter ma réalisation à un seul détecteur, ce qui est suffisant.

Et je trouve cela très encourageant, d’autant qu’il est facile de régler la position de l’ID12 et la capsule transpondeur se loge facilement dans quasiment tous les wagons et ne craint plus les perturbations éventuelles du moteur et du décodeur. Et tout est bien protégé de la poussière.

Tentative d’utilisation de 2 détecteurs

Si, comme c’est le cas pour moi dans mon nouveau réseau, celui-ci comporte deux sens de circulation indépendants, l’utilisation d’un seul détecteur RFID serait limitative.

En effet, pour détecter tous les trains, il faut qu’ils passent devant l’unique détecteur et cela impose des itinéraires non naturels, en tout cas peu commodes.

Le mieux serait donc d’utiliser deux détecteurs, l’un sur une des voies à une extrémité du réseau et l’autre sur la voie en sens inverse, à l’autre extrémité du réseau.

Pour qu’il puissent fonctionner tous les deux, le seul moyen est de les faire fonctionner à des instants différents, de préférence quand c’est nécessaire seulement.

J’ai donc imaginé le montage suivant que je réalise 2 fois :

Deux capteurs IR réflectifs (capteurs de distance) sont placés de part et d’autre du capteur RFID. Ils ont pour but de prévenir l’Arduino de l’approche d’un train. Dès qu’un train est détecté, le capteur RFID est mis en marche en libérant sa broche RESET. Dès qu’un train est bien détecté par le capteur RFID, celui-ci est placé de nouveau en hibernation en commandant sa broche RESET.

Le fait d’avoir un capteur de chaque coté du détecteur RFID permet d’en déduire aussi le sens de circulation du train.

Un petit montage de test donne ceci :

Les branchements sont les suivants :

  • La broche 4 de l’Arduino, programmée en sortie, est reliée à la broche 2 (Reset) de l’ID12.
  • La broche 5 de l’ID12 est reliée à l’entrée RX de l’Arduino.
  • Les broches 2 et 3 de l’Arduino, programmées en entrées, sont reliées aux sorties de 2 capteurs de distance réflectifs à infrarouge, du type TCR5000.

Le principe est simple : L’Arduino maintient sa broche 4 à LOW tant qu’aucun capteur IR n’a pas détecté de train d’un coté ou de l’autre.

Dès qu’un détecteur IR fait "monter" une des broches 2 ou 4, la broche 4 passe à HIGH et le capteur RFID fonctionne : il peut détecter la présence d’une capsule dans le train et transmettre son numéro au programme de gestion.

Le sens du train est déduit du fait qu’un des capteurs IR s’est manifesté avant l’autre. Le train "vient" du coté de ce capteur.

La probabilité que les 2 capteurs RFID, chacun associés à un Nano ou un Mini, par exemple et placés aussi loin l’un de l’autre que possible, soient activés en même temps, est très faible. Mais cela peut arriver. Dans ce cas la détection sera perdue, mais la détection suivante aura de bonne chance d’être valide. Petit à petit tous les trains seront bien détectés.

Conclusion

Le choix du RFID est interessant parce que c’est facile à intégrer à un projet Arduino et qu’il n’y a pas de carte électronique à développer.
A ce propos, Sparkfun distribue le nouveau module ID12LA qui semble plus intéressant (plus grande plage de tension d’alimentation), mais toujours à 29$.

Je suis totalement satisfait de la solution RFID. J’ai réalisé un suivi de mes trains en plaçant le lecteur en sortie de gare, point de passage obligatoire du trafic.

La connaissance de la position des trains est ainsi totalement dynamique. Le système découvre les trains les uns après les autres, n’empêchant aucune manœuvre manuelle.

Le TCO affiche les numéros de trains dans chaque canton à l’aide d’un afficheur à 7 segments.

A partir de cette connaissance des positions, j’ai réalisé un block-système simple.

14 Messages

  • Un capteur RFID 13 février 2016 11:48, par Wapata

    Je me suis aussi intéressé au RFID pour faire une gare de triage gravitationnelle. Un tag RFID par wagon et par loco. Tag rfid autocollant sous les wagons. Je me suis heurté au problèmes d’interférence moteurs, distance entre le capteur et les étiquettes, et enfin la place disponible pour le tag en N. À noter que je n’étais pas dans cette game de fréquence.
    Pour la détection des trains, il me semble important de notifier que les barrières infrarouge doivent êtres placées en diagonale des voies (comme dans le métro toulousain échelle 1), cela permet de capter un train sans coupures entre les wagons.
    PS : si tout le monde avait des tag RFID sous ou dans son matériel lord de expositions, on pourrait lancer tous les wagons dans une gare, qui s’occuperait de trier le matériel selon les propriétaires à la fin des expos. Ou celon le type de wagons ou destination pendant les expos.

    Répondre

  • Un capteur RFID 13 février 2016 22:58, par Dominique

    Ah, enfin un vrai supporteur du RFID !

    Je suis complètement d’accord avec vous :

    • Je pense que j’ai mentionné la mise en biais des barrières infrarouges pour limiter l’effet du trou entre 2 wagons. En tout cas c’est ce que j’ai fait dans mon réseau, avec en plus une petite tempo (genre debouncing) pour éliminer les trous récalcitrants !
    • Avec l’ID12, la meilleure place pour les capsules n’est plus sous une loco ou un wagon, mais dedans ! Pour les wagons et voitures c’est vraiment facile. Le détecteur ID12 peut même être placé au dessus du train (dans un tunnel par exemple).
    • L’idée d’une gare de triage est excellente. Mais le coût n’est pas négligeable !

    Répondre

  • Un capteur RFID 14 février 2016 10:52, par Wapata

    Je me promet de revenir ici en discuter quand j’aurais emménagé et ressortis mes montages.

    Dans l’absolu, le prix ’utile’ n’est pas élevé (par rapport au prix intégré dans un module ou un réseau décoré et/ou aux normes. Après tout, avec 4 aiguilles, on peut gérer 4 utilisateurs plus un voie poubelle en cas de mauvaise détection (ou si il y a plus que 4 utilisateurs).
    Plus un capteur RFID, plus une barrière IR, plus un deteleur (facultatif si on met les doigts). Et enfin, je crois que Rocrail/JMRI peut s’occuper de gérer tout ça.

    Reste le prix des tags RFID, en très gros, le prix de reviens est très faible. Pour moi c’était plus chère car je n’avais trouvé des autocollants que sur une seule fréquence.
    Vivement que je puisse revoir tout ça !

    Répondre

    • Un capteur RFID 14 février 2016 14:28, par Dominique

      You welcome !

      des articles intéressants en perspective !

      Répondre

  • Perturbation capteur RFID et capteur IR réflectif 27 février 2017 17:16, par Virginia

    Bonjour,
    J’essaie de faire un montage similaire mais j’utilise un lecteur de tag différent de chez Parallax (https://www.parallax.com/product/28140).
    Le problème est qu’avec Arduino, le lecteur de tag fonctionne normalement seul, le capteur réflectif aussi seul marche bien mais quand je branche les deux, le lecteur de tag arrête de fonctionner. Avez-vous rencontré ce genre de problème ? Il semble perturber la lecture des tags.
    Par avance merci pour vos conseils.

    Répondre

    • Perturbation capteur RFID et capteur IR réflectif 27 février 2017 17:52, par Dominique

      Bonjour,

      Je ne connais pas ce lecteur Parallax mais il devrait fonctionner de la même manière par radio et ne devrait pas etre sensible aux infrarouges des capteurs réflectifs.

      Je pense que vous avez simplement une erreur de montage, vérifiez votre schéma et les consommations de courant, voire un bug logiciel.

      Ne voyant ni l’un ni l’autre, je ne peux en dire plus.

      Répondre

  • capteur RFID pour barrières de passage à niveau. 26 juillet 2017 19:38, par seguin

    l’utilisation d’un RFID me semble intéressante puisqu’elle ne nécessite pas d’être intégrée à arduino et qu’il n’y a pas de carte électronique à développer.

    Par contre, qui définit le le temps de fermeture des barrières du PN après passage d’un train - ma hantise est le mot programmation quel que soit le produit à programmer !
    Merci de me documenter + plan

    Cordialement - JS

    Répondre

    • capteur RFID pour barrières de passage à niveau. 26 juillet 2017 21:08, par Dominique

      Il n’y a pas de carte RFID à développer puisque ce sont des modules "prêts à brancher", mais il y a tout de même une intégration avec l’Arduino sous forme logicielle : vous n’ y couperez pas !!

      Après ça, en faire une application de commande de passage à niveau nécessite aussi le développement de logiciel, vous n’y couperez pas non plus !

      Mais vous avez l’article Etude d’un passage à niveau universel qui vous mâche le travail.

      Avec ces 2 articles, dont celui-ci, c’est l’occasion de vous lancer dans la programmation Arduino, après, je vous le conseille, la lecture des articles de la section "Pour débuter" avec les exercices associés. Ce n’est pas sorcier !!

      Bon courage et bonne vacances
      Dominique

      Répondre

  • Un capteur RFID 28 mai 2018 17:21, par Florent

    Bonjour messieurs dames,
    pour le système RFID, il n’est pas forcément nécessaire d’utiliser le capteur de chez Sparkfun à 30 euros environ, le capteur RC522 en est un autre : prix 2 euros, communication : bus SPI, fréquence : 13.56mHz, distance tag-lecteur : jusqu’à 10 cm ; je pense qu’il peut être fort intéressant

    Voir en ligne : vidéo youtube de U=RI

    Répondre

  • Un capteur RFID 31 août 2021 22:04, par Harry

    bonjour j’ai un projet scolaire qui porte sur l’accessibilité de nos informations personnels et les nouvelles mesures que chacun doit adopter avec l’arrivés des nouvelles technologies. une partie de mon devoirs ( la partie projet/démonstration ) consiste à montrer à l’aide de mon antenne RFID la facilité d’obtenir des informations sur un passeport éléctronique/CB/Carte navigo etc... Mais qu’avec des comportements et des habitudes simple on peut ce protéger. Mais je me retrouve bloqué sur ce point. Comment relier mon antenne à mon ordinateur ? Comment savoir si les modules que je prends son compatible ? Quelles modules choisir etc. On m’a conseillé wpi405 ou wp 801 ou Arduno Uno. Merci de vos réponse cordialement Harry :)

    Répondre

  • Un capteur RFID 31 août 2021 23:12, par Dominique

    Je ne peux pas répondre à vos interrogations qui sortent du cadre du modélisme ferroviaire. Vous devez chercher sur le forum Arduino et ceux relatif à la RFID. Désolé.

    Répondre

  • Un capteur RFID 6 octobre 2023 10:20, par Deronne Yves

    Bonjour, grâce à cet article j’ai réalisé une gare de triage avec 4 voies de tri.
    Le grand dommage c’est que l’on trouve sur le web que des programmes "lecture self oui et non" et pas de sélection multiple.
    Mais je m’en suis sorti avec un programme pour identification de quatre lots de wagons et les orienter.

    Répondre

Réagissez à « Un capteur RFID »

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.)

Rubrique « Projets »

Les derniers articles

Les articles les plus lus