LOCODUINO

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

mercredi 26 juillet 2017

28 visiteurs en ce moment

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

. Par : Daniel

Cet article décrit un contrôleur pour Arduino UNO destiné à commander la centrale DCC  ++ telle que proposée par Gregg E. Berman version 1.2.1+.
Il est basé sur une télécommande à infrarouge telle que celles utilisées pour les TV, chaînes HiFi ou autres décodeurs.
Il convient bien pour de petits réseaux avec commande manuelle des appareils de voie et accessoires.
Si vous cherchez un contrôleur simple avec les fonctions de base et qui utilise une télécommande à infrarouge courante, cet article est fait pour vous !

Présentation

L’utilisation de la télécommande offre deux avantages principaux :

  • La liaison est sans fil ;
  • La construction mécanique de la centrale est réduite à sa plus simple expression : il n’y a pas de clavier, d’inverseurs mécaniques ou autres boutons rotatifs à prévoir.

De plus, une télécommande infrarouge est facile à trouver… surtout si elle a perdu son appareil !

Elle présente par contre l’inconvénient de devoir être plus ou moins orientée vers le récepteur pour fonctionner correctement ; cependant, à l’instar d’une télécommande de téléviseur, la transmission fonctionne également par réflexion sur les murs et plafonds de sorte que peu de directions sont inefficaces.

Les ordres émis par le contrôleur sous forme de messages standardisés DCC  ++ (ex. <t1 3 50 1>) sont transmis via l’interface série (TX) à la centrale DCC  ++ qui se charge de les interpréter, de les mettre en forme et de les amplifier (module LMD18200) en direction de la voie. Le dessin ci-dessous résume l’organisation générale utilisée.

Ce que fait ce contrôleur :

  • Inscription de CV sur la voie principale (donc pas sur voie de programmation) ;
  • Commande de la vitesse (128 crans) et du sens de marche des locos ;
  • Conduite simultanée de plusieurs locos ; chaque loco est appelée par un seul bouton de la télécommande qui lui est dédié ;
  • Configuré pour 4 locos mais c’est extensible car cela dépend du nombre de boutons disponibles sur la télécommande ; les numéros de décodeurs associés à chaque loco sont enregistrés dans l’EEPROM.
  • Coupure/activation du signal DCC sur la voie par la télécommande ;
  • Activation/désactivation de fonctions via un bouton dédié pour chacune ; les fonctions implémentées sont : FL (feux d’éclairage loco) et F1 à F4 ; on peut étendre car cela dépend du nombre de boutons disponibles sur la télécommande ;
  • Affichage sur LCD des paramètres de la loco active (numéro, vitesse, sens de marche et fonctions actives) ;
  • Commande de vitesse et sens de marche des locos.
    Il y a deux moyens de régler la vitesse :
    • commande traditionnelle  : appuyez sur la "flèche haut" pour augmenter la vitesse et "flèche bas" pour la diminuer ; la variation a lieu cran par cran.
    • commande rapide  : appuyez sur un chiffre de 0 à 9 -> appui sur 1=cran 15, 2=cran 25, 3=cran 35 ,.., 9=cran 95 ; 0=arrêt ;
      • Cette commande rapide permet d’obtenir immédiatement une vitesse prédéfinie en épargnant les appuis sur les touches "flèche haut" et "flèche bas".
      • Les deux commandes peuvent être utilisées simultanément et se complètent naturellement ; par exemple, une loco entre en gare (appui sur la touche 4 => cran 45 pour passer sur l’aiguillage en position déviée), puis approche de l’extrémité du quai (appui sur la touche 1 => cran 15) et l’arrêt a lieu par appuis successifs sur la "flèche bas" (diminution cran par cran) ou appui sur la touche 0.
      • L’appui sur la touche 0 garantit une vitesse nulle.

