détecteur de passage

Bonjour à tous,

Je débute sur arduino (c'est seulement la seconde fois que je l'utilise) et j'aimerais faire un détecteur de passage :

le problème est que je compte utiliser uniquement une carte arduino uno, une led pour emmètre et une photorésistance pour recevoir. Je voudrais donc savoir s'il est possible de "crypter" la lumière (haute fréquence) puis de la "décrypter" ensuite afin de ne pas être gêné par la lumière ambiante (ampoule, soleil, ...). Autrement dit, est-il possible de générer une haute fréquence avec l'arduino puis de filtrer pour ne garder que le signal HF, toujours avec l'arduino.

Merci d'avance !

Yep!

Je suppose que tu comptes utiliser une photodiode et non pas une photoresistance.
Par contre, je ne vois pas comment tu comptes détecter un passage avec une simple diode.

Il est possible de décoder les télecommandes avec un arduino et un récepteur infrarouge (différent types de cryptage dans une télecommande).
Regardes donc plutôt du côté des diodes infrarouges ou “barrière infrarouge”,

http://www.pobot.org/Barriere-infra-rouge.html

Il faut bien entendu adapter les composants en fonction de la longueur de ta barrière.

:wink:

@+

Zoroastre.

Premier conseil travaille dans l'infra rouge tu éliminera une bonne partie des perturbations extérieures et tu seras plus discret. Deuxième conseil utilises si possible des rayons "dirigés". En gros évites les diodes infrarouge qui émettent à 250 °, choisi des rayons "fins" tu aura plus de puissance sur ton détecteur et moins de réflexions parasites.

Ensuite comment conçoit tu ton projet ? L'émetteur et le récepteur sont-ils indépendant et en vue directe ou sont-il accolés le renvoi des rayons se faisant par une surface réfléchissante ? A te lire il semble que ce soit cette seconde solution que tu as choisi. Cela mérite une expérimentation pour vérifier que le niveau du signal reçu est compatible avec ce que tu veut faire ou s'il faudra prévoir de l'amplification analogique, si les niveaux ne sont pas trop faible un trigger de Schmitt devra suffire..

Tu parles de cryptage haute fréquence pour l'émission, avec un AtMega328p on ne peut pas aller bien haut quelques dizaines de kHz au maximum, un peu plus en court-circuitant les bibliothèques arduino et en écrivant directement sur les registres du micro processeur. Pour le filtrage te sens tu plus à l'aise avec un filtrage classique : condensateurs, inductances, résistances, ampli opérationnel ou plutôt filtrage numérique par logiciel ?

Bonjour,

Le mieux c'est d'utiliser des émetteurs/récepteur infrarouge pour télécommande, il comporte un filtre spécial qui évite les parasites liée à la lumière ambiante (excepté pour certaine lampe néon). Pour la détection d'un passage il ya deux variantes, soit utiliser un filtre passe bande calibré sur une certaine fréquence (ce qui implique d'avoir au moins un ampli OP, des résistances et des condensateurs), soit faire un traitement numérique par exemple via FFT (Fast Fourier Transform). La méthode par FFT a l'avantage de ne nécéssiter aucun composants externe, mais il faudra gérer un bon pavé de code (et savoir utiliser une librairie FFT écrite en assembleur) pour pouvoir faire la génération de la fréquence via une 1er interruption tout en gérant la prise de mesure périodiquement + FFT avec un second timer.

Personnellement je conseillerai la méthode du filtre analogique (passe bande), certes il faut des composants en plus, et faire quelques calculs mais ce serait au final le plus simple à mettre en place.

Yep!

Pour faire plaisir à Snootlab XD

http://shop.snootlab.com/composants/131-kit-de-communication-ir.html

@+

Zoroastre.

Mais qu'est ce qui va nous rester à faire si on trouve tout fait dans un même boîtier le récepteur, le transimpédance la cag et l'interface de sortie !!!

Ca à l'air vachement bien comme kit

Pour une barrière de déclenchement, j'ai personnellement utilisé un laser http://www.sparkfun.com/products/594 sur un phototransistor IR (L-53p3c) (avec un peu de gaine thermo/paille de fastfood pour limiter les parasites).

