Arduino


Détecteur de mouvement à base de PIR

Publié le 25/11/2018



Détecter les mouvements à base d'un PIR dans une pièce en traitant l'information par un Arduino nano.



L'utilisation d'un PIR est vraiment très simple. Le PIR renvoie uniquement deux information : Voltage High ou voltage Low.



Donc il suffit juste "d'écouter" le PIR, pour voir s'il a détecté un mouvement : High voltage (détection) ou Low voltage (pas de détection) en écoutant directement sur une entrée digital de l'Arduino.



Le PIR doit être alimenté en 5V.

Liste des composants nécessaires pour la réalisation du circuit :

  • Arduino nano1
  • Détecteur PIR1


Schéma du montage électronique :


Pour les amateurs d'impression 3D, j'ai fait quelques templates qui permettent d'imprimer divers boitiers pouvant accueillir les divers composants utilisés dans mes tutoriels.
- Pour un composant PIR, vous trouverez le boitier à imprimer ici.

    Il faut compter environ 4h pour imprimer les composants de ce boitier.


- Pour un relais, vous trouverez le boitier à imprimer ici.
    Il faut compter environ 2h pour imprimer les composants de ce boitier.




L'ensemble des impressions 3D a été réalisé sur une imprimante Creality3D Ender-3 pro avec les réglages standards suivants:

Pour les personnes possédant Fritzing, voici le schéma électronique.


Voici le code à télécharger dans votre Arduino:

#define pinPIR      2                    // Pin pour le capteur PIR

void setup()
{
	Serial.println(F("************"));
	Serial.println(F("Arduino Nano"));
	Serial.println(F("************"));

	Serial.println(F(""));
	Serial.println(F("\nInitialisation..."));
	Serial.println(F(""));

	Serial.println(F("Connection du capteur PIR"));
	Serial.println(F(""));

	Serial.println(F("************************"));
	Serial.println(F("          3.3v  5v     *"));
	Serial.println(F("*     GND DATA  VCC    *"));
	Serial.println(F("*      .    .    .     *"));
	Serial.println(F("*                      *"));
	Serial.println(F("*                      *"));
	Serial.println(F("*      O         O     *"));
	Serial.println(F("*    Timer     Sensi   *"));
	Serial.println(F("************************"));
	Serial.println(F(""));

	Serial.print(F("On calibre le capteur PIR (7s)"));

	for(int i = 0; i < 7; i++)
	{
	  Serial.print(F("."));
	  delay(1000);
	}

	Serial.println(F(""));

	pinMode(pinPIR, INPUT_PULLUP);  
}

//*****************************************************************************************//
//                                      MAIN LOOP
//*****************************************************************************************//
void loop()
{
	int val = digitalRead(pinPIR);

	Serial.print("val=");
	Serial.print(val);
	Serial.println("");
   
	// A chaque nouveau mouvement on retarde le chrono
	if (val == HIGH) 
	{ 
		Serial.println(F(" Mouvement")); 
		Serial.println(F(" Pause 1s"));    
		delay(1000);		  
	}
}
Nombre de vue(s): 2394

Forum


Vos avis/remarques...


Veuillez vous connecter pour laisser vos commentaires...