İçeriğe geç

Arduino ve SIM800C GSM Kontrol Kartı

ArduGSM

ATmega328P ve SIM800C tabanlı kontrol kartı. İki röle, Micro SIM ve USB Type-C ile uzaktan kontrol ve GSM/GPRS projeleri geliştirin.

  • Arduino UNOATmega328P
  • 2G GSMSIM800C
  • 2 röleCihaz kontrolü
  • USB Type-CArduino IDE
₺2.500,00

Stokta yok

  • PayTR ile güvenli ödeme
  • Teknik dokümantasyon ve örnek kodlar

Ürün seçimi ve kapsamı

İhtiyacınıza uygun sürümü ve kurulum gereksinimlerini değerlendirin.

Paket, kurulum ve hizmet kapsamı

Geliştirme kartı

Kartın bağlantı ve besleme gereksinimleri teknik bilgiler bölümündedir. Anten, SIM, kablo, adaptör ve harici denetleyicinin paket kapsamını satın almadan önce teyit edin.

Projenize hazırlık

Pin düzenini, besleme ve lojik seviyesini kontrol edin. Şebeke veya anten bağlantısı gereken kartlarda operatör ve RF gereksinimlerini de değerlendirin.

Arduino ve SIM800C GSM Kontrol Kartı

Arduino, GSM ve röle kontrolü bir arada.

ArduGSM; ATmega328P tabanlı Arduino UNO mimarisi, SIM800C GSM/GPRS modülü, iki röle, buzzer, mikrofon ve güç katını tek kartta birleştiren tümleşik bir kontrol ve haberleşme platformudur. Type-C USB üzerinden programlanabilir ve kullanılabilir Arduino pinleri kart üzerinde dışarı alınmıştır.

  • Mikrodenetleyici · ATmega328P (Arduino UNO uyumlu)
  • Röle · 2 adet
  • Koruma · Ters polarite ve TVS koruma
  • USB Bağlantısı · USB Type-C (programlama)
ArduGSMATmega328P · SIM800C · 2G GSM/GPRS
Uzaktan röle ve cihaz kontrolü
Alarm ve olay bildirim sistemleri
Endüstriyel otomasyon uygulamaları
GSM/GPRS tabanlı telemetri

Donanım ve bağlantılar

Teknik Özellikler

Mikrodenetleyici
ATmega328P (Arduino UNO uyumlu)
Dahili Bellek
32 KB Flash, 2 KB SRAM, 1 KB EEPROM
Haberleşme Modülü
SIM800C
Hücresel Teknoloji
2G GSM/GPRS
Röle
2 adet
Buzzer
1 adet
Kontrol Pinleri
D7 Buzzer, D8 Röle 1, D9 Röle 2
SIM800C Seri Hattı
D10 SIM TX → Arduino RX, D11 SIM RX ← Arduino TX
SIM Kart
Micro SIM soketi (TVS korumalı)
Anten Bağlantısı
SMA, 3 dBi 90° anten
Ses
Dahili mikrofon ve hoparlör konnektörü
USB Bağlantısı
USB Type-C (programlama)
Besleme Gerilimi
12 V DC
Besleme Akımı
1 A (12 V DC adaptör)
Regülatör
Dahili LM2596S, 3 A
Koruma
Ters polarite ve TVS koruma
Kart Boyutu
97 × 85 mm

Geliştirme kaynakları

Ürün Dokümantasyonu

  • PDF

    Teknik Dokümantasyon ve Kullanım Kılavuzu

    Pin bağlantıları, güç gereksinimleri, koruma devreleri ve montaj detaylarını içeren tam teknik doküman

    PDF · 1,1 MB
    PDF’yi aç ↗
  • Örnek Kodlar ve AT Komutları

    SMS, arama, röle ve GPRS için Arduino örnekleri, SIM800C AT komut başvurusu ve teknik doküman

    GitHub ↗

İlk bağlantıdan veri aktarımına

Hızlı başlangıç ve kod örnekleri

  1. 1

    Beslemeyi bağlayın

    GSM ve röle kullanımı için 12 V DC / 1 A harici adaptör bağlayın.

  2. 2

    SIM ve anteni takın

    Micro SIM ve SMA anten kullanın. Operatörünüzün bölgede 2G hizmetini kontrol edin.

  3. 3

    Programı yükleyin

    USB Type-C üzerinden Arduino IDE ile ATmega328P’yi programlayın.

  4. 4

    Kontrolü deneyin

    D10/D11 seri hattını ve D8/D9 rölelerini GitHub örnekleriyle test edin.

Programlama ve bağlantı ayrıntıları

