LOCODUINO

Aide
Forum de discussion
Dépôt GIT Locoduino
Flux RSS

mardi 19 mars 2024

Visiteurs connectés : 91

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

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 »

LaBox, Une Centrale DCC polyvalente et abordable (1)

LaBox, Une Centrale DCC polyvalente et abordable (2)

LaBox, Une Centrale DCC polyvalente et abordable (3)

Comment piloter trains et accessoires en DCC avec un Arduino (1)

Comment piloter trains et accessoires en DCC avec un Arduino (2)

Comment piloter trains et accessoires en DCC avec un Arduino (3)

Comment piloter trains et accessoires en DCC avec un Arduino (4)

SGDD : Système de Gestion DD (1)

SGDD : Système de Gestion DD (2)

SGDD : Système de Gestion DD (3)

La PWM : Qu’est-ce que c’est ? (1)

La PWM : Qu’est-ce que c’est ? (2)

La PWM : Qu’est-ce que c’est ? (3)

La PWM : Qu’est-ce que c’est ? (4)

Mise en oeuvre du Bus CAN entre modules Arduino (1)

Mise en oeuvre du Bus CAN entre modules Arduino (2)

Un gestionnaire en C++ pour votre réseau (1)

Un gestionnaire en C++ pour votre réseau (2)

Un gestionnaire en C++ pour votre réseau (3)

Un gestionnaire en C++ pour votre réseau (4)

Réalisation de centrales DCC avec le logiciel libre DCC++ (1)

Réalisation de centrales DCC avec le logiciel libre DCC++ (2)

Réalisation de centrales DCC avec le logiciel libre DCC++ (3)

Contrôleur à télécommande infrarouge pour centrale DCC++

Gestion d’une gare cachée (1)

Gestion d’une gare cachée (2)

Gestion d’une gare cachée (3)

La carte Satellite V1 (1)

La carte Satellite V1 (2)

La carte Satellite V1 (3)

La carte Satellite V1 (4)

La carte Satellite V1 (5)

Chenillard de DEL

Enseigne de magasin

Feux tricolores

Multi-animations lumineuses

L’Arduino et le système de commande numérique DCC

Un décodeur d’accessoire DCC versatile basé sur Arduino

Un moniteur de signaux DCC

Une barrière infrarouge

Un capteur RFID

Un TCO xpressnet

Une animation sonore

L’Arduino au coeur des systèmes de pilotage analogiques ou numériques

Calcul de la vitesse d’un train miniature avec l’Arduino

La génèse d’un réseau 100% Arduino

Une horloge à échelle H0

Simulateur de soudure à arc

Un automatisme de Passage à Niveau

Automatisation du pont FLEISCHMANN 6152 (HO) avec un ESP32 (1)

Identifier et localiser vos trains avec le RFID/NFC et un bus CAN.

Etude d’un passage à niveau multivoies

La rétro-signalisation sur Arduino

Décodeur pour aiguillage à solénoïdes sur Arduino

Un décodeur DCC pour les signaux à deux ou trois feux sur Arduino NANO/UNO

Etude d’un passage à niveau universel

Réalisation pratique d’un système de mesure de vitesse à l’échelle N

Une Passerelle entre le bus S88 et le bus CAN pour la rétro signalisation

Un décodeur DCC pour 16 feux tricolores

Block Automatique Lumineux avec la carte shield "Arduino 4 relays"

Réalisation d’un affichage de gare ARRIVEE DEPART

Ménage à trois (Ordinateur, Arduino, réseau)

Réalisation d’un va-et-vient automatique et réaliste

Souris et centrale sans fil

Communications entre JMRI et Arduino

Annonces en gare avec la RFID

Une croix de pharmacie animée avec Arduino UNO

Réalisation d’un wagon de mesure (distance et vitesse)

Passage à niveau géré par Arduino (1)

Passage à niveau géré par Arduino (2)

Passage à niveau géré par Arduino (3)

Passage à niveau géré par Arduino (4)

Passage à niveau géré par Arduino (5)

Une manette simple et autonome pour LaBox

Éclairer le réseau (1)

Éclairer le réseau (2)

Block Automatique Lumineux à 8 cantons analogiques

Un décodeur DCC pour les plaques tournantes Fleischmann et Roco

Éclairer le réseau (3)

Éclairer le réseau (4)

Éclairer le réseau (5)

JMRI pour Ma première centrale DCC

Rocrail pour Ma première centrale DCC

CDM-Rail pour Ma première centrale DCC (1)

CDM-Rail pour Ma première centrale DCC (2)

Banc de test pour les décodeurs DCC

Ma première manette pour les aiguillages DCC

Mon premier décodeur pour les aiguillages DCC

Boitier 3D pour la station DCC minimale

Va-et-vient pour deux trains

Un programme pour régler facilement les servos moteurs avec un ESP32

Affichage publicitaire avec Arduino (1)

Affichage publicitaire avec Arduino (2)

TCO Web interactif avec des ESP32 et des ESP8266 (1)

TCO Web interactif avec des ESP32 et des ESP8266 (2)

TCO Web interactif avec des ESP32 et des ESP8266 (3)

TCO Web interactif avec des ESP32 et des ESP8266 (4)

TCO Web interactif avec des ESP32 et des ESP8266 (5)

Les derniers articles

LaBox, Une Centrale DCC polyvalente et abordable (3)


Thierry

LaBox, Une Centrale DCC polyvalente et abordable (1)


Thierry

LaBox, Une Centrale DCC polyvalente et abordable (2)


Dominique, msport, Thierry

Un programme pour régler facilement les servos moteurs avec un ESP32


bobyAndCo

TCO Web interactif avec des ESP32 et des ESP8266 (5)


utpeca

TCO Web interactif avec des ESP32 et des ESP8266 (4)


utpeca

TCO Web interactif avec des ESP32 et des ESP8266 (3)


utpeca

TCO Web interactif avec des ESP32 et des ESP8266 (2)


utpeca

TCO Web interactif avec des ESP32 et des ESP8266 (1)


utpeca

Affichage publicitaire avec Arduino (2)


catplus, Christian

Les articles les plus lus

Réalisation de centrales DCC avec le logiciel libre DCC++ (3)

La PWM : Qu’est-ce que c’est ? (1)

Mon premier décodeur pour les aiguillages DCC

La rétro-signalisation sur Arduino

Réalisation de centrales DCC avec le logiciel libre DCC++ (1)

Comment piloter trains et accessoires en DCC avec un Arduino (1)

Chenillard de DEL

LaBox, Une Centrale DCC polyvalente et abordable (1)

Mise en oeuvre du Bus CAN entre modules Arduino (2)

Réalisation d’un va-et-vient automatique et réaliste