Panneau d'affichgage de gare

Avatar du membre
France ramasoft
Chef es bogies
Chef es bogies
Messages : 5527
Enregistré le : 29 juil. 2024, 19:06
Prénom : Patrick
LOCALISATION : Indre - Levroux
Centres d'intérêts : Modélisme ferroviaire
Programmation C++, VB6 et assembleur
Électronique
Echelle pratiquée : H0
Âge : 68
Pays :
France
France
juil. 2026 27 15:48

Re: Panneau d'affichgage de gare

Message par France ramasoft

Ah oui, on pourrait :hhhaaaa:
Avatar du membre
France likiki
Site Admin
Site Admin
Messages : 16592
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 59
Pays :
France
France
juil. 2026 27 16:03

Re: Panneau d'affichgage de gare

Message par France likiki

Allez Patrick, ont crois en toi, lance toi.

:sivousme:

:hhhaaaa: :hhhaaaa: :hhhaaaa:
Si le Goëland se gratte le gland, il fera mauvais temps,
Si il se gratte le cul, il ne fera pas beau non plus.

Proverbe de là bas.

ImageImageImage

:tirechap:

Si vous souhaitez faire un don pour le forum , c'est ici.
Avatar du membre
France ramasoft
Chef es bogies
Chef es bogies
Messages : 5527
Enregistré le : 29 juil. 2024, 19:06
Prénom : Patrick
LOCALISATION : Indre - Levroux
Centres d'intérêts : Modélisme ferroviaire
Programmation C++, VB6 et assembleur
Électronique
Echelle pratiquée : H0
Âge : 68
Pays :
France
France
juil. 2026 27 16:04

Re: Panneau d'affichgage de gare

Message par France ramasoft

Pour le moment je vais finir les pièces en impression 3D pour le mettre sur mon quai et voir ce que ça donne.
Avatar du membre
France likiki
Site Admin
Site Admin
Messages : 16592
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 59
Pays :
France
France
juil. 2026 27 16:06

Re: Panneau d'affichgage de gare

Message par France likiki

Malgré la petitesse de ces écrans je les trouvent grand pour du HO.

Reste a voir en situation.

:tire langue
Si le Goëland se gratte le gland, il fera mauvais temps,
Si il se gratte le cul, il ne fera pas beau non plus.

Proverbe de là bas.

ImageImageImage

:tirechap:

Si vous souhaitez faire un don pour le forum , c'est ici.
Avatar du membre
France ramasoft
Chef es bogies
Chef es bogies
Messages : 5527
Enregistré le : 29 juil. 2024, 19:06
Prénom : Patrick
LOCALISATION : Indre - Levroux
Centres d'intérêts : Modélisme ferroviaire
Programmation C++, VB6 et assembleur
Électronique
Echelle pratiquée : H0
Âge : 68
Pays :
France
France
juil. 2026 27 16:26

Re: Panneau d'affichgage de gare

Message par France ramasoft

Oui, je me suis fait la même réflexion.
Ça fait une dimension hors tout de 35mm x 30mm ce qui fait 3,045 m x 2,61m donc effectivement une belle taille ...
Après plus petit ce sont les 0,96 pouces qui font 27mm de large sur 30mm de haut car le circuit dépasse beaucoup de l'écran.
Ils sont en une seule couleur ou avec juste la ligne du haut en jaune et le reste en bleu.
Donc l'affichage sera plus limité et moins joli tout en ayant un panneau pas tellement plus petit.
Et ceux que j'ai utilisé pour les tachymètres n'ont pas un format adapté et on ne peut mettre que 4 lignes, en monochrome.


L'écran 0,96 pouces
IMG_20260727_162352.jpg
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Avatar du membre
France likiki
Site Admin
Site Admin
Messages : 16592
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 59
Pays :
France
France
juil. 2026 27 16:58

Re: Panneau d'affichgage de gare

Message par France likiki

Maintenant, nos réseaux ne sont pas des réseaux reproduisant a 100% la réalité. Cela nous permet, entre autre, de nous affranchir de ce type de détail.

Mettre un écran qui ferait la taille exact au HO, je ne suis pas sur que cela existe dans le commerce d'une part, et d'autre part, nada la lisibilité sauf a utiliser une paire de jumelle. :mdr1:

Par contre, mettre ton écran sur un petit quais risquerait de faire tache. Mais sur un double quais de bonne longueur et dans l'alignement de celui-ci ça devrait le faire (j'ai déjà vue cela sur un réseau).

:tire langue
Si le Goëland se gratte le gland, il fera mauvais temps,
Si il se gratte le cul, il ne fera pas beau non plus.

Proverbe de là bas.

ImageImageImage

:tirechap:

