[TUTORIEL] Barrière infrarouge

Support pour le kit de communication infra rouge (IR)

[TUTORIEL] Barrière infrarouge

Message non lude Laetitia » Mar 5 Nov 2013 11:08

Bonjour,

On se sert souvent de récepteurs IR pour capter des signaux de télécommande ou autre... mais quid de l'émission IR ?
Aujourd'hui nous allons apprendre à mettre en place une barrière infrarouge, et nous signalerons la coupure du faisceau lumineux par l'allumage de la LED branchée sur la pin 13 de notre Arduino.

- MATÉRIEL -

- Arduino Uno (x1)
- Kit de communication IR (x1)

- TEST DES RÉCEPTEURS INFRAROUGE -

Avant de nous lancer dans le montage de notre barrière, nous allons nous assurer que les récepteurs IR fonctionnent bien. Comme l'oeil humain ne voit pas le rayonnement infrarouge, il va falloir ruser : d'après la datasheet de notre composant, celui-ci est alimenté en +5V est sa sortie passe à l'état bas lorsqu'un signal est reçu (voir brochage ci-dessous).

pinout_TSOP32138.jpg
pinout_TSOP32138.jpg (18.13 Kio) Vu 5603 fois

Nous pouvons donc faire le montage suivant avec une simple LED et sa résistance (l'Arduino ne sert que d'alimentation), celle-ci s'allumera lorsque la sortie passera à l'état bas :

Test_TSOP.png
Test_TSOP.png (25.91 Kio) Vu 5603 fois

Pointez la télécommande de votre télé vers votre montage, si votre récepteur fonctionne bien vous verrez la LED clignoter rapidement lorsque vous pressez un bouton :)

- EXPLICATIONS -

Précisions sur la transmission de données via infrarouge

Une télécommande infrarouge fonctionne en allumant et éteignant une LED infrarouge en suivant un rythme particulier : une trame. Cependant, pour éviter les interférences avec d'autres sources d'infrarouges comme la lumière du soleil ou les lampes, la LED n'est pas allumée constamment mais le signal est modulé à une certaine fréquence (typiquement 36, 38 ou 40 KHz). L'envoi de données comme le fait une télécommande est donc une alternance de moments où le signal modulé est transmis par la LED (mark), et de moments où elle est éteinte (space).

Émission IR avec la librairie IRremote

Le récepteur IR du kit est conçu pour capter des signaux d'une fréquence de 38KHz.
La librairie IRremote permet d'envoyer et recevoir des codes de télécommandes, supporte plusieurs protocoles (NEC, Sony SIRC, Philips RC5, Philips RC6...) et permet d'envoyer des données brutes. Il est également possible d'ajouter d'autres protocoles à la librairie, ou d'exploiter celle-ci pour enregistrer les trames d'une télécommande et les reproduire pour servir de télécommande universelle.
Ici pour simplifier l'usage de la barrière nous n'aurons besoin que d'un signal continu, soit un "mark" infini.

- SCHÉMA DU MONTAGE -

Barriere_IR_Arduino.png
Barriere_IR_Arduino.png (40.7 Kio) Vu 5603 fois

:arrow: Le condensateur et les résistances utilisées sont ceux présents dans le kit IR : vous pouvez opter pour la résistance de 68 Ohms pour la LED si vous n'êtes pas satisfaits des résultats à la réception...

- CODE -

Code: Tout sélectionner
/*
  Barrière infrarouge avec Arduino
  LED IR sur D3 (géré par librairie IRremote) + TSOP32138 -> D2
  La LED13 de l'Arduino s'allume en cas de coupure du faisceau lumineux
*/

#include <IRremote.h>

#define CAPTEUR 2 // récepteur IR -> D2
#define LED_STATUT 13 // LED -> D13

IRsend irsend; // déclaration de l'objet émetteur (pin D3 obligatoire)

void setup()
{
  pinMode(CAPTEUR, INPUT);
  pinMode(LED_STATUT, OUTPUT);
 
  irsend.enableIROut(38); // crée une sortie modulée à 38KHz
  Serial.begin(9600);
}

void loop()
{
  irsend.mark(0); // envoi du signal pour une durée illimitée
 
  boolean mesure1 = digitalRead(CAPTEUR); // première mesure
  delay(5);                               // délai
  boolean mesure2 = digitalRead(CAPTEUR); // seconde mesure
  boolean etat = mesure1 * mesure2;       // comparaison
 
  if (etat == HIGH) // si les deux lectures voient une coupure
  {
    digitalWrite(LED_STATUT, HIGH);
    Serial.println("Coupure !");
  }
  else              // sinon
  {
    digitalWrite(LED_STATUT, LOW);
    Serial.println("----------OK----------");
  }
  delay(5);
}

Dès la mise en route de votre montage, vous pouvez vérifier le bon fonctionnement de la barrière avec une LED comme précédemment : allumée lorsque vous êtes bien en face du faisceau, elle s'éteint lors de la coupure de celui-ci, quand vous passez votre main devant !

Comme le capteur n'est pas parfait, malgré la présence d'un filtre (condensateur), il peut subsister un phénomène de rebond qui pourrait fausser la mesure de l'état de la barrière.
Pour ne pas avoir à rajouter de matériel sur le montage, ici le rebond est géré de manière logicielle : on intègre un délai entre deux mesures, on compare pour savoir s'il est nécessaire de prendre en compte la coupure du faisceau, et on agit en fonction...

C'est tout pour aujourd'hui, j'espère que ce tutoriel vous aura plu, et bonne bidouille en attendant le prochain !
"If it's itchy, scratch it !" - "DIY or die"

RTFM (À lire avant de poster) - ANDb (Arduino Noob Database)
Avatar de l’utilisateur
Laetitia
 
Messages: 284
Inscription: Mar 7 Aoû 2012 15:07
Localisation: Toulouse

Retourner vers Kit Communication IR

Qui est en ligne

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