Atelier Systeme d'alarme


Réalisation d'un systeme d'alarme avec différentes technologies de capteurs de présence et differentes methode d'avertissement et signalisation de présence.

Me contacter

Ce tutoriel sera organisé en 4 thèmes:


Objectif

Résultat / démo

Connaissances / compétences acquises

Matériel / compétences requises

Mécanique

Impression 3D

Assemblage

Electronique

Fonctionement des capteurs

Réalisation d'une carte electronique

Programmation

Utilisation arduino

Programmation de node red

Vidéo

Atelier systeme d'alarme

Objectifs

Introduction

Bienvenue, nous sommes heureux de vous accueillir dans cet atelier. A la fin de ce tutoriel vous serez en capcaitée de créer unsysteme d'alarme très modulable. Vous serez guidez tout au long de votre réalisation par des tutoriels. Au travers des différentes étapes de création, vous aborderez successivement des domaines variés tels que la mécanique, l’électronique et la programmation.

Le matériel requis
  • Carte arduino nano
  • Capteur PIR
  • Capteur à ultrasons
  • Led
  • Buzzer
  • Bobine de PLA

Electronique


Dans un premier temps vous pouvez aller jeter un coup d'oeuil aux 6 tutoriels suivant qui vont vous donner les bases de l'utilistation de Arduino et de son IDE ainsi que de la commande d'une led, de la commande d'un buzzer, de la mesure de distance avec un capteur HCSR04 et de la detection de présence avec un capteur PIR.

Tutoriel Arduino Tutoriel controle led Tutoriel lecture état bouton poussoir Tutoriel capteur HCSR04 Tutoriel capteur PIR

Voici ci dessous le schéma electronique réalisé sous Fritzing du systeme d'alarme.

image schéma main robot Fritzing

Une fois le modéle validé sur Breadboard(plaque à essaie) il est possible de le reproduire de maniere plus fiable sur plaque pastillée et voici le résultat.

image circuitsysalarmeFront image circuitsysalarmeBack

Mécanique


Pour cette partie nous n'allons fabriquer qu'un support orientable pour le capteur PIR ainsi qu'un boitier pour le systeme d'alarme.

image lancement IDE Arduino image lancement IDE Arduino

Programmation


Voici un code permettant de refaire les actions de la vidéo de demonstration

const int ledPinR = 10;
const int ledPinO = 8;
const int ledPinW = 11;
const int ledPinB = 9;

int pinBp = 7;
boolean etatBp = 0;

const int buttonPin = 5; // broche du capteur PIR
int StatePIR = 0; // etat de la sortie du capteur PIR

int trig = 3;
int echo = 4;
long lecture_echo;
long distance;
int StateHCSR04 = 0;

#define buzzer 2
int i;

void setup()
{
  pinMode(ledPinW, OUTPUT); //la broche de la LED est mise en sortie
  pinMode(ledPinR, OUTPUT);
  pinMode(ledPinO, OUTPUT);
  pinMode(ledPinB, OUTPUT);

  pinMode(pinBp, INPUT); //On indique à l’Arduino le mode du pin d’entrée

  pinMode(buzzer, OUTPUT); //met la broche en sortie

  pinMode(buttonPin, INPUT); //la broche du capteur est mise en entree

  pinMode(trig, OUTPUT);
  digitalWrite(trig, LOW);
  pinMode(echo, INPUT);

  Serial.begin(9600);
}

void detection()
{
  //lecture du capteur
  StatePIR = digitalRead(buttonPin);

  //determination de la distance avec capteur à ultrasons
  digitalWrite(trig, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig, LOW);
  distance = (pulseIn(echo, HIGH)) / 58;
  //condition présence
  if (distance <= 20)
  {
    StateHCSR04 = 1;
  }
  else
  {
    StateHCSR04 = 0;
  }
}

void monitoring()
{
  Serial.print("etat Bp :");
  Serial.print(etatBp); // on l'affiche sur le moniteur
  Serial.print("  Distance en cm :");
  Serial.print(distance);
  Serial.print("  etat PIR :");
  Serial.println(StatePIR);
}

void logique()
{
  if ((StatePIR == HIGH) && (StateHCSR04 == HIGH)) //si quelquechose est détecté sur les deux capteurs
  {
    digitalWrite(ledPinR, HIGH); //on allume la LED
    digitalWrite(ledPinO, HIGH);
    digitalWrite(ledPinB, LOW);
    signalisation();
  }
  if ((StatePIR == HIGH) && (StateHCSR04 == LOW)) //si quelquechose est détecté sur les deux capteurs
  {
    digitalWrite(ledPinR, HIGH); //on allume la LED
    digitalWrite(ledPinO, LOW);
    digitalWrite(ledPinB, LOW);
    signalisation();
  }
  if ((StatePIR == LOW) && (StateHCSR04 == HIGH)) //si quelquechose est détecté sur les deux capteurs
  {
    digitalWrite(ledPinR, LOW); //on allume la LED
    digitalWrite(ledPinO, HIGH);
    digitalWrite(ledPinB, LOW);
    signalisation();
  }
  else //sinon
  {
    digitalWrite(ledPinR, LOW); //on allume la LED
    digitalWrite(ledPinO, LOW);
    digitalWrite(ledPinB, HIGH);
    noTone(2);
  }

}

void signalisation()
{
  for (i = 500; i < 1000; i++) {
    tone(buzzer, i);
    delay(1);
  }

  for (i = 1000; i > 500; i--) {
    tone(buzzer, i);
    delay(1);
  }
  for (i = 500; i < 1000; i++) {
    tone(buzzer, i);
    delay(1);
  }

  for (i = 1000; i > 500; i--) {
    tone(buzzer, i);
    delay(1);
  }
  for (i = 500; i < 1000; i++) {
    tone(buzzer, i);
    delay(1);
  }

  for (i = 1000; i > 500; i--) {
    tone(buzzer, i);
    delay(1);
  }
}

void loop()
{
  //on lit l'état du bouton poussoir
  etatBp = digitalRead(pinBp);
  if (etatBp == 1)
  {
    digitalWrite(ledPinW, HIGH); //on allume la LED W qui signale que le systeme d'alarme est en route
    detection();
    monitoring();
    logique();
    delay(100);
  }
  else
  {
    monitoring();
    digitalWrite(ledPinW, LOW); //on allume la LED W qui signale que le systeme d'alarme est en route
    digitalWrite(ledPinR, LOW); //on allume la LED W qui signale que le systeme d'alarme est en route
    digitalWrite(ledPinO, LOW); //on allume la LED W qui signale que le systeme d'alarme est en route
    digitalWrite(ledPinB, LOW); //on allume la LED W qui signale que le systeme d'alarme est en route
    noTone(2);
  }
}

Me contacter!