.. note:: Bonjour et bienvenue dans la communauté des passionnés de SunFounder Raspberry Pi, Arduino et ESP32 sur Facebook ! Plongez dans l'univers de Raspberry Pi, Arduino et ESP32 avec d'autres passionnés. **Pourquoi nous rejoindre ?** - **Support d'experts** : Résolvez les problèmes après-vente et relevez vos défis techniques grâce à l'aide de notre communauté et de notre équipe. - **Apprendre et Partager** : Échangez des astuces et des tutoriels pour perfectionner vos compétences. - **Aperçus exclusifs** : Accédez en avant-première aux nouvelles annonces de produits et aux avant-goûts. - **Réductions spéciales** : Profitez de réductions exclusives sur nos nouveaux produits. - **Promotions festives et concours** : Participez à des concours et des promotions à l'occasion des fêtes. 👉 Prêt à explorer et à créer avec nous ? Cliquez sur [|link_sf_facebook|] et rejoignez-nous dès aujourd'hui ! 2.2.4 Détecteur PIR ====================== Introduction --------------- Dans ce projet, nous allons créer un dispositif en utilisant des capteurs pyroélectriques infrarouges pour détecter le corps humain. Lorsque quelqu'un s'approche de la LED, celle-ci s'allume automatiquement. Si personne n'est détecté, la lumière s'éteint. Ce capteur de mouvement infrarouge est capable de détecter le rayonnement infrarouge émis par les humains et les animaux. Composants ----------- .. image:: img/list_2.2.4_pir.png Principe --------- Le capteur PIR détecte le rayonnement infrarouge thermique, ce qui permet de repérer la présence d'organismes émettant ce type de rayonnement. Le capteur PIR est divisé en deux compartiments connectés à un amplificateur différentiel. Lorsqu'un objet immobile se trouve devant le capteur, les deux compartiments reçoivent la même quantité de rayonnement, et la sortie est nulle. Lorsqu'un objet en mouvement passe devant le capteur, un des compartiments reçoit plus de rayonnement que l'autre, ce qui fait fluctuer la sortie, en passant de haut à bas ou inversement. Ce changement de tension est le résultat de la détection de mouvement. .. image:: img/image211.png :width: 200 Une fois le module de détection câblé, il y a une phase d'initialisation d'une minute. Pendant cette période, le module peut émettre un signal de sortie de 0 à 3 fois par intermittence. Ensuite, le module passe en mode veille. Veuillez éviter toute interférence de sources lumineuses ou d'autres perturbations près de la surface du module afin d'éviter tout déclenchement erroné. Il est préférable d'utiliser le module dans un environnement sans vent excessif, car le vent peut également influencer le capteur. .. image:: img/image212.png :width: 400 **Réglage de la distance** En tournant le potentiomètre de réglage de la distance dans le sens horaire, a portée de détection augmente, avec une portée maximale d'environ 0 à 7 mètres. Si vous le tournez dans le sens antihoraire, la portée de détection diminue, avec une portée minimale d'environ 0 à 3 mètres. **Réglage du délai** En tournant le potentiomètre de réglage du délai dans le sens horaire, vous augmentez le temps de détection, pouvant atteindre un maximum de 300 secondes. À l'inverse, en le tournant dans le sens antihoraire, vous réduisez le délai jusqu'à un minimum de 5 secondes. Deux modes de déclenchement : (choisir différents modes en utilisant le cavalier). - **H :** **Mode de déclenchement répétable**, après avoir détecté la présence d'un humain, le module maintient une sortie de niveau haut. Pendant la période de délai, si une autre personne entre dans la zone de détection, la sortie reste au niveau haut. - **L :** **Mode de déclenchement non répétable**, la sortie passe au niveau haut lorsqu'il détecte un humain. Après le délai, la sortie redevient automatiquement à un niveau bas. Schéma de câblage --------------------- .. image:: img/image327.png Procédures expérimentales ---------------------------- **Étape 1 :** Construisez le circuit. .. image:: img/image214.png :width: 800 **Étape 2 :** Accédez au dossier du code. .. raw:: html .. code-block:: cd ~/davinci-kit-for-raspberry-pi/c/2.2.4/ **Étape 3 :** Compilez le code. .. raw:: html .. code-block:: gcc 2.2.4_PIR.c -lwiringPi **Étape 4 :** Exécutez le fichier exécutable. .. raw:: html .. code-block:: sudo ./a.out Après l'exécution du code, le capteur PIR détecte les mouvements aux alentours et fait briller la LED RVB en jaune s'il détecte quelqu'un passant à proximité. Il y a deux potentiomètres sur le module PIR : l'un pour ajuster la sensibilité et l'autre pour ajuster la distance de détection. Pour un fonctionnement optimal du module PIR, tournez les deux potentiomètres complètement dans le sens antihoraire. .. image:: img/PIR_TTE.png .. note:: Si cela ne fonctionne pas après l'exécution ou s'il y a un message d'erreur indiquant : « wiringPi.h : Aucun fichier ou répertoire de ce type », veuillez vous référer à :ref:`faq_c_nowork`. **Code** .. code-block:: c #include #include #include #define uchar unsigned char #define pirPin 0 // le PIR est connecté à GPIO0 #define redPin 1 #define greenPin 2 #define bluePin 3 void ledInit(void){ softPwmCreate(redPin, 0, 100); softPwmCreate(greenPin,0, 100); softPwmCreate(bluePin, 0, 100); } void ledColorSet(uchar r_val, uchar g_val, uchar b_val){ softPwmWrite(redPin, r_val); softPwmWrite(greenPin, g_val); softPwmWrite(bluePin, b_val); } int main(void) { int pir_val; if(wiringPiSetup() == -1){ // En cas d'échec d'initialisation de wiringPi, afficher un message à l'écran printf("setup wiringPi failed !"); return 1; } ledInit(); pinMode(pirPin, INPUT); while(1){ pir_val = digitalRead(pirPin); if(pir_val== 1){ // si la lecture de pir est au niveau HAUT ledColorSet(0xff,0xff,0x00); } else { ledColorSet(0x00,0x00,0xff); } } return 0; } **Explication du Code** .. code-block:: c void ledInit(void); void ledColorSet(uchar r_val, uchar g_val, uchar b_val); Ces lignes de code sont utilisées pour définir la couleur de la LED RVB. Veuillez vous référer à :ref:`1.1.2_rgb_c_pi5` pour plus de détails. .. code-block:: c int main(void) { int pir_val; //…… pinMode(pirPin, INPUT); while(1){ pir_val = digitalRead(pirPin); if(pir_val== 1){ // si la lecture de pir est au niveau HAUT ledColorSet(0xff,0xff,0x00); } else { ledColorSet(0x00,0x00,0xff); } } return 0; } Lorsque le capteur PIR détecte le spectre infrarouge humain, la LED RVB émet une lumière jaune ; sinon, elle émet une lumière bleue.