Attention ! En pratique, le contrôleur n’impose pas une vitesse (en km/h) mais un cran de vitesse déterminé (0 à 127) ; un réglage du décodeur de chaque loco est nécessaire (mais pas obligatoire, c’est à vous de voir) pour assurer la correspondance avec la vitesse à l’échelle.

  • Répétition sonore des commandes principales des locos (numéro de loco sélectionnée, modification du sens de marche) et des réglages des CV.

Ce que ce contrôleur ne fait pas :

  • Commander des aiguillages ou des accessoires (quoique ce ne soit pas impossible à priori) ;
  • Lire les CV d’un décodeur.

La carte Centrale DCC++

La solution complète a donc recours à deux cartes distinctes :

  • La carte Centrale DCC++
  • La carte contrôleur

Pour la centrale DCC++, référez-vous à l’excellent article Réalisation de centrales DCC avec le logiciel libre DCC++ (3) qui décrit la réalisation technique pour la plupart des matériels. La communication entre la carte centrale DCC++ et la carte contrôleur doit se réaliser via la liaison série comme décrit ci-dessus.

La centrale DCC++ utilisée dans la suite de cet article fait appel à :

  • 1 carte Arduino UNO ;
  • 1 booster à base de LMD 18200 ;
  • 1 module convertisseur courant/tension MAX471.

Au sujet du module à base de LMD18200, voici une petite astuce ; les commandes passées sur la baie ne permettent pas toujours de maîtriser parfaitement le matériel livré ; on est jamais à l’abri de quelques surprises : sur le module qui m’a été livré, une partie des connections étaient repérées en … chinois ! Comme mes connaissances en cette langue sont (très, très) lacunaires, j’ai dû procéder par déduction. Voici les correspondances obtenues :

Tableau de correspondance
Indication sur le moduleCorrespondance
PWM   PWM  
Chinois Brake
Chinois DIR
GND GND
+5V +5V

La carte contrôleur

Présentation

Pour le contrôleur, il faut :

  • 1 carte Arduino UNO ;
  • 1 afficheur LCD 2 lignes 16 caractères I2C (par exemple le display I2C/TWI LCD1602 de DFROBOT, article DFR0063/TOY0046) ;
  • 1 capteur infrarouge TSOP 4838 ;
  • 1 buzzer ;
  • 1 télécommande IR ; c’est une télécommande récupérée d’un ancien lecteur/enregistreur de DVD de marque PANASONIC ; une autre peut également convenir, à condition qu’elle comporte suffisamment de boutons…
Télécommande TV/DVD Panasonic

Le croquis décrit inclut également les codes pour une télécommande SONY (Modèle RM-ED050) de téléviseur BRAVIA.

Télécommande SONY pour laquelle les codes sont également fournis

Le tout, à l’état de prototype fonctionnel, est actuellement monté sur une planche en MDF (voir la photo) ; le buzzer n’est ici pas encore raccordé.

Prototype de la centrale DCC++ avec télécommande infrarouge

A l’avant-plan, on observe de gauche à droite le convertisseur courant/tension MAX471, le booster à base de LMD18200 (fils noir et jaune = départ vers la voie) et la carte "Centrale DCC++" ; la carte contrôleur se situe derrière l’afficheur LCD. Le pupitre à l’extrême droite ne fait pas partie du projet.

En haut à gauche, un moteur et son décodeur qui servent de banc d’essai pour la centrale mais aussi pour les décodeurs et les locos.

Chaque carte est alimentée par sa propre source de tension. La puissance est fournie au booster par une alimentation de PC portable (U = 19,5 VDC) dont la fiche DC a été adaptée en conséquence. Dans une version plus définitive, on pourra alimenter le tout via une source de tension unique de 19 V DC de laquelle on dérivera par un circuit abaisseur de tension une sortie 9 V DC vers les deux cartes Arduino.
L’alimentation de PC dispose de sa propre protection contre les courts-circuits qui est particulièrement efficace mais elle pose un problème de sélectivité ; en effet, elle déclenche toujours en premier lieu avant que les détections par logiciel n’aient pu constater le problème. Ce qui signifie que lorsqu’une loco talonne un aiguillage dont le cœur est alimenté électriquement (occasionnant un court-circuit franc) tout s’arrête et il faut faire un reset général.

