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

Pages: 1 ... 15 16 [17] 18 19 ... 23
241
On peut aussi avoir la date et l'heure  :  __DATE__ et __TIME__

Pierre59

242
Bonjour

Le nom prédéfini __FILE__ du préprocesseur du C donne le nom du fichier source qui est compilé.

Pierre59


243
Débuter / Re : Va et vient avec gare centrale voie unique
« le: novembre 24, 2019, 05:00:52 pm »
Il me semble que que les pullup, c'est plutôt de l'ordre de 35K pour un UNO.

Pierre

244
Débuter / Re : Va et vient avec gare centrale voie unique
« le: novembre 24, 2019, 01:15:21 pm »
Bonjour

Oui il faut une résistance par détecteur, pour détecter des engins moteurs j'utilise des 4700 ohms.
Mais pour détecter des véhicules à essieux graphités il faut plus.

Pierre

245
Débuter / Re : Va et vient avec gare centrale voie unique
« le: novembre 24, 2019, 11:43:30 am »
Bonjour

Pour les détecteurs il faut une résistance de tirage au 5V (pullup) conformément au schéma suivant.
Cette résistance permet de régler la sensibilité du détecteur, les résistances de pullup de l'Arduino peuvent éventuellement êtres utilisées mais sans possibilité d'ajustage de la sensibilité.

Pierre

246
Débuter / Re : Re : Re : Rétrosignalisation
« le: septembre 09, 2019, 04:20:50 pm »
(le fantasme c'est d'avoir un suivi des trains qui permet de mélanger les 2 modes. Pour chaque canton -ou circuit de voie - il y aurait un booster qui commute d'un mode sur l'autre si besoin, en assurant la détection et la rétrosignalisation)
Le fantasme est autorisé sur son réseau personnel, si ça permet de se faire plaisir, mais les problèmes qui pourraient en résulter ne seront pas toujours à partager.

Ce fantasme je l'ai eu aussi quand j'ai construit mon réseau, et j'ai réalisé toute l'électronique en conséquence. Mais au vu des aléas occasionnels dans la circulation des trains, je n'ai encore jamais osé des circulations mixtes. Je tourne donc soit en analogique soit en numérique.

Par contre je ne vois pas la nécessité de zones neutres dont parle msport et je n'en ai pas, un bon gestionnaire de réseau doit faire ce qu'il faut pour éviter les problèmes aux changement de zones.

Pierre

247
Débuter / Re : Re : Re : Rétrosignalisation
« le: septembre 09, 2019, 04:05:07 pm »
Le choix d'un optocoupleur avec diodes tête bêche, permet d'utiliser ce schéma aussi bien en analogique (dans les deux sens du train) qu'en numérique (...)
pas aussi bien, en analogique le courant est coupé à l'arrêt, ce détecteur ne fonctionne pas
de + la chute de tension de 1,4v peut s'avérer gênante
... pour dire que si quelqu'un a une solution pour palier, je suis (on est) preneur

Bonjour

En analogique, pour détecter les engins moteurs à l'arrêt et les véhicules avec essieux graphités ainsi que ceux  avec éclairage ou feux de fin de convoi, on utilise en général une source de courant annexe de quelques dizaines de volts  (24 à 48 volts) reliée à chaque zone par une résistance assez grande. Cette résistance doit être suffisamment grande pour que le courant passant par une machine à l'arrêt ne fasse pas tourner le moteur mais déclenche la rétrosignalisation, pas trop grande quand même pour qu'un essieu graphité déclenche aussi la rétrosignalisation, en pratique il faut qu'il passe quelques miliampères. Le site de Nice précédemment cité décrit bien cela.

Dans ce cas le détecteur avec optocoupleur tête bêche fonctionne indifféremment en analogique et en numérique.

Pour la chute de tension on ne peut pas faire grand chose à par augmenter la tension des sources analogiques et numérique.

On ne peut pas faire de détection s'il n'y à pas de courant ou de tension.

Pierre

248
Débuter / Re : Re : Rétrosignalisation
« le: août 29, 2019, 05:17:45 pm »
je n'ai pas pu ou su récupérer le schéma de montage proposé par Pierre ( est ce possible de me le renvoyer)

Bonjour

Voila

Pierre

249
Vos projets / Re : BALDUINO WIFI
« le: juillet 05, 2019, 04:57:49 pm »
Bonjour

Voila une ébauche de ce que pourrait être la communication entre ESP pour le BAL.

On est ici en TCP donc avec le modèle client serveur.