Le laser n'est pas dans la fréquence optimale mais pas trop loin et à 0.8mW c'est pas trop grave, il écrase quand même largement les parasites des lumières artificielles. Faudra que je teste laser vs télécommande (entre puissance de l'un et fréquence de l'autre)

L'inconvénient c'est que c'est visible, l'avantage c'est la portée !

D.

Edit: J'ai oublié de rappeler les précautions d'usage. Il ne faut pas jouer avec un laser. C'est globalement dangereux et peut provoquer des lésions irréversibles.

En fait, ce n'est pas photodiode que je voulais dire mais bien photorésistance. Ce n'est pas possible avec une photorésistance ?

Pour la programmation (la FFT) : je n'y connais absolument rien, donc la solution électronique est mieux, je vais essayer de me procurer les composants nécessaires.

@bbs : j'ai déjà essayé avec un laser mais c'est la partie mécanique qui ne marchait pas (le laser doit être parfaitement aligné avec le récepteur, or, avec le temps, mon laser bouge très légèrement et ça ne marche plus).

@zoroastre : le kit de communication IR suffit pour filtrer ? Et si je met deux récepteurs l'un à côté de l'autre, est ce que le système sera assez sensible pour détecter devant lequel je suis passé en premier ?

ecolomatique: En fait, ce n'est pas photodiode que je voulais dire mais bien photorésistance. Ce n'est pas possible avec une photorésistance ?

Arf... une photorésistance, c'est pas le genre de truc à être "précis". Une photorésistance ça réagit à tout, tu auras toute les difficultés possible en voulant éviter les parasites, un phototransistor c'est le minimum (et encore ...).

ecolomatique: Pour la programmation (la FFT) : je n'y connais absolument rien, donc la solution électronique est mieux, je vais essayer de me procurer les composants nécessaires.

C'est vrai que la FFT c'est comment dire ... spécial ... mais ça se fait.

Yep!

Une photoresistance est classiquement utilisée pour détecter une intensité de lumière.

le kit de communication IR suffit pour filtrer ? Et si je met deux récepteurs l'un à côté de l'autre, est ce que le système sera assez sensible pour détecter devant lequel je suis passé en premier ?

Si tu veux dire 2 emetteurs/2 recepteurs, pas de souci particulier. chaque emetteur envoie un code particulier qui sera traité uniquement par l'emetteur correspondant. Le recepteur X2 branché sur la broche 1 traitera un seul code provenant de l'emetteur X1, le recepteur Y2 branché sur la broche 2 traitera le code de l'emetteur Y1. Les boucles conditionnelles accepteront sur les broches 1 ou 2, soit un code soit l'autre.

Du point de vue materiel, les emetteurs et recepteurs infrarouges peuvent se distinguer par leur angle de diffusion/reception de la lumière. Il faudra peut être regarder cet aspect selon ta configuration.

Du point de vue programmation, il faudra synchroniser les emetteurs/recepteurs si tu veux pouvoir detecter une rupture de boucle. La librairie arduino permet d'envoyer le signal à une certaine fréquence avec :

irsend.enableIROut(38);

38 Khz dans ce cas.

Cette librairie a d'ailleurs la possibilité de décoder les télécommandes de tv, dvd, etc. Ces appareils utilisent un codage de type RC4 ou RC5. Je pense qu'en combinant l'ensemble des élements, tu devrais pouvoir t'en sortir aisement.

@+

Zoroatre.

Yep!

Bon j’ai retrouvé mon matos et j’ai vite fait un essai. Comme c’est du mad in china, j’ai claqué ma diode dans un tube en papier pour pouvoir couper le signal plus facilement. :wink:

Le code :

#include <IRremote.h>

#define PIN_IR 3 //PWM
#define PIN_DETECT 2
#define PIN_STATUS 13

IRsend irsend;
void setup()
{
  Serial.begin(9600);
  pinMode(PIN_DETECT, INPUT);
  pinMode(PIN_STATUS, OUTPUT);
  irsend.enableIROut(38);
  irsend.mark(0);
}

void loop() {
  //digitalWrite(PIN_STATUS, !digitalRead(PIN_DETECT));
  //Serial.println(!digitalRead(PIN_DETECT));
  
  if (digitalRead(PIN_DETECT) == 1) { digitalWrite(PIN_STATUS, 0); }
  else { digitalWrite(PIN_STATUS, 1); }
}

