4G LTE + GPS Geliştirme Kartı
CAVLI GSM/LTE Devboard Dahili GPS
Cavli C16QS tabanlı, dahili GPS destekli kompakt 4G LTE geliştirme kartı. UART üzerinden mikrodenetleyicinize bağlanın; hücresel haberleşme ve konum bilgisini tek kartta kullanın.
- 4G LTECavli C16QS
- Dahili GPSKonum desteği
- Nano SIMKart üstü soket
- UARTRX / TX
Stokta: 2 adet
- 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.
CAVLI GSM/LTE
Hücresel haberleşme odaklı projeler4G LTE ve UART arayüzü; LTE ve opsiyonel GNSS anten bağlantıları.
Diğer sürümü incele →CAVLI GSM/LTE Dahili GPSBu ürün
Haberleşme ve konum verisi gereken projeler4G LTE ve UART ile birlikte dahili GPS (GNSS) konum desteği.
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.
Projenize hücresel bağlantı ekleyin
Haberleşme ve konum, tek kartta.
Dahili GPS desteğiyle konum bilgisini 4G LTE haberleşmeyle birleştirin. UART arayüzü üzerinden mevcut mikrodenetleyicinize bağlanarak araç takip, telemetri ve konum tabanlı IoT projeleri geliştirin.
- Cavli C16QS ile 4G LTE haberleşme
- Dahili GPS (GNSS) konum desteği
- UART (RX/TX) ile mikrodenetleyici bağlantısı
- Nano SIM soketi, LTE ve GNSS anten bağlantıları
4G LTE · GPS / GNSS · UARTDonanım ve bağlantılar
Teknik Özellikler
- Haberleşme Modülü
- Cavli C16QS
- Hücresel Teknoloji
- 4G / LTE
- Konum
- Dahili GPS (GNSS)
- Kart Ölçüsü
- 38 x 41 mm
- Arayüz
- UART
- Haberleşme Pinleri
- TX, RX
- Kontrol Pinleri
- RST (aktif-düşük), PKY
- Besleme / Referans
- 3V3, GND
- Besleme Akımı
- 3V3 hattı, LTE veri pikleri için anlık en az 2A sağlamalı
- Lojik Seviyesi
- 3.3V (5V toleranslı DEĞİL)
- SIM Kart
- Nano SIM soketi
- Anten Bağlantıları
- LTE, GNSS
- Durum Göstergeleri
- PWR, NET
Geliştirme kaynakları
Ürün Dokümantasyonu
- PDFPDF’yi aç ↗
Teknik Dokümantasyon ve Kullanım Kılavuzu
Dahili GPS'li sürüme özel; pin bağlantıları, AT komut rehberi, güç/voltaj gereksinimleri, LTE ve GNSS anten altyapısını içeren tam teknik doküman
PDF · 1,5 MB - GitHub ↗
AT Komutları ve Örnek Kod
GPS (GNSS) dahil Cavli C16QS AT komut başvurusu ve HTTP örneği; iki CAVLI sürümü için ortak depo
İlk bağlantıdan veri aktarımına
Hızlı başlangıç ve kod örnekleri
- 1
Beslemeyi hazırlayın
3V3 ve GND bağlantılarını yapın. Besleme, LTE veri pikleri için anlık en az 2 A sağlayabilmeli.
- 2
UART hattını bağlayın
Kart TX → denetleyici RX, kart RX → denetleyici TX. GND ortak olmalı; lojik seviyesi 3.3 V.
- 3
SIM ve anteni takın
Nano SIM kartı ve LTE antenini bağlayın. Pin ve kontrol ayrıntıları için teknik dokümanı kullanın.
- 4
İlk bağlantıyı test edin
AT ile iletişimi, AT+CPIN? ile SIM durumunu, AT+CSQ ile sinyal seviyesini kontrol edin.
Temel AT komutları ile ilk test
Seri bağlantıyı, SIM durumunu ve sinyal seviyesini kontrol ederek başlayın.
> AT
OK
> AT+CGMR
[Sürüm Bilgisi]
OK
> AT+CPIN?
+CPIN: READY
OK
> AT+CSQ
+CSQ: 24,99
OKÖrneğin açıklaması ve bağlantı ayrıntıları
Teknik dokümandaki temel AT komutları: Cavli C16QS modülünü seri terminal veya mikrodenetleyici üzerinden test etmek ve durumunu sorgulamak için kullanılır. AT haberleşmenin aktif olduğunu doğrular; AT+CGMR modülün firmware sürümünü döndürür; AT+CPIN? yanıtında +CPIN: READY SIM kartın doğru takıldığını ve PIN kilidinin aktif olmadığını gösterir; AT+CSQ şebeke sinyal gücünü sorgular (0-31 arası, örnekteki 24 iyi bir değerdir). Bağlantı: kart TX → denetleyici RX, kart RX → denetleyici TX, GND ortak; 3.3V lojik (5V denetleyicide seviye dönüştürücü şart).
LTE üzerinden HTTP GET (ESP32-C3, PlatformIO)
ESP32-C3 / PlatformIO örneği. Pinleri ve APN bilgisini projenize göre ayarlayın; modem üzerinden HTTP GET isteği gönderin.
/* ─────────────────────────────────────────────────────────────────────────────
* Cavli C16QS — AT komutlarıyla ilk bağlantı ve HTTP GET örneği
*
* Akış:
* 1) Modemi başlat (gerekiyorsa PWRKEY ile aç)
* 2) SIM yuvası: AT^SIMSWAP? → 1 değilse AT^SIMSWAP=1
* 3) SIM hazır: AT+CPIN? → READY
* 4) Şebeke: AT+CEREG? → kayıtlı
* 5) İnternet: AT+CGDCONT + AT+CGACT=1,1
* 6) HTTP GET: AT+HTTPURL / AT+HTTPREQUEST=GET → cevabı seriale bas
*
* Donanım: ESP32-C3 + Cavli C16QS (modem UART1'de).
* ───────────────────────────────────────────────────────────────────────────── */
#include <Arduino.h>
// ═════════════════════ KULLANICI AYARLARI (karta/SIM'e göre değiştirin) ══════════════════════
#define MODEM_TX_PIN 6 // ESP TX → modem RX (karta göre değişir)
#define MODEM_RX_PIN 5 // ESP RX ← modem TX (karta göre değişir)
#define MODEM_PWRKEY_PIN 0 // PWRKEY GPIO (karta göre değişir)
#define APN "internet" // operatör APN'i (SIM'e göre değişir)
#define HTTP_URL "http://example.com" // istek atılacak adres
// ═════════════════════════════════════════════════════════════════════════════════════════════
// ── Sabit ayarlar (genelde değişmez) ─────────────────────────────────────────
#define MODEM_SERIAL Serial1 // C16QS fabrika default UART hızı
#define MODEM_BAUD 115200
#define DEBUG_SERIAL Serial // USB/serial üzerinden log
#define DEBUG_BAUD 115200
// PWRKEY kartta invert transistörden geçiyor → GPIO HIGH = basılı.
// Transistörsüz bir kartta PRESS/RELEASE değerlerini ters çevirin.
#define MODEM_PWRKEY_PRESS HIGH
#define MODEM_PWRKEY_RELEASE LOW
#define MODEM_PWRKEY_ON_MS 500
// Zaman aşımları (ms)
#define TIMEOUT_AT_READY 20000
#define TIMEOUT_SIM 15000
#define TIMEOUT_NET_REG 30000
#define TIMEOUT_PDP_OPEN 30000
#define TIMEOUT_HTTP_SEND 30000
// ═════════════════════════════ AT yardımcıları ═══════════════════════════════
// Komutu gönderir, OK/ERROR gelene (ya da süre dolana) kadar cevabı okur ve döndürür.
String atSend(const char* cmd, uint32_t timeout_ms = 3000) {
while (MODEM_SERIAL.available()) MODEM_SERIAL.read();
MODEM_SERIAL.println(cmd);
String resp;
uint32_t t = millis();
while (millis() - t < timeout_ms) {
while (MODEM_SERIAL.available()) resp += (char)MODEM_SERIAL.read();
if (resp.indexOf("OK") >= 0 || resp.indexOf("ERROR") >= 0) break;
delay(10);
}
resp.trim();
DEBUG_SERIAL.printf(">> %-28s | %s\n", cmd, resp.c_str());
return resp;
}
// Belirli bir metin gelene kadar bekler (asenkron URC'ler için).
String atWaitFor(const char* token, uint32_t timeout_ms) {
String resp;
uint32_t t = millis();
while (millis() - t < timeout_ms) {
while (MODEM_SERIAL.available()) resp += (char)MODEM_SERIAL.read();
if (resp.indexOf(token) >= 0) break;
delay(10);
}
resp.trim();
return resp;
}
// AT'ye OK gelene kadar yoklar.
bool waitReady(uint32_t timeout_ms) {
uint32_t t = millis();
while (millis() - t < timeout_ms) {
if (atSend("AT", 1000).indexOf("OK") >= 0) return true;
delay(500);
}
return false;
}
// PWRKEY açma darbesi (modem kapalıyken).
void pwrkeyPulse() {
pinMode(MODEM_PWRKEY_PIN, OUTPUT);
digitalWrite(MODEM_PWRKEY_PIN, MODEM_PWRKEY_RELEASE);
delay(100);
digitalWrite(MODEM_PWRKEY_PIN, MODEM_PWRKEY_PRESS);
delay(MODEM_PWRKEY_ON_MS);
digitalWrite(MODEM_PWRKEY_PIN, MODEM_PWRKEY_RELEASE);
}
// ═══════════════════════════════ Başlatma ════════════════════════════════════
// Modemi başlat: UART'ı aç, (gerekiyorsa) PWRKEY ile aç, AT'ye hazır olmasını bekle.
bool modemBegin() {
MODEM_SERIAL.begin(MODEM_BAUD, SERIAL_8N1, MODEM_RX_PIN, MODEM_TX_PIN);
delay(100);
if (!waitReady(3000)) { // modem cevap vermiyorsa kapalı → aç
DEBUG_SERIAL.println("[MODEM] PWRKEY ile açılıyor...");
pwrkeyPulse();
}
return waitReady(TIMEOUT_AT_READY);
}
// ═══════════════════════════ Bağlantı adımları ═══════════════════════════════
// SIM yuvasını sorgula; 1 değilse 1 yap.
void simSwapCheck() {
if (atSend("AT^SIMSWAP?").indexOf("1") < 0) {
DEBUG_SERIAL.println("[SIM] Yuva 1'e alınıyor...");
atSend("AT^SIMSWAP=1", 5000);
delay(1000);
}
}
// SIM hazır (CPIN READY) olana kadar bekle.
bool simReady() {
uint32_t t = millis();
while (millis() - t < TIMEOUT_SIM) {
if (atSend("AT+CPIN?").indexOf("READY") >= 0) return true;
delay(1000);
}
return false;
}
// Şebekeye kayıt (CEREG: x,1 = home, x,5 = roaming) olana kadar bekle.
bool networkRegistered() {
uint32_t t = millis();
while (millis() - t < TIMEOUT_NET_REG) {
String r = atSend("AT+CEREG?");
if (r.indexOf(",1") >= 0 || r.indexOf(",5") >= 0) return true;
delay(2000);
}
return false;
}
// APN'i ayarla ve veri bağlamını (PDP) aktive et.
bool pdpActivate() {
atSend("AT+CGDCONT=1,\"IP\",\"" APN "\"", 5000);
atSend("AT+CGACT=1,1", TIMEOUT_PDP_OPEN);
return atSend("AT+CGACT?", 5000).indexOf("1,1") >= 0;
}
// HTTP GET isteği at ve cevabı seriale bas.
void httpGet(const char* url) {
atSend((String("AT+HTTPURL=") + url).c_str(), 5000);
DEBUG_SERIAL.println("[HTTP] GET gönderiliyor...");
MODEM_SERIAL.println("AT+HTTPREQUEST=GET");
atWaitFor("SUCCESS", TIMEOUT_HTTP_SEND); // HTTPSEND:SUCCESS
atSend("AT+HTTPGETSTAT?", 10000); // STATUS_RESPONSE:<kod>
String clen = atSend("AT+HTTPGETCLEN?", 10000); // CONTENT_LENGTH:<n>
int len = 0, p = clen.indexOf("CONTENT_LENGTH:");
if (p >= 0) len = clen.substring(p + 15).toInt();
DEBUG_SERIAL.println("\n──────── HTTP CEVAP ────────");
if (len > 0) {
String body = atSend((String("AT+HTTPGETCONT=0,") + len).c_str(), 30000);
DEBUG_SERIAL.println(body);
}
DEBUG_SERIAL.println("────────────────────────────\n");
}
// ════════════════════════════════ setup / loop ═══════════════════════════════
void setup() {
DEBUG_SERIAL.begin(DEBUG_BAUD);
delay(300);
DEBUG_SERIAL.println("\n=== Cavli C16QS AT örneği ===");
if (!modemBegin()) { DEBUG_SERIAL.println("[HATA] Modem başlatılamadı."); return; }
atSend("ATE0"); // echo kapat
atSend("AT+CMEE=2"); // hataları metin olarak ver
simSwapCheck();
if (!simReady()) { DEBUG_SERIAL.println("[HATA] SIM hazır değil."); return; }
if (!networkRegistered()) { DEBUG_SERIAL.println("[HATA] Şebekeye kaydolunamadı."); return; }
if (!pdpActivate()) { DEBUG_SERIAL.println("[HATA] İnternet açılamadı."); return; }
httpGet(HTTP_URL);
DEBUG_SERIAL.println("=== Bitti ===");
}
void loop() {
// Örnek tek seferliktir.
}Örneğin açıklaması ve bağlantı ayrıntıları
GitHub deposundaki örnek (src/main.cpp, PlatformIO, ESP32-C3): modemi PWRKEY ile açar, AT^SIMSWAP ile karttaki Nano SIM yuvasını seçer, AT+CPIN? ile SIM'i ve AT+CEREG? ile LTE şebeke kaydını bekler, APN ile veri bağlamını açar (AT+CGDCONT, AT+CGACT) ve modemin dahili HTTP istemcisiyle bir adrese GET isteği gönderip cevabı seri ekrana yazar (AT+HTTPURL, AT+HTTPREQUEST=GET, AT+HTTPGETCONT). Kullanmadan önce baştaki KULLANICI AYARLARI bölümünde MODEM_TX_PIN, MODEM_RX_PIN, MODEM_PWRKEY_PIN pinlerini kendi devrenize, APN'i de operatörünüze göre değiştirin. Seri ekran: 115200 baud.
Sık sorulanlar
Başlamadan önce
Bu sürümün farkı nedir?
Bu sürüm, 4G LTE haberleşmenin yanında dahili GPS (GNSS) konum desteği sunar. LTE ve GNSS anten bağlantıları kart üzerinde bulunur.
5V lojik seviyesine doğrudan bağlanabilir mi?
Hayır. Kartın lojik seviyesi 3.3V’tur ve pinleri 5V toleranslı değildir. 5V çıkışlı denetleyicilerde TX/RX hattında uygun seviye dönüştürücü kullanılmalıdır.
Hangi SIM kart kullanılır?
Kart üzerinde Nano SIM soketi bulunur.
Hangi mikrodenetleyicilerle kullanılabilir?
UART üzerinden STM32, ESP32, Arduino, PIC ve nRF gibi denetleyicilerle kullanılabilir. Bağlantıda besleme ve lojik seviye gereksinimlerine dikkat edilmelidir.
Örnek kod ve teknik doküman var mı?
Evet. Bu sayfada ilk test için AT komutları, ESP32-C3 ile HTTP GET örneği, teknik PDF ve GitHub deposu bulunur.
Besleme seçerken nelere dikkat etmeliyim?
Mevcut teknik dokümana göre 3V3 hattı, LTE veri pikleri sırasında anlık en az 2A sağlayabilmelidir. Bağlantı ayrıntılarını teknik dokümandan inceleyebilirsiniz.





