Bonjour à tous,
je travaille sur un projet consistant à utiliser le module infrarouge "IR receiver Module" combiné au buzzer passif. Alors l'objectif est qu'en utilisant une télécommande à infrarouge, le buzzer emet un son en fonction de la touche sur laquelle on appuie.
Dans un premier temps, je me suis amusé à analyser le code reçu par module IR. Pour cela, j'ai utilisé le code suivant:
#include "IRremote.h"
int receiver = 11; // Signal Pin of IR receiver to Arduino Digital Pin 11
/*-----( Declare objects )-----*/
IRrecv irrecv(receiver); // create instance of 'irrecv'
decode_results results; // create instance of 'decode_results'
/*-----( Function )-----*/
void translateIR() // takes action based on IR code received
// describing Remote IR codes
{
switch(results.value)
{
case 0xFFA25D: Serial.println("POWER"); break;
case 0xFFE21D: Serial.println("FUNC/STOP"); break;
case 0xFF629D: Serial.println("VOL+"); break;
case 0xFF22DD: Serial.println("FAST BACK"); break;
case 0xFF02FD: Serial.println("PAUSE"); break;
case 0xFFC23D: Serial.println("FAST FORWARD"); break;
case 0xFFE01F: Serial.println("DOWN"); break;
case 0xFFA857: Serial.println("VOL-"); break;
case 0xFF906F: Serial.println("UP"); break;
case 0xFF9867: Serial.println("EQ"); break;
case 0xFFB04F: Serial.println("ST/REPT"); break;
case 0xFF6897: Serial.println("0"); break;
case 0xFF30CF: Serial.println("1"); break;
case 0xFF18E7: Serial.println("2"); break;
case 0xFF7A85: Serial.println("3"); break;
case 0xFF10EF: Serial.println("4"); break;
case 0xFF38C7: Serial.println("5"); break;
case 0xFF5AA5: Serial.println("6"); break;
case 0xFF42BD: Serial.println("7"); break;
case 0xFF4AB5: Serial.println("8"); break;
case 0xFF52AD: Serial.println("9"); break;
case 0xFFFFFFFF: Serial.println(" REPEAT");break;
default:
Serial.println(" unknown button ");
}// End Case
delay(500); // Do not get immediate repeat
} //END translateIR
void setup() /*----( SETUP: RUNS ONCE )----*/
{
Serial.begin(9600);
Serial.println("IR Receiver Button Decode");
irrecv.enableIRIn(); // Start the receiver
}/*--(end setup )---*/
void loop() /*----( LOOP: RUNS CONSTANTLY )----*/
{
if (irrecv.decode(&results)) // have we received an IR signal?
{
translateIR();
irrecv.resume(); // receive the next value
}
}/* --(end main loop )-- */
En gros, en appuyant sur un bouton de la télécommande, le nom de cette touche s'affiche sur le moniteur.
Le constat que j'ai fait c'est que sur une courte distance (environ 2 m), j'arrive à identifier correctement le bouton. Cependant pour une distance supérieure à 2m, je recois le message "Unknown button" quand bien même c'est le même bouton que j'appuie.
Quelle est l'explication? Merci d'avance
J-M-L:
quelle est selon vous la portée du signal infra-rouge de la télécommande et la capacité de votre diode réceptrice à lire correctement le signal ?
En lisant la datasheet, j'ai plutôt des informations sur la fréquence (de la porteuse) des capteurs IR (38 kHz). Après je n'ai aucune information sur la portée.
regardez du côté de l'émetteur - c'est lui qui envoie de l'énergie. cette énergie va se propager et comme ce n'est pas comme un laser vous pouvez imaginez que c'est sur un certain cône d'angle plus ou moins large. plus vous vous éloignez de la source, plus l'énergie est distribuée sur un cercle / ellipse / patatoïde qui grandit et donc moins votre capteur a de chance de déterminer le signal
J-M-L:
regardez du côté de l'émetteur - c'est lui qui envoie de l'énergie. cette énergie va se propager et comme ce n'est pas comme un laser vous pouvez imaginez que c'est sur un certain cône d'angle plus ou moins large. plus vous vous éloignez de la source, plus l'énergie est distribuée sur un cercle / ellipse / patatoïde qui grandit et donc moins votre capteur a de chance de déterminer le signal
Ok, j'ai compris. En regardant la datasheet coté emetteur, voici les infos que j'ai obtenues:
Remote control distance: more than 8 meters
Launch tube infrared wavelength: 940Nm
Crystal: the oscillation frequency of 455 KHz
IR carrier frequency: 38KHz
Encoding: the encoding format of the NEC, upd6122 encoding scheme, the user code 00FF, key coding below picture
Size: 86 * 40 * 6mm
Frequency: 38K
Power supply: CR2025/160mAH
Button: free height is less than 3mm, the force 200-350g, the life of more than 200 000
On voit que l'emetteur a une portée de plus de 8 mètres. Le constat que j'ai fait c'est que le recepteur capte le signal sur une distance de plus de 2 mètres. Cependant, pourquoi le code receptionné n'est pas correct? (est-ce parce que l'energie reçue n'est pas suffisamment élevé pour bien décodé le signal?
Une deuxième question : peut-on déterminer la portée d'un signal à partir de la fréquence porteuse de l'émetteur?
Avec un émetteur alimenté par une pile CR2025 il ne faut pas s'attendre à une portée très importante.
Cependant 2 mètres c'est vraiment très faible.
Est ce que le récepteur est adapté à l'émetteur ? En particulier fréquence et éventuellement longueur d'onde.
Wabbina:
Une deuxième question : peut-on déterminer la portée d'un signal à partir de la fréquence porteuse de l'émetteur?
Non, la portée dépend essentiellement de la puissance de l'émetteur et de la sensibilité du récepteur.