Voici les liaisons à réaliser pour le contrôleur :

Schéma du contrôleur

Le récepteur IR

Le capteur IR TSOP 4838 est raccordé comme suit à l’Arduino UNO :

  • Broche 1 (à gauche lorsque le capteur est vu de face) = Vout (broche 3 de l’Arduino)
  • Broche 2 (au centre) = GND raccordée à un GND de l’Arduino
  • Broche 3 (à droite lorsque le capteur est vu de face) = Vcc (+5v de l’Arduino)

L’afficheur

L’affichage se réalise à l’aide d’un LCD 2 lignes 16 caractères I2C ; celui utilisé ici est le LCD1602 de DFROBOT, article TOY0046.
Il est raccordé comme suit :

  • Vcc raccordée au +5V de la carte
  • GND raccordée à un GND de la carte
  • SDA à la broche A4
  • SCL à la broche A5

Attention ! Dans certaines documentations, ces 2 broches sont inversées à tort.

Pour votre facilité, voici la librairie utilisée pour l’afficheur :

Librairie utilisée pour l’écran LCD I2C

Les répétitions sonores

Pour le confort d’utilisation, la réception de certaines commandes est confirmés par un signal sonore :

  • commande du sens de marche : un bip aigu ;
  • sélection d’une loco : bip grave ; le nombre de bips correspond au numéro d’ordre de la loco sélectionnée (1 bip pour loco 1, …, 4 bips pour loco 4) ;
  • confirmation de l’enregistrement de CV (1 bip aigu) ou de leur valeur (2 bips aigus) et de l’envoi de la commande à la centrale (3 bips graves).
  • confirmation de l’enregistrement du lien entre un bouton loco et une adresse décodeur.

La répétition sonore est confiée à un buzzer (ou HP) relié entre la broche 8 (côté +) et (côté -) le GND de la carte.
La librairie IRLib et l’instruction TONE font toutes les deux appel au TIMER 2 ; pour éviter des conflits de timer, on utilisera la librairie NewTone.

Librairie NewTone

Installez-la dans le dossier \libraries\ de votre IDE.

La liaison avec la centrale DCC++

Vous devez lier les cartes "centrale DCC++" et "contrôleur" par la liaison série TX/RX : la broche 1 TX0 de la carte "contrôleur" doit être reliée à la broche 0 RX0 de la carte "centrale DCC++". N’oubliez pas de lier les broches GND des deux cartes entre elles.
Attention ! Comme vous disposerez de deux cartes Arduino UNO reliées par la liaison série, vous devez retirer cette liaison temporairement lors du téléversement des croquis sous peine d’obtenir une erreur en fin de compilation. N’oubliez pas de la replacer ensuite…

Voici le croquis Arduino à téléverser dans la carte « contrôleur ».

Croquis du contrôleur avec télécommande IR

Adaptation du croquis à votre télécommande.

Une adaptation du croquis à votre télécommande est nécessaire car il y a fort à parier que les codes IR envoyés seront différents de ceux de la PANASONIC.

