0 đánh giá

Hệ thống cảnh báo an ninh từ nhà của bạn qua GSM

Vấn đề an ninh cho ngôi nhà của bạn thì không phải ai cũng đủ khả năng về tài chính để lắp đặt một hệ thống an ninh đầy đủ từ các hãng cung cấp, chi phí dành cho nó sẽ rất cao. Vậy có cách nào tự làm một hệ thống chống trộm giá rẽ có khả năng cảnh báo từ xa qua internet hay không ?. Bài này sẽ hướng dẫn các bạn tự làm cho mình một hệ thống báo trộm từ xa dùng Arduino UNO, GSM Shield.

Bước 1: Chuẩn bị linh kiện
khoere_f2nobcfieid9hql.medium[1]-9189698244.jpg khoere_fzpjy1vieid9how.medium[1]-5372490859.jpg khoere_fdh3odrieid9hih.medium[1]-6630980842.jpg khoere_f7qjuf7ieid9hlo.small[1]-6163187678.jpg khoere_fdrqwjpieid9hlr.small[1]-1141018196.jpg khoere_f87gvhbieid9hmj.small[1]-4522598637.jpg khoere_f715f7xieid9hnc.medium[1]-5141024012.jpg khoere_fyhgemfieid9hox.medium[1]-7194950208.jpg

Bạn cần chuẩn bị các linh kiện sau:

- GSM Shield

- Arduino UNO

- Cảm biến chuyển động PIR

- Bàn phím ma trận 4x4.

- Loa báo, loại 12V 

- Buzzer.

- Adapter 12V

- Module Role (cái này bạn có thể tự làm).

- Hộp nhựa để đựng linh kiện

Bước 2: Cách đấu dây

Trước tiên bạn ráp Shield GSM lên Arduino UNO. Tiếp theo đấu chân như sau:

Pin 0: không dùng;
Pin 1: không dùng;
Pin 2: không dùng (GSM sẽ sử dụng pin này);
Pin 3: không dùng (GSM sẽ sử dụng pin này);
Pin 4: hàng cuối cùng của bàn phím (bàn phím pin 4 - từ 8);
Pin 5: không dùng;
Pin 6: Cột thứ hai từ bàn phím (bàn phím pin 6 - từ 8);
Pin 7: Cột thứ ba từ bàn phím (bàn phím pin 7 - từ 8);
Pin 8: không dùng (GSM sẽ sử dụng pin này);
Pin 9: không dùng (GSM sẽ sử dụng pin này);
Pin 10: chân số 2 của cảm biến PIR ;
Pin 11: tín hiệu còi (nối với mô-đun relay);
Pin 12: chân số 1của cảm biến PIR ;
Pin 13: nối với buzzer.

Chú ý, dù bàn phím có 8 chân, tuy nhiên bài này ta không cần phải sử dụng hết tất cả các phím trên, ta chỉ dùng một số phím để làm mật khẩu mà thôi. Ở đây ta chỉ cần dùng 1x2 của bàn phím thôi. Khi cảm biến chuyển động phát hiện ra trộm, 5s sau hệ thống sẽ báo động, như thế là không đủ cho tên trộm nhập đúng mã để tắt còi hú.

Nếu trong trường hợp cảm biến phát hiện nhầm thì ta có thể tắt còi hú từ xa qua SMS.

Bước 3: Chương trình

Tải mã nguồn Arduino về, dịch và nạp và Arduino của bạn

Mã nguồn này sử dụng thư viện GSM.h và Keypad.h. Bạn giải nén và copy file keypad.zip vào thư mục thư viện của Arduino IDE. File này chứa thư viện lập trình Ma trận phím.


#include <Keypad.h>
#include <GSM.h>

//KEYPAD
const byte ROWS = 1; //four rows
const byte COLS = 2; //four columns
//Bàn phím
char hexaKeys[ROWS][COLS] = {
  {0, 4}
};
byte rowPins[ROWS] = {4}; //nối với chân 4 bàn phím
byte colPins[COLS] = {6, 7}; //nối với chân 6,7 bàn phím
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
boolean movement1 = false;
boolean movement2 = false;
boolean locked = false;
boolean preparealarm = false;
unsigned long int timerpresskeys;
unsigned long int timermovemt;
unsigned long int timeralarmoff;
int numkeyspressed = 0;
int masterkey = {0};          //Nhập phím mật mã. ở đây là số 0. Chú ý, khi bạn gửi tin để tắt phải nhắn đúng nội dung là mã này để tắt

