יום שבת, 13 ביולי 2013

מערכת אזעקה ביתית

שלום לכולם, היום אפרסם לכם את מערכת האזעקה שבניתי.
מערכת האזעקה מבוססת על תא סולארי שכאשר לא מקבל מספיק אור, מופעלת האזעקה.
כך אפשר לכוון אליו קרן אור, שכאשר מישהו עובר דרכה, התא לא מקבל מספיק אור ומפעיל את האזעקה.
בנוסף, חוץ מצליל הבאזר המופעל בעת האזעקה, גם נשלח אמייל שמתריע על פריצה.

הנה סרטון הדגמה למערכת:



המערכת מבוססת על הבקר Arduino שניתן לקנות, והוא מאפשר חיבור רכיבים שונים, ותכנות בסביבת עבודה לשפת C.

להלן המעגל החשמלי של המערכת:

ולהלן הקוד בשפת C שמתפעל את המערכת:

#define HIGH_TONE 1000
#define LOW_TONE 500

#define NO_ALARM_LIGHT 50
#define ALARM 1
#define OFF 0
#define ON 1

const int sensorPin = 0;
const int ledPin = 9;
const int buzzerPin = 8;
const int buttonPin = 3;

int buzzer_val = LOW_TONE;
int light_val = LOW;

int button_p = HIGH;

int alarm_state = !ALARM;
int program_state = OFF;

void setup()
{
  Serial.begin(9600);
  
  pinMode(ledPin, OUTPUT);
  pinMode(buzzerPin, OUTPUT);
  pinMode(buttonPin, INPUT);
  
}

void loop()
{

  int light_lvl = analogRead(sensorPin);
  int button_state = digitalRead(buttonPin);
  
  
  if(button_state == LOW && button_p == HIGH) {
    button_p = LOW;
    program_state = !program_state;
    if(program_state == ON) {
        digitalWrite(ledPin, HIGH); // Time to get ready
        delay(20000); // 20 seconds
    }
  }
  if(button_state == HIGH && button_p == LOW) {
    button_p = HIGH;
  }
  if(program_state == OFF)
    alarm_state = !ALARM;
    
  if(!alarm_state) {
    Serial.println(0);
    if(program_state == ON)
      check_alarm(light_lvl);
    
    noTone(buzzerPin);
    digitalWrite(ledPin, LOW);
  }
  else {
    Serial.println(1);
    set_light_buzzer();
    
    tone(buzzerPin, buzzer_val);
    digitalWrite(ledPin, light_val);
    delay(250);
  }
}

void check_alarm(int light_lvl)
{

  if(light_lvl > NO_ALARM_LIGHT) {
    alarm_state = ALARM;
  }
}

void set_light_buzzer()
{
     if(light_val == HIGH)
      light_val = LOW;
     else
      light_val = HIGH;
      
    if(buzzer_val == LOW_TONE)
      buzzer_val = HIGH_TONE;
    else
      buzzer_val = LOW_TONE;
} 
  

להלן הקוד בשפת Perl ששולח אמייל ברגע שמופעלת אזעקה:
#!/usr/bin/perl




use Device::SerialPort;
use Email::Send;
use Email::Send::Gmail;
use Email::Simple::Creator;

my $port = Device::SerialPort->new("/dev/ttyACM0");
$port->databits(8);
$port->baudrate(9600);
$port->parity("none");
$port->stopbits(1);

system "clear";

while(1) {
 ($count, $string_in) = $port->read(1);

 if($string_in eq "1") {
  print "alarm";

  my $email = Email::Simple->create (
      header => [
   From    => 'felixkor@gmail.com',
   To      => 'felixkor@gmail.com',
   Subject => 'Alarm',
      ],
      body => 'Alarm at: '.localtime,
  );

  my $sender = Email::Send->new ({
      mailer      => 'Gmail',
      mailer_args => [
   username => 'Gmail username',
   password => 'Gmail Pwd',
      ]
  });

  $sender->send ($email);

  exit;
 }
} 
 
את הרכיבים ניתן לרכוש באתר http://www.4project.co.il
תודה על קריאתכם, אשמח לתגובות. 

אין תגובות:

הוסף רשומת תגובה