
I.PRÉSENTATION
L 'insecurite est l'un des defits qu' attend encore beucoup de pays africains pour atteindre une souverainete car elle est tres devastatrice pour des investissements et le develleopement ( pertes en vies humaines,accidents,handicap ).C est pourquoi il est neccessaire de se proteger contre des cambrioleurs et toutes autres attaques inconnues ou accidentelles ( car l on ne vit pas deux fois ) dans son domicile.Pour cela nous proposons un systeme de detection d intrusion avec systeme d ' alerte et d ' envoi de sms pour eviter aux particuliers d'etre dans des situations desastreuses:
Dans ce projet, nous allons realiser un detecteur de presence ( humaine ou d un animal ayant un gabarit considerable ) avec alerte sms et sirene permettant d envoyer un sms ou un appel a un individu lui informant sur l etat de son domicile,ferme,plantation etcc... .Pour cela , il nous faudra:
II. MATERIEL UTILISE ET COUT
Cliquez sur les images pour avoir les prix a moindre cout dans notre boutique en ligne
III. LOGICIELS ET BIBLIOTHÈQUES UTILISÉES
1 . Logiciels
3. Extras
Une carte sim avec credit de communication (au minimal un forfait sms par mois ou par semaine)
IV. FONCTIONNEMENT
1. Principe
Le principe est le suivant :
la carte arduino ( microcontrolleur ) est utilisée pour piloter le systeme ,controler et envoyer en cas de neccessite des informations des capteurs au client par sms (proprietaire ou personnel du domicile,ferme ou plantation ) via le module gsm embarque au montage electronique . Le récepteur-emetteur GSM utilisé a pour but de:
Le module gsm utilise est le modele A7 du fabricant AI Thinker.
C est un module trois en un : il integre le GPS , le GPRS et le GSM dans une seule puce;ce qui rend sa configuration au demarrage differente de celle des modules gsm standards . Au demarrage on doit choisir le mode dans lequel on souhaite fonctionner ( gps , gprs ,gsm).Pour valider le mode gsm on doit effectuer la commande at AT+CMGF=1.Nous avons des leds pour illustrer l'etat du systeme:
-la led rouge indique que le module gsm est en marche
-la led verte ( clignote ) indiquant ainsi que le systeme en bon etat ( pas d alerte)
-la led jaune indique que le systeme est en etat critique ( presence ou mouvement detecte)
2. brochage des differents circuits
Les connexions du circuit de ce projet sont simples et illustrées dans le tableau ci-dessous.
carte arduino uno | module GPS GSM A7 Ai thinker et autres |
11 | PWR_KEY |
GND | GND |
VCC | V_BAT |
4 | U_TXD |
5 | U_RXD |
10 | led_vert // le systeme est ok |
9 | led_rouge // le gsm est demarre |
8 | led_jaune // signale l intrusion |
7 | broche Echo de HC-SR04 |
A0 | broche Trig de HC-SR04 |
12 | buzzer |
6 | broche numerique du capteur de mouvement pir |
2 | broche 3 arduino // interuption |
3 | broche 2 arduino |
3.Rappel sur le capteur ultrason HC SR04
Le capteur à ultrasons HC-SR04 est un capteur qui peut mesurer la distance . Il émet un ultrason à 40 000 Hz (40 kHz) qui voyage dans l'air et s'il y a un objet ou un obstacle sur son passage, il rebondira vers le module. Compte tenu du temps de trajet et de la vitesse du son, vous pouvez calculer la distance.
4.Rappel sur le capteur de mouvement a infrarouge
En domotique, il est courant d’actionner des appareils lorsqu’une personne rentre dans une pièce. Ceci est rendu possible grâce à des capteurs de mouvement comme le capteur infrarouge passif ou PIR( Passive Infared sensor). Nous allons voir dans ce tutoriels comment gérer le capteur PIR à l’aide d’un microcontrôleur Arduino.
Tout objet ayant une température au dessus du zéro absolu émet un rayonnement infrarouge. C’est ce qu’on peut voir sur les images de caméra thermique. Le capteur PIR est muni de deux cellules sensibles aux infrarouges qui vont détecter les rayons infrarouges réfléchit ou émit par un objet.
Lorsqu’il n’y a pas de mouvement, le niveau d’infrarouge reçu est le même pour les deux cellules. Lors du passage d’un objet, l’émission de ces rayons va être modifiée sur une cellule puis sur l’autre ce qui va permettre de détecter le mouvement.
Le cache blanc, qui couvre et protège généralement le capteur, est une lentille de Fresnel avec plusieurs facettes qui permet de concentrer et , parfois, filtrer le rayonnement infrarouge sur les cellules.
NB! Le capteur PIR renvoie un état haut(HIGH) lorsqu’il détecte un mouvement et un état bas(LOW) si il n’y a rien. Il sera donc gérer comme une entrée digitale à l’aide de la fonction digitalRead() d’Arduino.
5.Schema
V. PROGRAMME
//#include
#include
#include
#include
SoftwareSerial GSMmodule(4, 5);
#include
#include
#define DEBUG true
const int POWER_ON=11;
const int lampPin = 7;
const int LED_A7_ON=9; //led red
const int MODE_NORMAL=10; //led green
const int MODE_CRITIQUE=8; // led yellow
const int BUZZER_SIRENE=12; // buzzer
const int capteur_D = 6;
const int capteur_A = A0;
int val_analogique;
unsigned long previousMillis = 0;
const long interval = 200;
unsigned long t1,t2,t3;
int ledState = LOW;
//TinyGPSPlus gps;
//double latitude, longitude;
int count1=0;
String textMessage; // Variable to store text message
String lampState; // Create a variable to store LED state
Neotimer mytimer = Neotimer(1000);
Neotimer mytimer2=Neotimer(1000);//apres 1 sec
void setup()
{
Timer1.initialize(100000);
Timer1.attachInterrupt( timerIsr );
attachInterrupt(0,reset_t0, RISING);
Serial.begin(9600);
GSMmodule.begin(9600);
delay(1000);//initialize communication
pinMode(POWER_ON, OUTPUT);
pinMode(LED_A7_ON, OUTPUT);
pinMode(MODE_NORMAL, OUTPUT);
pinMode(MODE_CRITIQUE, OUTPUT);
pinMode(BUZZER_SIRENE, OUTPUT);
pinMode(3,OUTPUT);
pinMode(capteur_D, INPUT);
pinMode(capteur_A, INPUT);
digitalWrite(POWER_ON, 1);
digitalWrite(LED_A7_ON, 0);
digitalWrite(MODE_NORMAL, 0);
digitalWrite(MODE_CRITIQUE, 0);
digitalWrite(BUZZER_SIRENE, 0);
digitalWrite(3, 0);
Serial.println("Demarrage du module A7 AI Thinker en cours ...");
delay(3000);
digitalWrite(POWER_ON, 0);
digitalWrite(LED_A7_ON, 1);
delay(1000);
//delay(10000);
//baudrate();
Serial.println("Demarrage du module A7 AI Thinker OK");
//sendData("AT+RST=1 ",1000,DEBUG);
//delay(100);
sendData("AT+CMGF=1\r",1000,DEBUG); // AT command to set GPSmodule to SMS mode
delay(100); // Set delay for 100 ms
sendData("AT+CNMI=2,2,0,0,0\r",1000,DEBUG);// Set module to send SMS data to serial out upon receipt
delay(100);
Serial.println(" module reset ok ...");
//Serial.println("Mode GPS OK");
}
void loop()
{
if(mytimer.repeat(2)){
Serial.println("GSM mode start..."); //Print test in Serial Monitor
sendData("AT+CMGF=1\r",1000,DEBUG); // AT command to set GPSmodule to SMS mode
delay(100); // Set delay for 100 ms
sendData("AT+CNMI=2,2,0,0,0\r",1000,DEBUG);// Set module to send SMS data to serial out upon receipt
delay(100);
Serial.println(count1);
++count1;}
init_serial();
capteur(50); //apres 5 sec de pluies on envoi le sms
GSM_WAIT_COMMAND();
//On_Off(MODE_CRITIQUE,100);
//Serial.println(t1);
}
void capteur(long timex){
val_analogique = analogRead(capteur_A);
//Serial.print("Analog value : ");
//Serial.println(val_analogique);
//Serial.println("");
//delay(500);
if(digitalRead(capteur_D) == LOW)
{
//Serial.println("presence d eau");
//digitalWrite(MODE_CRITIQUE, 1);
digitalWrite(MODE_NORMAL, 0);
//On_Off(MODE_CRITIQUE, 100);
On_Off(BUZZER_SIRENE, 100);
// programme d interruption
digitalWrite(3, 1);// qui remet t1 a zero a travers
//3 connectee a la broche 2 d interruption
digitalWrite(MODE_CRITIQUE, 1);
// apres 10s on envoi le sms au client
if(t1>timex){
if(mytimer2.repeat(1)){
sendSMS("etat critique : presence d eau ,niveau :"+ String(val_analogique));}
}
} else {
//Serial.println("absence d eau");
digitalWrite(BUZZER_SIRENE, 0);
On_Off(MODE_NORMAL, 300);
digitalWrite(MODE_CRITIQUE, 0);
digitalWrite(3, 0);
mytimer2.repeatReset();
}
}
void init_serial()
{
if (Serial.available() > 0)
GSMmodule.write(Serial.read());
if (GSMmodule.available() > 0)
Serial.write(GSMmodule.read());
if (GSMmodule.available() > 0) {
textMessage = GSMmodule.readString();
Serial.print(textMessage);
delay(10);}
}
String sendData(String command, const int timeout, boolean debug)
{
String response = "";
GSMmodule.println(command);
long int time = millis();
while( (time+timeout) > millis())
{
while(GSMmodule.available())
{
char c = GSMmodule.read();
response+=c;
}
}
if(debug)
{
Serial.print(response);
}
return response;
}
void sendSMS(String message) {
//mytimer2.repeatReset();
// REPLACE THE X's WITH THE RECIPIENT'S MOBILE NUMBER
// USE INTERNATIONAL FORMAT CODE FOR MOBILE NUMBERS - for example +237 is international code for Cameroon
GSMmodule.print("AT+CMGS = \"+237680606206\"\r");
//GSMmodule.print("AT+CMGS = \"+237683039865\"\r");
delay(100);
// Send the SMS
GSMmodule.print(message);
delay(100);
Serial.println(message);
// End AT command with a ^Z, ASCII code 26
GSMmodule.println((char)26);
delay(100);
GSMmodule.println();
// Give module time to send SMS
delay(5000);
}
void On_Off(const int ledPinx,const long intervalx){
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= intervalx) {
previousMillis = currentMillis;
if (ledState == LOW) {
ledState = HIGH;
} else {
ledState = LOW;
}
digitalWrite(ledPinx, ledState);
}
}
void GSM_WAIT_COMMAND(){
if ((textMessage.indexOf("On") >= 0)||(textMessage.indexOf("disjoncteur on") >= 0)) {
// Turn on relay and save current state
digitalWrite(lampPin, HIGH);
lampState = "ON";textMessage = "";
String message = "Votre disjoncteur est " + lampState;
sendSMS(message);
}
if ((textMessage.indexOf("Off") >= 0)||(textMessage.indexOf("disjoncteur off") >= 0)) {
// Turn off relay and save current state
digitalWrite(lampPin, LOW);
lampState = "OFF";textMessage = "";
String message = "Votre disjoncteur est " + lampState;
sendSMS(message);
}
if ((textMessage.indexOf("etat systeme") >= 0 )||(textMessage.indexOf("state") >= 0)) {
if (digitalRead(lampPin) == HIGH )
{lampState = " EN MARCHE ";}
else
{lampState = " EN ARRET ";};
String message = "Votre disjoncteur principal est " + lampState
+" et le capteur de pluie indique : "+ String(val_analogique);
sendSMS(message);
textMessage = "";
}
}
void timerIsr()
{
t1=t1+1;
t2=t2+1;
t3=t3+1;
}
void reset_t0()
{ //a=1;
t1=0;
}
VI. LA CONCRÉTISATION
1.images de realisation
2.Videos de realisation