цифровая электроника
вычислительная техника
встраиваемые системы

 

Простая система безопасности на Arduino своими руками

Автор: Mike(admin) от 22-02-2017, 17:25

С помощью популярной нынче платформы Arduino можно создать вполне бюджетную домашнюю беспроводную систему безопасности. При этом данная система является достаточно простой в создании и рекомендуется как новичкам, так и опытным пользователям плат Arduino.


Данная система использует пироэлектрический инфракрасный (PIR) датчик движения для определения присутствия человека в его поле действия. Полученная от этого датчика информация передается по беспроводному каналу с помощью радиочастотного приемопередатчика.


Для создания самодельной системы безопасности потребуются компоненты, показанные на рисунке ниже.


Простая система безопасности на Arduino своими руками

Передающая часть системы главным образом состоит из платы Arduino Nano (может использоваться любая другая плата Arduino), PIR-датчика, РЧ-передатчика и светодиода. Выход датчика подключается к линии D2 платы Arduino. Линия данных радиопередатчика подключается к линии D12 платы Arduino. Схема подключения передающей части системы представлена на изображении ниже.


Простая система безопасности на Arduino своими руками

Приемная часть состоит главным образом из платы Arduino Uno (может использоваться любая другая плата Arduino), РЧ-приемника, пьезозуммера и светодиода. Линия данных радиоприемника подключается к линии D12 платы Arduino. Пьезозуммер, предназначенный для звукового оповещения, подключается к линии D10 платы Arduino. Схема подключения приемной части системы представлена на изображении ниже.


Простая система безопасности на Arduino своими руками

Далее приведен код для передающей части.



#include <VirtualWire.h>

int led_pin = 13;
int transmit_pin = 12;
int pir_pin = 2;
int val = 0; 
int pir_state = LOW;

void setup()
{
   Serial.begin(9600);
   vw_set_tx_pin(transmit_pin);
   vw_setup(4000); // Скорость передачи
   pinMode(led_pin, OUTPUT);
   pinMode(pir_pin,INPUT);
}
 
void loop()
{
  char msg[1] = {'0'};
  // Получаем значение с датчика
  val = digitalRead(pir_pin);
  // Меняем сообщение, если движение замечено
  if (val == 1)
  {
      msg[0] = '1';
      digitalWrite(led_pin, HIGH); // Зажигаем светодиод для индикации передачи
      vw_send((uint8_t *)msg, 1);
      vw_wait_tx(); // Ждем, когда сообщение уйдет
      if (pir_state == LOW) 
      {
      Serial.println("Motion detected!");
      pir_state = HIGH;
      }
   }
 else
 {
   msg[0] = '0';
   digitalWrite(led_pin, LOW);
   vw_send((uint8_t *)msg, 1);
   vw_wait_tx(); // Ждем, когда сообщение полностью уйдет
   if (pir_state == HIGH)
   {
      Serial.println("Motion ended!");
      pir_state = LOW;
   }
  }
}

Далее приведен код для приемной части.



#include <VirtualWire.h>
 
// Pins definition
const int led_pin = 13;
const int receive_pin = 12;
int pinSpeaker = 10; 
 
void setup()
{
   Serial.begin(9600); // Только для отладки
   vw_set_rx_pin(receive_pin);
   vw_setup(4000); // Скорость передачи
   // Старт ФАПЧ приемника
   vw_rx_start();
   // Настройка выводов для пьезозуммера и светодиода
   pinMode(led_pin, OUTPUT);
   pinMode(pinSpeaker, OUTPUT);
}
 
void loop()
{
   uint8_t buf[VW_MAX_MESSAGE_LEN];
   uint8_t buflen = VW_MAX_MESSAGE_LEN;
 
   // Проверка, получено ли сообщение
    if (vw_get_message(buf, &buflen)) 
    {
      if(buf[0]=='1')
      {
      Serial.println("Motion detected!");
      digitalWrite(led_pin,1);
      playTone(300, 160);
      delay(150);
      }  
     if(buf[0]=='0')
     {
     Serial.println("Motion ended!");
     digitalWrite(led_pin,0);
     playTone(0, 0);
     delay(300); 
     }
   }
}

// Длительность в миллисекундах, частота в герцах
void playTone(long duration, int freq) 
{
    duration *= 1000;
    int period = (1.0 / freq) * 1000000;
    long elapsed_time = 0;
    while (elapsed_time < duration) 
    {
    digitalWrite(pinSpeaker,HIGH);
    delayMicroseconds(period / 2);
    digitalWrite(pinSpeaker, LOW);
    delayMicroseconds(period / 2);
    elapsed_time += (period);
   }
}

Таким образом, создание простой недорогой системы домашней безопасности с помощью плат Arduino не представляет слишком большого труда. Все компоненты являются дешевыми и легкодоступными. В случае если нужна более продвинутая система безопасности и видеонаблюдения, то можно посмотреть на nnsbnn.ru.




Теги: Arduino, система безопасности




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий