Küçük bir mikrodenetleyici kartı yardımıyla SMS kontrollü röle kurmak çok kolaydır. Bu yazıda, tek kanallı SMS rölesi geliştirmek için SIM800L/SIM800C GSM modülü ve Arduino Uno kullanıyoruz. Röle, cep telefonunuzdaki SMS uygulaması üzerinden ON/OFF komutlarıyla kontrol edilir.
Donanım ve Güç Kaynağı
Bu devre, uygun performans için stabilize ve temiz 3.7–4.2V/2A (min) DC güç kaynağına ihtiyaç duyar. Çoğu SIM800L modülü 3,7 V ile çalışsa da, kullanılan bazı bileşenler nedeniyle 4 V altında çalışmayabilir. Modül üreticileri arasında bileşen kalitesi farklılık gösterebilir. Bu nedenle LM2596 kullanarak modülü en fazla 4.2 V aralığında çalıştırın. Ancak LM2596 modülünü bitmiş bir projede kalıcı olarak kullanmayın; LM2596 prototip hazırlamada kolaylık sağlar.
SIM Kart ve Ağ Kaydı
Sistemi açmadan önce yuvaya geçerli bir mikro SIM kart takmayı unutmayın. Genellikle SIM kart birkaç saniye içinde otomatik olarak ev ağına kaydolur. SIM800L modülünün yerleşik LED göstergesi, ağa tamamen kaydolduğunda her iki ila üç saniyede bir (sürekli değil) yanıp söner.
SMS Komutları
SMS göndermeye başlayalım: “ON” (büyük/küçük harf duyarlı değil) metninin gönderilmesi röleyi açar, “OFF” gönderilmesi röleyi kapatır. Röle kontakları, uygun herhangi bir elektrik yükünü anahtarlamak için istenildiği gibi bağlanabilir.
Arduino Kodu
Arduino kodu, özel bir SIM800L kütüphanesi gerektirmeyen temel bir koddur. AT komutları ile çalıştığı için kütüphaneye ihtiyaç duymazsınız. Kodda RX ve TX pinleri yazılım seri pinleri olarak atanmıştır; böylece Arduino'nun donanım seri bağlantı noktası seri monitörle kullanılmaya devam eder.
/*
* SIM800L SMS RELAY v1.0
* Arduino Hardware (Author): (ATmega328)
* Arduino IDE (Author): 1.6.9
*/
#include
SoftwareSerial mySerial(10,11); // (Rx,Tx > Tx,Rx)
char incomingByte;
String inputString;
int relay = 13; // röle pini
void setup()
{
pinMode(relay, OUTPUT);
digitalWrite(relay, LOW); // Röle açılışta kapıyoruz
Serial.begin(9600);
mySerial.begin(9600);
while(!mySerial.available()){
mySerial.println("AT");
delay(1000);
Serial.println("Connecting...");
}
Serial.println("Connected!");
mySerial.println("AT+CMGF=1"); //Set SMS modu
delay(1000);
mySerial.println("AT+CNMI=1,2,0,0,0");
delay(1000);
mySerial.println("AT+CMGL=\"REC UNREAD\"");
}
void loop()
{
if(mySerial.available()){
delay(100);
// Serial Buffer
while(mySerial.available()){
incomingByte = mySerial.read();
inputString += incomingByte;
}
delay(10);
Serial.println(inputString);
inputString.toUpperCase();
//turn RELAY ON or OFF
if (inputString.indexOf("ON") > -1){
digitalWrite(relay, HIGH);
}
if (inputString.indexOf("OFF") > -1){
digitalWrite(relay, LOW);
}
delay(50);
//Delete Messages & Save Memory
if (inputString.indexOf("OK") == -1){
mySerial.println("AT+CMGDA=\"DEL ALL\"");
delay(1000);}
inputString = "";
}
}
Kod yüklendikten sonra donanım kurulumunun düzgün olduğundan emin olmak için biraz zaman ayırın.
Sorun Giderme
Güç kaynağı yetersiz kalıyorsa modül çalışma sırasında kapanabilir veya sıfırlanabilir. Arıza durumunda sistemi kapatıp açmayı deneyin. Ağ kaydının tekrar başarılı olduğundan emin olun ve gerekirse sıfırlama anahtarıyla donanım sıfırlaması yapın.
Verilen kod prototip amaçlıdır; fikir vermesi için hazırlanmıştır, kendi projelerinizde geliştirerek kullanabilirsiniz.