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 - maxou9914

Pages: 1 [2]
16
Vos projets / Re : block auto 1 carte par canton et wifi
« le: janvier 09, 2018, 10:09:21 pm »
Il fonctionne en 3,3v mais dispose d'une entrée 5v + usb

17
Vos projets / Re : block auto 1 carte par canton et wifi
« le: janvier 09, 2018, 07:47:31 pm »
Beau projet !
Tu reste sur une architecture "standard" pour de l'analogique avec une carte par canton (standard locoduino😀).

Le développement Web HTML et PHP est pas mal mais demande des connaissances supplémentaires (et du temps). Mais je vais suivre l'évolution avec intérêt !

Pour le panneau solaire + batterie par canton, je suppose qu'il s'agit de l'alimentation du wemos (5v) pourquoi ne pas utiliser un bulck (orthographe ?!) pour passer de 24v à 5v. Économie financière et de place !

Pour le serveur tu pense utiliser quoi ? raspberry pi (mon choix) ou autre

Pour la consommation je te confirme :
1 à 1,5A par loco plus 0,5 à 0,7 A si équipe de fumigènes

En attente des 1er tests 😀

18
Vos projets / Re : loco LGB sans fil
« le: janvier 07, 2018, 05:54:29 pm »
J'ai un peux avancé sur ce projet,

j'ai choisi l'option 1

J'ai actuellement 3 tender de loco avec à l’intérieur le wemos et le contrôle de puissance ( voir post précédent) avec 3 contrôles d’accessoires fonctionnels ( lumière ou fumigène) et le son en test sur un.

je suis en pleine refonte du code "arduino" et du Node-red afin de simplifier les configurations en les rendent directement accessibles par l'interface WEB. Et malheureusement je me heurte à plusieurs difficultés.

si tu as besoin d'info sur un élément demande moi.
J’espère avancer pour avoir un projet fonctionnel pour le printemps et l'exposer complètement.
 

19
Composants / Re : Teensy 3.1, 3.2 - Sonorisation locomotive
« le: décembre 28, 2017, 11:28:13 pm »
Test en remplaçant  :
#include "AudioSampleSnare.h" 
Par
#include <AudioSampleSnare.h>

J'ai déjà eu le cas où le problème venait de là.

En attente de la suite  ;)

20
Vos projets / Re : 2D2 Echelle 1/32
« le: décembre 15, 2017, 11:07:33 pm »
Pour le logiciel Encodeaudio sous W10
 À savoir que pour moi le programme n'affiche plus rien après avoir sélectionné le fichier WAV.
Les données converties sont stockées dans le presse papier, un simple coller permet de récupérer les données.

A savoir que je ne suis pas sur d'avoir bien compris le problème rencontré.

21
Vos projets / Re : 2D2 Echelle 1/32
« le: décembre 15, 2017, 06:19:38 pm »
Pour convertir en octet un fichier wav regarde : http://highlowtech.org/?p=1963 et comme dit précédemment :
Citer
il est demandé de convertir les fichier en WAV avec Itunes, je te conseil de passer par Audacity, menu fichier, exporter, autres formats non compressés, options... , WAV, unsigned 8 bits PCM.

22
Vos projets / Re : 2D2 Echelle 1/32
« le: décembre 11, 2017, 08:06:17 pm »
Je suis aussi sur l'ajout de la sonorisation à une locomotive.
Je me suis inspiré de http://www.train35.fr/bruitage_loco.html pour la lecture d'un fichier WAV.
Mais un son de 2/3 secondes suffi à remplir la mémoire d'un nano, peut-être est-il possible de lire les données directement de la SD comme tu le dit !

Sur le site du lien, il est demandé de convertir les fichier en WAV avec Itunes, je te conseil de passer par Audacity, menu fichier, exporter, autres formats non compressés, options... , WAV, unsigned 8 bits PCM.


Si tu as besoin de plus de détail je te détail la procédure complète pour la conversion du fichier WAV.