Si vous souhaitez faire un don pour le forum , c'est ici.
Avatar du membre
France ramasoft
Chef es bogies
Chef es bogies
Messages : 5527
Enregistré le : 29 juil. 2024, 19:06
Prénom : Patrick
LOCALISATION : Indre - Levroux
Centres d'intérêts : Modélisme ferroviaire
Programmation C++, VB6 et assembleur
Électronique
Echelle pratiquée : H0
Âge : 68
Pays :
France
France
juil. 2026 27 18:32

Re: Panneau d'affichgage de gare

Message par France ramasoft

A droite, c'est le panneau qu'il va remplacer. C'est un panneau au sol et l'écran sera un peu plus en hauteur
Ça devrait aller.
L'habillage est asymétrique car l'écran l'est aussi: il y a le côté des connexions qui est plus large.
J'espère que ça ne se verra pas trop car j'avais essayé de faire un habillage symétrique mais ça faisait mastoc par rapport à la surface d'affichage.
IMG_20260727_182335.jpg
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Avatar du membre
France Amigorl
Posteur irrécupérable
Posteur irrécupérable
Messages : 842
Enregistré le : 02 févr. 2025, 20:15
Prénom : Rémy
LOCALISATION : Pau
Centres d'intérêts : Digitalisation matériel ancien, construction d'un réseau HO. Arduino, Dccex-Conmmand-Station, Rocrail, Digitalisation pont tournant Jouef, Decodeur accessoires DIY. 3D PLA et débutant SLA.
Echelle pratiquée : H0
Âge : 64
Pays :
France
France
juil. 2026 27 19:51

Re: Panneau d'affichgage de gare

Message par France Amigorl

:tirechap: le serveur web pour communiquer avec l'Esp32 (ici : réglage de l'heure mais valable pour toutes autres fonctionnalités)

:PetitPoucejpg:
Avatar du membre
France ramasoft
Chef es bogies
Chef es bogies
Messages : 5527
Enregistré le : 29 juil. 2024, 19:06
Prénom : Patrick
LOCALISATION : Indre - Levroux
Centres d'intérêts : Modélisme ferroviaire
Programmation C++, VB6 et assembleur
Électronique
Echelle pratiquée : H0
Âge : 68
Pays :
France
France
juil. 2026 27 20:18

Re: Panneau d'affichgage de gare

Message par France ramasoft

Oui, on peut faire plein de choses sur le même principe.
Et il y a aussi le Bluetooth, mais je n'aime pas trop.
Ces ESP32 sont très bien.
Avatar du membre
France likiki
Site Admin
Site Admin
Messages : 16592
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 59
Pays :
France
France
juil. 2026 27 20:39

Re: Panneau d'affichgage de gare

Message par France likiki

C'est comme les Wemos D1 mini.

Topissime.

:tire langue
Si le Goëland se gratte le gland, il fera mauvais temps,
Si il se gratte le cul, il ne fera pas beau non plus.

Proverbe de là bas.

ImageImageImage

:tirechap:

Si vous souhaitez faire un don pour le forum , c'est ici.
Avatar du membre
France ramasoft
Chef es bogies
Chef es bogies
Messages : 5527
Enregistré le : 29 juil. 2024, 19:06
Prénom : Patrick
LOCALISATION : Indre - Levroux
Centres d'intérêts : Modélisme ferroviaire
Programmation C++, VB6 et assembleur
Électronique
Echelle pratiquée : H0
Âge : 68
Pays :
France
France
juil. 2026 30 11:01

Re: Panneau d'affichgage de gare

Message par France ramasoft

Dernière amélioration du logiciel : la possibilité d’éditer la liste des trains


Alors ça n’a l’air de rien mais il a fallu modifier pas mal de choses :
1- Le tableau horaires[] actuel est figé à la compilation (const char* pointant vers du texte fixe en mémoire flash) — il faut le transformer en tableau modifiable en RAM (char[] au lieu de const char*)
2- Sans sauvegarde, les modifications seraient perdues au prochain redémarrage et il va falloir faire une sauvegarde du tableau dans la mémoire flash de l'ESP32, qui le recharge automatiquement à chaque démarrage. Comme pour les niveaux de l’ascenseur et les voies du pont tournant.
3- Nombre de trains variable : NB_TRAINS devient une variable (pas une constante), avec une limite haute (MAX_TRAINS) pour réserver la mémoire à l'avance
4- Prévoir une routine de tri pour reclasser automatiquement la liste

J’ai demandé à Claude de ma faire une jolie page web pour éditer la liste et une modification de la première page d’accueil du réglage de l’heure.

Il a fallu sortir les pages web dans des fichiers à inclure : page_accueil.h et page_horaires.h car le compilateur se mélangeait les crayons avec les accolades et les guillemets du code HTML qu’il prenait pour du C++.

Donc le tableau des horaires est conservé pour avoir une liste par défaut, et qu’on pourra rappeler pour une réinitialisation « aux paramètres usine »

