Arduino ile DTMF Kontrollü Uzaktan LED Sistemi
Bu kod, Arduino ve bir GSM modülü kullanarak DTMF (Dokunmatik Ton Çoklama Frekansı) sinyalleri aracılığıyla LED’i uzaktan kontrol etmeyi sağlar. Projenin amacı, belirli DTMF sinyallerini algılayarak LED’i açmak, kapatmak veya durumunu sorgulamaktır.
Kod Açıklaması:
- Seri Haberleşme: İlk olarak,
SoftwareSerial
kütüphanesi kullanılarak Arduino’nun dijital pinleri üzerinden GSM modülü ile seri haberleşme sağlanır. Bu, GSM modülünden gelen verilerin Arduino tarafından okunmasını sağlar. - Pin Tanımlamaları: LED’in kontrol edileceği pin belirlenir ve çıkış olarak ayarlanır.
- GSM Modülü Ayarları:
setup()
fonksiyonunda, GSM modülüne gerekli AT komutları gönderilerek çağrı alındığında otomatik olarak açılması (ATS0=1
) ve DTMF sinyallerinin algılanması (AT+DDET=1
) sağlanır. - Ana Döngü (Loop):
loop()
fonksiyonu sürekli olarak çalışır. GSM modülünden gelen veri kontrol edilir ve içeriğine göre belirli işlemler gerçekleştirilir.- Gelen DTMF sinyalleri incelenir ve belirli sinyallere göre LED kontrol edilir veya durumu sorgulanır.
- LED’in açılması veya kapanması durumunda, bu durum GSM modülü aracılığıyla belirli bir telefon numarasına bildirilir.
DTMF: #
sinyali alındığında, çağrı sonlandırılır (ATH
komutu gönderilir).
Projenin Geliştirilmesi:
- Farklı Ekipmanlar: LED’in yanı sıra, projede farklı ekipmanlar kullanılarak işlevsellik genişletilebilir. Örneğin, röleler, sensörler veya motor sürücüleri eklenerek çeşitli cihazların uzaktan kontrolü sağlanabilir.
- Kodun Optimizasyonu: Kodun daha verimli ve optimize edilmiş hale getirilmesi için geliştirmeler yapılabilir. Örneğin, gecikmelerin minimize edilmesi veya kodun daha modüler bir yapıya dönüştürülmesi gibi.
Bu şekilde, Arduino ve GSM modülü kullanarak basit bir DTMF kontrollü uzaktan LED sistemi oluşturulur. Proje, çeşitli uygulamalarda kullanılabilecek esnek bir temel sağlar ve daha karmaşık sistemlerin geliştirilmesine olanak tanır.


#include <SoftwareSerial.h> SoftwareSerial baglanti(2, 3); int LED = 9; String leddurumu; void setup() { pinMode(LED, OUTPUT); baglanti.begin(9600); Serial.begin(9600); delay(3000); baglanti.println("ATS0=1");//bir çalmadan sonra otomatik aç delay(3000); baglanti.println("AT+DDET=1");//dtmf aç delay(3000); } void loop() { String gelen = ""; if (baglanti.available()) { while (baglanti.available()) { delay(13); char c = baglanti.read(); gelen += c; } Serial.print("gelen:"); Serial.println(gelen); if (gelen.indexOf("DTMF: 1") != -1) { Serial.println("1e basildi, led yandi"); baglanti.println("AT+CMGF=1"); //// MESAJ GÖNDERMEYİ BAŞLAT delay(100); baglanti.println("AT+CMGS=\"+9054XXXXXXXX\""); delay(100); baglanti.println("LED ACILDI"); delay(100); baglanti.write(0x1a); digitalWrite(LED, HIGH); } if (gelen.indexOf("DTMF: 0") != -1) { Serial.println("0a basildi, led sondu"); baglanti.println("AT+CMGF=1"); //// MESAJ GÖNDERMEYİ BAŞLAT delay(100); baglanti.println("AT+CMGS=\"+9054XXXXXXXX\""); delay(100); baglanti.println("LED KAPATILDI"); delay(100); baglanti.write(0x1a); digitalWrite(LED, LOW); } if (gelen.indexOf("DTMF: 3") != -1) { baglanti.println("AT+CMGF=1"); delay(100); baglanti.println("AT+CMGS=\"+9054XXXXXXXX\""); delay(100); if (digitalRead(LED) == HIGH) leddurumu = "LED ACIK"; if (digitalRead(LED) == LOW) leddurumu = "LED KAPALI"; baglanti.println("LED DURUMU : " + leddurumu); delay(100); baglanti.write(0x1a); } if (gelen.indexOf("DTMF: #") != -1) { Serial.println("Çağrı Sonlandırıldı"); baglanti.println("ATH"); } } }
