Arduino détecteur de mouvement HC-SR501

Un programme simple pour permettre la détection de mouvement avec le capteur HC-SR501 et un Arduino, tr-s facile à mettre en place.

Comment détecter la présence d’un mouvement dans une pièce et déclencher une action seulement si un mouvement est fait, voici une des utilisations du capteur de mouvement HC-SR501 couplé avec un Arduino. Dans notre cas, nous allons simplement allumer une led lorsque le détecteur perçoit un mouvement.

Matériels nécessaires

J’ai utilisé pour cette article :

Vous pouvez acquérir tout de manière indépendante ou bien opter pour un kit du débutant de ce type dans lequel vous trouverez tout ce dont vous avez besoin.

Le capteur de mouvement HC-SR501

HC-SR501
HC-SR501

Il s’agit d’un capteur commun basé sur une technologie infrarouge.

Sa portée est tout à fait convenable pour des projets domotiques se limitant à une petite pièce ou un point d’accès :

porte_HC-SR501
porte_HC-SR501

Câblage du HC-SR501 et de l’arduino

Pour le câblage :

cablage_HC-SR501
cablage_HC-SR501

Code HC-SR501 pour Arduino

Dans votre IDE Arduino, saisir et téléverser :

//temps de calibration du capteur (10-60 secs selon la doc technique)
int calibrationTime = 15;

int ledPin = 13;                // pin pour la led
int pinCapteur = 7;               // pin pour la sortie du capteur
int pirState = LOW;             // nous considérons le début sans mouvement
int val = 0;                    // variable de lecture de pin

void setup() {
  pinMode(ledPin, OUTPUT);      
  pinMode(pinCapteur, INPUT);     
  Serial.begin(9600);

  Serial.print("Calibration du capteur ");
  for(int i = 0; i < calibrationTime; i++){
    Serial.print(".");
    delay(1000);
  }
}

void loop(){
  val = digitalRead(pinCapteur);  // lit la valeur du capteur
  Serial.println(val);
  if (val == HIGH) { // vérifie si il y a un mouvement
    digitalWrite(ledPin, HIGH);  // allumage de la led
    delay(150);

    if (pirState == LOW) {
      // we have just turned on
      Serial.println("Mouvement détecté!");
      //changement de l'état
      pirState = HIGH;
    }
  } else {
    digitalWrite(ledPin, LOW); // extinction de la led
    delay(300);
    if (pirState == HIGH){
      
      Serial.println("Fin du mouvement!");
      //changement de l'état
      pirState = LOW;
    }
  }
}

Vous avez enfin le détecteur de mouvement dont vous réviez, il se peut que la sensibilité soit trop importante, vous pouvez la régler avec l’aide d’un des potentiomètres sur le module HC-SR501.

N’hésitez pas à commenter et à partager.

Laisser un commentaire