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 contacterRésultat / démo
Connaissances / compétences acquises
Matériel / compétences requises
Impression 3D
Assemblage
Fonctionement des capteurs
Réalisation d'une carte electronique
Utilisation arduino
Programmation de node red
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.
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 PIRVoici ci dessous le schéma electronique réalisé sous Fritzing du systeme d'alarme.
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.
Pour cette partie nous n'allons fabriquer qu'un support orientable pour le capteur PIR ainsi qu'un boitier pour le systeme d'alarme.
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); } }