//PIR SENSOR
#define PIR1 12
#define PIR2 10
#define LEDPIN 13

//BUZZER
#define BUZZER1 13
#define BUZZER2 11
unsigned long int alarmtimer = 0;

//GSM SHIELD
#define PINNUMBER 
#define WAITTIME 5000
#define SIZEof 14
#define PHONE1 +84935009002 //nhập số điện thoại 1
#define PHONE2 +84935009001 //nhập số điện thoại 1
GSM gsmAccess;
GSM_SMS sms;
GSMVoiceCall vcs;
char senderNumber[SIZEof];
String snumber;

void setup() {
  boolean notConnected = true;
  Serial.begin(9600);

  pinMode(PIR1, INPUT);
  pinMode(PIR2, INPUT);
  pinMode(BUZZER1, OUTPUT);
  pinMode(BUZZER2, OUTPUT);
  digitalWrite(PIR1, LOW);
  digitalWrite(PIR2, LOW);
  digitalWrite(BUZZER1, HIGH);
  digitalWrite(BUZZER2, HIGH);

  //initialize GSM Shield
  Serial.println(Hệ thống gửi SMS..);
  while (notConnected) {
    if (gsmAccess.begin(PINNUMBER) == GSM_READY)
      notConnected = false;
    else {
      Serial.println(Chưa kết nối);
      delay(1000);
    }
  }
  Serial.println(Khởi động GSM);

  //give the PIR sensor some time to calibrate
  delay(5000);
  Serial.println(OK);

  //warn everything is ready
  buzzerSignal();
  buzzerSignal();
  buzzerSignal();
}

void loop() {
  char customKey = customKeypad.getKey(); //get keypad input
  checkintruder();
  if (customKey) {
    Serial.println(customKey);
    if (((customKey - 48) == masterkey)) {
      locked = !locked;
      Serial.println(locked);
      if (locked) {
        buzzerSignal();
        delay(WAITTIME);
        buzzerSignal();
      } else {
        buzzerSignal();
        buzzerSignal();
      }
      preparealarm = false;
    }
  }

  if ((millis() - timermovemt) > 3000) {
    movement1 = false;
    movement2 = false;
    preparealarm = false;
  }

  if ((locked) && (movement1 || movement2) && (!preparealarm) && (abs(millis() - timeralarmoff) > WAITTIME)) {
    timerpresskeys = millis(); //lấy thời gian bắt đầu bấm phím
    preparealarm = true;
    movement1 = false;
    movement2 = false;
  }

  if (((millis() - timerpresskeys) > 5000) && (locked) && (preparealarm)) {
    ringthealarm();
    preparealarm = false;
    movement1 = false;
    movement2 = false;
    timeralarmoff = millis();
  }
}

boolean checkintruder(void) {
  if (digitalRead(PIR1) == HIGH) {
    movement1 = true;
    Serial.println(PIR1);
  }
  if (digitalRead(PIR2) == HIGH) {
    movement2 = true;
    Serial.println(PIR2);
  }
  timermovemt = millis();

  return (movement1 | movement2);
}

void buzzerSignal(void) {
  alarmtimer = millis();
  while (millis() - alarmtimer < 250) {
    digitalWrite(BUZZER1, LOW);
  }
  while (millis() - alarmtimer < 500) {
    digitalWrite(BUZZER1, HIGH);
  }
}


void buzzerAlarm(boolean soundalarm) {
  if (soundalarm) digitalWrite(BUZZER2, LOW);
  else digitalWrite(BUZZER2, HIGH);
}

void ringthealarm(void) {
  while (locked) {
    sms.beginSMS(PHONE1);
    sms.print(CÓ TRỘM!!! CẢNH BÁO!!);
    sms.endSMS();
    sms.beginSMS(PHONE2);
    sms.print(CÓ TRỘM!!! CẢNH BÁO!!);
    sms.endSMS();
    sms.beginSMS(PHONE1);
    sms.
														
(!) Nếu có bất kỳ thắc mắc nào cần hỏi vui lòng đặt câu hỏi tại HỏiHay.Net, Cộng đồng Hỏi đáp Hỏi Hay sẽ trả lời bạn.
1,252 lượt xem ^tháng ^ngày, ^năm
ẩn danh

Please log in or register to Comment this Media.