La partie du code éventuellement à adapter est reproduite ci-dessous.

  1. //definition des codes de la telecommande Panasonic
  2.  
  3. //codes pour télécommande Panasonic librairie IRLib
  4. #define arrow_up 3796283338
  5. #define repeat1 2166136261 // certaines télécommandes envoient un (des) code(s) spécifique(s) lors de l'appui long ou du maintien sur une touche
  6. #define repeat2 1556999678// certaines télécommandes envoient un (des) code(s) spécifique(s) lors de l'appui long ou du maintien sur une touche
  7. #define arrow_down 989538004
  8. #define arrow_left 1296259434
  9. #define arrow_right 3138313506
  10. #define digit_0 950179491
  11. #define digit_1 1366498449
  12. #define digit_2 1242645753
  13. #define digit_3 577270721
  14. #define digit_4 278230305
  15. #define digit_5 3236444089
  16. #define digit_6 2050858721
  17. #define digit_7 1376882089
  18. #define digit_8 1077841673
  19. #define digit_9 809146499
  20. #define button_pause 2860196199
  21. #define button_play 3737721253
  22. #define button_light 1562762607 // fonction F0
  23. #define button_OK 189926636
  24. #define button_PROG 618970697
  25. #define button_DELETE 52104363
  26. #define button_loco1 3096697063
  27. #define button_loco2 4003586079
  28. #define button_loco3 1913490470
  29. #define button_loco4 3857854961
  30. #define button_F1 568341793 //rouge
  31. #define button_F2 938060567 //vert
  32. #define button_F3 645776457 //bleu
  33. #define button_F4 309669706
  34. #define button_F5 400358607
  35. #define button_F6 191349048
  36.  
  37. // codes pour télécommande TV SONY RM-ED050
  38. /*
  39. #define arrow_up 3962033213
  40. #define repeat1 425423268 // certaines télécommandes envoient un (des) code(s) spécifique(s) lors de l'appui long ou du maintien sur une touche
  41. #define repeat2 1556999678// certaines télécommandes envoient un (des) code(s) spécifique(s) lors de l'appui long ou du maintien sur une touche ; pas utilisee ici
  42. #define arrow_down 141285788
  43. #define arrow_left 440544835
  44. #define arrow_right 2721830948
  45. #define digit_0 990610224
  46. #define digit_1 544993039
  47. #define digit_2 3896860046
  48. #define digit_3 3417827657
  49. #define digit_4 740241778
  50. #define digit_5 2422134005
  51. #define digit_6 2363614204
  52. #define digit_7 828053765
  53. #define digit_8 3330015670
  54. #define digit_9 3021527401
  55. #define button_pause 920158043
  56. #define button_play 1664997572
  57. #define button_light 3234147071 //bouton jaune fonction F0
  58. #define button_OK 1922410756 //bouton central
  59. #define button_PROG 726507874 //bouton record point rouge
  60. #define button_DELETE 3934206650 //bouton EXIT
  61. #define button_loco1 583823042 //bouton retour debut |<<
  62. #define button_loco2 735876127 //bouton retour <<
  63. #define button_loco3 3173596934 //bouton avance >>
  64. #define button_loco4 1492441743 //bouton avance fin >>|
  65. #define button_F1 3795534161 // bouton rouge
  66. #define button_F2 3461693924 //bouton vert
  67. #define button_F3 2046533204 //bouton bleu
  68. #define button_F4 191349048
  69. * /

Télécharger

Si vous possédez une télécommande PANASONIC, il est possible que cela fonctionne immédiatement.
Si vous disposez d’une télécommande SONY pour téléviseur, essayez d’abord en activant les codes insérés dans le croquis. Pour ce faire, mettez sous forme de commentaires (=commentez par /* et */) les codes pour télécommande PANASONIC et retirer les balises de commentaires (/* et */ = décommentez) pour la télécommande SONY ; en espérant que les codes SONY soient relativement universels…
Vous pourriez également essayer avec une télécommande universelle en sélectionnant ces mêmes codes.

Si aucune de ces solutions ne donne satisfaction, vous pouvez modifiez les codes en regard de chaque instruction #define du bouton correspondant.
En activant le moniteur série de l’IDE, le croquis tel que présenté ne permet pas de visualiser le code IR reçu. Pour le rendre visible, vous devez compiler le croquis en mode ’affichage code’ ; pour cela, décommentez la ligne

  1. //#define affichage_code

Ce qui vous permet de contrôler la réception IR et de noter le code correspondant à la touche activée sur la télécommande.
Ainsi, si le code correspondant à « flèche haut » sur votre télécommande est 4589652, remplacer la ligne ‘#define arrow_up 3796283338’ par ‘#define arrow_up 4589652’. Procédez de même pour toutes les touches.

