Projelerimizi (gaz sensörü, darbe dedektörü veya sesli alarm sistemleri) uzaktan izlenebilir hale getirmenin en etkili yolu bir GSM modülü entegre etmektir. SIM800L GPRS/GSM modülü, Arduino ile seri haberleşme (UART) üzerinden konuşarak ortamda bir alarm tetiklendiğinde telefonunuza anında SMS gönderebilir veya sizi sesli arama ile bilgilendirebilir. yenidir.com portalınızdaki standart düzeni koruyarak, bu modülün de pin yapısını ve yüksek akım risklerini kontrol altına alıyoruz.


Paylaştığınız temel AT komut test kodunu, modüller arası bütünlüğü bozmamak adına indikatör LED (D9, D8) yapımızla birleştirdik. Ayrıca `updateSerial()` fonksiyonundaki statik gecikmeleri optimize ederek verilerin tampon hafızada (buffer) birikip bozulmasını engelledik:
#include <Arduino.h>
#include <SoftwareSerial.h>
/**
* @file SIM800L_GSM_Haberlesme.ino
* @brief SIM800L Modülü Şebeke Kontrolü ve Güvenli Seri İletişim Protokolü
*
* Pin Eşleşmeleri:
* - Arduino D3 -> SIM800L TX Pini (SoftwareSerial RX)
* - Arduino D2 -> SIM800L RX Pini (SoftwareSerial TX - Gerilim Bölücü ile bağlanmalı)
* - Arduino A0 -> Boşta / Regülatör Kontrolü İçin Ayrıldı
* - Arduino A1 -> Boşta / Harici Tetik Girişi İçin Ayrıldı
* - Arduino A2 -> Boşta / Analog Sensör Girişi İçin Ayrıldı
* - Arduino D9 -> Kırmızı LED (Şebeke / Bağlantı Hatası)
* - Arduino D8 -> Yeşil LED (Sistem Hazır / Şebeke OK)
* - Arduino D7 -> Yedek Alarm Çıkışı / Buzzer
*/
// SoftwareSerial bağlantısı tanımlanıyor (RX, TX)
SoftwareSerial gsmSerial(3, 2);
// Durum bildirim LED'leri
const int kirmiziLed = 9;
const int yesilLed = 8;
void updateSerial();
void setup() {
// Bilgisayar terminal bağlantısı (Arduino IDE Seri Monitör)
Serial.begin(9600);
// SIM800L varsayılan haberleşme hızı
gsmSerial.begin(9600);
// İndikatör pin tanımlamaları
pinMode(kirmiziLed, OUTPUT);
pinMode(yesilLed, OUTPUT);
// İlk açılış kontrol modu (Kırmızı aktif)
digitalWrite(kirmiziLed, HIGH);
digitalWrite(yesilLed, LOW);
Serial.println(F("\n[SISTEM] SIM800L GSM Modulu Baslatiliyor..."));
delay(2000); // Modülün şebekeden ilk voltajı alıp kararlı hale gelmesi için bekleme
// 1. El Sıkışma Testi (Handshake)
Serial.println(F("1. Komut Kontrolu (AT)..."));
gsmSerial.println("AT");
updateSerial();
// 2. Sinyal Kalitesi Ölçümü
// Dönüş değeri (0-31 arasıdır). 15'in altı zayıf şebeke sinyaline işaret eder.
Serial.println(F("2. Sinyal Kalitesi Kontrolu (AT+CSQ)..."));
gsmSerial.println("AT+CSQ");
updateSerial();
// 3. SIM Kart CCID Okuma
// Kart doğru takıldıysa SIM kartın benzersiz numarasını döner. Hata varsa boş kalır.
Serial.println(F("3. SIM Kart Varlik Kontrolu (AT+CCID)..."));
gsmSerial.println("AT+CCID");
updateSerial();
// 4. Şebeke Kayıt Durumu Sorgulama
// Dönüş değerinde (+CREG: 0,1) veya (0,5) gelmelidir. 1 yerel şebeke, 5 roaming demektir.
Serial.println(F("4. Sebeke Kayit Durumu (AT+CREG?)..."));
gsmSerial.println("AT+CREG?");
updateSerial();
Serial.println(F("[SISTEM] Manuel Test Modu Aktif. Komut gönderebilirsiniz."));
// Başlangıç testleri bitti, yeşili yakarak hattın dinlemede olduğunu bildir
digitalWrite(kirmiziLed, LOW);
digitalWrite(yesilLed, HIGH);
}
void loop() {
// Döngü içinde sürekli olarak çift yönlü veri akışını yönetiyoruz
updateSerial();
}
/**
* @brief Donanımsal ve yazılımsal seri portlar arasındaki veri geçişini sağlar.
* Gecikme süreleri dinamik hale getirilerek veri kayıpları engellenmiştir.
*/
void updateSerial() {
// Mikrosaniyelik döngü tamponu ile seri porttan gelen verileri SIM800L'e yazar
while (Serial.available()) {
gsmSerial.write(Serial.read());
}
// SIM800L'den gelen yanıtları (OK, ERROR, SMS içerikleri) bilgisayar ekranına basar
while (gsmSerial.available()) {
Serial.write(gsmSerial.read());
}
}
Modülün üzerinde yer alan dahili kırmızı LED'in yanıp sönme frekansı, donanım durumunu anlamanız için en net indikatördür:
Eğer seri monitörde AT komutuna karşılık hiçbir yanıt alamıyorsanız veya sürekli ERROR dönüyorsa, öncelikle besleme hattının tam **4V** seviyesinde sabit olup olmadığını ve Arduino TX pininden gelen sinyalin gerilim bölücü dirençler üzerinden geçip geçmediğini (SIM800L koruması için) kontrol etmelisiniz.
Henüz yorum yapılmamış. İlk yorumu siz yapın!