Table des matières:
- Étape 1: Conception du système
- Étape 2: Émetteur
- Étape 3: récepteur
- Étape 4: Exécutez les locomotives
Vidéo: Garden Train - Arduino Wireless NMRA DCC : 4 étapes (avec photos)
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:08
Suite à la précédente instructable avec DCC sur le système de rail mort, j'ai développé l'idée plus loin avec une station de commande DCC à main avec clavier et écran LCD. La station de commande contient tout le codage requis pour les instructions NMRA DCC, mais au lieu de se connecter aux rails, les données sont transférées par le module radio RF24L01+ à un récepteur monté dans un camion ou sous la locomotive - partout où la place le permet.
Bien entendu, vos locomotives doivent être équipées d'un décodeur de capacité de charge adapté aux moteurs des moteurs.
Étape 1: Conception du système
L'Arduino Pro Mini est au cœur de la conception. Utilisation de Fritzing pour développer le circuit et produire des PCB.
J'ai pu utiliser le même PCB pour l'émetteur et le récepteur, économisant ainsi des coûts.
L'émetteur a des connexions pour le clavier et l'écran LCD tandis que le récepteur n'en a pas besoin et utilise le pont en H pour fournir la sortie DCC de la locomotive.
Un développement ultérieur comprend des connexions pour un pont en H plus grand si nécessaire pour des locomotives plus puissantes.
Le PCF8574 peut être supprimé si vous utilisez un écran LCD fourni avec le sac à dos permettant aux connexions SCA / SCL sur l'Arduino d'alimenter l'écran en utilisant seulement 2 fils. Liste des pièces: Total = environ 60 £ pour la station de commande DCC + 1 récepteurCoût des récepteurs supplémentaires = 10,00 £ environ chacun. + piles
Arduino Pro Mini. x 2 = 4,00 £
Clavier à membrane 4x3 = 3,00 £
Écran LCD 20 x 4 = 7,00 £
PCF5874 = 1,80 £
NRF24L01+. modules radio x 2 = 5,80 £
Fabrication de PCB pour 10 off (ou une carte Vero peut être utilisée) = 24 £ ou 4,80 £ pour 2 off
Régulateur 3,3 v = 0,17 £ (pack de 25 de RS Comp)
Régulateur 5v LM7805 = 0,30 £
Pont en H SN754410ne = 3,00 £
Piles AA 2700 maH rechargeables Lloytron x 12 = 22,00 £. (les batteries inférieures en maH sont moins chères)
Condensateurs, pots, broches, connecteurs, etc = 2,00 £ environ
Boîtier 190x110x60 mm = 8,00 £
Émetteur - chargeur de téléphone / batterie = 2,00 £
Étape 2: Émetteur
Le schéma de circuit est illustré où les broches D2 à D8 de l'Arduino Pro Mini sont connectées au clavier. Un potentiomètre de 100 k ohms est connecté à la broche analogique A0 pour le réglage de la vitesse. Les broches SDA et SCL forment la puce PCF8574 sont connectées aux broches A4 et A5 sur l'Arduino Pro Mini au moyen de fils soudés aux broches de la couche supérieure du Pro Mini.
Le croquis Arduino est joint pour téléchargement.
J'ai utilisé un écran LCD 20 x 4 permettant 4 lignes d'informations avec 20 caractères par ligne. Le clavier propose le menu suivant:
1 à 9 = adresse loco * = direction 0 = feux # = menu fonction pour les touches 1 à 8
Description de base de l'esquisse Arduino Pro Mini: Cette ligne de code organise le message DCC au format HEX. struct Message msg[MAXMSG] = {
{ { 0xFF, 0, 0xFF, 0, 0, 0, 0}, 3}, // msg inactif
{ { locoAdr, 0, 0, 0, 0, 0, 0}, 3} // 3 octets d'adresse
};
Pour stocker les paramètres de chaque locomotive, une série de tableaux sont configurés comme suit:
int la[20];// tableau pour contenir les numéros de locomotive
int sa[20];// tableau pour conserver les valeurs de vitesse
int fda[20];// tableau pour contenir dir
int fla[20];// tableau pour contenir les lumières
int f1a[20];// tableau pour contenir fun1…..
int f8a[20];// tableau pour contenir fun8
Pour permettre aux instructions DCC d'être modifiées au fur et à mesure:
Pour les instructions de vitesse: void amend_speed (struct Message & x) {
x.data[0] = locoAdr;
x.données[1] = 0x40; // locoMsg avec 28 pas de vitesse }
Pour les instructions de fonction:
void amend_group1 (struct Message & x) {
x.data[0] = locoAdr;
x.données[1] = 0x80; // locoMsg avec l'instruction du groupe un 0x80 }
La boucle principale du sketch:
void loop(void) { if (read_locoSpeed()) { assemble_dcc_msg_speed();
envoyer_données_1(); // envoyer des données sans fil
retard(10);
envoyer_données_3(); // afficher les données sur l'écran LCD
envoyer_données_4(); // afficher les données sur le moniteur série }
if (read_function()) {
assemble_dcc_msg_group1();
envoyer_données_1();
retard(10);
envoyer_données_3(); } }
Mettre à jour les données lorsque la vitesse change:
boolean read_locoSpeed () Ceci détecte une nouvelle adresse de locomotive, un nouveau réglage de vitesse ou de direction et modifie les "données" HEX en conséquence. Ici, j'ai spécifié 28 pas de vitesse et pour répondre à la norme NMRA S 9.2, les données de vitesse doivent être trouvées dans une table de recherche dans 'speed_step()'
void speed_step(){ switch (locoSpeed){
cas 1: données |= 0x02; Pause;
cas 2: données |= 0x12; Pause;
cas 3: données |= 0x03; Pause;
………
cas 28: données |= 0x1F; Pause; }}
Mettre à jour les données lorsque les fonctions changent:
booléen read_function()
if (fla[locoAdr] == 0) { data = 0x80;
} //phares éteints
if (fla[LocoAdr] == 1) {
données = 0x90;
} // phares allumés
Pour chaque fonction:
if (f2a[locoAdr] == 0) { data |= 0; }. // Fonction 2 désactivée
if (f2a[LocoAdr] == 1) {
données |= 0x02; // La fonction 2 sur }'data' est construite en combinant ['|=' composé au niveau du bit ou] les codes HEX pour chaque fonction.
Étape 3: récepteur
Le schéma de circuit est illustré où les broches 5 et 6 de l'Arduino Pro Mini sont utilisées pour fournir le signal DCC fourni au pont en H. Les paires de ponts en H sont connectées en parallèle pour augmenter la capacité de courant. Selon le courant consommé par la locomotive, un dissipateur thermique peut être nécessaire pour être connecté au dispositif DIP à 16 broches, ou un pont en H robuste peut être connecté à l'extérieur.
Le croquis Arduino est joint pour téléchargement. Le signal DCC est composé d'une horloge fonctionnant à 2MHZ
void SetupTimer2() fait ce travail.
L'horloge comprend des 'impulsions courtes' (58us) pour '1' dans les données DCC et des 'impulsions longues' (116us) pour '0' dans les données DCC.
La boucle void obtient les données de la radio et si une chaîne valide est trouvée, les données sont converties en données DCC.
void loop(void){ if (radio.available()){ bool done = false; done = radio.read(inmsg, 1); // lit les données reçues
char rc = inmsg[0]; // met le caractère lu dans ce tableau
si (rc != 0){. // si le caractère n'est pas égal à zéro
inString.concat(rc); // construire le message }
if (rc == '\0') { // si le caractère est '/0' fin du message
Serial.println(inString); // affiche le message assemblé
chaîne de caractères(); // déconstruit le message de chaîne pour obtenir les instructions DCC
} } }
Étape 4: Exécutez les locomotives
Pour éviter l'interruption des données dues à la circulation de plusieurs trains sur la même voie, vous devez déconnecter les contacts entre les roues et la voie pour chaque locomotive et camion utilisé.
Profitez de trains en libre-service quelles que soient les conditions de la voie - quelle différence ! Aucun tracas, aucun démarrage-arrêt et aucun nettoyage requis.
Les batteries que j'ai utilisées sont rechargeables LLoytron AA x 12. J'ai construit un chargeur spécialement pour eux qui charge 6 à la fois. (voir instructable)
Conseillé:
Switch-Adapt Toys : un train à vapeur rendu accessible ! : 7 étapes (avec photos)
Jouets Switch-Adapt : un jouet de train à vapeur rendu accessible ! : L'adaptation des jouets ouvre de nouvelles voies et des solutions personnalisées pour permettre aux enfants ayant des capacités motrices limitées ou des troubles du développement d'interagir avec les jouets de manière indépendante. Dans de nombreux cas, les enfants qui ont besoin de jouets adaptés sont incapables d'int
Train Steampunk : 5 étapes (avec photos)
Train Steampunk : J'ai eu la chance de recevoir une base de fauteuil roulant d'occasion d'un ami. J'ai dû remplacer les deux batteries pour qu'elles soient opérationnelles, mais c'était un petit prix à payer pour une plate-forme de construction d'accessoires aussi polyvalente. J'ai décidé de
Contrôlez la disposition de votre train miniature avec votre téléphone portable ! : 11 étapes (avec photos)
Contrôlez votre configuration de train miniature avec votre téléphone portable ! : Contrôler une configuration de train miniature avec une manette des gaz et des contrôleurs d'aiguillage filaires peut être un bon début pour les débutants, mais ils posent un problème de non-portabilité. De plus, les contrôleurs sans fil disponibles sur le marché ne peuvent contrôler que certains locom
Bonjour Train ! ATtiny 1614 : 8 étapes (avec photos)
Bonjour Train ! ATtiny 1614 : Pour ma classe Fab Academy je dois créer une carte avec un microcontrôleur, un bouton et une LED. Je vais utiliser Eagle pour le créer
Contrôlez la disposition de votre train miniature avec votre TÉLÉCOMMANDE TV ! : 7 étapes (avec photos)
Contrôlez votre disposition de train miniature avec votre télécommande TV ! : dans cette instructable, je vais vous montrer comment faire un système de télécommande IR pour un train miniature. Vous pourrez alors contrôler vos trains tout en vous relaxant sur votre canapé. Alors, commençons