Ensuite dans le Setup, on regarde s’il y a une liste sauvegardée, si oui, on la charge. Si non on garde la liste par défaut écrite en dur dans le code.

Une fonction trierHoraires() fait un tri à bulles largement suffisant pour une trentaine de trains : le nb de trains est fixé à 30 mais peut être modifié dans le code : MAX_TRAINS à la ligne 120. Cette limite est nécessaire pour réserver la mémoire nécessaire mais suffisante sans risque de débordement.
La méthode du tri à bulle est la plus lente qui existe mais elle a l’avantage d’être compacte car on commence à voir arriver les limites de la mémoire de stockage des programmes de l’ESP…

Le tri est appelé :
- À la fin de analyserEtChargerHoraires() — donc après chaque sauvegarde depuis la page web, et après chaque chargement depuis la mémoire flash au démarrage
- À la fin de chargerHorairesDefaut() — par sécurité, même si le tableau par défaut est déjà trié

Résultat : peu importe où on insère un nouveau train dans la page web (au début, au milieu, à la fin de la liste), il se retrouvera automatiquement à sa place chronologique une fois enregistré — et l'affichage à l'écran (qui suppose un tableau trié) continuera de fonctionner correctement.

Attention à bien remplir les cases car je n’ai pas voulu surcharger par une routine de vérification des saisies:
- l’heure de départ et les minutes en chiffres
- le nom des trains est tronqué à 19 caractères. Comme on utilise une police proportionnelle, la largeur des caractères compte et un « W »occupe plus de place qu’un « I » donc les 19 caractères peuvent ne pas pouvoir s’afficher sans débordement avec des noms comportant des grosses lettres.
Ne pas utiliser d’accents ni de caractères comme la virgule, le point-virgule, le point ou un retour chariot qui casserait la ligne.
- l’heure d’arrivée est en texte au format « 10h15 »
- la voie ne comporte qu’un chiffre mais qui peut être aussi une lettre. Mais A1 ne s’affichera pas

La page d'accueil du serveur web:
Screenshot_20260729-142101.jpg

La liste des trains en mode édition.
Screenshot_20260729-142120.jpg
Screenshot_20260729-142129.jpg
Screenshot_20260729-143705.jpg

La liste validée
Screenshot_20260729-143728.jpg
Le code et les deux pages web en fichiers à inclure: tout doit être dans le même répertoire et qui porte le nom du fichier .INO
Panneau_Gare_Wifi_V1_24.ino
La page d'accueil page_accueil.h

Code : Tout sélectionner

#pragma once