Dans certaines télécommandes, vous obtiendrez 2 codes en appuyant sur une seule touche. Le deuxième code correspond alors à une instruction de répétition dont vous ne devez pas tenir compte.

Attention ! N’oubliez pas de recommenter la ligne lorsque vous aurez obtenu la correspondance pour tous les codes sinon le croquis ne fonctionnera pas bien.

Le tableau qui suit reproduit la correspondance entre les touches des télécommandes PANASONIC et SONY, les noms de variables associées dans le croquis et les valeurs numériques utilisées dans le croquis. Ces valeurs servent à déclencher des actions dans la carte contrôleur.

Tableau de correspondance
Bouton PANASONICBouton SONYValeur numériqueVariable
0 0 0 digit_0
1 1 1 digit_1
2 2 2 digit_2
3 3 3 digit_3
4 4 4 digit_4
5 5 5 digit_5
6 6 6 digit_6
7 7 7 digit_7
8 8 8 digit_8
9 9 9 digit_9
Flèche gauche Flèche gauche 10 arrow_left
Flèche droite Flèche droite 11 arrow_right
Flèche haut Flèche haut 12 arrow_up
Flèche bas Flèche bas 13 arrow_down
OK central (+) 20 button_OK
PROG RECORD (point rouge) 21 button_PROG
PAUSE PAUSE 24 button_pause
PLAY PLAY 25 button_play
loco_1 │<< 26 button_loco1
loco_2 << 27 button_loco2
loco_3 >> 28 button_loco3
loco_4 >>│ 29 button_loco4
DELETE EXIT 30 button_delete
Jaune Jaune 40 button_light
Rouge Rouge 41 button_F1
Vert Vert 42 button_F2
Bleu Bleu 43 button_F3
REC TV 44 button_F4
Jaune Jaune 40 button_light
INPUT SELECT DIGITAL 22 button_adresseLoco

La librairie à utiliser pour la réception infrarouge peut être téléchargée en https://github.com/cyborg5/IRLib ; elle doit ensuite être installée dans le dossier \libraries\ de votre IDE.

Vous la retrouverez également ci-dessous.

Librairie IRLib

Comme mentionné ci-dessus, les adresses DCC des décodeurs sont définies dans l’EEPROM. Avant de commencer, vous devez les enregister. Voyez le point 6.4 ci-dessous.

Il est souhaitable de conserver au moins une des adresses à 3 car c’est le réglage d’usine de tous les décodeurs.

Les commandes de fonction

Les commandes de fonctions implémentées dans ce croquis sont limitées au groupe F0-F4 ; le texte ci-dessous explique la logique à utiliser pour étendre les fonctions jusqu’à F12 ; pour les fonctions F13 à F28, il faudra consulter la documentation relative aux commandes DCC++.

La centrale DCC++ peut traiter les commandes des fonctions F0 (parfois appelée FL) à F28.
Celles-ci sont rassemblées en 5 groupes de fonctions :

F0 - F4
F5 – F8
F9 – F12
F13 – F20
F21 – F28

En standard, ce contrôleur gère les fonctions F0 à F4 ; il serait cependant aisé d’étendre les capacités jusqu’à F12 (très facile) ou F28 (pas difficile). Le tout est de disposer de suffisamment de boutons sur votre télécommande…

Une des particularités dont il faut tenir compte tient au fait que la centrale n’enregistre pas l’état (activé=ON ou désactivé=OFF) de chacune des fonctions. Il sera donc nécessaire d’enregistrer cet état pour chaque loco.

Logique de détermination de la commande à envoyer au décodeur.

Pour activer une fonction, la syntaxe prévoit d’envoyer une commande DCC++ composée comme suit :