En espérant t'avoir apporté une info utile.

23
Vos projets / loco LGB WIFI
« le: juillet 09, 2017, 07:12:10 pm »
Bonjour,

Après plusieurs améliorations j'ai changer de technique sans fil.
J'ai découvert les puces ESP8266, et plus particulièrement la WEMOS 1D https://www.wemos.cc/ qui possède:
11 digital input/output pins
1 analog input(3.2V max input)
Micro USB connection

Pour le contrôle j'utilise une interface web (disponible directement dans le navigateur : ordinateur, tablette, telephone,etc ) qui peux être utilisé par plusieurs à la fois.

Mon système est donc composé comme suit :

Dans la loco :

Moteur 19v -> pont en H L298 -> Wemos
Fumigene 16V -> transistor TIP142 -> Wemos

Alimentation 21V par les voies -> Pont de diodes -> LM2593 ( pas de régulateur 3.3v en stock) -> WEMOS
                                                                       -> Pont en H L298

Voilà pour la partie physique.

Pour la partie interface:

J'utilise Node-Red pour la création de l'interface web https://nodered.org/

Mon flow qui configure l'interface:


le rendu sur PC:

Le rendu sur android:


Et un Serveur MQTT mosquitto pour dialoguer entre Node et le Wemos  https://mosquitto.org/, je conseille d'installer un "lecteur de flux" MQTT qui facilite le débogage par la lecture en direct des échanges entre Node et le WEMOS. https://play.google.com/store/apps/details?id=at.tripwire.mqtt.client&hl=fr

 
Pour la partie programmation j'ai pour node-red le flow suivant à importer :
https://www.dropbox.com/s/3erfxlbblz8h98m/node%20V2.txt?dl=0

Pour le code du WEMOS :

#define Version 2
#define NumeroLoco 1

#include <ESP8266WiFi.h>
#include <PubSubClient.h>


// Paramètre WiFi, MQTT - WiFi, MQTT parameters
const char* ssid = "Bbox-maxou";                // WiFi SSID
const char* password = "cessnacessna";        // WiFi Password
const char* mqtt_server = "192.168.1.44";  // IP Broker MQTT
const char* Vitesse = "Loco1/Vitesse";
const char* Sens1 = "Loco1/Sens1";
const char* Sens2 = "Loco1/Sens2";
const char* Lumiere = "Loco1/Lumiere";
const char* Fumigene = "Loco1/Fumigene";
const char* Nom = "Loco1/Nom";

unsigned long TempsGlobal = 0;

/////////////////    Moteur      ///////////////////////

#define PinMoteurPWM D4
#define PinMoteurSens1 D3
#define PinMoteurSens2 D2

/////////////////    Fumigene    ///////////////////////

#define PinFumigenePWM D7

#define PinLumiere D8

WiFiClient espClient;
PubSubClient client(espClient);
long lastMsg = 0;
char msg[50];
int value = 0;

void setup() {

  Serial.begin(115200);
  setup_wifi();
  client.setServer(mqtt_server, 1883);
  client.setCallback(callback);


  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(PinLumiere, OUTPUT);

  pinMode(PinMoteurSens1, OUTPUT);
  pinMode(PinMoteurSens2, OUTPUT);
  pinMode(PinMoteurPWM, OUTPUT);


  pinMode(PinFumigenePWM, OUTPUT);

}

