Arduino UNO et Kit Infrarouge

Bonjour à tous,

Je voudrais pouvoir envoyer des intructions à l'Arduino via mon Kit Infrarouge.

J'ai donc acheté un kit qui comprend une télécommande, un récepteur et un émetteur.

J'ai téléchargé la librairie pour l'infrarouge et j'ai testé la démo d'exemple la plus banale, celle qui est censé juste afficher les codes correspondants aux touches de la télécommande.

Je devrais obtenir quelquechose du genre :


Hors, je reçois plutôt ça :

0
FFFFFFFFF
0
FFFFFFFFF
0
FFFFFFFFF
0
FFFFFFFFF
0
FFFFFFFFF
...

Et de temps à temps, en appuyant sur les touches, ça fonctionne, mais vraiment aléatoirement, j'ai une valeur différente de 0 qui s'affiche, du même style que sur l'image.

Je précise que chaque fois que j'appuis sur une touche, à tous les coups le capteur le reçois, ça fonctionne bien. Mais il affiche 0 au lieu de retourner une valeur héxa...

J'ai pas réussi à trouver d'explications sur internet :~

Voici mon code :

/*
 * IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
 * An IR detector/demodulator must be connected to the input RECV_PIN.
 * Version 0.1 July, 2009
 * Copyright 2009 Ken Shirriff
 * http://arcfn.com
 */

#include <IRremote.h>

int RECV_PIN = 11;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
  }
}

Si vous avez une idée du problème, et de la solution, merci :slight_smile:

arduimat:
Et de temps à temps, en appuyant sur les touches, ça fonctionne, mais vraiment aléatoirement, j'ai une valeur différente de 0 qui s'affiche, du même style que sur l'image.

...
Si vous avez une idée du problème, et de la solution, merci :slight_smile:

bonjour
c'est quoi comme capteur ?
ça ressemble un TSOP38xx ?
si oui voir

déjà à mettre au plus prés du tsop (sur la breadboard) une capa (un condensateur) un petit chimique 10µF 10V ne peut pas faire de mal.

Merci pour ta réponse,

Le capteur est comme celui-ci :

Je ne connais pas le modèle exact, pas précisé avec la description du kit que j'acheté. Juste KIT Infrarouge... :~

déjà à mettre au plus prés du tsop (sur la breadboard) une capa (un condensateur) un petit chimique 10µF 10V ne peut pas faire de mal.

Et cette phrase beaucoup mal à comprendre moi :grin:

Et pourquoi parfois ça fonctionne ?

En gros me faut rajouter un condensateur à mon montage, entre le 5V et le GND et au plus près du TSOP ? J'arrive pas trop à comprendre le schéma, et surtout la position du condensateur ? Un exemple de condensateur à acheter ?

Merci :slight_smile:

Yep!

Tout est là : A Multi-Protocol Infrared Remote Library for the Arduino

Sur le dessus du capteur est noté LFN

Comme j'ai les même composants et n'ai jamais eu le temps de tester la télecommande, je m'y mets et te donne un retour au plus vite :wink:

@+

Zoroastre.

Yep!

J'ai testé uniquement avec le recepteur.

FFFFFFFF
1FE7887
FFFFFFFF
1FE7887
1FE7887
1FE48B7
1FE807F
1FE20DF
1FEA05F
FFFFFFFF
1FEA05F
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF

Conclusion : Cà fonctionne chez moi !

J'obtiens des FFFFFFFF par un phénomène de redondance ou appui trop long. J'ai eu également un ou deux 0 ici et là. Mais dans l'ensemble c'est correct, d'autant plus à une distance d'un mètre ou plus.

Ton problème est peut être lié à la pile de la télécommande déchargée ? Une mauvaise connectique ?? Ton arduino est bien une Duemilanove ???

@+

Zoroastre.

Merci pour tes réponses.

Oui j'ai aussi écrit LFN dessus, j'ai bien téléchargé le même truc et les mêmes codes...

La télécommande et la pile sont neuves.

Par contre c'est un Arduino UNO que j'ai.

L'Arduino capte bien le signal à tous les coups, c'est juste que c'est tout a fait le contraire de toi, des 0 partout et de temps en temps la bonne valeur... J'ai essayé de tout proche, de plus loin... même résultat.

Oui les FFFFFFFF, c'est pour dire que c'est la même valeur que la précédente je crois...

Peut être mon IR Receiver est defectueux ?

C'est tout con et tout simple, je sais plus comment faire :frowning:

Yep!

Il faudrait regarder les datasheets de la duemilanove et de l'UNO, il y a peu être une gestion différente, particulière du port PWM 11, relatif au timer. J'ai cru comprendre que c'est le cas sur les mega par exemple.

L'UNO est un Atmel 328 ???

Essayes de modifier le port PWM pour le 9 ou tout autre port.

int RECV_PIN = 9;

@+

Zoroastre.

Merci pour ta réponse, je vais tester et je te tiens au courant :slight_smile:

The Arduino Uno is a microcontroller board based on the ATmega328

Non ça marche toujours pas, enfin une fois sur 25 et avec n'importe quelle télécommande, celle du kit ou une autre...