<f CAB byte1 byte2>

  • f est le caractère qui initie la commande de fonction
  • CAB est le numéro du décodeur de la loco concernée
  • byte1 est un chiffre qui synthétise l’ensemble des fonctions du groupe qui sont actives en même temps
  • byte2 idem, mais n’est utilisé que pour F13 à F28 ; à omettre dans les autres cas.

C’est le chiffre ’byte1’ qui sera interprété par le décodeur de la loco pour piloter les sorties correspondantes aux fonctions actives.

Ce chiffre est constitué comme suit :
D’abord, un nombre propre à chaque groupe de fonction :

  • 128 pour le groupe F0-F4 ;
  • 176 pour le groupe F5-F8 ;
  • 160 pour le groupe F9-F12 ;

Auquel on ajoute :

Fonction à activer Chiffre à ajouter
F0 16
F1 1
F2 2
F3 4
F4 8
F5 1
F6 2
F7 4
F8 8
F9 1
F10 2
F11 4
F12 8

Ainsi, pour activer F3 et F0 simultanément, il faut envoyer : 128 (chiffre du groupe F0-F4) + 4 (chiffre de F3) + 16 (chiffre de F0) =148.
Mais comment faire pour, par exemple, désactiver F3 ? On envoie alors uniquement : 128 + 16 = 144 (car seule F0 reste active). Pour tout désactiver en une fois, on envoie uniquement 128.

Attention ! Pour chaque groupe de fonctions, il faut envoyer une commande séparée ; autrement dit, si vous souhaitez commander F0 et F6 simultanément pour la loco dont l’adresse est 20, il faudra envoyer deux commandes :

<f 20 144> pour le groupe F0-F4
<f 20 178> pour le groupe F5-F8

Le croquis

Pour gérer ces commandes, le croquis est articulé autour de deux tableaux :

  • LocoFonction [loco][fonction] : mémorise pour chaque loco l’état de chaque fonction par TRUE (fonction activée) ou FALSE (fonction désactivée).
  • CommandeFonction [loco] : mémorise pour chaque loco le chiffre qui synthétise l’état des fonctions du groupe F0-F4 ; pour l’exemple ci-dessus (F0 et F3 activées simultanément), le chiffre enregistré sera 148.

Le calcul et la mémorisation du chiffre dont question est assuré par la fonction Activation_Fonction (numéro de fonction) qui est invoquée à chaque appui sur une touche de fonction.

Le croquis comporte également en fin de LOOP une routine de rafraîchissement régulier (toutes les 2000 msec=timerefresh) des commandes de fonction. En voici le détail.

  1. //rafraichissement regulier des commandes de fonction
  2. if ((time + timerefresh) < millis())//instruction de rafraichissement regulier des commandes de fonction
  3. {
  4. //confirmer la valeur CommandeFonction de chaque loco
  5. for (int i = 0; i <= maxLocos; i++)
  6. {
  7. #ifndef affichage_code //evite d'afficher les commandes a destination de la centrale lorsque l'on affiche les codes
  8. Serial.print("<f ");
  9. Serial.print(LocoAdresse[i]);
  10. Serial.print(" ");
  11. Serial.print(CommandeFonction[i]);
  12. Serial.write(" >");
  13. Serial.println(" ");//provoque l'affichage des commandes en colonne
  14. #endif
  15. }//fin de FOR (int i = 0; i <= maxLocos; i++)
  16.  
  17. time = millis();
  18. }// fin de rafraichissement if(time+timerefresh)

Télécharger

L’enregistrement des adresses des locos en EEPROM

Dans ce croquis, les variables principales nécessaires à la commande des locos (adresse, vitesse et direction) sont enregistrées dans des tableaux.
Le tableau ci-dessous résume les liens faits dans le croquis entre les différentes variables (les valeurs des trois dernières colonnes sont données à titre d’exemple).

Indice Variable utilisée dans le croquis Valeur correspondante de bouton_valeur LocoAdresse [i] LocoSpeed [i] (0-127) LocoDirection [i] (0 ou 1)
0 button_loco1 26 3 0 0
1 button_loco2 27 20 45 1
2 button_loco3 28 62 30 0
3 button_loco4 29 80 0 1

