Telit AT Komut Kütüphanesi
AT_Command, Telit modemleriyle çalışan gömülü projelerde AT komut katmanını daha güvenli, okunabilir ve tekrar kullanılabilir hale getirmek için geliştirdiğim bir C++ kütüphanesidir. Özellikle Telit LE910C1-EUX ve GE910 ailesi modemlerle çalışan Arduino / PlatformIO tabanlı projelerde, ham komut dizileriyle uğraşmadan modem kontrolü yapmayı kolaylaştırır.
Bu kütüphane; modem başlatma, SIM durumu, şebeke kaydı, PDP aktivasyonu, TCP/IP soketleri, WebSocket, HTTP/FTP ve teşhis akışları gibi katmanları tek tek ele alır. Ama asıl değeri, bunları sahada kullanılabilir bir API sınırıyla sunmasında yatıyor.
Öne Çıkan Yaklaşım
Kütüphanedeki AT fonksiyonları doğrudan herkese açık bırakılmamış; bunun yerine inheritance tabanlı bir yapı kurulmuş. Yani çıplak modem sınıfını doğrudan her şeyi yapabilen bir nesne gibi kullanmak yerine, ihtiyacın olan davranışı kendi uygulama sınıfında türetiyorsun.
Bu yaklaşımın faydaları:
- uygulamaya özel temiz bir modem katmanı kurabilmek,
- yalnızca gerçekten ihtiyaç duyulan komutları dışarı açmak,
- saha kodunu daha okunabilir ve kontrollü hale getirmek,
- modem entegrasyonunu proje bazlı soyutlayabilmek.
Ayrıca kütüphane, her fonksiyon için ayrı ayrı buffer ayırmak yerine paylaşılan tek bir IO buffer kullanıyor. Bu da özellikle AVR sınıfı sınırlı RAM ortamlarında daha öngörülebilir bir hafıza davranışı sağlıyor.
Desteklenen Modem Aileleri
README içinde açıkça belirtilen başlıca modemler şunlar:
- LE910C1-EUX
- GE910-QUAD
- GE910-QUAD-V3
- GE910-GNSS
- LE910S1-EA / EAG
- LE910R1-EU
Bu nedenle kütüphane sadece tek bir modem için yazılmış dar bir sürücü değil; Telit tarafında tekrar kullanılabilir bir modem kontrol omurgası gibi düşünülebilir.
Neleri Kolaylaştırır?
Kütüphane özellikle şu alanlarda iş görüyor:
- modem kontrolü:
AT,ATE,CFUN,CMEE,SHDN - kimlik ve teşhis: model, üretici, IMEI, firmware, hata kodları
- SIM yönetimi:
CPIN,CCID, SIM durum kontrolleri - şebeke ve PDP: operatöre kayıt, APN tanımı, veri bağlantısı aktivasyonu
- TCP/IP soketleri: bağlantı açma, veri gönderme, veri alma, kapatma
- WebSocket:
ws://vewss://akışları için temel komutlar - HTTP / FTP: daha üst katman saha haberleşmesi ve dosya akışları
- ağ teşhisi: sinyal, RF ve bağlantı durumu okuma
Yani sahada çalışan hücresel IoT cihazlarında gereken “çıplak modem iletişimi” katmanını tek tek yeniden yazmak yerine, hazır bir temel elde etmiş oluyorsun.
Hafıza Yönetimi Tarafı
README’de özellikle vurgulanan noktalardan biri, kütüphanenin memory-efficient tasarlanmış olması. Varsayılan IO buffer boyutu 1024 byte, fakat kullanım senaryosuna göre bu boyut derleme öncesinde küçültülebiliyor.
Özet mantık şöyle:
- temel başlatma ve basit komutlar için daha küçük buffer,
- TCP / socket işlemleri için orta boy buffer,
- HTTP / WebSocket payload akışları için daha geniş buffer,
- FTP receive gibi daha ağır senaryolar için büyük buffer.
Bu yaklaşım, özellikle RAM sınırı olan mikrokontrolcü tabanlı projelerde ciddi fark yaratır.
Kısa Kullanım Örneği
Aşağıdaki örnek, README’deki kullanım modelini özetleyen küçük bir senaryodur:
#include <AT_Command.h>
class Modem : public LE910C1_EUX {
public:
explicit Modem(Stream &s) : LE910C1_EUX(s) {}
bool init() {
AT();
ATE(false);
CMEE(1);
FCLASS(0);
return true;
}
bool connect(const char *apn) {
uint8_t pin = 0;
if (!CPIN(pin) || pin != _SIM_READY_) return false;
CGDCONT(1, "IP", apn);
uint8_t ip[4] = {};
return SGACT(1, true, ip);
}
};
Bu örnekten de görüldüğü gibi amaç, ham AT string’lerini her projede tekrar tekrar üretmek değil; modem davranışını kontrollü bir sınıf arayüzü üzerinden toplamak.
Nerede Değerli?
Bu kütüphane özellikle şu tip projelerde değerli:
- Telit modem kullanan saha cihazları
- Arduino / PlatformIO tabanlı hücresel IoT ürünleri
- uzaktan bakım ve telemetri sistemleri
- TCP/WebSocket üzerinden buluta veri atan edge cihazlar
- FOTA, uzaktan teşhis ve modem logiği gerektiren endüstriyel tasarımlar
Benim donanım ve hücresel IoT tarafındaki üretim odaklı yaklaşımımla da uyumlu bir proje; çünkü burada amaç sadece “komut göndermek” değil, sahada çalışacak bir modem entegrasyon katmanını sürdürülebilir hale getirmek.
Kurulum
Arduino IDE
Kütüphane yöneticisinde AT_Command olarak bulunabiliyor.
PlatformIO
lib_deps = akkoyun/AT_Command
Manuel Kurulum
git clone https://github.com/akkoyun/AT_Command
Detaylı API referansı, örnekler ve desteklenen komut grupları için doğrudan GitHub reposuna bakabilirsin:
Bu kütüphane, gerçek sahada kullanılan projelerden gelen ihtiyaçlara göre sürekli gelişen bir açık kaynak projedir. Kullanıcı geri bildirimleri, yeni fonksiyonların eklenmesi ve mevcut yapının iyileştirilmesi açısından kritik öneme sahiptir.
Bu kütüphaneyi hem kişisel hem de ticari projelerinde özgürce kullanabilirsin. Herhangi bir lisans kısıtı uygulanmamaktadır; amacım, bu kütüphanenin mümkün olduğunca fazla gerçek dünya projesinde yer almasıdır. Özel bir entegrasyon ihtiyacın, ticari bir planın veya teknik bir sorunun varsa bana e‑posta üzerinden her zaman ulaşabilirsin: akkoyun@me.com Geri bildirimlerini veya kullanım senaryolarını paylaşman, projeyi geliştirmem açısından büyük katkı sağlar.