Chaque ESP est à la fois serveur (pour un autre ESP) sur le port 2222 et client (d'un autre ESP).

Le serveur reçoit un octet d'un ESP et le transmet à un autre ESP (trois ESP).


IPAddress ipLocal; // adresse ip du serveur local

#include <WiFi.h>

char ssid[]="WIFI MAC"; // nom du reseau
char pass[]="Ma phrase de securite"; // mot de passe WPA

WiFiServer serveur(2222); // serveur sur le port 2222
int status=WL_IDLE_STATUS; // etat connexion wifi

WiFiClient client;
IPAddress ipDistant(192,168,1,13);  // adresse ip du serveur distant

void setup() {
  Serial.begin(9600);
   Serial.println("Essai de connexion wifi");
  while (status!=WL_CONNECTED) { // connexion wifi
    status=WiFi.begin(ssid, pass);
    delay(5000);
  }
  Serial.println("Serveur connecte wifi");
  serveur.begin(); // demarrage du, serveur
  ipLocal=WiFi.localIP(); // obtention de l'adresse ip du serveur
  serveur.begin(); // demarrage du serveur 2222
  Serial.println(ipLocal);

  while (!client.connect(ipDistant,2222)) { Serial.print("."); delay(100); }
  Serial.println();
  Serial.println("Client connecte au serveur distant 2222");
  Serial.println(ipDistant);
 
  Serial.println("Attente de connexion au serveur local 2222");
}

void loop() {   
  WiFiClient clientDuServeur=serveur.available(); // test si clientDuServeur connecte
  if (clientDuServeur) { unsigned char data; int color; // clientDuServeur connecte
    Serial.println("Client connecte au serveur local 2222");
    while (clientDuServeur.connected()) { // boucle de traitement
     
      if (client.available()>=1) {
        data=client.read();
        Serial.print((int)data); Serial.print(" ");
        clientDuServeur.write(data);
      }
     
      delay(100);
   }
   Serial.println("Client deconnecte au serveur local 2222");   
   clientDuServeur.stop(); // clientDuServeur deconnecte
  }
}

C'est assez difficile à comprendre, mais cela fonctionne bien (sur un ESP32), avec un Mac pour simuler les deux autre ESP (je n'ai qu'un ESP32).
Ce n'est pas complètement au point s'il y a des déconnections entre les clients et les serveurs.

Cordialement

Pierre

PS fait petite correction sur les n° de port 22 est devenu 2222 (le port 22 n'est pas utilisable sur Mac).

250
Vos projets / Re : Re : BALDUINO WIFI
« le: juillet 02, 2019, 08:45:24 am »
Bonjour
Pour faire communiquer plusieurs modules, il est sûrement plus simple d'utiliser une communication basée sur le protocole UDP plutôt que TCP.
UDP est plus simple, cependant UDP est un protocole non fiable, certes sur un réseau local c'est très relatif, mais peut-on garantir qu'il n'y aura pas perte ou inversion de paquets. S'il faut mettre en oeuvre des contrôles alors autant utiliser TCP, d'autant plus que le débit ici sera très très faible.

Pierrre


251
Vos projets / Re : Re : BALDUINO WIFI
« le: juin 29, 2019, 06:25:51 pm »

J'ai juste besoin de faire passer l’état d'une variable d'un ESP à un autre.

Dans mon cas pour un BAL: Si le BAL et sémaphore ou carré alors envoyer au BAL précédent "un truc" qui lui dit de se mettre au jaune , c'est tout.

ce que j'aimerai faire, c'est de remplacer une liaison série TX RX qui véhicule les variables d’état entre 2 Arduino par une liaison wifi.

C'est bien dans ce sens que va le programme ci dessus, il faut lui enlever tout ce qui est propre au "M5", tous les affichages, et remplacer l'état des boutons par l'état du signal. On ne peut pas faire moins sur un ESP.

Pierre

PS j'ai chaud aussi

252
Vos projets / Re : BALDUINO WIFI
« le: juin 29, 2019, 06:06:14 pm »
Voici un exemple prévu pour un M5stack, c'est un ESP32 avec un affichage LCD couleur, 3 boutons et plein d'autre choses.

L'exemple est un serveur de boutons, chaque fois que l'on appuie sur un (ou plusieurs) bouton(s) l'état des boutons est envoyé au client connecté, on pourrait facilement le transformer en serveur de signal.

Comme l'ESP est doté d'un affichage celui ci est utilisé pour afficher l'état WIFI et l'état du client, tout ce qui concerne l'affichage est dans un onglet séparé (affichage.h). Il faut aussi gérer l'affichage et les boutons, toutes les méthodes nécessaires sont préfixées par "M5".

Le programme serveur.ino

// LCD 320x240
// 16 bit/pixel color order (R:5-bit, G:6-bit, B:5-bit), 65,536 colors

IPAddress ip; // adresse ip du serveur

#include <WiFi.h>
#include <M5Stack.h>
#include "Affichage.h"

char ssid[]="WIFI MAC"; // nom du reseau
char pass[]="Ma phrase de securite"; // mot de passe WPA

WiFiServer server(22); // serveur sur le port 22
int status=WL_IDLE_STATUS; // etat connexion wifi

void setup() {
  M5.begin();
  afficher(false,false);
 
  while (status!=WL_CONNECTED) { // connexion wifi
    status=WiFi.begin(ssid, pass);
    delay(5000);
  }
 
  server.begin(); // demarrage du serveur    (config)
  ip=WiFi.localIP(); // obtention de l'adresse ip du serveur
  afficher(true,false);
}

void loop() {   
  WiFiClient client=server.available(); // test si client connecte
  if (client) { byte data; int color; // client connecte
    afficher(true,true);
    while (client.connected()) { // boucle de traitement
      data=M5.BtnA.read()*4+M5.BtnB.read()*2+M5.BtnC.read(); // lecture des boutons
      client.write(data); // envoi au client
      boutons(data);
      delay(100);
    }
    afficher(true,false);
    client.stop(); // client deconnecte
  }
}

Si on veut des adresses IP fixes il faut changer "server.begin()"; en "server.config(...);"

Accessoirement le fichier faisant les affichages :
void afficher(boolean b1,boolean b2) { // affichage des messages
  M5.Lcd.setTextColor(BLACK);
  M5.Lcd.setTextFont(4);
  M5.Lcd.fillScreen(WHITE);
  M5.Lcd.setCursor(25,50);
  if (!b1) {
    M5.Lcd.print("Connexion WIFI ...");
    return;
  }
  else {       
    M5.Lcd.print("Serveur : ");
    M5.Lcd.print(ip);
  }
 
  if (b2) {
    M5.Lcd.setTextColor(RED);
    M5.Lcd.setCursor(25,100);
    M5.Lcd.print("Client connecte");
  }
}

void boutons(byte data) { int color; // affichage des boutons
    if ((data&4)!=0) color=BLACK; else color=WHITE;
    M5.Lcd.fillRoundRect(35,165,60,40,4,color);
    if ((data&2)!=0) color=BLACK; else color=WHITE;
    M5.Lcd.fillRoundRect(35+35+60,165,60,40,4,color);
    if ((data&1)!=0) color=BLACK; else color=WHITE;
    M5.Lcd.fillRoundRect(35+35+35+60+60,165,60,40,4,color);
}

Pierre

253
Vos projets / Re : BALDUINO WIFI
« le: juin 29, 2019, 05:44:58 pm »
Bonjour

Quelques remarques :

Certes l'UDP est plus simple, mais il y a toujours des risques de pertes de paquets !  avec TCP pas de risques.

Dans le cas présent il n'y a pas vraiment besoin de diffusion.

La bibliothèque WIFI des ESP cache (presque) complètement les sockets, et on a pas besoin de sockets pour écrire des applications simples comme c'est le cas ici..

Pour une fois que l'on peut se passer de centralisation, il ne faut pas se priver. Le mot serveur sur chaque ESP est un bien grand mot, c'est juste pour se conformer au modèle client/serveur.

Cordialement

Pierre


254
Vos projets / Re : BALDUINO WIFI
« le: juin 29, 2019, 04:56:50 pm »
Les communications réseau donc celles en WIFI, se font généralement avec le protocole TCP/IP (mais il existe un autre protocole moins utilisé UDP/IP). Avec le protocole TCP/IP il faut fonctionner en mode client/serveur :
- le serveur est démarré avant le client et attend la connection d'un client. On peut aussi avoir plusieurs clients.
- le client se connecte à un serveur.
Une fois que le client est connecté au serveur le client peut envoyer des messages au serveur ou en recevoir, avec des read et des write, le serveur peut envoyer des messages au client ou en recevoir, avec des read et des write.
Dans le cas présent chaque ESP doit être a la fois serveur et client, c'est à dire que chaque ESP va démarrer un serveur (disons un serveur de signal) et va se connecter au serveur de signal d'un autre ESP, chaque ESP peut alors communiquer avec 2 ESP (ceux des cantons adjacents) en lecture et/ou en écriture.

Je vais rechercher, j'ai un petit programme de serveur de boutons sur ESP32.

Pierre

255
Vos projets / Re : BALDUINO WIFI
« le: juin 29, 2019, 10:08:34 am »
Bonjour

Cette démarche sans fil me semble tout à fait dans l'air du temps, on commence déjà à trouver des décodeurs de loco WIFI.

Oui je sais faire mais avec des ESP32, il me semble qu'il y a quelques petites différences entre l'ESP32 et ESP8266, mais cela ne devrait pas être un problème.

Comme il y a plusieurs ESP il va falloir un routeur et utiliser des adresses IP fixes, le routeur cela peut être une box ou un routeur dédié.

Un octet transmis d'un ESP à un autre ESP est largement suffisant dans ce cas.

L'ESP32 a des bibliothèques pour faire cela assez facilement, celles de ESP8266, doivent êtres semblables.

On peut discuter de tout cela.

Cordialement

Pierre




Pages: 1 ... 15 16 [17] 18 19 ... 23