Auteur Sujet: Identification des trains par infrarouge  (Lu 25196 fois)

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1183
  • HO avec DCC++ / 3R avec centrale MFX en DIY
    • Voir le profil
Re : Identification des trains par infrarouge
« Réponse #30 le: mai 12, 2025, 10:18:00 pm »
Voici le Gerber du récepteur.


bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1183
  • HO avec DCC++ / 3R avec centrale MFX en DIY
    • Voir le profil
Re : Identification des trains par infrarouge
« Réponse #31 le: mai 13, 2025, 11:00:54 pm »
Bonsoir à tous,

En intégrant le fichier IRTimer.hpp (et juste celui là), le code de l'emetteur pour le Nano et pour l'ATtiny est maintenant le même.

J'ai fait les tests avec un ATtiny 45, les résultats sont là encore assez bluffants. Je crois que la qualité des composants VISHAY y est pour beaucoup et la modulation à 38 Khz aussi. J'ai regardé la datasheet du TSOP4838. C'est vraiment complet à l'intérieur pour filtre au mieux les signaux et garantir la qualité du traitement.

J'ai fait le Gerber pour l'ATtiny



Voici le code de l'emetteur qui est le même pour le Nano ou les ATtiny

#include <Arduino.h>

// Configuration du timer pour PWM IR
#  if defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328PB__) || defined(__AVR_ATmega168__)
#define IR_USE_AVR_TIMER2  // Utilise Timer2 pour l'envoi (pin D3)
#define IR_SEND_PIN 3                   // Broche utilisée
#  elif defined(__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)
#define IR_SEND_PIN 4                   // Broche utilisée
#define IR_USE_AVR_TIMER_TINY1 // send pin = (pin 4) ATtiny25 / 45 / 85
#  endif

#define SEND_PWM_BY_TIMER  // Active le mode PWM matériel

#include "IRTimer.hpp"  // Part of Arduino-IRremote https://github.com/Arduino-IRremote/Arduino-IRremote.


constexpr uint8_t ID = 0xA5;            // Identifiant à envoyer
constexpr uint16_t BIT_DURATION = 250;  // Durée minimale d'un front en µs

// Envoie un octet codé via LED IR
void sendByte(uint8_t value) {
  for (int i = 7; i >= 0; i--) {        // MSB
    bool bit = (value >> i) & 0x01;
    if (bit) {
      // 1
      disableSendPWMByTimer();
      delayMicroseconds(BIT_DURATION);
      enableSendPWMByTimer();
      delayMicroseconds(BIT_DURATION);
    } else {
      // 0
      disableSendPWMByTimer();
      delayMicroseconds(BIT_DURATION * 2);
      enableSendPWMByTimer();
      delayMicroseconds(BIT_DURATION * 2);
    }
  }
  // Fin de trame
    disableSendPWMByTimer();
    delayMicroseconds(BIT_DURATION * 4);
    enableSendPWMByTimer();
    delayMicroseconds(BIT_DURATION * 4);
}

void setup() {
  pinMode(IR_SEND_PIN, OUTPUT);
  timerConfigForSend(38);   // Fréquence IR : 38 kHz
  disableSendPWMByTimer();  // Démarre éteint
}

void loop() {
  sendByte(ID);
}


Le Gerber est téléchargeable ci-dessous.

Christophe
« Modifié: mai 15, 2025, 06:48:47 am par bobyAndCo »

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1183
  • HO avec DCC++ / 3R avec centrale MFX en DIY
    • Voir le profil
Re : Identification des trains par infrarouge
« Réponse #32 le: mai 20, 2025, 08:55:51 pm »
J'ai eu envie de me faire plaisir en cherchant à réduire autant que possible la taille de l'émetteur embarqué.

Du coup, je suis passé par l'option composants CMS et montage par JLCPCB (sauf l'ATtyny pour pouvoir le programmer).

La taille du composant est de 22 mm x 19 mm.

La led est minuscule et trouvera facilement sa place sous la locomotive ou un wagon.





J'ai aussi réalisé le code pour Raspberry Pi Pico pour lire jusqu'à 16 capteurs sous interruption et envoyer les données à Rocrail :

https://github.com/BOBILLEChristophe/identification_de_trains_infrarouge_38Khz/blob/main/IdTrainIr38KhzPicoRecepteur_multiInter/IdTrainIr38KhzPicoRecepteur_multiInter.ino



Christophe
« Modifié: mai 21, 2025, 01:57:52 am par bobyAndCo »

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1183
  • HO avec DCC++ / 3R avec centrale MFX en DIY
    • Voir le profil
Re : Identification des trains par infrarouge
« Réponse #33 le: Aujourd'hui à 02:09:34 pm »
Bonjour à tous,

Pour info, j'ai publié un article assez exhaustif sur ce sujet : https://www.locoduino.org/spip.php?article370

Les questions ou les compléments f'information peuvent continuer à être publiés sur ce fil.

Christophe