void setup_wifi() {
  delay(10);
  // We start by connecting to a WiFi network
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

void callback(char* topic, byte* payload, unsigned int length) {
  String string;
  // Affiche le topic entrant
  Serial.print("Message arrived [");
  Serial.print(topic);
  Serial.print("] ");
  // décode le message
  for (int i = 0; i < length; i++) {
    string += ((char)payload[i]);
  }
  // Affiche le message entrant
  Serial.print(" Valeur brut : ");
  Serial.print(string);
  Serial.print(" en ");
  // Conversion de Valeur en entier
  int Valeur = string.toInt();
  Serial.println(Valeur);

  //   Détermine quoi faire
  if ( strcmp(topic, Vitesse) == 0 )
  {
    Serial.print(" Vitesse :");
    Serial.println(Valeur);
    analogWrite(PinMoteurPWM, Valeur);
  }
  if ( strcmp(topic, Sens1) == 0 )
  {
    Serial.print(" Sens 1 :");
    Serial.println(Valeur);
    digitalWrite(PinMoteurSens1, Valeur);
  }
  if ( strcmp(topic, Sens2) == 0 )
  {
    Serial.print(" Sens 2 :");
    Serial.println(Valeur);
    digitalWrite(PinMoteurSens2, Valeur);
  }
  if ( strcmp(topic, Lumiere) == 0 )
  {
    Serial.print("Lumiere :");
    Serial.println(Valeur);
    digitalWrite(PinLumiere, Valeur);
  }
  if ( strcmp(topic, Fumigene) == 0 )
  {
    Serial.print("Fumigene :");
    Serial.println(Valeur);
    analogWrite(PinFumigenePWM, Valeur);
  }
  delay(15);
}

void reconnect() {

  while (!client.connected()) {
    Serial.print("Attente  connection MQTT...");
    // Attempt to connect
    if (client.connect("ESP8266Client")) {
      Serial.println("connected");
      client.subscribe(Vitesse);
      client.subscribe(Sens1);
      client.subscribe(Sens2);
      client.subscribe(Lumiere);
      client.subscribe(Fumigene);
    } else {
      Serial.print("Erreur, rc=");
      Serial.print(client.state());
      Serial.println(" recommence dans 5 secondes");
 
      delay(5000);
    }
  }
}
void loop()
{
  if (!client.connected())
  {
    reconnect();
  }
  client.loop();
  if ((millis() - TempsGlobal) > 3000)
  {
    client.publish(Nom, "BR81");
    TempsGlobal = millis();
  }

  delay(10);
}


Le premier test fonctionnel

Si vous avez des questions n'hésitez pas.

24
Vos projets / Re : loco LGB sans fil
« le: février 07, 2017, 06:07:40 pm »
Changement de bibliothèque pour la gestion du sans fil ! https://github.com/maniacbug/RF24
il faut juste modifier le #define NumeroLoco avant d’envoyé le programme à la loco, jusqu’à 5 loco possible.

Je vais regarder pour modifier la fréquence de l'horloge ( cf post http://www.locoduino.org/spip.php?article202 ) ou dans l'autre cas je passe par un pont en H, plus facile à miniaturiser pour les futurs locos http://www.ebay.fr/itm/291859205210.

Je regarde aussi pour le son synchronisé ! soit avec tone() ou des fichiers .wav ? à voir 

25
Vos projets / Re : PWM - Faire varier la fréquence
« le: février 04, 2017, 05:22:49 pm »
j'ai compris qu'il existe 3 timer indépendant ( le timer 2 gère aussi millis donc il ne faut pas y toucher )

Citer
Bon, donc il y a trois Timers (UNO ou MEGA) :
Le Timer 0 correspond aux broches 5 et 6
Le Timer 1 correspond aux broches 9 et 10
Le Timer 2 correspond aux broches 3 et 11.

Afin de modifier la fréquence rajouter en fonction de du moteur:

- TCCR1B |= B00000001;
ou
- TCCR1B |= B00000010;
ou
- TCCR1B |= B00000011;
ou
- TCCR1B |= B00000100;
ou
- TCCR1B |= B00000101;


Mais je ne comprend pas comment faire le lien entre le timer de son choix et TCCR1B ?

26
Vos projets / Re : loco LGB sans fil
« le: février 01, 2017, 06:04:27 pm »
En effet j'ai aussi utilisé ta méthode :  0 ->30 puis incrémentation
mais toujours un sifflement résiduel  >:(

27
Vos projets / loco LGB sans fil
« le: janvier 30, 2017, 07:57:48 pm »
Bonjour,

Après des mois de recherche et de test, je vous présente mon projet de contrôle de train sans fil !

A la suite de différent essai dans la gestion de 2/3 train sur un circuit LGB extérieur, contrôle de puissance pour chaque canton (une commande par canton :o) sur un TCO. Le nombre incommensurable de câbles que cela génère (2 fils par canton) rend la gestion en extérieur difficile et l'évolution du réseau complexe, ajout de nouveaux cantons ou modifications. Je me retrouve rapidement avec une cinquantaine de fils sans compter les moteurs d’aiguilles (en cours d'achat).
Cela oblige à avoir un TCO fixe et démontable (je suis en extérieur).


Donc face à ces contraintes je pense avoir trouvé MA solution.

Je suis parti du principe que les rails m'apporte juste le courant (18V) et que la locomotive possède un "décodeur" qui dialogue avec ma commande sans fil.

Donc nous avons au final:

Une locomotive avec:
1- un pont redresseur (4 diodes) ( je suis en continu mais si je retourne la loco....)
2- L298n (pour la puissance motrice) -> je pense le remplacer par la suite ? car sifflement du moteur ?!? :o à bas régime
3- un régulateur de tension LM2596 (pour arduino et le L298n)
4- un arduino mini
5- un Émetteur-récepteur sans fil 2,4 GHz Module NRF24L01

Une commande sans fil:

1- un arduino mini
2- un Émetteur-récepteur sans fil 2,4 GHz Module NRF24L01
3- un écran 4 lignes
3- Potentiomètre
4- boutons


Je joins le code pour la manette et la loco, il est fonctionnel dans l'état pour une seul loco. Des options en cours de développement ne sont pas encore fonctionnelles:

-détection RFID :
   -> arrêt en gare automatique (fonctionne mais problème)
   -> "retro signalisation" pour une gestion des feux ?
   -> ???


- Muti loco ( en cour)
- Feux Av/Ar
- Gestion sonore en fonction de la vitesse ;D
- Fumigène en fonction de la vitesse 8)
- Gestion des aiguilles sans fil :o
- Trajet automatique (je commence a rêvé là ..... ;D)
- ..... ???? ::)

