Go Down

Topic: Conception d'un nichoir connecté ! soucis de LED IR modulé ! (Read 5696 times) previous topic - next topic

rer67

Bonsoir.
Eh bien que de lecture ce soir.. A mon retour du boulot !
Le sujet a ses détracteurs et tout le monde a appris qq chose....
Pour ma part je vais tester ce week end la version du post 68 avec les recommandations du post 69 et je verrais bien quand les enregistrements ne se feront plus.
J'ai très bien apprécié le montage condo diode. L'approche est géniale mais un peu trop compliqué à calculer pour mon esp.
Merci à vous tous pour ce partage.

Ps dans mon cas il s'agit effectivement d'enregistrer la valeur du compteur pour que dans le cas d'une coupure de l'alimentation de mes caméras la valeur du compteur ne soit pas perdue et qu'au redémarrage cette valeur soit rechargée. C'est pour cela que je trouve le coup de la diode condo génial..... Bref je l'ai déjà dit.

Merci.

rer67

Bonjour,

J'ai réussi a travailler avec l'EEPROM !!
le nombre d'entrée se sauvegarde bien (a chaque fois que 10 oiseaux sont passés)
J'ai également ajouté un reset EEPROM sur ma page de serveur !


Par contre j'ai un gros soucis : LA BARRIERE IR EXTERIEURE !!!

En intérieur, la barrière fonction très bien, même avec l'éclairage LED intérieur allumé. Par contre en extérieur, la barrière IR ne fonctionne pas à cause de la lumière du jour. Ma barrière n'est pas modulée !

je voudrais donc ajouter un code pour générer du 38khz sur une led IR avec une résistance de 100ohm sur D3 (GPIO 00) de ma nodeMCU. et récupérer le signal via une LED 38KHZ que j'ai déjà.

Je ne trouve pas de code qui fonctionne sur ma nodeMCU pour générer le 38Khz.
j'ai trouvé cela :
Code: [Select]
#include <IRremote.h>

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

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

boucle vide () {
  digitalWrite (PIN_STATUS,! digitalRead (PIN_DETECT));
}


mais ne passe pas à la compilation, j'ai donc chargé la bibliothèque "IRremoteESP8266.h", la çà passe a la compilation mais pas de signal à la LED.

pourriez vous m'aiguiller ?
merciii



J-M-L

avez vous envisagé de tester les modules pré-construits de détecteur d'obstacle à infra-rouges?

ils font à la fois émetteur récepteur et la "distance" de détection est réglable par un petit potentiomètre

5PCS IR Infrarouge Obstacle Avoidance  -> vous en avez 5 pour moins d'un 1,5€
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

rer67

avez vous envisagé de tester les modules pré-construits de détecteur d'obstacle à infra-rouges?

ils font à la fois émetteur récepteur et la "distance" de détection est réglable par un petit potentiomètre

5PCS IR Infrarouge Obstacle Avoidance  -> vous en avez 5 pour moins d'un 1,5€
salut JML !

oui, j'ai essaye exactement ce modele + 2-3 autres mais aucun n'est modulé et donc ne fonctionne pas à la lumière du jour .... !

il faut que j'utilise une barrière modulée ....
tu peux m'aiguiller ?

al1fch

Bonjour

Quote
je voudrais donc ajouter un code pour générer du 38khz sur une led IR avec une résistance de 100ohm sur D3 (GPIO 00) de ma nodeMCU. et récupérer le signal via une LED 38KHZ que j'ai déjà.
Essayez (avec un ESP8266 pour lequel on peut définir la fréquence du PWM)
Code: [Select]
analogWriteFreq(38000);
analogWrite(D3, 200);

Ajustez la fréquence demandée en fonction de la fréquence réelle obtenue
J'ai eu ça (pin D2 d'un Wemos D1 Mini)
(sur mon exemplaire on plafonne à 40kHz en sortie)



rer67

re,

J'ai mis le code suivant :
Code: [Select]
void setup() {
  // put your setup code here, to run once:
pinMode(D3, OUTPUT);
Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
analogWriteFreq(38000);
analogWrite(D3, 200);


}


Le code fonctionne, cependant :

A la sortie de ma led réceptrice le 0V reste quelques ms .... puis le 3v reviens.
Je pense qu'en fait il faut que j'envoie des "salves" de trames à 38Mhz non ? pour que la sortie de la led réceptrice reste toujours à 0V. PEut-on changer le code ainsi ?

Merci

J-M-L

oui, j'ai essaye exactement ce modele + 2-3 autres mais aucun n'est modulé et donc ne fonctionne pas à la lumière du jour .... !
La modulation est bien sûr une exploration possible, mais avez vous simplement essayé de mettre les 2 diodes dans un petit bout de tuyau pour éviter l'exposition directe au soleil ?

Il y'a longtemps j'avais eu un souci similaire avec un petit robot pour l'extérieur et un simple cache (je crois que j'avais mis de la gaine thermo autour de la carte débordant sur un petit bout de tuyau pvc pour solidariser le tout et mon problème de jour avait été réglé.