C'est con ^^

Peut être que mon récepteur fonctionne mal, je vois pas d'autres explications, vu que ça fonctionner une fois sur 15...

Merci pour ton aide :slight_smile:

arduimat:
Non ça marche toujours pas, enfin une fois sur 25 et avec n'importe quelle télécommande, celle du kit ou une autre...

C'est con ^^

Peut être que mon récepteur fonctionne mal, je vois pas d'autres explications, vu que ça fonctionner une fois sur 15...

Merci pour ton aide :slight_smile:

bonjour
Vous n'avez pas essayé de mettre un petit condensateur chimique sur la breadboard entre le + et le - du épateur ?
quand vous dites ça marche une fois sur ~ 25.
ça marche "mieux" après un temps de repos (pas d'action sur la télécommande) ou ça marche mieux n'importe quand sans relâcher l'appui d'une touche sur la télécommande ?

Non j'ai pas pu me procurer de condensateur :frowning:

C'est vrai que j'ai l'impression que ça marche "mieux" avec un petit temps de repos. Si je reste appuyé sur une touche, ça fonctionne pas mieux...

Bon beh vu que ça marche une fois sur 20 j'ai quand même pu récupérer quelques codes hexadécimaux concernant aux principales touches.

Je reprendrai ce fil lorsque je trouverai un condensateur, mais franchement impossible de comprendre pourquoi ça ne marche pas :frowning:

Maintenant j'ai un nouveau problème :grin:

Uploaded with ImageShack.us

D'ailleurs voilà une photo qui prouve que ma télécommande fonctionne bien et que surtout, mon téléphone détecte la LED Infrarouge.

Voilà, comme j'ai pu récupérer quelques codes hexédécimaux, j'aimerai pouvoir les renvoyer grace à la LED IR mais comme vous l'imaginez, ça ne marche pas.

Voici le code :

#include <IRremote.h>
IRsend irsend;

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

void loop() {
  if (Serial.read() != -1) {
    for (int i = 0; i < 3; i++) {
      irsend.sendSony(0xa90, 12); // Sony TV power code
      delay(100);
    }
  }
}

IRsend uses an infrared LED connected to output pin 3.

Je branche donc la plus longue pate sur la pin 3, et l'autre sur la terre.

J'upload le code et je pointe ensuite mon téléphone vers la LED IR pour voir si elle envoie quelquechose et rien, pas de violet...

Je me dis qu'elle est peut être HS.

Donc pour tester si la LED marche je la met sur la pin 13 avec le basique exemple Blink et là elle s'allume !

Pourquoi ce code ne fonctionne pas, pourquoi la LED IR n'emet rien ?

PS : J'ai pas de resistance 100 ohm comme conseillé sur un tuto, mais seulement 200 ohm ou 1K, c'est la cause de mon problème ? Si oui pourquoi ça marche sur la PIN 13 alors ?

Merci :slight_smile:

Oubliez mes deux derniers message, l'émission IR fonctionne :slight_smile:

En fait je suis toujours à mon même point d'une très mauvaise réception, c'est domage, car je peux pas controler l'Arduino avec fiabilité, vu que ça marche une fois sur 20.

Je testerai de rajouter le condensateur dès que je pourrais me le procurer. Pourtant sur internet, tout le monde semble le faire sans trop de difficultés...

arduimat:
Oubliez mes deux derniers message, l'émission IR fonctionne :slight_smile:

En fait je suis toujours à mon même point d'une très mauvaise réception, c'est domage, car je peux pas controler l'Arduino avec fiabilité, vu que ça marche une fois sur 20.

Je testerai de rajouter le condensateur dès que je pourrais me le procurer. Pourtant sur internet, tout le monde semble le faire sans trop de difficultés...

bonsoir
en attendant
refaite le câblage ailleurs sur le breadboard avec d'autres "fils"
ne cablez pas la diode, juste le capteur.
le + du capteur est alimenté par le 5V de l'arduino ?
si le probleme persiste après recablage, faites un test en l'alimentant avec le 3.3V de l'arduino.

Bonsoir,

J'ai essayé de tout changer, recommencer, le 3.3V mais sans succès.

Cependant, je crois avoir la réponse !

Même si parfois ça fonctionne il semblerait que soit cette librairie IRremote.h qui pose problème. En effet, elle est a du mal à interpreter les résultats en fonction du matériel qu'on utilise (les télécommandes par exemple).

Je dis ça car j'ai trouvé une solution qui fonctionne à tous les coups, c'est plus compliqué, il y a un certain temps de latence mais ça fonctionne, j'arrive à décrypter n'importe quel signal infrarouge et à le rebalancer également !

La réponse ici : Sensor tutorials - IR remote receiver/decoder tutorial

Alors c'est bien plus compliqué qu'avec la librairie IRremote.h mais ça fonctionne à tous les coups, en fait ce sont les données brutes du PWM. En gros, on récupère le signal exact en microsecondes. Et on peut faire de même pour émettre avec la LED IR.

Je posterai un exemple en bon français :slight_smile:

Merci à tous pour vos contributions, j'ai pu arriver à mes fins :wink: