PIR Sensör ile NRF24L01 Üzerinden Kablosuz Alarm Sistemi Yapımı

0 331

Önceki projelerimizde harekete duyarlı alarm sistemi yapmıştık. Bu projede de NRF24L01 PIR sensörün hareket durumunu alıp alarm sistemine aktaracak. Hareket algılandığında alıcı devredeki buzzer ile alarm çalacak ve led yanacak. Kısacası önceki yapmış olduğumuz alarm sistemini bu projede rf ile kablosuz hale getireceğiz. NRF24L01 ile yapılmış diğer projelere de buradan bakabilirsiniz. >> NRF24L01 Projeleri

Malzemeler;

Verici Devresi İçin:

  1. Arduino Uno
  2. Hc-sr501 PIR Sensör
  3. NRF24L01 RF Modülü
  4. Pil

Alıcı Devresi İçin:

  1. Arduino Uno
  2. NRF24L01 RF Modülü
  3. Buzzer
  4. Led
  5. Pil

Verici Devre Şeması:

Alıcı Devre Şeması:

NRF24L01 SPI üzerinden haberleşme yaptığı için kullanacağınız arduino modülün SPI pinlerine göre takınız.

Verici Arduino Kodu:

// Robimek - Robotik Sistemler
// Coder: Sezgin Gül
//Harekete Duyarlı alarm sistemi Verici Devre Kodu
//SCK -> 13
//MISO -> 12
//MOSI -> 11
//CSN -> 10
//CE -> 9
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
int inputPin = 2; // hareket sensörü sinyal pini
int pirState = LOW; // hareket algılama başlangıç durumu
int val = 0; // pinden gelen veri

int durum[1];
RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;


void setup(void){
Serial.begin(9600);
pinMode(inputPin, INPUT);
radio.begin();
radio.openWritingPipe(pipe);}

void loop(void){
val = digitalRead(inputPin);
if (val == HIGH){
durum[0] = 150;
radio.write(durum, 1);
}
}

Alıcı Arduino Kodu:

// Robimek - Robotik Sistemler
// Coder: Sezgin Gül
//Harekete Duyarlı alarm sistemi Alıcı Devre Kodu
//SCK -> 13
//MISO -> 12
//MOSI -> 11
//CSN -> 10
//CE -> 9
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
int durum[1];
RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int led = 6;

int buzzer_pin = 5; //buzzer pwm pini
void setup(void){
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(1,pipe);
radio.startListening();
pinMode(buzzer_pin, OUTPUT);
pinMode(led, OUTPUT);
}

void loop(void){
if (radio.available()){
bool done = false;
while (!done){
done = radio.read(durum, 1);
Serial.println(durum[0]);
if (durum[0] == 150){
delay(15);
alarm(400);
digitalWrite(led, HIGH);

}
else {
digitalWrite(led, LOW);
digitalWrite(buzzer_pin, LOW);
}
delay(15);
}
}
}

void alarm(unsigned char zaman){
analogWrite(buzzer_pin, 255);
delay(zaman);
analogWrite(buzzer_pin, 0);
delay(zaman);

}

Projedeki buzzer pasif modeldir. Yani çalışmadığı zaman LOW verir. Sizdeki aktif buzzer pasif haldeyken HIGH konumunda olacağı için, alıcı kodundaki else ifadesinin altında bu satırdaki  digitalWrite(buzzer_pin, LOW); LOW yerini HIGH yaparak değiştirin.

Bunları da beğenebilirsin

Cevap bırakın

E-posta hesabınız yayımlanmayacak.