ATmega328P, Type-C USB üzerinden Arduino IDE ile programlanabilir.

SIM800C seri haberleşmesi D10 alıcı ve D11 verici pinleri üzerinden kullanılmalıdır.

USB bağlantısı tek başına SIM800C bölümünü beslemez; GSM/GPRS kullanımı için 12 V DC besleme gereklidir.

SIM800C 2G altyapısını kullanır; kullanılacağı bölgede ve operatörde 2G hizmetinin mevcut olduğu doğrulanmalıdır.

Sabit pin atamaları: D7 buzzer (HIGH yapıldığında ses verir), D8 Röle 1 ve D9 Röle 2 (HIGH yapıldığında röle çeker), D10 SIM800C TX hattı (Arduino tarafında SoftwareSerial RX), D11 SIM800C RX hattı (Arduino tarafında SoftwareSerial TX). Yazılım geliştirirken bu pinlerin başka işlerde kullanılmamasına dikkat edin.

Harici 12 V / 1 A DC adaptör zorunludur: SIM800C şebekeye ilk kayıt ve GPRS veri iletimi sırasında anlık 2 A'e kadar akım çeker, bunu kart üzerindeki 3 A'lik regülatör karşılar. Yalnız USB takılıyken ATmega328P programlanabilir ama GSM modülü çalışmaz ve röleler tetiklenmez; SMS, arama ve röle testleri için adaptör takılı olmalıdır.

Kartta Micro SIM soketi ve harici anten için SMA konnektör bulunur; şebekeye bağlanmadan önce SMA anteni takın. Besleme girişinde ters polarite koruması, SIM hattında TVS/ESD koruması vardır.

AT komut terminali

Örneği inceleyin; bağlantı ve yapılandırma ayrıntıları aşağıdaki açıklamada yer alır.

/*
 * ArduGSM — 01 AT Komut Terminali
 *
 * Bilgisayardaki Seri Monitörden yazdığınız AT komutlarını SIM800C'ye iletir,
 * modemin cevaplarını geri gösterir. Yeni bir SIM kartı, anteni veya şebeke
 * kapsamasını denemenin en hızlı yolu budur.
 *
 * Kullanım:
 *   1. Kartı 12 V / 1 A adaptörle besleyin (yalnız USB ile SIM800C çalışmaz),
 *      SMA anteni ve Micro SIM'i takın.
 *   2. Arduino IDE → Araçlar → Kart: "Arduino Uno", Port: kartın COM portu.
 *   3. Yükleyin, Seri Monitörü 115200 baud ve "Both NL & CR" ile açın.
 *   4. AT yazın → OK görmelisiniz. Diğer komutlar için docs/AT_KOMUTLARI.md.
 *
 * Bağlantılar (kart üzerinde sabit):
 *   D10 ← SIM800C TX   (SoftwareSerial RX)
 *   D11 → SIM800C RX   (SoftwareSerial TX)
 *
 * EN: Bridges the USB Serial Monitor (115200 baud) to the SIM800C (9600 baud)
 *     so you can type AT commands directly. Power the board with 12 V.
 */

#include <SoftwareSerial.h>

#define GSM_RX_PIN 10   // SIM800C TX hattı
#define GSM_TX_PIN 11   // SIM800C RX hattı
#define PC_BAUD    115200
#define GSM_BAUD   9600 // SoftwareSerial için güvenilir hız; SIM800C otomatik baud algılar

SoftwareSerial gsm(GSM_RX_PIN, GSM_TX_PIN);

void setup() {
  Serial.begin(PC_BAUD);
  gsm.begin(GSM_BAUD);
  delay(1000);

  Serial.println(F("ArduGSM AT terminali hazir. AT yazip Enter'a basin."));

  // SIM800C otomatik baud algılama yapar: ilk birkaç "AT" hızı eşler.
  for (uint8_t i = 0; i < 5; i++) {
    gsm.println(F("AT"));
    delay(300);
  }
}

void loop() {
  // Modem → bilgisayar
  while (gsm.available()) {
    Serial.write(gsm.read());
  }
  // Bilgisayar → modem
  while (Serial.available()) {
    gsm.write(Serial.read());
  }
}
Örneğin açıklaması ve bağlantı ayrıntıları

Seri Monitörden yazdığınız AT komutlarını SIM800C'ye iletir ve modemin cevaplarını gösterir; yeni bir SIM kartı, anteni veya şebeke kapsamasını denemenin en hızlı yolu. Kartı 12 V / 1 A adaptörle besleyin, Seri Monitörü 115200 baud ve "Both NL & CR" ile açın; AT yazınca OK görmelisiniz.