// ---------- Page web servie par l'ESP32 (reglage de l'heure) ----------
// Le JavaScript lit l'heure LOCALE du téléphone (déjà juste, été/hiver
// géré automatiquement par le téléphone) et l'envoie à l'ESP32.
//
// NOTE : ce contenu est dans un fichier .h séparé (et non dans le .ino)
// car le générateur automatique de prototypes de fonctions d'Arduino IDE
// (basé sur ctags) se laisse piéger par les accolades et guillemets
// contenus dans ce bloc HTML/CSS/JS, ce qui casse la compilation de
// TOUT le fichier .ino (plus aucune fonction n'est "trouvée"). Un fichier
// .h inclus via #include n'est jamais analysé par ce générateur.
const char PAGE_HTML[] = R"rawliteral(
<!DOCTYPE html><html><head><meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Panneau Gare - Reglage heure</title>
<style>
  body{font-family:sans-serif;text-align:center;background:#111;color:#eee;padding:30px 20px;}
  button{font-size:1.2em;padding:18px 36px;border-radius:10px;border:none;background:#2a6;color:white;margin-top:20px;}
  #heurePhone{font-size:1.6em;margin-top:10px;}
  #msg{margin-top:20px;font-size:1.1em;color:#7f7;}
</style></head><body>
  <h2>Panneau de gare HO</h2>
  <p>Heure actuelle du telephone :</p>
  <p id="heurePhone"></p>
  <button onclick="reglerHeure()">Regler l'horloge du panneau</button>
  <p id="msg"></p>
  <p><a href="/horaires" style="color:#7cf;">Gerer les horaires des trains</a></p>
<script>
function majAffichage() {
  document.getElementById('heurePhone').innerText = new Date().toLocaleString();
}
setInterval(majAffichage, 1000);
majAffichage();

function reglerHeure() {
  const d = new Date();
  const params = 'y=' + d.getFullYear() + '&mo=' + (d.getMonth()+1) + '&d=' + d.getDate()
               + '&h=' + d.getHours() + '&mi=' + d.getMinutes() + '&s=' + d.getSeconds();
  fetch('/settime?' + params)
    .then(r => r.text())
    .then(t => { document.getElementById('msg').innerText = t; });
}
</script>
</body></html>
)rawliteral";
La page d'édition des horaires page_horaires.h

Code : Tout sélectionner

#pragma once

// ============================================================
// Page web de gestion des horaires : tableau modifiable, ajout/suppression
// de lignes, enregistrement en un clic. Réutilise le même format texte
// compact ("heure;minute;nom;arrivee;quai" par ligne) que la sauvegarde.
//
// NOTE : voir page_accueil.h pour l'explication du pourquoi ce contenu
// est dans un fichier .h séparé plutôt que dans le .ino.
// ============================================================
const char PAGE_HTML_HORAIRES[] = R"rawliteral(
<!DOCTYPE html><html><head><meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Horaires - Panneau Gare</title>
<style>
  body{font-family:sans-serif;background:#111;color:#eee;padding:15px;}
  h2{text-align:center;}
  table{width:100%;border-collapse:collapse;font-size:0.9em;}
  th,td{padding:4px;text-align:center;}
  input{width:100%;box-sizing:border-box;background:#222;color:#eee;border:1px solid #444;border-radius:4px;padding:4px;}
  input[type=number]{width:3.2em;}
  button{font-size:1.1em;padding:12px 20px;border-radius:10px;border:none;background:#2a6;color:white;margin:6px 4px;}
  #btnReset{background:#a33;}
  .del{background:#a33;padding:6px 10px;font-size:0.9em;}
  #msg{text-align:center;margin-top:15px;font-size:1.1em;color:#7f7;}
  a{color:#7cf;}
</style></head><body>
  <h2>Gestion des horaires</h2>
  <table>
    <thead><tr><th>H</th><th>Min</th><th>Destination</th><th>Arrivee</th><th>V</th><th></th></tr></thead>
    <tbody id="corps"></tbody>
  </table>
  <div style="text-align:center;">
    <button onclick="ajouterLigne()">+ Ajouter un train</button>
    <button onclick="enregistrer()">Enregistrer</button>
    <button id="btnReset" onclick="reinitialiser()">Horaires par defaut</button>
  </div>
  <p id="msg"></p>
  <p style="text-align:center;"><a href="/">Retour au reglage de l'heure</a></p>

<script>
function ajouterLigne(h='', m='', nom='', arr='', quai='') {
  const tbody = document.getElementById('corps');
  const tr = document.createElement('tr');
  tr.innerHTML =
    '<td><input type="number" min="0" max="23" value="' + h + '"></td>' +
    '<td><input type="number" min="0" max="59" value="' + m + '"></td>' +
    '<td><input type="text" value="' + nom + '"></td>' +
    '<td><input type="text" value="' + arr + '"></td>' +
    '<td><input type="text" value="' + quai + '"></td>' +
    '<td><button class="del" onclick="this.closest(\'tr\').remove()">X</button></td>';
  tbody.appendChild(tr);
}

// Chargement des horaires actuels au chargement de la page
fetch('/horaires_data').then(r => r.text()).then(txt => {
  txt.trim().split('\n').forEach(ligne => {
    if (!ligne) return;
    const c = ligne.split(';');
    ajouterLigne(c[0], c[1], c[2], c[3], c[4]);
  });
});

function enregistrer() {
  let data = '';
  document.querySelectorAll('#corps tr').forEach(tr => {
    const champs = tr.querySelectorAll('input');
    const nom = champs[2].value.trim();
    if (nom === '') return; // ignore les lignes vides
    data += champs[0].value + ';' + champs[1].value + ';' + nom + ';'
          + champs[3].value + ';' + champs[4].value + '\n';
  });
  fetch('/horaires_save', { method: 'POST', headers: {'Content-Type':'text/plain'}, body: data })
    .then(r => r.text())
    .then(t => { document.getElementById('msg').innerText = t; });
}

function reinitialiser() {
  if (!confirm('Revenir aux horaires par defaut ? Les modifications seront perdues.')) return;
  fetch('/horaires_reset', { method: 'POST' })
    .then(r => r.text())
    .then(t => { document.getElementById('msg').innerText = t; location.reload(); });
}
</script>
</body></html>
)rawliteral";




Cette fois, je pense en rester là mais si vous avez des idées d’amélioration, pourquoi pas …
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par France ramasoft le 30 juil. 2026, 11:06, modifié 1 fois.
Avatar du membre
France likiki
Site Admin
Site Admin
Messages : 16592
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 59
Pays :
France
France
juil. 2026 30 11:04

Re: Panneau d'affichgage de gare

Message par France likiki

Alors là, :tirechap: :tirechap: :tirechap: :tirechap:

Je kif a 2 000 000 %


:bienv: :bienv: :bienv: :bienv: :bienv: :bienv: :bienv:
Si le Goëland se gratte le gland, il fera mauvais temps,
Si il se gratte le cul, il ne fera pas beau non plus.

Proverbe de là bas.

ImageImageImage

:tirechap:

Si vous souhaitez faire un don pour le forum , c'est ici.
Avatar du membre
France bunny94
2000 posts et +
2000 posts et +
Messages : 15040
Enregistré le : 22 sept. 2021, 08:35
Prénom : Alain
LOCALISATION : Noiseau
Centres d'intérêts : Photo-Vidéo-Modélisme ferroviaire-Trains réels-Impression 3D-Miniature automobile 1/43ème
Echelle pratiquée : H0
Âge : 75
Pays :
France
France
juil. 2026 30 11:09

Re: Panneau d'affichgage de gare

Message par France bunny94

:bienv: :bienv: :bienv:
Pour me retrouver sur ma chaîne YT: https://www.youtube.com/@abunny94/videos
Avatar du membre
France ramasoft
Chef es bogies
Chef es bogies
Messages : 5527
Enregistré le : 29 juil. 2024, 19:06
Prénom : Patrick
LOCALISATION : Indre - Levroux
Centres d'intérêts : Modélisme ferroviaire
Programmation C++, VB6 et assembleur
Électronique
Echelle pratiquée : H0
Âge : 68
Pays :
France
France
juil. 2026 30 11:32

Re: Panneau d'affichgage de gare

Message par France ramasoft

Pour « la technique » il y a un support en impression 3D pour l’ESP et l’horloge RTC
Capture d'écran 2026-07-30 110945.png
Capture d'écran 2026-07-30 110957.png
J’ai donc réutilisé le shield qui m’avait servi aux essais
Comme disait Lavoisier « Rien ne se perd, rien ne se crée, tout se transforme »
Le shield permet de souder ses fils, sans risque de faux contact et sans risque de se tromper.
Tout est repéré au départ avec des stickers qui indiquent les broches à utiliser avec un code couleur. Les couleurs utilisées sont rappelées dans l’entête du code ainsi on n'a pas besoin de documentation annexe et le jour où on veut modifier quelque chose, tout est clair.

La plaquette de circuit à bande est fixée par 4 vis de 1,2mm
Même chose pour l’horloge RTC qui vient s’enficher sur son connecteur : pas de risque d’erreur de branchement.
Les connexions des fils se font par derrière et un cache vient fermer pour les protéger
Le support peut être vissé sur une surface plane.
IMG_20260729_180516.jpg
IMG_20260729_180616.jpg
IMG_20260729_180713.jpg
IMG_20260730_104835.jpg
IMG_20260730_104916.jpg
IMG_20260730_104851.jpg

Pour le bouton d’appel du Wi-Fi, pendant les essais je l’avais mis sur la broche 13 qui est juste à côté d’une masse et un simple court-circuit des deux broches avec un instrument métallique permettait de se passer de bouton. Mais quand j’ai voulu mettre un bouton qui occupe 3 pistes, il fallait le mettre entre GPIO 09 et GND et … l’ESP ne démarrait plus… :siffle:
Claude … au secours :pompom: (heureusement qu’il était là sinon j’aurais passé des heures à chercher sur le web)

GPIO9 (comme GPIO6 à GPIO11 en général) est une des broches connectées en interne à la mémoire flash SPI de l'ESP32 (celle qui contient le programme). Sur la plupart des modules ESP32 (dont le WROOM-32, le plus courant), ces broches sont câblées à demeure vers la puce flash à l'intérieur même du module, et ne sont pas disponibles pour un usage externe.

En configurant GPIO9 comme entrée (INPUT_PULLUP), on perturbe la communication entre l'ESP32 et sa propre mémoire flash — ce qui peut empêcher le programme de s'exécuter correctement dès le départ (crash ou redémarrage en boucle), pas seulement empêcher la lecture du bouton.

Donc obligé de remettre entre GPIO13 et GND et je l’ai déplacé sur un petit bout de circuit imprimé annexe.

Je ferai une vidéo plus complète sur les ESP32 car il y a pas mal de choses à savoir si on ne veut pas passer des heures à galérer.
En particulier, même si les broches s’appellent General Purpose Input Output (GPIO), elles ne sont pas interchangeables et il a des incompatibilités.

Les fichiers STL du support
Support ESP.stl
Cache.stl
Et les stickers de l'ESP:
Sticker ESP32.docx
Maintenant reste à poser le panneau sur le réseau et là, ça va moins rigoler car il faudra démonter le quai. Heureusement c’est prévu et je l’ai déjà fait mais il mesure 2m de long et il faut faire attention à ne rien casser autour et en particulier les potences qui sont en impression 3D …
Je mettrai les STL du panneau et de son support une fois que je les aurai posés pour voir si tout va bien...

:a_suivre:
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Avatar du membre
France Amigorl
Posteur irrécupérable
Posteur irrécupérable
Messages : 842
Enregistré le : 02 févr. 2025, 20:15
Prénom : Rémy
LOCALISATION : Pau
Centres d'intérêts : Digitalisation matériel ancien, construction d'un réseau HO. Arduino, Dccex-Conmmand-Station, Rocrail, Digitalisation pont tournant Jouef, Decodeur accessoires DIY. 3D PLA et débutant SLA.
Echelle pratiquée : H0
Âge : 64
Pays :
France
France
juil. 2026 30 12:20

Re: Panneau d'affichgage de gare

Message par France Amigorl

:bienv: pour tout ça ?

Petite suggestion limite gadget, le gpio 13 de l'Esp32 peut être utilisé en touche tactile (capteur interne capacitif), ainsi on peut se passer d'un bouton ( juste connecter une petite vis du boîtier par exemple, reliée au gpio 13)

#define TOUCH_PIN T4 // GPIO13 en mode tactile

Exemple :

void setup() {
Serial.begin(115200);
}

void loop() {
int val = touchRead(TOUCH_PIN);
Serial.println(val);
delay(200);
}

On peut aussi utiliser les interruptions :

touchSetCycles(measure, sleep); // ajuster la précision

touchAttachInterrupt(pin, callback, threshold); // déclenchement par interruption
Avatar du membre
France ramasoft
Chef es bogies
Chef es bogies
Messages : 5527
Enregistré le : 29 juil. 2024, 19:06
Prénom : Patrick
LOCALISATION : Indre - Levroux
Centres d'intérêts : Modélisme ferroviaire
Programmation C++, VB6 et assembleur
Électronique
Echelle pratiquée : H0
Âge : 68
Pays :
France
France
juil. 2026 30 13:27

Re: Panneau d'affichgage de gare

Message par France ramasoft

Ok Merci Remy :cooooool:
Je vais creuser ces histoires de broches de l'ESP32 car il y a encore beaucoup de choses que j'ignore sur cette bestiole plus compliquée que l'Arduino.
Avatar du membre
France ramasoft
Chef es bogies
Chef es bogies
Messages : 5527
Enregistré le : 29 juil. 2024, 19:06
Prénom : Patrick
LOCALISATION : Indre - Levroux
Centres d'intérêts : Modélisme ferroviaire
Programmation C++, VB6 et assembleur
Électronique
Echelle pratiquée : H0
Âge : 68
Pays :
France
France
juil. 2026 30 13:44

Re: Panneau d'affichgage de gare

Message par France ramasoft

Pour compléter, j'ai demandé à Claude et voici sa réponse:


Les faits

Le GPIO13 de l'ESP32 (la puce originale, pas les variantes S2/S3/C3) correspond bien à une broche tactile capacitive : c'est le canal **T4** du contrôleur touch interne.

Voici la table complète pour référence, ça peut être utile si tu veux changer de broche plus tard :
Canal TouchGPIO
T0GPIO4
T1GPIO0
T2GPIO2
T3GPIO15
**T4****GPIO13**
T5GPIO12
T6GPIO14
T7GPIO27
T8GPIO33
T9GPIO32
Comment ça marche

Le contrôleur mesure la variation de capacité électrique sur la broche. En touchant un objet métallique relié à cette broche (ta vis du boîtier), tu augmentes légèrement la capacité, ce qui fait baisser la valeur lue par le registre touch. Le firmware compare cette valeur à un seuil pour détecter le "touché".

Points d'attention pratiques

- Calibration nécessaire : la valeur de base varie selon le montage (longueur de fil, taille de la vis, humidité ambiante). Il faut lire les valeurs à vide au démarrage et fixer un seuil relatif plutôt qu'une valeur fixe en dur.
- Sensibilité à l'environnement : humidité, proximité d'autres objets métalliques ou même la présence d'eau peuvent perturber la lecture.
- Fil de connexion : plus le fil entre le GPIO et la vis est long, plus il agit comme antenne parasite — ça peut rendre la détection moins fiable ou plus bruitée. Un fil court et si possible blindé/torsadé aide.
- Anti-rebond logiciel : comme pour un bouton classique, prévoir un léger debounce/filtrage (moyenne glissante par exemple) pour éviter les faux déclenchements.
- Attention à la variante de puce : si jamais tu passes à un ESP32-S2 ou S3, la table des GPIO touch est différente. L'ESP32-C3 n'a carrément pas de touch sensor. Donc vérifie bien que ta carte utilise l'ESP32 "classique".

Si tu veux, je peux te donner un petit exemple de code (Arduino ou ESP-IDF) pour lire GPIO13 en mode touch avec seuil calibré au démarrage.

J'ai dit oui et voici le code qu'il m'a fait:

Code : Tout sélectionner

#define TOUCH_PIN   13   // GPIO13 = canal T4
#define SAMPLES     10   // nombre de lectures pour la calibration
#define MARGIN      10   // marge de détection (à ajuster selon test)

uint16_t baseline = 0;    // valeur de repos (sans contact)
bool touched = false;

void setup() {
  Serial.begin(115200);
  delay(500);

  // Calibration : on mesure la valeur "au repos" au démarrage
  uint32_t sum = 0;
  for (int i = 0; i < SAMPLES; i++) {
    sum += touchRead(TOUCH_PIN);
    delay(20);
  }
  baseline = sum / SAMPLES;

  Serial.print("Valeur de repos (baseline) : ");
  Serial.println(baseline);
}

void loop() {
  uint16_t val = touchRead(TOUCH_PIN);

  // Le touché fait BAISSER la valeur lue
  bool isTouchedNow = (val < baseline - MARGIN);

  if (isTouchedNow && !touched) {
    touched = true;
    Serial.println(">>> Touché détecté !");
    // --> ici ton action (allumer une LED, déclencher une fonction, etc.)
  }

  if (!isTouchedNow && touched) {
    touched = false;
    Serial.println("Relâché.");
  }

  Serial.printf("val=%d  baseline=%d\n", val, baseline);
  delay(100);
}

Explications rapides
- touchRead(TOUCH_PIN) : fonction native de l'ESP32 Arduino core, renvoie une valeur (typiquement entre 0 et ~80-100 selon montage) qui diminue au contact.
- Calibration au démarrage : on fait une moyenne sur quelques lectures pour connaître le "zéro" du montage — important car cette valeur change selon la longueur du fil, la taille de la vis, etc.
- MARGIN : à ajuster en observant les valeurs affichées dans le moniteur série, avec et sans contact. Une marge trop faible → faux déclenchements ; trop grande → pas assez sensible.
- Anti-rebond simple : le bool touched évite de spammer l'action tant que le doigt reste posé (déclenchement uniquement au changement d'état).

Conseils de mise au point
Flashe ce code, ouvre le moniteur série (115200 bauds).
Observe la valeur val sans toucher la vis, puis en la touchant.
Ajuste MARGIN pour qu'il y ait une marge nette entre les deux états (évite de mettre le seuil trop près du bruit de fond).
Si tu observes des fluctuations bizarres, essaie de raccourcir le fil ou d'ajouter un petit condensateur (~1nF) entre GPIO13 et la masse — ça stabilise parfois la lecture.


Et voilà. Je ne veux pas faire de pub pour les IA et pour Claude en particulier mais avant il aurait fallu un certain temps voire un temps certain pour recueillir toutes ces informations et SURTOUT pour les vérifier ...
Aujourd'hui, ça prend moins de 2 minutes :cooooool:
Avatar du membre
France likiki
Site Admin
Site Admin
Messages : 16592
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 59
Pays :
France
France
juil. 2026 30 13:50

Re: Panneau d'affichgage de gare

Message par France likiki

:PetitPoucejpg:
Si le Goëland se gratte le gland, il fera mauvais temps,
Si il se gratte le cul, il ne fera pas beau non plus.

Proverbe de là bas.

ImageImageImage

:tirechap:

Si vous souhaitez faire un don pour le forum , c'est ici.
Avatar du membre
France Amigorl
Posteur irrécupérable
Posteur irrécupérable
Messages : 842
Enregistré le : 02 févr. 2025, 20:15
Prénom : Rémy
LOCALISATION : Pau
Centres d'intérêts : Digitalisation matériel ancien, construction d'un réseau HO. Arduino, Dccex-Conmmand-Station, Rocrail, Digitalisation pont tournant Jouef, Decodeur accessoires DIY. 3D PLA et débutant SLA.
Echelle pratiquée : H0
Âge : 64
Pays :
France
France
juil. 2026 30 14:08

Re: Panneau d'affichgage de gare

Message par France Amigorl

Je n'en sais guère plus, je découvre au fil du temps et de lectures par ci, par là.

Ça fait 2 ans que mes esp32 sont dans les tiroirs, j'avais essayé de commencer le remplacement des deux nanos, un pour la motorisation du pont tournant et l'autre pour son décodeur DCC, ceci afin de regrouper en un seul contrôleur et éventuellement pour piloter manuellement via wifi. Mais faute de temps....

En attendant, lectures nocturnes d'articles pour m'informer...
(En plus du forum bien entendu....)
Avatar du membre
France Amigorl
Posteur irrécupérable
Posteur irrécupérable
Messages : 842
Enregistré le : 02 févr. 2025, 20:15
Prénom : Rémy
LOCALISATION : Pau
Centres d'intérêts : Digitalisation matériel ancien, construction d'un réseau HO. Arduino, Dccex-Conmmand-Station, Rocrail, Digitalisation pont tournant Jouef, Decodeur accessoires DIY. 3D PLA et débutant SLA.
Echelle pratiquée : H0
Âge : 64
Pays :
France
France
juil. 2026 30 14:12

Re: Panneau d'affichgage de gare

Message par France Amigorl

Houlala...

Je balance une idée de manière très succincte et voilà Patrick qui développe en détail : Génial !

Merci pour ces précisions utiles pour tous ...

:merciiii:
Avatar du membre
France patrice_b
2000 posts et +
2000 posts et +
Messages : 3678
Enregistré le : 31 janv. 2025, 14:45
Prénom : Patrice
LOCALISATION : Beziers Herault
Centres d'intérêts : Modelisme HO et HOM ou HOe
Echelle pratiquée : H0
Âge : 65
Pays :
France
France
juil. 2026 31 12:17

Re: Panneau d'affichgage de gare

Message par France patrice_b

:bienv: :bienv: :bienv: :bienv:
Cordialement,

Patrice
Avatar du membre
France C2Vues-BricoTrain
2000 posts et +
2000 posts et +
Messages : 9149
Enregistré le : 08 mars 2024, 11:45
Prénom : Fernando
LOCALISATION : Clamart
Centres d'intérêts : Modélisme Ferroviaire - Échelles N et HO
Images IA
Echelle pratiquée : N
Âge : 74
Pays :
France
France
juil. 2026 31 12:20

Re: Panneau d'affichgage de gare

Message par France C2Vues-BricoTrain

:bienv: :bienv:

:PetitPoucejpg: :PetitPoucejpg: :PetitPoucejpg:
Pour me retrouver sur ma chaîne :
https://youtube.com/@c2vues-bricotrain? ... VpM6qhmP2u

Quand trop gentil, tu seras,
Dans le côté sombre, tu l'auras !

Yoda
Maître Jedi dans Star Wars
Avatar du membre
France philippe017
Posteur insomniac
Posteur insomniac
Messages : 466
Enregistré le : 17 nov. 2025, 20:57
Prénom : Philippe
LOCALISATION : Gémozac
Centres d'intérêts : Modélisme ferroviaire, programmation décodeur , impression 3D j'ai des imprimantes en filament et des imprimantes en résine.
Echelle pratiquée : H0
Âge : 55
Pays :
France
France
juil. 2026 31 13:01

Re: Panneau d'affichgage de gare

Message par France philippe017

:bienv: :bienv: :bienv: :cooooool:
Cordialement,

Philippe
Avatar du membre
France ramasoft
Chef es bogies
Chef es bogies
Messages : 5527
Enregistré le : 29 juil. 2024, 19:06
Prénom : Patrick
LOCALISATION : Indre - Levroux
Centres d'intérêts : Modélisme ferroviaire
Programmation C++, VB6 et assembleur
Électronique
Echelle pratiquée : H0
Âge : 68
Pays :
France
France
juil. 2026 31 16:48

Re: Panneau d'affichgage de gare

Message par France ramasoft

Voilà, le panneau est posé.
Je l'ai mis transversalement sur le quai le plus proche du bord pour avoir l'heure devant moi 😀
La hauteur est réglable car le pied circulaire de diamètre 8mm peut s'enfoncer plus ou moins. J'ai réglé pour que les gens ne se cognent pas la tête et sitôt installé il y en a plein qui sont venus voir. 😜
IMG_20260731_151017.jpg
IMG_20260731_151033.jpg
C'est un peu mastoc et pas vraiment à l'échelle, mais avec cet écran on ne peut pas faire plus petit.
IMG_20260731_151026.jpg
IMG_20260731_151037.jpg

Le support de l’électronique est fixé verticalement sur la petite étagère qui porte la centrale et l'ampli de la sono.
Le gros bouton c'est pour basculer le Wi-Fi.
IMG_20260731_151444.jpg
Théoriquement, on peut mettre plusieurs écrans sur le même ESP32 en parallèle: tous les fils sont communs sauf le CS qui permet de sélectionner à quel écran s'adressent les ordres d'écriture. Mais je me demande ce qui se passe si on met tous les fils en parallèle ... n'ayant qu'un seul écran, je n'ai pas essayé.

Je mettrai les STL du panneau plus tard car je me suis mélangé les crayons dans les différentes version que j'ai faites et la dernière, que je croyais la bonne a la fenêtre d'affichage un peu décalée ...
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Avatar du membre
France TrainDoly
1300 posts et +
1300 posts et +
Messages : 1300
Enregistré le : 09 févr. 2025, 14:37
Prénom : Olivier
LOCALISATION : Expatrié en Alsace
Centres d'intérêts : Train HO & Impression résine & Fraiseuse CNC faite maison
Echelle pratiquée : H0
Pays :
France
France
juil. 2026 31 17:22

Re: Panneau d'affichgage de gare

Message par France TrainDoly

Super génial! :cooooool:
Répondre

Retourner vers « Arduino et le train miniature »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité