3000 TL ve üzeri siparişlerde Kargo Ücretsiz!
TTGo SIM800 GPRS HTTP Request

TTGo SIM800 GPRS HTTP Request

Arduino platformu üzerinde TTGo SIM800 GPRS modülü kullanarak HTTP isteği gönderme adımları. Bu rehberde, GSM tabanlı projeler ve Arduino ile HTTP isteği gönderme konusunda bilgiler bulacaksınız

8 dk okuma 10389 okunma

SIM800 ile veriler, POST/GET kullanılarak HTTP aracılığıyla bir web sunucusuna gönderilebilir. Bu, sitede Ethernet, LoRa veya WiFi yoksa, ev yapımı bir hava istasyonunu veya diğer sensörleri İnternete bağlamanıza olanak tanır. Bu makale, AT komutlarını kullanarak SIM800 ile bir HTTP isteği gönderme hakkındadır. SIM800'den Arduino ve ESP32'ye devreye alma ve kablolama ile ilgili tüm bilgiler SIM800 Temelleri makalesinde mevcuttur.

Modülü başlatma

Normalde modül, ilgili güç kaynağı kurulur kurulmaz otomatik olarak başlar. Modül otomatik olarak GSM mobil ağına giriş yapar ve aramaları ve SMS'leri alabilir. Pratikte, modülün başlatılması, oturum açılması ve çalışmaya hazır hale gelmesi için yaklaşık 10 saniyeye ihtiyacı vardır. Ancak o zaman arama yapmak, SMS göndermek veya bu durumda olduğu gibi GPRS veri iletimi yapmak mümkündür.

GPRS'yi yapılandırın

SIM800 ile İnternet'e erişmek için GRPS gereklidir. GPRS (Genel Paket Radyo Servisi), GSM şebekesi üzerinde paket odaklı veri iletimini sağlayan bir servistir. Ek olarak, aşağıdaki komutlarla SIM800'e aktarılan bazı yapılandırma parametreleri gereklidir:

[AT+SAPBR=3,1,Contype,"GPRS"]

Bu komut, SIM800'deki GPRS bağlantı parametresini ayarlar.

[AT+SAPBR=3,1,APN,"APN"]

Bu komut, APN parametresini SIM800'e yazar. APN (Erişim Noktası Adı), mobil ağdaki erişim noktasıdır (ağ geçidi). APN genellikle sağlayıcıların web sitesinde bulunabilir.

[AT+SAPBR=3,1,USER,"Username"]

Bu komut, APN kullanıcı adını SIM800'e yazar. Not: Bazı mobil ağlar veya APN, bir kullanıcı adı gerektirmez. Bu durumda bu AT komutu tamamen atlanabilir.[AT+SAPBR=3,1,PWD,"Password"]Bu komut, APN şifresini SIM800'e yazar. Not: Bazı mobil ağlar veya APN parola gerektirmez. Bu durumda bu AT komutu tamamen atlanabilir.

GPRS operatörünü aç

SIM800, konfigürasyon parametrelerini aldıktan sonra, şimdi gerçek GPRS veri bağlantısı kurulabilir. Not: GPRS, yalnızca HTTP isteğinden hemen önce açılmalıdır. Veri aktarımından sonra GPRS bağlantısı [AT+SAPBR=0,1] ile sonlandırılmalıdır. GPRS taşıyıcısından başlamak için aşağıdaki komut gereklidir:

[AT+SAPBR=1,1]

Bu komut, taşıyıcıyı önceden tanımlanmış parametrelerle açar. Bu, GPRS için başlatma komutu olarak görülebilir.

[AT+SAPBR=2,1]

Bu komut, önceden açılmış GPRS taşıyıcısının durumunu sorgular ve yalnızca tanı amaçlıdır.

[AT+SAPBR=0,1]

Bu komut GRPS taşıyıcısını sonlandırır ve yalnızca veri aktarımından sonra yürütülür.HTTP bağlantısı kurunSIM800, bir GPRS bağlantısını başarıyla kurduktan sonra, bir HTTP isteği başlatılabilir. Yine, bazı parametrelerin AT komutları aracılığıyla SIM800'e gönderilmesi gerekir.

[AT+HTTPINIT]

Bu komut, HTTP hizmetini başlatır. SIM800, bir HTTP isteğinin başladığı konusunda bilgilendirilecektir.

[AT+HTTPPARA=CID,"1"]

Bu komut, taşıyıcı profilini tanımlar. Genellikle bu her zaman 1'dir.

[AT+HTTPPARA=URL,"URL"]

Bu komut, çağrılacak URL'yi iletir. Bir web tarayıcısında girilen biçimin aynısıdır. Sunucu 80 numaralı bağlantı noktasında çalışmıyorsa, ilgili bağlantı noktası URL veya IP'nin sonuna eklenir. Örnekler: http://www.aeq-web.com veya http://123.123.123.123 veya http://url.com:8080

[AT+HTTPPARA=CONTENT,application/x-www-form-urlencoded]

Bu komut, mevcut isteğin içerik türünü tanımlar. İçerik türü yalnızca web sunucusuyla ilgilidir. İstekteki hangi medya türünün sunucuya gönderileceğini söyler.

[AT+HTTPDATA=192,10000]

Bu komut, aktarılacak kullanıcı verilerinin boyutunu bayt olarak tanımlar. Burada şu geçerlidir: Çok azdan biraz daha iyi, ama aynı zamanda çok fazla değil. 192 bayt değeri genellikle birkaç parametreyi (örneğin bir hava istasyonunun ölçülen değerleri) aktarmak için yeterlidir. İkinci sayı, SIM800'ün talebi iptal etmesinden önce verilerin ulaşması gereken süreyi (milisaniye) belirtir. Bu birçok faktöre bağlıdır (bağlantı, sunucu, veri miktarı...) ve bir ile 120 saniye arasında bir değer olabilir. Yine, 10 saniye (10000 ms) cömert bir değerdir.

[Posta adı=VALUE]

(Kullanıcı verileri)

Önceki komut gönderildikten sonra, SIM800 kullanıcı verilerini bekler. POST parametreleri şimdi önceden tanımlanmış zaman penceresi içinde SIM800'e aktarılabilir.

[AT+HTTPACTION=1]

HTTPACTION ile aktarım yöntemi tanımlanır. Aşağıdakiler geçerlidir: 0=GET, 1=POST, 2=HEAD. Yanıt, sunucudan gelen durum kodunu ve veri uzunluğunu içerir.

[AT+HTTPREAD]

Bu komut, çağrılacak URL'yi iletir. Kullanıcı verileri de bu komut aracılığıyla alınır ve mikrodenetleyici tarafından daha fazla kontrol ayarları için değerlendirilebilir.

[AT+HTTPTERM]

Bu komut, çalışan bir HTTP isteğini iptal eder.

Örnek kod (ESP32) ESP32

SIM800 kartı için örnek kod,

yukarıda belirtilen AT komutlarını içerir ve bunları doğru sırayla iletir. Başarılı bir çalışma için öncelikle temel parametrelerin (APN...) ve pinlerin kodda doğru tanımlanması gerekir.

Örnek koddaki pinler zaten karta uyarlanmıştır.

Tüm bilgiler SIM800 Temelleri makalesinde mevcuttur.

Ardından SIM800'ün güç kaynağı açılır ve seri bağlantı etkinleştirilir.

Yazılım, SIM800 mobil ağa bağlanana ve çalışmaya hazır olana kadar yaklaşık 10 saniye bekler. Ardından "gsm_config_gprs" işlevi çağrılır.

Tüm önemli parametreler (bağlantı türü, APN, kullanıcı adı, şifre) SIM800'e aktarılır.

Önemli: SIM800 kapatılırsa, bu parametreler bir sonraki başlatmada tekrar SIM800'e iletilmelidir.

Ardından, aktarılacak ilgili post parametreleriyle birlikte "gsm_http_post" işlevi çağrılır.

Burada önce GRPS taşıyıcısı etkinleştirilir ve ardından HTTP işlevi çağrılır.

Veri aktarımı tamamlandığında GPRS taşıyıcısının bağlantısı tekrar kesilir ve mikrodenetleyici bu fonksiyon tekrar çağrılana kadar bekler.

"gsm_send_serial" işlevi, SIM800 ile çift yönlü iletişimi yönetir. Döngü aracılığıyla mikrodenetleyici, SIM800'den gelen yanıtlar için yaklaşık 3 saniye bekler. Modülün daha uzun bir yanıta ihtiyacı varsa, işlev veri gelene kadar bekler. Çıktı, tanılama amaçlarına uygun olan Seri Monitördedir. Hala sorun varsa, cevaplar için bekleme süresi uzatılabilir.

// ESP32 SIM800 HTTP POST TEST | V 1.0_2020-AUG-18

#define SIM800L_RX 27 // SIM800L RX Pini (ESP32'nin TX Piniyle bağlantılı)
#define SIM800L_TX 26 // SIM800L TX Pini (ESP32'nin RX Piniyle bağlantılı)
#define SIM800L_PWRKEY 4 // SIM800L PWRKEY Pini (SIM800L'yi açıp/kapamak için ESP32 Pini)
#define SIM800L_RST 5 // SIM800L RST Pini (SIM800L'yi sıfırlamak için ESP32 Pini)
#define SIM800L_POWER 23 // SIM800L POWER Pini (SIM800L'yi beslemek için ESP32 Pini)

String apn = "APN"; // GPRS bağlantısı için Access Point Name (APN)
String apn_u = ""; // APN Kullanıcı adı (gerekirse)
String apn_p = ""; // APN Şifresi (gerekirse)
String url = "http://testserver.com/sim800_test/sim800.php"; // HTTP POST için Sunucu URL'si

void setup()
{
 pinMode(SIM800L_POWER, OUTPUT); // SIM800L güç pini çıkış olarak ayarlanıyor
 digitalWrite(SIM800L_POWER, HIGH); // SIM800L modülü besleniyor

 Serial.begin(115200); // ESP32 ile Seri iletişim başlatılıyor
 Serial.println("ESP32+SIM800L AT CMD Test");

 Serial2.begin(9600, SERIAL_8N1, SIM800L_TX, SIM800L_RX); // SIM800L ile iletişim için Serial2 başlatılıyor
 delay(15000); // SIM800L'nin açılması için 15 saniye beklenecek
 while (Serial2.available()) {
 Serial.write(Serial2.read()); // Başlangıçta SIM800L'den gelen yanıtlar gösteriliyor
 }
 delay(2000);

 gsm_config_gprs(); // SIM800L için GPRS ayarları yapılandırılıyor
}

void loop() {
 gsm_http_post("param=TestFromMySim800"); // Verilen parametre ile HTTP POST isteği yapılıyor
 delay(30000); // Bir sonraki HTTP POST'tan önce 30 saniye bekleniyor
}

void gsm_http_post( String postdata) {
 Serial.println(" --- GPRS ve HTTP Başlatılıyor --- ");
 gsm_send_serial("AT+SAPBR=1,1"); // GPRS bağlantısı aktif ediliyor
 gsm_send_serial("AT+SAPBR=2,1"); // GPRS bağlantısı açılıyor
 gsm_send_serial("AT+HTTPINIT"); // HTTP servisi başlatılıyor
 gsm_send_serial("AT+HTTPPARA=CID,1"); // HTTP oturum kimliği (Context ID) ayarlanıyor
 gsm_send_serial("AT+HTTPPARA=URL," + url);// HTTP URL'si ayarlanıyor
 gsm_send_serial("AT+HTTPPARA=CONTENT,application/x-www-form-urlencoded"); // HTTP içerik tipi ayarlanıyor
 gsm_send_serial("AT+HTTPDATA=192,5000"); // HTTP verisi (POST veri boyutu ve zaman aşımı) hazırlanıyor
 gsm_send_serial(postdata); // POST verisi gönderiliyor
 gsm_send_serial("AT+HTTPACTION=1"); // HTTP POST işlemi başlatılıyor
 gsm_send_serial("AT+HTTPREAD"); // HTTP yanıtı okunuyor
 gsm_send_serial("AT+HTTPTERM"); // HTTP servisi sonlandırılıyor
 gsm_send_serial("AT+SAPBR=0,1"); // GPRS bağlantısı kapatılıyor
}

void gsm_config_gprs() {
 Serial.println(" --- GPRS AYARLARI --- ");
 gsm_send_serial("AT+SAPBR=3,1,Contype,GPRS"); // GPRS bağlantı tipi ayarlanıyor
 gsm_send_serial("AT+SAPBR=3,1,APN," + apn); // GPRS bağlantısı için APN ayarlanıyor
 if (apn_u != "") {
 gsm_send_serial("AT+SAPBR=3,1,USER," + apn_u);// Kullanıcı adı varsa ayarlanıyor
 }
 if (apn_p != "") {
 gsm_send_serial("AT+SAPBR=3,1,PWD," + apn_p); // Şifre varsa ayarlanıyor
 }
}

void gsm_send_serial(String command) {
 Serial.println("Gönderiliyor ->: " + command); // Gönderilen komut gösteriliyor
 Serial2.println(command); // Komut SIM800L'ye gönderiliyor
 long wtimer = millis();
 while (wtimer + 3000 > millis()) {
 while (Serial2.available()) {
 Serial.write(Serial2.read()); // SIM800L'den gelen yanıtlar gösteriliyor
 }
 }
 Serial.println();
}

Aşağıdaki resim, bir HTTP-Post sorgusu sırasında Arduino IDE Seri Monitöründen bir çıktıyı göstermektedir:

Örnek Kod SIM800 ArduinoYukarıdaki örnek kodun aksine, bu kod, iletişim için yazılım serilerini kullanır, çünkü donanım serisinin bazı dezavantajları vardır. Daha fazla bilgi için bkz.: SIM800 Temelleri. Komutlar ve program akışı yukarıdaki örnekle hemen hemen aynıdır.

#include <SoftwareSerial.h>

String apn = "APN"; //APN
String apn_u = ""; //APN-Kullanıcı Adı
String apn_p = ""; //APN-Şifre
String url = "http://testserver.com/sim800_test/sim800.php"; //Sunucunun URL'si

SoftwareSerial SWserial(8, 9); // RX, TX

void setup()
{
 Serial.begin(115200);
 Serial.println("SIM800 AT CMD Test");
 SWserial.begin(9600);
 delay(15000);
 while (SWserial.available()) {
 Serial.write(SWserial.read());
 }
 delay(2000);
 gsm_config_gprs();
}

void loop() {
 gsm_http_post("param=TestFromMySim800");
 delay(30000);
}

void gsm_http_post( String postdata) {
 Serial.println(" --- GPRS ve HTTP Başlatılıyor --- ");
 gsm_send_serial("AT+SAPBR=1,1");
 gsm_send_serial("AT+SAPBR=2,1");
 gsm_send_serial("AT+HTTPINIT");
 gsm_send_serial("AT+HTTPPARA=CID,1");
 gsm_send_serial("AT+HTTPPARA=URL," + url);
 gsm_send_serial("AT+HTTPPARA=CONTENT,application/x-www-form-urlencoded");
 gsm_send_serial("AT+HTTPDATA=192,5000");
 gsm_send_serial(postdata);
 gsm_send_serial("AT+HTTPACTION=1");
 gsm_send_serial("AT+HTTPREAD");
 gsm_send_serial("AT+HTTPTERM");
 gsm_send_serial("AT+SAPBR=0,1");
}

void gsm_config_gprs() {
 Serial.println(" --- GPRS AYARLARI --- ");
 gsm_send_serial("AT+SAPBR=3,1,Contype,GPRS");
 gsm_send_serial("AT+SAPBR=3,1,APN," + apn);
 if (apn_u != "") {
 gsm_send_serial("AT+SAPBR=3,1,USER," + apn_u);
 }
 if (apn_p != "") {
 gsm_send_serial("AT+SAPBR=3,1,PWD," + apn_p);
 }
}

void gsm_send_serial(String command) {
 Serial.println("Gönderiliyor ->: " + command);
 SWserial.println(command);
 long wtimer = millis();
 while (wtimer + 3000 > millis()) {
 while (SWserial.available()) {
 Serial.write(SWserial.read());
 }
 }
 Serial.println();
}

SSL bağlantıları

SIM800, SSL'yi destekler ve ayrıca HTTPS aracılığıyla bir web sunucusuyla iletişim kurabilir. Bunun için aşağıdaki gereksinimler gereklidir:Mevcut bellenime sahip SIM800 (eski sürümler bu özelliği desteklemez)Desteklenen SSL türü (TLS 1.0 , SSL 2.0, SSL 3.0) SSL, HTTPS, FTPS, POP3 ve SMTP için kullanılabilir.

Dosya sistemi aracılığıyla kendi SSL sertifikalarınızı SIM800'e yüklemek ve içe aktarmak da mümkündür.