Röle ve buzzer testi

Örneği inceleyin; bağlantı ve yapılandırma ayrıntıları aşağıdaki açıklamada yer alır.

/*
 * ArduGSM — 02 Röle ve Buzzer Testi
 *
 * Kart üstündeki iki röleyi ve buzzer'ı sırayla çalıştırır. GSM gerekmez;
 * kartın ilk kurulumunda donanımı kontrol etmek için kullanın.
 *
 * Not: Röleler yalnız 12 V / 1 A adaptör takılıyken çeker. Yalnız USB ile
 * çalışırken röle LED'leri yanmaz, bu bir arıza değildir.
 *
 * Bağlantılar (kart üzerinde sabit):
 *   D7 → Buzzer   (HIGH = ses)
 *   D8 → Röle 1   (HIGH = röle çeker)
 *   D9 → Röle 2   (HIGH = röle çeker)
 *
 * EN: Cycles relay 1, relay 2 and the buzzer. Relays need the 12 V supply.
 */

#define BUZZER_PIN 7
#define ROLE1_PIN  8
#define ROLE2_PIN  9

void bip(uint16_t sure_ms) {
  digitalWrite(BUZZER_PIN, HIGH);
  delay(sure_ms);
  digitalWrite(BUZZER_PIN, LOW);
}

void setup() {
  Serial.begin(115200);
  pinMode(BUZZER_PIN, OUTPUT);
  pinMode(ROLE1_PIN, OUTPUT);
  pinMode(ROLE2_PIN, OUTPUT);
  digitalWrite(ROLE1_PIN, LOW);
  digitalWrite(ROLE2_PIN, LOW);
  digitalWrite(BUZZER_PIN, LOW);
  Serial.println(F("ArduGSM role ve buzzer testi"));
}

void loop() {
  Serial.println(F("Role 1 ON"));
  digitalWrite(ROLE1_PIN, HIGH);
  bip(100);
  delay(1500);
  digitalWrite(ROLE1_PIN, LOW);

  Serial.println(F("Role 2 ON"));
  digitalWrite(ROLE2_PIN, HIGH);
  bip(100);
  delay(1500);
  digitalWrite(ROLE2_PIN, LOW);

  Serial.println(F("Buzzer"));
  bip(400);
  delay(2000);
}
Örneğin açıklaması ve bağlantı ayrıntıları

Kart üstündeki iki röleyi ve buzzer'ı sırayla çalıştırır; GSM gerekmez, ilk kurulumda donanımı kontrol etmek için kullanılır. Röleler yalnız 12 V adaptör takılıyken çeker; yalnız USB ile röle LED'lerinin yanmaması arıza değildir.

SMS gönderme

Örneği inceleyin; bağlantı ve yapılandırma ayrıntıları aşağıdaki açıklamada yer alır.

/*
 * ArduGSM — 03 SMS Gönder
 *
 * Kart açıldığında modemi hazırlar (SIM, şebeke) ve TELEFON_NO'ya bir SMS gönderir.
 * Her adımın sonucu Seri Monitörde (115200 baud) görünür.
 *
 * Ayarlar: TELEFON_NO'yu uluslararası biçimde yazın (+90...).
 * Gereken: 12 V / 1 A adaptör, SMA anten, SMS gönderebilen Micro SIM.
 *
 * Bağlantılar (kart üzerinde sabit): D10 ← SIM800C TX, D11 → SIM800C RX
 *
 * EN: Prepares the modem and sends one SMS to TELEFON_NO (international format).
 */

#include <SoftwareSerial.h>

// ─────────── KULLANICI AYARLARI ───────────
const char TELEFON_NO[] = "+905XXXXXXXXX";        // SMS gidecek numara
const char MESAJ[]      = "ArduGSM'den merhaba!";  // Türkçe karakter kullanmayın (GSM 7-bit)
// ──────────────────────────────────────────

#define GSM_RX_PIN 10
#define GSM_TX_PIN 11
#define BUZZER_PIN 7

SoftwareSerial gsm(GSM_RX_PIN, GSM_TX_PIN);

// Komutu gönderir, OK / ERROR (ya da "bitis") gelene veya süre dolana kadar cevabı toplar.
String at(const __FlashStringHelper* komut, uint32_t sure_ms = 2000, const char* bitis = "OK") {
  while (gsm.available()) gsm.read();
  gsm.println(komut);
  String cevap;
  uint32_t t = millis();
  while (millis() - t < sure_ms) {
    while (gsm.available()) cevap += (char)gsm.read();
    if (cevap.indexOf(bitis) >= 0 || cevap.indexOf(F("ERROR")) >= 0) break;
  }
  cevap.trim();
  Serial.print(F(">> ")); Serial.print(komut); Serial.print(F("  |  ")); Serial.println(cevap);
  return cevap;
}

// Modemi kullanıma hazırlar: AT → SIM hazır → şebeke kaydı.
bool modemHazirla() {
  bool cevapVar = false;
  for (uint8_t i = 0; i < 10 && !cevapVar; i++) {   // otomatik baud eşleme + açılış beklemesi
    cevapVar = at(F("AT"), 1000).indexOf(F("OK")) >= 0;
  }
  if (!cevapVar) return false;
  at(F("ATE0"));                                     // komut yankısını kapat
  at(F("AT+CMEE=2"));                                // hataları metin olarak ver

  uint32_t t = millis();
  while (at(F("AT+CPIN?")).indexOf(F("READY")) < 0) { // SIM hazır mı?
    if (millis() - t > 20000) return false;
    delay(1000);
  }
  t = millis();
  for (;;) {                                         // şebeke kaydı: 0,1 = ev, 0,5 = dolaşım
    String r = at(F("AT+CREG?"));
    if (r.indexOf(F(",1")) >= 0 || r.indexOf(F(",5")) >= 0) break;
    if (millis() - t > 60000) return false;
    delay(2000);
  }
  at(F("AT+CSQ"));                                   // sinyal gücü: 10 ve üzeri yeterli
  return true;
}

bool smsGonder(const char* numara, const char* metin) {
  at(F("AT+CMGF=1"));                                // metin modu
  at(F("AT+CSCS=\"GSM\""));

  while (gsm.available()) gsm.read();
  gsm.print(F("AT+CMGS=\""));
  gsm.print(numara);
  gsm.println(F("\""));
  gsm.setTimeout(5000);
  if (!gsm.find((char*)">")) {                       // modem metin için ">" istemini verir
    Serial.println(F("[HATA] Modem '>' istemini vermedi."));
    return false;
  }
  gsm.print(metin);
  gsm.write(26);                                     // Ctrl+Z: mesajı gönder

  String cevap;
  uint32_t t = millis();
  while (millis() - t < 60000) {                     // gönderim 60 sn'ye kadar sürebilir
    while (gsm.available()) cevap += (char)gsm.read();
    if (cevap.indexOf(F("+CMGS:")) >= 0 || cevap.indexOf(F("ERROR")) >= 0) break;
  }
  Serial.print(F("SMS cevabi: ")); Serial.println(cevap);
  return cevap.indexOf(F("+CMGS:")) >= 0;
}

void setup() {
  Serial.begin(115200);
  gsm.begin(9600);
  pinMode(BUZZER_PIN, OUTPUT);
  delay(3000);                                       // SIM800C açılışı

  Serial.println(F("=== ArduGSM SMS ornegi ==="));
  if (!modemHazirla()) {
    Serial.println(F("[HATA] Modem hazir degil: 12 V besleme, anten, SIM ve 2G kapsamasini kontrol edin."));
    return;
  }
  if (smsGonder(TELEFON_NO, MESAJ)) {
    Serial.println(F("SMS gonderildi."));
    digitalWrite(BUZZER_PIN, HIGH); delay(150); digitalWrite(BUZZER_PIN, LOW);
  } else {
    Serial.println(F("[HATA] SMS gonderilemedi."));
  }
}

void loop() {}
Örneğin açıklaması ve bağlantı ayrıntıları

Modemi hazırlar (SIM ve şebeke kaydı) ve TELEFON_NO'ya bir SMS gönderir; her adımın sonucu Seri Monitörde görünür. Numarayı uluslararası biçimde (+90…) yazın, mesajda Türkçe karakter kullanmayın. SMS ile röle kontrolü, arama ile tetikleme ve GPRS örnekleri GitHub deposunda.

Sık sorulanlar

Başlamadan önce

Yalnız USB ile çalışır mı?

USB ile ATmega328P programlanabilir. GSM modülü ve röleler için harici 12 V DC besleme gerekir.

4G SIM kartla 4G bağlantı sağlar mı?

Hayır. SIM800C, 2G GSM/GPRS modülüdür. Kullanılacak SIM ve operatörün 2G hizmeti desteklemesi gerekir.

Hangi SIM kart kullanılır?

TVS korumalı Micro SIM soketi bulunur.

Röle ve buzzer hangi pinlerde?

D7 buzzer, D8 Röle 1 ve D9 Röle 2 için ayrılmıştır. Bu çıkışlar HIGH seviyesinde etkinleşir.