Arduino-сенсор обнаружения вторжений

Для этого проекта мы сделаем простое устройство, которое поможет обнаруживать "вторжения", назовем её системой сигнализации.

Эта система будет запускать визуальные и звуковые сигналы при каждом обнаружении движения или звука.

Arduino-сенсор обнаружения вторжений

Шаг 1: Что нам понадобится

Нам понадобятся следующие комплектующие:

  • 1 Arduino Uno
  • 1 Пассивный пьезо-зуммер
  • 1 PIR (пассивный инфракрасный) датчик
  • 1 Звуковой датчик
  • 1 Светодиод
  • Несколько проводов-перемычек

Шаг 2: Настройка платы

Шаг 2: Настройка платы

1. Подключите контакт заземления к контакту заземления (GND) на вашем Arduino

2. Подключите шину питания к контакту 5V на вашем Arduino

3. Подключите короткий конец светодиода к заземляющему контакту на Arduino, а длинную сторону - к цифровому выходу 13

При подключении светодиода вы можете в качестве альтернативы подключить его к макету, а затем подключить его оттуда к Arduino, используя резистор 220 Ом, чтобы сохранить срок службы вашего светодиода.

Шаг 3: Подключаем звуковой сигнал

Шаг 3: Подключаем звуковой сигнал

1. Подключите пьезо-зуммер к макету

2. Подключите отрицательный выход зуммера к земле

3. Подключите положительный контакт зуммера к цифровому контакту 8 на вашем Arduino

Шаг 4: Подключаем датчик PIR

Шаг 4: Подключаем датчик PIR

1. Подключите контакт питания на вашем PIR-датчике к шине электропитания (разные PIR датчики могут иметь разный набор и порядок контактов, будьте внимательны)

2. Подключите контакт заземления на вашем PIR-датчике к шине заземления

3. Подключите цифровой выходной контакт на вашем PIR-датчике к цифровому выходу 6 на вашем Arduino

Примечание! Оранжевые винты (на фото выше) - это два потенциометра. Один из них регулирует чувствительность датчика, а другой настраивает время, в течение которого датчик посылает сигнал (например, если нет движения, он отключается через 3 секунды или через 7 минут).

Шаг 5: Подключаем звуковой датчик

Шаг 5: Подключаем звуковой датчик

1. Подключите контакт питания на звуковом датчике к шине питания на макете.

2. Подключите контакт заземления на звуковом датчике к заземляющей шине на макете.

3. Подключите цифровой выходной контакт на звуковом датчике к цифровому выходу 7 на вашем Arduino.

Примечание! Маленький металлический винт на синей части этого звукового датчика является потенциометром. Он регулирует чувствительность микрофона. поверните его до тех пор пока маленький светодиод рядом с ним едва горит для того, чтобы иметь чувствительный сигнал.
Важно! Убедитесь, что вы используете цифровой выход (DO), а не аналоговый выход (AO)!

Шаг 6: Загружаем код и наслаждаемся

К данному моменту у вас должна быть базовая система сигнализации. Осталось загрузить код, чтобы это всё заработало.

//Alarm System
//By: Andrew Johnson

#include "pitches.h"  //add note library

int buzzerPin = 8; //piezo buzzer pin
int micPin = 7; //sound detector pin
int pirPin = 6; //motion detector pin
int ledPin = 13; //led pin

int pirState = LOW; //current pir state
int micState = LOW; //current mic value
int alarmState = LOW; //current alarm state

int noteDuration = 0;
int pauseBetweenNotes = 0;

//Notes in the buzzer melody
int melody[]={NOTE_C8, NOTE_C8, NOTE_C8, NOTE_C8, NOTE_C8, NOTE_C8};

//Buzzer note durations. 4=quarter note / 8=eighth note
int noteDurations[]={4, 9, 9, 9, 4, 4};


//Turn the alarm on or off
void setAlarm(String value){
  //If the alarm is turned on, activate the led and the buzzer sequence
  if(value.equals("ON")){
    digitalWrite(ledPin, HIGH);
    
    //Iterate over the notes of the melody
    for (int thisNote=0; thisNote < 6; thisNote++){

      //To calculate the note duration, take one second. Divided by the note type
      noteDuration = 1000 / noteDurations [thisNote];
      tone(8, melody [thisNote], noteDuration);

      //To distinguish the notes, set a minimum time between them
      //The note's duration +30% seems to work well
      pauseBetweenNotes = noteDuration * 1.30;
      delay(pauseBetweenNotes);  
    }  
  }

  //If the alarm is turned off, deactivate the led and buzzer melody
  else{
    digitalWrite(ledPin, LOW);
    //stop the tone playing
    noTone(buzzerPin);
  }
}

//Setup the input and output pins
void setup(){
  pinMode(buzzerPin,OUTPUT);
  pinMode(ledPin,OUTPUT);
  pinMode(pirPin,INPUT);
  pinMode(micPin,INPUT);
}


void loop(){

  //Get information from the motion detector
  pirState = digitalRead(pirPin);
  //Get information from the sound sensor
  micState = digitalRead(micPin);

  //If the motion detector is triggering and the alarm is off, turn it on
  if (pirState == HIGH and alarmState == LOW){
    setAlarm("ON");
    alarmState = HIGH;
  }

  //If the sound sensor is triggering and the alarm is off, turn it on
  if(micState == HIGH and alarmState == LOW){
    setAlarm("ON");
    alarmState = HIGH;
  }

  //If the motion detector and sound sensor are not triggering and the alarm is on then turn the alarm off
  if(pirState == LOW and micState == LOW and alarmState == HIGH){
    setAlarm("OFF");
    alarmState = LOW;
  }
}

Скачать alarm.ino

Скачать pitches.h

Не стесняйтесь играть с чувствительностью обоих датчиков; отрегулируйте их потенциометры, чтобы посмотреть, что произойдет.

Вы также можете воспроизводить различные мелодии на зуммере, если хотите. Экспериментируйте и наслаждайтесь!

Ардуино+