Mon problème mis en stand-by :
 Impossible de connecter un détecteur RFID et le module NRF24L01  sinon plus de communication avec le NRF24L01 ?!  :-\ tous deux communiquent en SPI.
J'ai trouvé un autre détecteur RFID qui communique via le RX/TX mais pas encore tester.


Je planche sur la gestion de plusieurs loco afin de faire fonctionner tout ça aux beaux jours.



28
Bonjour,

Mon projet consiste à :

Objectif :

1- le PRINCIPAL - Remplacement des moteurs marklin par des servos (marre de les changer tous les mois !!)

2 - le secondaire  - Gestion des éclairages (candélabres et maison) et des moteurs de grue ou d'attraction

Contrainte :

Pilotable par la CS2

Avec la bibliothèque UAD j'ai réussi  modifier le programme pour contrôler 5 servo et 3 commandes de lumières à partir de commande DCC.

#include "UniversalAccessoryDecoder.h"
#define kDCC_INTERRUPT            3

#define AccessoryServoNumber      2

#define SERVO1 0
#define SERVO2 1

#define AccessoryMotorLightNumber      3

#define LIGHT1 2
#define LIGHT2 3
#define LIGHT3 4

#define LIGHT1_PORT 0
#define LIGHT2_PORT 1
#define LIGHT3_PORT 2

// Accessories

Accessories accessories;
DccCommander dccCommander;
AccessoryGroup groupServos;
AccessoryGroup groupLights;

// Drivers

DriverArduino *arduino;

//////////////////////////////////
//
// Setup
//
void setup()
{
  UAD_StartSetup();

  // Setup of Dcc commander
  dccCommander.Setup(0x00, 0x00, kDCC_INTERRUPT);
  dccCommander.SetStatusLedPin(13);


  // Drivers setups

  arduino = new DriverArduino(AccessoryMotorLightNumber, AccessoryServoNumber);
  arduino->Setup();
  arduino->SetupPortServo(SERVO1, 2); //sortie arduino
  arduino->SetupPortServo(SERVO2, 3); //sortie arduino

  arduino->SetupPortMotor(LIGHT1_PORT, 9, ANALOG); //sortie arduino
  arduino->SetupPortMotor(LIGHT2_PORT, 10, ANALOG); //sortie arduino
  arduino->SetupPortMotor(LIGHT3_PORT, 11, ANALOG); //sortie arduino

  // Accessories setups

  accessories.Setup(
    AccessoryMotorLightNumber + AccessoryServoNumber,

    new AccessoryServo(999, 0, 0), // (address DCC, sous address, durée activation )
    new AccessoryServo(999, 0, 0), // (address DCC, sous address, durée activation )
    new AccessoryLight(1, 0), //(address DCC, sous address, durée activation )
    new AccessoryLight(1, 1), //(address DCC, sous address, durée activation )
    new AccessoryLight(2, 0) //(address DCC, sous address, durée activation )
  );


  SERVO(accessories, SERVO1)->Setup(arduino, SERVO1, 10, 150); // Définition du servo: ( drivers, port de sortie, angle1 , angle 2)
  SERVO(accessories, SERVO2)->Setup(arduino, SERVO2, 10, 150); // Définition du servo: ( drivers, port de sortie, angle1 , angle 2)
  LIGHT(accessories, LIGHT1)->Setup(arduino, LIGHT1_PORT);
  LIGHT(accessories, LIGHT2)->Setup(arduino, LIGHT2_PORT);
  LIGHT(accessories, LIGHT3)->Setup(arduino, LIGHT3_PORT);



  //Servo1
  GroupState *pServo1_1 = new GroupState(320, 0, true); //(Addresse DCC, sous addresse, activation simultané)
  pServo1_1->Setup(1, new GroupStateItem(accessories[SERVO1], MINIMUM)); //(port arduino, choix angle mini ou maxi, délai entre 2 action))

  GroupState *pServo1_2 = new GroupState(320, 1, true);
  pServo1_2->Setup(1, new GroupStateItem(accessories[SERVO1], MAXIMUM));


  //Servo2
  GroupState *pServo2_1 = new GroupState(319, 0, true); //(Addresse DCC, sous addresse, activation simultané)
  pServo2_1->Setup(1, new GroupStateItem(accessories[SERVO2], MINIMUM)); //(port arduino, choix angle mini ou maxi, délai entre 2 action))

  GroupState *pServo2_2 = new GroupState(319, 1, true);
  pServo2_2->Setup(1, new GroupStateItem(accessories[SERVO2], MAXIMUM));

  //Liste des actions servo
  groupServos.Setup(4, pServo2_1, pServo2_2, pServo1_1, pServo1_2); // fusion des 2 actions

 

    // LIGHT 1
GroupState *pLight1_1 = new GroupState(318, 0, true);
pLight1_1->Setup(1,new GroupStateItem(accessories[LIGHT1], LIGHTON));
GroupState *pLight1_2 = new GroupState(318, 1, true);
pLight1_2->Setup(1,new GroupStateItem(accessories[LIGHT1], LIGHTOFF));

    // LIGHT 2
GroupState *pLight2_1 = new GroupState(317, 0, true);
pLight2_1->Setup(1,new GroupStateItem(accessories[LIGHT2], LIGHTON));
GroupState *pLight2_2 = new GroupState(317, 1, true);
pLight2_2->Setup(1,new GroupStateItem(accessories[LIGHT2], LIGHTOFF));

    // LIGHT 3
GroupState *pLight3_1 = new GroupState(316, 0, true);
pLight3_1->Setup(1,new GroupStateItem(accessories[LIGHT3], LIGHTON));
GroupState *pLight3_2 = new GroupState(316, 1, true);
pLight3_2->Setup(1,new GroupStateItem(accessories[LIGHT3], LIGHTOFF));


    // One group state with lights on/off/on, for Dcc code 319/0.
groupLights.Setup(6, pLight1_1, pLight1_2, pLight2_1, pLight2_2, pLight3_1, pLight3_2);




  UAD_EndSetup();
}