Cependant, contrairement à la vitesse et à la direction, l’adresse de la loco est relativement invariable ; on pourrait donc imaginer définir les adresses "en dur" dans le croquis.
Cette possibilité impose cependant de téléverser une nouvelle version du croquis à chaque modification d’adresse.

Une solution plus élégante fait appel à l’enregistrement des adresses dans l’EEPROM. Pour plus de détails, allez consulter l’article Bibliothèque EEPROM qui en explique clairement la mise en œuvre.

La lecture des adresses est réalisée par une fonction lectureAdresse(), sans paramètre, qui lit toutes les adresse enregistrées dans l’EEPROM.

L’écriture quant à elle, utilise la fonction ecritureAdresse(numero_loco), qui a le numéro de loco comme paramètre ; cette solution permet d’épargner l’EEPROM en écriture en n’y accédant qu’à l’occasion d’une modification.

Comment utiliser ce contrôleur ?

Le mode d’emploi décrit les touches de la télécommande PANASONIC ; en consultant le tableau de correspondance ci-dessus, il est facile d’en déduire l’équivalence pour les télécommandes SONY ou autres.

La télécommande PANASONIC utilisée et les zones de boutons

Quatre menus sont disponibles et sélectionnables par les touches suivantes de la télécommande :

Menu STOP (touche PAUSE) : coupure du signal DCC vers la voie

Au démarrage, c’est le menu STOP qui est actif ; aucun signal n’est envoyé vers la voie.
Si ce menu est activé en cours d’exploitation normale (menu RUN), les valeurs de vitesse des engins de traction sont ramenées à 0 ; le sens de marche est conservé. Cette commande est donc également la touche d’arrêt général de toutes les locos.

Menu STOP

Menu RUN (touche PLAY) : commande des locos (exploitation normale)

Pour commencer l’exploitation normale, appuyez sur la touche PLAY. Sélectionnez la loco que vous souhaitez commander par appui sur la touche qui lui est dédiée (voir les 4 touches du fond sur la photo de la télécommande PANASONIC). La touche la plus à gauche = loco n°1. Par défaut, c’est la loco 1 qui est sélectionnée.
Pour régler la vitesse d’une loco, il y deux solutions :

  • Vous utilisez les flèches vers le haut (pour augmenter) ou vers le bas (pour diminuer) ; la progression a lieu cran par cran.
  • Vous utilisez le système plus rapide en appuyant sur une des touches numériques du clavier ; un appui sur 4 donne le cran 45, sur 8, le cran 85, sur 0, le cran 0 (arrêt), etc.

Pour inverser le sens de marche, utilisez les flèches gauche ou droite selon le cas (1 bip aigu).
Pour allumer/éteindre les feux, utilisez la touche jaune (fonction bascule ON/OFF) ; si la loco se retrouve sans tension (à cause d’un faux contact p. ex.), les feux retrouveront leur aspect après résolution du problème. Faites de même pour les autres fonctions. Par exemple, activez F3 (ou désactivez) en appuyant sur la touche bleue.
Pour un arrêt d’urgence, appuyez sur PAUSE ou STOP ; toutes les machines s’arrêtent mais conservent leur sens de marche ; appuyez sur PLAY pour remettre en service.

Menu RUN

L’écran renseigne sur la première ligne successivement le numéro de la loco sélectionnée (= adresse du décodeur correspondant, ici 62), le cran de marche (ici 25) et les fonctions sélectionnables (ici F = feux, 1=F1, 2 F2, etc.).
Sur la deuxième ligne, on identifie le menu actif (R=RUN), le sens de marche (ici > = avant) et l’état des fonctions (ici |=activées ou - = éteints) ; ici, F0 et F3 sont activées, les autres sont éteintes.

Menu PROGRAM (touche PROG/CHECK) : configuration des CV