Not: Modül tüm teknolojileri desteklemez ve bu nedenle bazı web sunucularıyla uyumlu değildir.

Yapılandırmanın web sunucusu tarafından değiştirilmesi gerekebilir.SIM800 ile HTTPS İsteğiWeb sunucusundaki gereksinimler yeterliyse, SIM800, POST veya GET parametreleriyle bir HTTPS isteği yapmak için kullanılabilir. HTTPS ile bir istek başlatmak için URL "https://" ile başlamalıdır. [AT+HTTPSSL=1] komutu ile SSL aktif hale getirilebilir.

Bu komut [AT+HTTPACTION]'dan önce, yani asıl istek başlatılmadan önce gönderilmelidir. Geçersiz veya kendinden imzalı sertifikalara sahip sunuculara SSL bağlantıları da gerçekleştirilebilir. [AT+SSLOPT=0,1] komutu, SSL sertifikalarının doğrulanmasını devre dışı bırakır.

Paylaş
Tüm yazılara dön

Yorumlar (8)

  1. M Mehmet Kaya

    Kodu TTGO T-Call kartıma yükledim, ilk denemede POST isteği sunucuya ulaştı. APN kısmını Turkcell için "internet" yapmak yetti. Teşekkürler.

    1. Hiber Bilişim Yönetici

      Mehmet Bey, geri bildiriminiz için teşekkürler. Vodafone ve Türk Telekom hatlarında da APN olarak "internet" yazmanız yeterli.

  2. A Ayşe Demir

    SIM800 modülü sürekli yeniden başlıyor, seri monitörde sadece başlangıç mesajını görüyorum. Ne olabilir?

    1. Hiber Bilişim Yönetici

      Ayşe Hanım, bu genellikle güç yetersizliğinden olur. SIM800 veri gönderirken 2A'ya kadar akım çeker; kartı USB yerine en az 2A veren bir adaptörle ya da pille besleyip tekrar dener misiniz?

    2. A Ayşe Demir Yanıt

      Adaptörle denedim, sorun çözüldü. Çok teşekkür ederim!

  3. E Emre Yılmaz

    GET isteği de atabiliyor muyuz? Sensör verisini bir web sayfasından okumak istiyorum.

    1. Z Zeynep Arslan Yanıt

      Ben aynı kütüphaneyle GET isteği atıyorum, sorunsuz çalışıyor. Yazıdaki POST örneğinde istek türünü GET yapmanız ve gövde kısmını çıkarmanız yeterli.

  4. B Burak Şahin

    Yazı çok açıklayıcı olmuş. Bir sonraki yazıda MQTT ile veri gönderimini de anlatırsanız harika olur.

E-posta adresiniz yayınlanmaz. Yorumlar yayınlanmadan önce denetlenir.

Bu form Google reCAPTCHA ile korunmaktadır; Google Gizlilik Politikası ve Hizmet Şartları geçerlidir.

Benzer Yazılar

Sim800L Gsm Modul ile IoT Entegrasyonu

SIM800L GSM modülünü kullanarak projelerinizi IoT ile entegre edin! Bu rehber, SIM800L GSM modülü ile IoT entegrasyonu hakkında bilgiler ve…

Devamını Oku

Arduino ile SIM800L Kullanımı

Arduino ile SIM800L Kullanımı: IoT Projeleriniz İçin Adım Adım Rehber Bu blog yazısında, Arduino ile SIM800L modülünü kullanarak IoT proj…

Devamını Oku
Hızlı Kargo Hafta içi saat 15:00 öncesinde oluşturduğunuz tüm siparişler aynı gün kargoya verilmektedir.
Güvenli Alışveriş Tüm bilgileriniz 256 Bit SSL sertifikasıyla korunmaktadır.
Uzman Teknik Servis Ürünleriniz için profesyonel bakım ve onarım.
Ücretsiz Kargo Belirli tutarın üzerindeki alışverişlerinizde kargo ücreti ödemezsiniz.

Bültenimize Abone Ol

Kampanya ve fırsatlardan ilk siz haberdar olun.

Kuruköprü Mah. Sefa Özler Cad. özden İşmerkezi kat 7/74 Seyhan / adana

Ödeme Yöntemleri

Visa Mastercard Banka Kartı World

©2017 - 2026 Tüm hakları saklıdır.