void loop()
{
  if (dccCommander.Loop())
  {

    accessories.Loop();
    groupServos.Loop();
    groupLights.Loop();
  }
}

Le problème étant que l'arduino (dans mon cas un mega) ne permet pas d'utiliser plusieurs servo en même temps, pour cela il existe :

soit des Shield de control de moteur + servo  exemple mais limité à 2 servos par shield

ou

Adafruit Controleur PWM Servo 16 canaux 12 bits - I2C interface - PCA9685 exemple avec 16 sorties PWM ( servo ou leds) et montage en série possible par le bus I2C (limite 900).


Mais (bas oui :) ) le problème est que la bibliothèque ne permet pas (encore) de contrôler les ports par l'interface I2C.

De même pour le contrôle de lumière voulant repartir de l'autre bibliothèque light permettant de créer différents effet lumineux je me suis rendu compte que la bibliothèque ne permet pas de "commuter" une instruction

il m'est donc venu l'idée de rendre la bibliothèque plus modulable en y ajoutant( si possible) une commande DCC pointant vers une instruction que le peut écrire dans la partie Setup.

Exemple :

Aujourd’hui :
la CS2 envoie le code DCC 320:1 -> arduino reçoit le code DCC  -> commute le port de l'arduino associé au code dcc
la CS2 envoie le code DCC 320:0 -> arduino reçoit le code DCC  -> commute le port de l'arduino associé au code dcc

Mon idée :
la CS2 envoie le code DCC 320:1 -> arduino reçoit le code DCC  -> active l'instruction associé au code dcc -> envoie les données sur un bus (I2C - CAN - autre ) ou active un sous-programme de gestion de lumière ou moteur)
la CS2 envoie le code DCC 320:0 -> arduino reçoit le code DCC  -> désactive l'instruction associé au code dcc -> envoie les données sur un bus (I2C - CAN - autre ) ou désactive un sous-programme de gestion de lumière ou moteur)

On peut aussi remplacer une instruction par une variable ( vrai ou faux).

En conclusion la programmation peut se révéler plus complexe du fait de la personnalisation, mais laisse une liberté supplémentaire et des possibilités presque infini du fait de l'utilisation du bus I2C et non limité au nombre de sorties de l'arduino.


J’espère avoir été clair  ;D et savoir si il est possible d'améliorer la bibliothèque dans ce sens.


Et je remercie les personnes ayant déjà réalisé tous ce travail !!!!!!!

Bonne soirée.





29
Présentez vous ! / Salut à Tous
« le: septembre 25, 2015, 07:42:20 pm »
Bonjour,
Je m'appelle Maximilien, j'ai un réseau en HO avec une central Marklin et voulant toujours améliorer mon réseaux à moindre cout pour un maximum de plaisir je me suis rendu compte suite à un autre projet basé sur l'arduino ( mise au point d'un appareil photo avec un moteur pas à pas contrôlé par ordinateur et manuellement) que le monde de l'arduino me rendrais la tache plus facile (moins d’électronique ou pas :o).

J'ai 2 projets:

Objectif :

1- le PRINCIPAL - Remplacement des moteurs marklin par des servos ( marre de les changer tous les mois !!)

2 - le secondaire  - Gestion des éclairages (candélabres et maison) et des moteur de grue ou d'attraction

Contrainte :

Pilotable par la CS2

j'ai déjà bien avance grâce au divers tuto et à l'UAD  :D

Pages: 1 [2]