Si vous montez cela un peu en diagonale au dessus de l'entrée (donc en pointant vers le sol) la luminosité ambiante sera encore moindre

À voir
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

al1fch

Faisceau IR modulé : Il faudrait en savoir plus sur le recepteur infrarouge utilisé, celui qui attend un signal modulé (référence ? TSOP.xxxx?)
c'est plus qu'une photodiode, il y a également un démodulateur inrégré
(pas évident qu'il faille lui envoyer des salves et non un signal 38kHz permanent)

S'il faut moduler le signal 38KHz (salves) et si des salves de 2,5mS toutes les 20mS sont acceptées par le récepteur IR , Il y a une piste 'opportuniste' à tenter :

-signal carré(porteuse)  38KHz par AnalogWrite sur une sortie
-signal rectangulaire (signal modulant) 50Hz, salves de 2,5ms, par Servo.write sur une autre sortie
+Combiner les deux signaux  par exemple en mettant la del  IR et sa résistance série entre les deux sorties (courant compatible avec les intensités maximlales entrantes et sortantes d'une pin)

Exemple de code à tester :
Code: [Select]
#include <Servo.h>
#define porteuse D2
#define ServoPin  D3

Servo myservo;

void setup() {
  pinMode(porteuse, OUTPUT);

  // en D2 : signal carré de fréquence 38kHz
  analogWriteFreq(38000);
  analogWrite(porteuse, 512); // signal carré 38KHz en D2

  // en D3 : signal rectangulaire 50Hz, état haut 2,5ms
  myservo.attach(ServoPin);
  myservo.write(180);  
}

void loop() {
}

rer67

bonsoir,

la led réceptrice est une VS1838.

j'ai lu sur un autre forum anglais qu'il serait intéressant d'utiliser une led de réception : TSSP58038 qui elle peut recevoir en continue du signal 38Khz ....

Est- ce plus facile avec cette LED ?
lien datasheet : https://docs-emea.rs-online.com/webdocs/1724/0900766b8172451c.pdf

al1fch

un point de vocabulaire : une LED , DEL en français emet de la lumière

pour recevoir il  faut une photodiode  (les LEDS , optimisées  pour l'émission font de  mauvais récepteurs)

les VS1838  ,TSOPxx, TSSPxxx ont une structure de ce type :
photodiode + amplification + filtre de bande +circuit de démodulation + circuit de sortie

Il faut regarder de près les docs pour tenter d'en déduire le comportement en réception d'un signal 38kHz continu

La notice du récepteur TSSP58038 évoque des salves (bursts)
La figure 1 donne une valeur minimale de tpi (durée d'une salve), mais pas de valeur maximale
Le composant a été testé et spécifié avec des salves de 600µs(fig 3)
On n'en sait pas plus il me semble

rer67

OK. Je prends note du vocabulaire.
Ma photodiode vs1838  ne permet pas de réception continue à priori.
Est-ce que le photodiode tssp4038 pourrait fonctionner ?  Si tu veux bien regarder la datashet stp ? Merci

Mon but est un peu comme celui ci mais pas avec la même exploitation du signal :
https://community.home-assistant.io/t/occupancy-detection-and-people-counting-sensor/19143

Merci de ta patience !

al1fch

Tout comme le TSSP8038 -(voir au dessus) la doc du TSSP4038 évoque des salves mais ne donne pas la durée maximale d'une salve.... donc rien me parait permettre de conclure sur le comportement en 'permanent' tant que l'essai n'a pas  été fait

Dans l'exemple cité l'emetteur utilise une librairie, IRremote, qui produit des salves, le récepteur IR n'y est donc pas exposé à un signal 38kHz permanent

Pour info : LIbrairie IRremote pour ESP8266
https://github.com/crankyoldgit/IRremoteESP8266

rer67

Oui. Cette histoire de bibliothèque que l'ai vu mais elle n'est pas compatible avec l'esp8266 et en mettant comme bibliothèque irremoteesp8266.h la fonction irsend n'est pas reconnue.
Tu aurais une idée pour faire cette émission en salves avec l'esp8266 ?

al1fch

Quote
Tu aurais une idée pour faire cette émission en salves avec l'esp8266 ?
Deux :

1) j'ai proposé plus haut (#97) une bidouille combinant AnalogWrite et Servo
-AnalogWrite pour le 38kHz (c'est possible avec l'ESP8266)
-Servo pour l'enveloppe des salves (une salve de 2,5ms toutes les 20ms)
....le tout lancé une fois pour toutes dans le Setup()

2) j'ai proposé ci dessus (#101) une version de la librairie IRremote adaptée à l'ESP8266 (lien corrigé)

rer67

OK.
J'essaierais demain la version du post. 97
Avec la bibliothèque je ne comprends pas comment lancer l'émission ( code à mettre dans mon sketch)!......

Go Up