Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - bobyAndCo

Pages: 1 ... 55 56 [57] 58 59
841
Le logiciel DCC++ / Re : JRMI avec un booster BaseStation DCC++
« le: janvier 04, 2017, 08:28:29 pm »
Bonsoir msport,

Attention à la rédaction de tes messages adressés à DCC++. Tout d'abord, <w 03 1 08> est bien le bon message pour changer l'adresse d'une loco sur la voie principale.

/***** WRITE CONFIGURATION VARIABLE BYTE TO ENGINE DECODER ON MAIN OPERATIONS TRACK  ****/

    case 'w':      // <w CAB CV VALUE>
      /*
            writes, without any verification, a Configuration Variable to the decoder of an engine on the main operations track

            CAB:  the short (1-127) or long (128-10293) address of the engine decoder
            CV: the number of the Configuration Variable memory location in the decoder to write to (1-1024)
            VALUE: the value to be written to the Configuration Variable memory location (0-255)

            returns: NONE

Sur la voie de programmation le message est <W 1 08 123 123> (W en majuscule et non minuscule)

/***** WRITE CONFIGURATION VARIABLE BYTE TO ENGINE DECODER ON PROGRAMMING TRACK  ****/

    case 'W':      // <W CV VALUE CALLBACKNUM CALLBACKSUB>
      /*
            writes, and then verifies, a Configuration Variable to the decoder of an engine on the programming track

            CV: the number of the Configuration Variable memory location in the decoder to write to (1-1024)
            VALUE: the value to be written to the Configuration Variable memory location (0-255)
            CALLBACKNUM: an arbitrary integer (0-32767) that is ignored by the Base Station and is simply echoed back in the output - useful for external programs that call this function
            CALLBACKSUB: a second arbitrary integer (0-32767) that is ignored by the Base Station and is simply echoed back in the output - useful for external programs (e.g. DCC++ Interface) that call this function

            returns: <r CALLBACKNUM|CALLBACKSUB|CV Value)
            where VALUE is a number from 0-255 as read from the requested CV, or -1 if verificaiton read fails

Tu parles d'une resistance de 120 ohms mais je ne vois pas à quoi tu fais référence et il n'y a effectivement pas besoin de resistance. Par contre, je crois me souvenir qu'il faut que A0 (voie principale) et A1 (voie de programmation) soient alimentées (mesure du courant à partir du/des MAX471).

Normalement <w 03 1 08> doit fonctionner sur la voie principale même si ton décodeur ne réagit pas sur la vie de programmation.

Si tu as encore des soucis, donne nous ta config (UNO ou MEGA).

Bon courage.

Christophe

842
Bonsoir,

Je vous présente mon TCO en HTML (lecture donc dans un navigateur web). On ne voit ici que le niveau 0 mais il y a un -1 (gare cachée) et un +1.

La commutation des aiguilles se fait par un click sur l'icon et l'image change bien sûr en fonction de la direction de l'aiguille. Les informations sont transmises par Ethernet à un MEGA qui gère au total 23 aiguillages. Sur le MEGA, les aiguilles sont programmées avec des structures en C mais ça pourrait tout aussi bien être de classes C++ ou de simples tableaux en langage Arduino.

On voit bien que ce ne sont pas les solutions qui manquent pour piloter nos Arduino's. Je répondrai volontiers à ceux qui souhaiteraient plus d'informations sur ce type de développement.

Bien amicalement.


843
Présentez vous ! / Re : bien le bonjour
« le: janvier 03, 2017, 09:59:02 am »
Bonjour Samuel,

J'ai déjà eu l'occasion de visiter ton site sur le quel il y a des réalisations intéressantes ! Il semble par ailleurs que nous partagions une autre passion qui est la moto.

Bienvenue et n'hésite surtout pas à faire partager tes réalisations et tes problèmes qui feront avancer tout le monde.

Christophe

844
Le logiciel DCC++ / Re : JRMI avec un booster BaseStation DCC++
« le: janvier 03, 2017, 09:38:45 am »
Bonjour msport,

Effectivement, <w 03 1 08> est le bon code pour passer l'adresse de 3 en 8.

Pour ceux que ça intéresse, vous trouverez sur le lien  (Github de DCC++) https://github.com/DccPlusPlus/BaseStation/wiki/Commands-for-DCCpp-BaseStation tous les codes pour la programmation. Le code de la page SerialCommand.cpp de DCC++ est aussi intéressant à consulter car il est bien documenté (même si on maitrise peu l'anglais ou le C).

J'ai moi même un problème avec certains décodeurs et toutes les fonctions sur la voie de programmation sont indisponibles pour ces décodeurs alors que tout fonctionne parfaitement avec d'autres décodeurs. J'ai le message que tu reportes <R1 123 123> qui renvoie <r 123 123 1 -1> avec le -1 qui indique une erreur. Et cela est vrai également bien sûr pour <R2 123 123>,  <R3 123 123>, <Rn 123 123>...

Dominique a eu aussi un moment le problème mais je ne sais pas s'il a trouvé la solution.
Il serait intéressant si nous sommes plusieurs dans ce cas de faire des recoupements (marque du décodeur, modèle etc...) pour essayer de cerner le problème.

Dans tous les cas, avant de tout bousculer, il est vraisemblable que tu n'ais pas fait d'erreur et que le problème soit dans DCC++. Il faudrait aussi se reporter aux posts sur http://www.trainboard.com/ pour ceux qui n'ont pas trop de problèmes avec l'anglais !


A suivre donc...


845
Présentez vous ! / Re : Bonjour à tous
« le: décembre 12, 2016, 10:35:51 am »
Bonjour,
Je trouve plutôt sympathique la façon dont tu as résolu le problème. J’aimerais que tu me dises si tu utilises ou non une modulation de fréquence (comme je l’ai fait par exemple avec IRremote) ?

Je te pose cette question pour car j’ai moi aussi prévu de placer ces composants peu esthétiques dans des tunnels par exemple. Mais les tunnels ne sont toujours pas construits, les capteurs reçoivent un max de lumière et ne sont absolument pas perturbés. Bien évidemment, je pense que la modulation de fréquence y est pour quelque chose mais j’aimerais avoir des retours d’autres utilisateurs.

Merci pour ta réponse.
Christophe

846
Présentez vous ! / Re : Bonjour à tous
« le: décembre 08, 2016, 10:13:29 am »
Merci Dominique.

Bretons et alsaciens pratiquants peu la langue française, il nous arrive parfois de faire des écarts. Plus sérieusement, je pense également qu’il faudrait sans doute reprendre tout cela depuis le départ.

Tout d’abord, sur un banc test, hors le plus possible de toute interférence. Puis se rapprocher petit à petit des conditions réelles d’utilisation pour  identifier la cause des problèmes.

Je ne suis pas persuadé que de dessouder émetteur et/ou récepteur soit très judicieux. Pourquoi ne pas utiliser les produits qui correspondent exactement à l’utilisation que tu souhaites en faire ? Encore une fois, je ne peux parler que de ce que je connais et ce que je te suggère est une solution que j’ai adoptée et qui fonctionne.

En image ci-dessous les capteurs que j'utilise.

L’ensemble fonctionne à une fréquence de 38KHz qui est généré sur l’Arduino par la bibliothèque IRremote. Je précise une nouvelle fois que je n’ai obtenu des résultats satisfaisants qu’une fois que j’ai alimenté la LED émettrice en 1,1 – 1,2 Volts. Sinon, sur des distances aussi faibles, la réception manquait de sensibilité.

A toutes fins utiles, je te donne également mon code pour l’Arduino qui tourne sur Mega mais l'adaptation à un autre Arduino est simple. Les lectures sont envoyées par Ethernet. Il y a bien sûr un debonce entre chaque lecture mais aussi un délai entre chaque envoi de message (10 secondes). On peut en effet considérer que deux lectures valides à moins de 10 secondes d’intervalle concernent le même train.

Ce n’est pas la seule solution possible. Dominique à déjà présenté ici un montage qui fonctionne bien également http://www.locoduino.org/spip.php?article40

Voilà, y a plus qu’à !!!


// barriere_IR_5

#include <IRremote.h>
#include <SPI.h>
#include <Ethernet.h>

#define PIN_IR            9 // l'émetteur IR sur la pin 9 pour Mega (3 pour Uno)
#define NB_CAPTEURS       4 // 4 capteurs sont utilisés ici
#define START_PIN         22 // La première pin pour les récepteurs
#define ADDRESS_MAC       0x90, 0xA2, 0xDA, 0x0D, 0xAA, 0xF2
#define IP_CLIENT         10, 0, 1, 219
#define IP_SERVER         10, 0, 1, 15


int tab_inPin[NB_CAPTEURS];
int tab_capteurState[NB_CAPTEURS];
int tab_lastCapteurState[NB_CAPTEURS];
int tab_reading[NB_CAPTEURS];
unsigned long tab_lastDebounceTime[NB_CAPTEURS];
unsigned long tab_lastSendMsgTime[NB_CAPTEURS];
const long debounceDelay = 5; // Laps de temps entre deux mesures
const long sendMsgDelay = 10000; // Delai entre l'envoi de message pour un même capteur

///////////////////////// IMPORTANT /////////////////////////////////////////

//  Distance émetteur/récepteur testée à 10 et à 15 cm.
//  1,1 V  pour alimenter les diodes émettrices, Si plus, le dispositif manque de sensibilité.
//  5 V pour alimenter les diodes réceptrices.

///////////////////// CREATION DE L'OBJET irsend ////////////////////////////

IRsend irsend;

/////// ETHERNET ////////////////

byte mac[] = { ADDRESS_MAC };
IPAddress ip(IP_CLIENT);
EthernetClient client;
IPAddress serveur(IP_SERVER);

String methode = "IR_capteurs"; // Méthode appelée sur le serveur


//////////////////////////// SETUP ////////////////////////////////////////////

void setup() {

  pinMode(PIN_IR, OUTPUT);

  ////// CAPTEURS IR  //////////////
  for (int numCapteur = 0; numCapteur < NB_CAPTEURS; numCapteur++) {
    tab_inPin[numCapteur] = START_PIN + numCapteur;
    pinMode(tab_inPin[numCapteur], INPUT);
    tab_capteurState[numCapteur] = HIGH;
    tab_lastCapteurState[numCapteur] = LOW;
    tab_lastDebounceTime[numCapteur] = 0;
    tab_lastSendMsgTime[numCapteur] = 0;
  }
  irsend.enableIROut(38); // créer une sortie modulée à 38 Khz


  /////// SERIAL ////////////////
  Serial.begin(19200);
  Serial.println("Init...");
  delay(1000);
  Serial.println("Pret !");

  /////// ETHERNET ////////////////
  Ethernet.begin(mac, ip);
  Serial.print("server IP : ");
  Serial.println(Ethernet.localIP());

}

//////////////////////////// LOOP ////////////////////////////////////////////

void loop() {
  for (int numCapteur = 0; numCapteur < NB_CAPTEURS; numCapteur++) {
    irsend.mark(0); // envoi signal modulé de façon continue
    delay(1);
    lireCapteur(numCapteur);
    irsend.space(0); // arret signal modulé
  }
}

//////////////////////////// FONCTION lireCapteur ////////////////////////////////////////////

void lireCapteur (int numCapteur) {
  tab_reading[numCapteur] = digitalRead(tab_inPin[numCapteur]);
  if (tab_reading[numCapteur] != tab_lastCapteurState[numCapteur]) {
    tab_lastDebounceTime[numCapteur] = millis();
  }

  if ((millis() - tab_lastDebounceTime[numCapteur]) > debounceDelay) {
    if (tab_reading[numCapteur] != tab_capteurState[numCapteur]) {
      tab_capteurState[numCapteur] = tab_reading[numCapteur];
      if (tab_capteurState[numCapteur] == LOW) {
        if ((millis() - tab_lastSendMsgTime[numCapteur]) > sendMsgDelay) {
          tab_lastSendMsgTime[numCapteur] = millis();
          requete(numCapteur);
        }
      }
    }
  }
  tab_lastCapteurState[numCapteur] = tab_reading[numCapteur];
}

//////// REQUETE /////////////////////////////////////////////////////

void requete(int numCapteur) {
  char erreur = client.connect(serveur, 80);
  if (erreur == 1) {
    String data = "";
    data += "IR="; data += numCapteur + 1;
    Serial.println(data);
    client.print("GET /4DACTION/");
    client.print(methode);
    client.print("/?");
    client.print(data);
    client.print(" HTTP/1.1\r\n");
    client.print("Accept: text/html\r\n");
    client.print("Content-type: application/x-www-form-urlencoded; charset=UTF-8\r\n");
    client.print("Host: ");
    client.print(ip);
    client.print("\r\n");
    client.print("Content-Length: ");
    client.println(data.length());
    client.print("User-Agent: arduino-ethernet\r\n");
    client.print("Connection: close\r\n");
    client.println();
    client.stop();
    Serial.println(data);
  }

  else {
    client.stop();
    Serial.println("Echec de la connexion");
    //    switch (erreur) {
    //      case (-1):
    //        Serial.println("Time out");
    //        break;
    //      case (-2):
    //        Serial.println("Serveur invalide");
    //        break;
    //      case (-3):
    //        Serial.println("Tronque");
    //        break;
    //      case (-4):
    //        Serial.println("Reponse invalide");
    //        break;
    //    }
  }
}


847
Présentez vous ! / Re : Bonjour à tous
« le: décembre 07, 2016, 11:04:47 pm »
Bonsoir Guy,

Je ne comprends pas bien ton montage puisque sur la photo de l'IR que tu présentes l'émetteur et le récepteur sont sur la même carte alors que ta photo des voies semble indiquer qu'émetteur et récepteur sont face à face. Quoi qu'il en soit et dans la mesure où la solution semble bien difficile à trouver, je t'invite, si émetteur et récepteurs sont séparées bien sûr, à alimenter l'émetteur en 1,1 ou 1,2 Volt (pas plus). Le récepteur restant lui en 5 Volts.

D'après les symptômes que tu décris, je ne suis pas certain que ça t'apporte la solution mais cela peut être une astuce pour ceux qui veulent mettre de l'IR sur leur réseau et qui rencontrent des problèmes de détection. Sur mon réseau, avec des capteurs éloignées de 13 à 15 cm, ça fonctionne au poil avec utilisation de la bibliothèque "IRremote".

Bien à toi

848
Présentez vous ! / Re : bonjour de samuel
« le: décembre 01, 2016, 08:49:46 pm »
Bienvenue Samuel,

C’est un projet qui semble bien construit. Ici bien sûr, l’Arduino est au cœur de tout notre intérêt et je n’ai pas de doute sur le fait que vous trouverez vous aussi beaucoup de plaisir. Je vous invite à vous intéresser entre autre à DCC++. Associé à VB ça peut donner des choses intéressantes. J’ai un peu cherché à associer PHP aux développements sur Arduino, mais à chaque fois, j’ai trouvé de meilleures réponses avec par exemple JavaScript (et AngularJS. Mais on est ici aussi pour confronter nos expériences. ) Par contre, j’utilise des outils proches de VB.

Au plaisir d’échanger !

Christophe
   

849
Le logiciel DCC++ / Re : DCC++ BaseStation
« le: novembre 30, 2016, 09:54:45 pm »
ponponmvo,

Je ne vois ni les photos dont vous parlez, ni votre sketch ???

850
Ce sujet est celui qui m’intéresse le plus à l’heure actuelle. Comme je le disais sur le fil de DCC++, aujourd’hui, on peut savoir facilement que tel canton ou telle section du réseau est occupée.

Par ailleurs, avec un bon gestionnaire de réseau surtout s'il est fait « maison » il est aussi très facile de savoir l’état des locos (Arrêt, marche, sens, vitesse). Mais ce qui nous manque c’est les deux à la fois ! Telle loco est à tel endroit du circuit avec tels paramètres (vitesse, sens...).

J’ai passé beaucoup de temps avec des résultats assez satisfaisants à tester des lecteurs de code barre (douchettes qui me restaient et que j’avais dû payer de l’ordre de 30 € pièce). J’ai tout démonté et placé la seule mécanique sous la planche.

Avec HardwareSerial j’ai pu connecter 4 lecteurs par MEGA (je ne crois pas pas que l’on puisse autant sur UNO) et le tout relié par Ethernet (vous commencez à me connaître). Et des codes barres collés sous la loco. Ca ce fait, faut chercher un peu le meilleur emplacement mais j’y suis toujours parvenu même avec des contraintes d’espace. On peut aussi envisager en plus sous le dernier wagon pour détecter tout le convoi.

Bon faut pas passer trop vite dessus (jusqu’à mi vitesse disons) ce pourquoi je pensais placer ça dans des gares ou à l’entrée ou à la sortie d’un pont tournant. Ou des zones où l'on peut ralentir sans problème quelques secondes (tunnels). Mais bien sûr, ça a ses limites. Difficile d’en placer autant que de cantons.

J’ai aussi fait l’acquisition de QRE1113 de chez Sparkfun. C’est très discret sous la voie (15 mm sur 7) et je suis à peu près certain que ça pourrait lire un code barre maison. Pour 10 à 20 locos, je pense que c’est jouable, ça revient à un codage sur 24 bits on va dire d’alternance de barres noire et blanches. Pas compliqué et pas cher. 1 ou 2 € le QRE1113.

Tout ça reste un peu bricole quand même je reconnais. Et c’est sans doute RailCom la meilleure solution (si on a le budget et les décodeurs compatibles). RailCom donne en prime d'autres informations si je ne me trompe pas comme la température du moteur. Je suivrai donc avec grand intérêt ce fil.

Christophe



851
Bus DCC / Re : booster LMD18200 + manette
« le: novembre 18, 2016, 10:31:17 pm »

si j'ai bien compris il faut passer en 16 ou 18V pour l'alim
mais combien d'A ?

Pour l'instant je pense faire rouler 2 ou 3 machines  dons ça doit passer
en modèle de base sans utilisé le Pololu

surtout j'ai pas tout compris sur le branchement (je suis débutant)

Bonsoir,

Tu réponds en même temps que tu [re]poses la question. Oui effectivement pour 2 ou 3 machines 2A vont suffire. Oui tu as bien compris en HO il vaut mieux tourner à 16 V mini au rail donc calibrer en entrée 18 V c'est bien. Il est de toutes façons plus facile de baisser un courant de 18 à 16 que l'inverse  ;D Toute les alims un peu dignes de ce nom ont un potar de réglages de +/- 5% voir +/- 10%.

Tu parles aussi de branchement mais on parle bien de DCC ? Sous quelle bibliothèque ? Tu dis être débutant, je pense que tu n'a pas pour projet de te passer d'une bibliothèque, comme par exemple DCC++. Cela va être différent aussi selon le booster que tu vas choisir ? LMD18200 ? Je pense que oui, c'est le titre de ce fil ! (pas Pololu si j'ai bien compris). Le LMD18200 serait un bon choix qui fait l'unanimité sur LOCODUINO et raisonnable en prix (10 € environ sur eBay). Il te faudra aussi un MAX471 pour les courts-circuits. Est-ce que tu prévoies de tourner sur UNO, MEGA ou autres, là encore les câblages sont différents.

[Les schémas de câblages ont été largement traités sur le site http://www.locoduino.org/spip.php?article19 et j'ai moi même rédigé un post pour les sorties pour DCC++ pour UNO et MEGA http://forum.locoduino.org/index.php?topic=151.msg1932#msg1932

Précise bien tout cela et on pourra te répondre très exactement.

Bien à toi.

852
Bus DCC / Re : booster LMD18200 + manette
« le: novembre 17, 2016, 09:44:30 am »
bonjour ,

si si j'ai lu

mais il y a beaucoup de site

et pour les 3A çà suffit pour le ho ?

@+

Bonjour,

J'ai un réseau en HO que j'ai alimenté avec un LMD18200 donc en 3A et aujourd'hui avec un Pololu MC33926 lu aussi en 3A (avec DCC++). Avec 3 ou 4 locos roulantes + fonctions activées (feux + bruits + fumée qui a elle seule consomme 300 à 400 mA) je dépasse rarement 1A de consommation.

On peut donc raisonnablement penser que tant que tu ne dépasses pas 10 à 12 locos + fonctions ça doit pouvoir le faire. Par contre, je n'utilise pas le DCC pour aucun autre usage (accessoires, aiguillages, signalisation).

Mais j'ai cru voir dans ce fil que l'on parlait de 12 V. Cela ne suffirait pas en HO qui demandera au moins 15 V sur les rails donc 16 ou mieux 18 V pour l'alim.

Espérant que ça réponde à ta question.

PS : Juste pour info. J'ai utilisé le LMD18200 + MAX471 avec DCC++ qui donnait d'exellents résultats. Je suis cependant passé au Pololu MC33926 car ça m'a permis de me dispenser du MAX471 et permis d'avoir en une seule carte l'alimentation de la voie principale et de la voie de programmation alors qu'autrement il m'aurait fallu 2 LMD et 2 MAX. Cependant LE POLOLU est très sensible aux pics de tensions par exemple quand on met le circuit sous tension et il se met facilement en coupe circuit. Et sur les conseils de Dominique, j'ai ajouté 2 radiateurs sur la carte.

Christophe

853
Salut Dominique,

Ca y est, tout est au point ? Arpajon ce n'est somme toute pas si loin de la Bretagne mais j'ai déjà des engagements pris pour les deux jours. Plein de plaisir à toi !

854
Le logiciel DCC++ / Re : DCC++ BaseStation
« le: septembre 04, 2016, 09:18:52 pm »
Pour le câblage entre l'ARDUINO (UNO ou MEGA) avec Arduino Motor Shield ou Pololu MC33926 voir :

https://github.com/DccPlusPlus/Documentation/blob/master/Motor%20Shield%20Pin%20Mappings.pdf

Ne pas oublier de couper 4, 10 et 12 sous la carte Pololu MC33926 pour éviter tout conflit (avec Ethernet en particulier) et Brake Disable et V-IN Connect sur Arduino Motor Shield. C'est bien illustré dans le document ci-dessus.

Pour le câblage entre l'ARDUINO (UNO ou MEGA) avec LMD18200 + MAX471, voir image jointe. Attention, si vous souhaitez que la voie Main et la voie Prog soient toutes les deux câblées, il vous faudra 2 X LMD18200 et 2 X MAX471.

855
Le logiciel DCC++ / Re : DCC++ BaseStation
« le: septembre 04, 2016, 08:11:46 pm »
Oui mais ici, ça permet de tester DCC++ facilement, le controller est tout prêt !

Dans le fil sur Ethernet, je développerai la réalisation pas à pas d'un controller plus complet  dont on peut voir ici la version démo

Pages: 1 ... 55 56 [57] 58 59