Je bloque sur la manière de detecter une coupure du signal (frequence 38 Khz).
Le FFT est peut être la solution.

@+

Zoroastre.

Ouille, je suis mal alors ^^

Quelqu’un d’autres aurait une solution… plus simple que le FFT ?

salut Il faut demander à un dépanneur télé à la retraite ! ;) Tiens ça tombe bien j'en suis un ! :D Le TSOP 32138 n'est pas une simple diode de réception IR mais un recepteur complet. On l'alimente pas la broche VS ( 5 volts de l'arduino), la broche de masse à la masse de de l'arduino. La sortie OUT une resistance de 10k vers le 5 volts et mettre la sortie OUT vers une entrée de l'arduino. Si, il n'y a pas de passage OUT = 5V, si passage OUT 0V c'est tout ! Pour le programme je vous laisse faire.

@micalement chabot380

Oui mais ça ne règle pas le problème de la lumière ambiante ça, si ?

Si tu souhaite déclencher une action à la coupure d'un faisceau lumineux, une barrière infra-rouge remplira ce rôle en générant un signal - à une fréquence donnée pour s'affranchir du bruit lié à l’environnement - sur un émetteur infra rouge. Tant que tu reçois cette même fréquence sur le récepteur infra-rouge: y'a personne. Si le signal disparait: quelqu'un vient de passer. Pour la mise en œuvre: tout dépend de la distance que tu as à couvrir et de ton environnement

Par contre si tu souhaites faire de la détection de mouvement, seul un détecteur pyroélectrique avec une lentille de Fresnel pourra remplir cette fonction (on trouve des kits tous fait sur le web)

Dans les deux cas: oubli la photorésistance, elle n'est pas faite pour cette usage :P

Oui, je souhaite bien déclencher une action à la coupure d'un faisceau lumineux. La distance émetteur/récepteur est de 80 cm et c'est un endroit pas lumineux (mais pas trop sombre non plus).

Je pense que je vais m'en sortir avec les conseils que vous m'avez donnés (mais je laisse le sujet ouvert pour d'autres propositions ou pour si je rencontre des problèmes lors de la réalisation). En tout cas, merci !

Si ça regle le problème de la lumière ambiante ! 1) c'est de l' infrarouge. 2) la diode qui emet l'IR est modulée. Pour le TSOP 32138 il faut la moduler à 38KHz. Pour la porté c'est comme une télécommande de télé ! Donc en gros 7 à 8 mètres.

voili voilou ! A+ chabot380

Bonjour,

je me pose une nouvelle question : si je met un seul émetteur (la DEL IR) et deux récepteurs (des tsop32138), est-ce qu'il risque d'y avoir un problème pour savoir devant lequel je passe en premier ? Parce que les deux récepteurs seront à côté (à 2 cm pour être plus précis) et le but est de savoir de quel sens la personne vient donc il faut être précis !

Et encore une autre question : je viens de trouver dans mes composants les capteurs de la tête du roborapteur : une LED IR et deux récepteurs IR (par contre je ne sais pas exactement comment ils fonctionnent, il y a trois pattes avec marqué dessus : IRO, GND et IRV, moi je ne connais que GND) et les récepteurs n'ont pas de référence. Savez-vous si ces capteurs pourraient remplacer le tsop 32138 ?

Et encore une question (oui, je sais, je pose trop de question XD) : comme personne me répondait, j'ai essayé de voir comment fonctionnent mes récepteurs IR et j'ai trouvé comment les brancher sur internet, mais j'ai maintenant plusieurs problèmes : comme je débute totalement, je ne sais pas du tout comment faire osciller la led à 38kHz (car j'ai cru comprendre que c'était la plus haute fréquence qu(on peut obtenir avec arduino)(je suppose que ce n'est pas avec un basique

{ digitalWrite(5, HIGH); delay(0.013); digitalWrite(5, LOW); delay(0.013); }

dans une boucle, je me trompe ? )

Ensuite, je ne sais pas comment brancher le condensateur (ni quel valeur prendre) pour ne garder que ce qui est à plus de 38kHz (au niveau du récepteur, donc).

Voilà, j'espère avoir était assez clair et je vous remercie par avance de vos futures réponses !