Temelelektronik.info

Bluetooth ile RF otomatik Kapı Kumanda Etme

Devre


Bu devre Eylül ayından itibaren 754  defa ziyaret edilmiştir.

Açıklama

Devrenin Çalışması:
app invertor kullanılarak yazılmış programdaki butonlara basılınca gönderilen kodlara göre, RF modülünden otomatik kapı devresine kumanda kodları gönderiliyor.

LDR'den alınan değerlere göre, gece otomatik kapının elektriği güvenlik amacıyla kesilerek sistem devre dışı bırakılıyor. Aynı rölenin diğer kontağına bağlı bahçe aydınlatma projektörlerinin elektriği açılıyor.





____________Program_______________




//bluetoothrfdonusturucuLDRV7
#include "SoftwareSerial.h"
#include "TimerOne.h"
#include "RCSwitch.h"
RCSwitch mySwitch = RCSwitch();  
int data;
int led=13;
int darkness=0;
int role=5;

SoftwareSerial mySerial(10, 11); // RX, TX
int sayac=0;
      void setup() 
      {
        isiktest();
        mySerial.begin(9600);
        pinMode(led,OUTPUT);  
        pinMode(role,OUTPUT); 
        Serial.begin(19200);
        digitalWrite(led,0);
        Timer1.initialize(1000000); // set a timer of length 100000 microseconds (or 0.1 sec - or 10Hz => the led will blink 5 times, 5 cycles of on-and-off, per second)
        Timer1.attachInterrupt( timerIsr );      
        mySwitch.enableTransmit(2);
        // Optional set pulse length.
        mySwitch.setPulseLength(504); 
        // Optional set protocol (default is 1, will work for most outlets)
        // mySwitch.setProtocol(2);
        // Optional set number of transmission repetitions.
        mySwitch.setRepeatTransmit(10); 
        
      }
      void loop() {  
        
          
                 if (mySerial.available())
                 {
                           data = mySerial.read();
                           if(data!=0)
                              Serial.println(data);
                           
                           if(data==1) //istiklal marşı başlat/ durdur                    
                              mars();
      
                           // kapıyı aç
                           if(data==2)                    
                              ac();
      
                           // kapıyı kapat
                          if(data==3)                    
                              kapat();
      
                           // kapıyı durdur
                          if(data==4)
                              durdur();
                                 
                 }
              
        }



                    void kapat()
                    {      
                     durdur();              
                     mySwitch.send(22146, 24);//kapat
                     Serial.println(22146);
                     delay(1); 
                     sayac=0; 
                     digitalWrite(led,LOW);  
                     }

                    void ac()
                    {
                    durdur();                   
                     mySwitch.send(22145, 24);//ac
                     Serial.println(22145);
                     delay(1);
                     sayac=0;
                     digitalWrite(led,HIGH);
                     }

                    void durdur()
                    {
                     mySwitch.send(22148, 24);
                     Serial.println(22148);
                     delay(750); 
                     sayac=0;
                     }
                    void mars()
                    {
                      mySwitch.send(15977475, 24);
                      Serial.println(15977475);
                      delay(1);
                    }
                    void isiktest()
                    {
                        darkness=analogRead(A6);  
                        Serial.println(darkness);                      
                        if(darkness>900)
                        {
                          digitalWrite(role,HIGH);
                        }
                          else
                        {
                            digitalWrite(role,LOW);
                        }
                      }


                    //5 dakika da bir kapıyı kapat. Kapının açık kalmasını engelle
                      void timerIsr()
                    {
                        sayac++;
                        if(sayac>300)//5 dakikada bir kapiyi kapatma kodu gonder
                        { 
                        isiktest(); //isik miktarini test et
                        //kapat();  Kapıyı kapat       
                        }
                    }