Pour utiliser ce menu, il ne peut y avoir qu’une et une seule loco sur la voie.
Introduisez d’abord le numéro de la CV que vous voulez modifier sans les zéros non significatifs à gauche ; donc pour modifier la CV 1, tapez 1 puis confirmez par ENTER (1 bip aigu). Introduisez ensuite la valeur décimale que vous voulez lui affecter sans les zéros non significatifs à gauche ; pour la valeur 3, tapez 3 puis confirmez par ENTER (2 bips aigus). Un point d’exclamation apparaît alors confirmant l’envoi de la commande (3 bips graves). Pour retourner au menu RUN, appuyez sur PLAY.

Menu PROGRAM

Pour annuler en cours de configuration, appuyez sur DELETE.
Sur l’écran (en fin de réglage de la CV 3), la première ligne affiche >6 qui est le dernier chiffre entré par la télécommande ainsi que CV NUM 3 qui est le numéro de la CV sélectionnée à l’étape précédente. La deuxième ligne indique P (menu PROGRAM), le point d’exclamation de confirmation de l’envoi de la commande et la valeur sélectionnée pour la CV (ici 6).

Menu ADRESSE (touche INPUT SELECT) : modification du lien entre les boutons de commande et les adresses des décodeursconfiguration des CV

Lorsque vous utilisez le contrôleur pour la première fois, vous allez devoir créer un lien entre les boutons de commande des locos (loco1 à loco4) et l’adresse du décodeur correspondant.
Vous devez également utiliser ce menu dès que vous souhaitez modifier l’affectation d’un bouton pour commander une autre loco.

Pour commencer, appuyez sur la touche INPUT SELECT. Vous obtenez l’écran suivant :

Menu ADRESSE (1)

En appuyant sur les flèches gauche et droite, vous pouvez consulter les adresses des décodeurs enregistrées actuellement dans l’EEPROM pour chaque loco.
L’écran renseigne sur la deuxième ligne successivement A (qui identifie le menu ADRESSE), le numéro du bouton de la loco sélectionnée (sous LOC, ici 4), l’adresse de décodeur qui y est actuellement associée (sous NOW, ici 255), la nouvelle adresse éventuellement à affecter (0 signifie "pas de nouvelle association en cours").

Si vous souhaitez modifier cette association :
• appuyez sur OK ;
• introduisez la nouvelle adresse de décodeur que vous voulez associer (ici, on a choisi 62) ;
• acceptez par OK ; la modification est introduite dans l’EEPROM avec une confirmation sonore
• pour annuler, appuyez sur DELETE.

Menu ADRESSE (2)

Le bouton loco4 est maintenant associé au décodeur d’adresse 62 (indication CHANGED en première ligne).
Lorsque vous avez terminé, revenez au menu RUN.
A chaque démarrage, le contrôleur utilisera les adresses enregistrées dans l’EEPROM.

Conclusion

A l’usage, ce contrôleur est facile à réaliser car il comporte très peu de composants. Son utilisation est agréable grâce à la sélection directe de la loco à commander (1 seule touche) ainsi que par la possibilité de sélectionner directement une vitesse déterminée.

Pour le coût d’une carte Arduino UNO et d’une télécommande (de récupération) vous disposerez d’un contrôleur complètement équipé sans souder un seul composant !
Un rêve !

20 Messages

Réagissez à « Contrôleur à télécommande infrarouge pour centrale DCC++  »

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 »

Un 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

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

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)

Les derniers articles

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


Jean-Luc

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


Christian Bézanger

Réalisation d’un affichage de gare ARRIVEE DEPART


Gilbert

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


Daniel

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


Jean-Luc

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


bobyAndCo

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


Pierre59

Un décodeur DCC pour 16 feux tricolores


Dominique, JPClaude, Thierry

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


bobyAndCo

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


Dominique

Les articles les plus lus

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

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

Une barrière infrarouge

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

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

Feux tricolores

La rétro-signalisation sur Arduino

Un chenillard de DEL

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

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