Arduino ile SIM800L GSM Modülü Kullanımı

👤 Yazar: ozcan 📅 Tarih: 20.07.2026 13:21 👁️ Görüntüleme: 32

SIM800L GSM Modülü ve Akıllı Güvenlik Haberleşme Altyapısı

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.

Arduino ile SIM800L GSM Modülü pille besleme

Kritik Akım ve Voltaj Uyarısı (Sistem Çökme Nedeni):
1. **Besleme Voltajı (3.4V - 4.4V):** SIM800L modülü **asla doğrudan Arduino'nun 5V veya 3.3V çıkışından beslenemez.** İdeal çalışma voltajı 4.0V'tur. Arduino'nun 5V hattı modülü yakabilir, 3.3V hattı ise yetersiz kalır. Ayarlanabilir bir LM2596 step-down (voltaj düşürücü) regülatör kullanılarak harici bir kaynaktan beslenmelidir.
2. **Anlık Akım Piki (2A):** Modül şebekeye bağlanırken veya SMS gönderirken anlık olarak **2 Amper akım çeker**. Eğer harici güç kaynağınız bu akımı veremezse modül sürekli kendini resetler (kapanıp açılır). Regülatör çıkışına modüle en yakın noktada 1000µF veya üzeri bir elektrolitik kondansatör paralel bağlanmalıdır.
3. **RX/TX Mantık Seviyesi:** Arduino'nun TX pini 5V sinyal üretir, SIM800L'in RX pini ise 2.8V-3.3V toleranslıdır. Arduino'nun TX hattından SIM800L'in RX hattına giden yola **1KΩ ve 2KΩ dirençlerle bir gerilim bölücü** kurulması modülün ömrünü korur.
Arduino ile SIM800L GSM Modülü adaptörle


Yazılımsal Seri Port ve A0-A1-A2 Mimarisine Uyumlu GSM Kod Bloğu

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());
  }
}

Donanımsal LED Gösterge Durumları ve Hata Analizi

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:

  • Her saniyede 1 defa (Hızlı): Modül çalışıyor ancak henüz baz istasyonuna bağlanamadı (Şebeke aranıyor veya akım yetersiz).
  • Her 3 saniyede 1 defa (Yavaş): Modül şebekeye başarıyla bağlandı, kayıt işlemleri tamamlandı. SMS göndermeye veya aranmaya hazır.
  • Her saniyede 2-3 defa (Çok Hızlı): GPRS veri bağlantısı aktif modda çalışıyor.

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.

💬 Yorumlar

Henüz yorum yapılmamış. İlk yorumu siz yapın!

Bir Yorum Bırakın

Güvenlik Kontrolü:

Yenidir.com
↑ Sayfa Başı
📞 İletişim ✉ E-Posta Gönder 🟥 YouTube
© 2026 Yenidir.com
Yenidir CMS V0.1