MKRGSMExamplesSSLWebClient

Bu çizim bir Arduino MKR GSM 1400 kartını GSM ağı üzerinden Arduino ana sayfasına ( http://arduino.cc) bağlar. Daha sonra sayfanın içeriğini Arduino Yazılımının (IDE) seri monitörü üzerinden yazdırır.

Gerekli Donanım

Devre

Kod

İlk olarak, GSM kütüphanesini içe aktarın

#include <MKRGSM.h>

SIM kartların işlevlerini etkinleştiren bir PIN numarası olabilir. SIM'inizin PIN kodunu tanımlayın. SIM'inizde PIN yoksa boş bırakabilirsiniz:

#define PINNUMBER ""

Bağlanacağınız GPRS ağı hakkında bilgi içeren bir dizi sabit tanımlayın. Erişim Noktası Adı (APN), oturum açma adı ve parola gerekir. Bu bilgileri edinmek için en güncel bilgiler için şebeke sağlayıcınıza başvurun. Bu sayfada çeşitli operatör ayarları hakkında bazı bilgiler var, ancak güncel olmayabilir.

#define GPRS_APN       "GPRS_APN"
#define GPRS_LOGIN     "login"
#define GPRS_PASSWORD  "password"
[Kodu Al]

Kullanacağınız sınıfların örneklerini başlatın. GSM, GPRS ve GSMClient sınıflarına ihtiyacınız olacak.

GSMSSLClient istemcisi ;
GPRS gpr'leri ;
GSM gsmAccess ;

Bağlanmak istediğiniz sunucuyu, yolu ve bağlantı noktasını tutmak için bazı değişkenler oluşturun.

char server [ ] = "arduino.cc" ;
char yolu [ ] = "/" ;
int bağlantı noktası = 443 ;

setup , bilgisayara seri bir bağlantı açın. Bağlantıyı açtıktan sonra çizimin başladığını belirten bir mesaj gönderin.

void setup ( ) {
Seri . başlar ( 9600 ) ;
Seri . println ( "Arduino web istemcisini başlatma." ) ;

Bağlantı durumunu izlemek için yerel bir değişken oluşturun. SIM'in ağa bağlanmasına kadar çizimin başlamasını önlemek için bunu kullanırsınız:

boolean notConnected = true ;

gsmAccess.begin() çağırarak ağa bağlanın. SIM kartın PIN kodunu argüman olarak alır. GPRS şebekesine gprs.attachGPRS() kullanarak da bağlanacaksınız. Bu, daha önce bildirdiğiniz APN, oturum açma adı ve parolayı gerektirir. Bir içinde bu yerleştirerek while() döngü, sürekli bağlantının durumunu kontrol edebilirsiniz haline hem etmesini beklemeniz true ilerlemeden önce.

Modem bağlandığında ve kendisini GPRS şebekesine gsmAccess() , gsmAccess() GSM_READY . notConnected değişkenini true veya false olarak ayarlamak için notConnected bayrak olarak kullanın. Bağlandıktan sonra, setup geri kalanı çalışır.

while ( bağlı değil )
{
eğer ( gsmAccess. başlar ( PINNUMBER ) == GSM_READY )
( gprs. attachGPRS ( GPRS_APN , GPRS_LOGIN , GPRS_PASSWORD ) == GPRS_READY ) )
notConnected = yanlış ;
Başka
{
Seri . println ( "Bağlı değil" ) ;
gecikme ( 1000 ) ;
}
}

client.connect() kullanarak sunucuya bağlanmayı client.connect() . connect() , sunucu ve bağlantı noktası olmak üzere iki bağımsız değişken gerektirir. Sunucuya bağlandıktan sonra, client.print() çağırarak bir HTTP isteği yapın. Tipik bir web isteği "GET yol adı HTTP / 1.0" şeklinde görünür. print mesajı tıpkı bir tarayıcı gibi gönderir.

if ( istemci. bağlan ( sunucu , bağlantı noktası ) )
{
Seri . println ( "bağlı" ) ;
istemcisi. yazdır ( "GET" ) ;
istemcisi. yazdırma ( yol ) ;
istemcisi. println ( "HTTP / 1.0" ) ;
istemcisi. println ( ) ;
}

Sunucu bağlantısı başarısız olduysa, seri monitörde not edin ve setup kapatın.

Başka
{
Seri . println ( "bağlantı başarısız" ) ;
}
}

İç loop , sunucudan döndürülen bayt olup olmadığını kontrol edin. Öyleyse, bunları okuyun ve seri monitöre yazdırın.

if ( istemci. kullanılabilir ( ) )
{
char c = istemci. read ( ) ;
Seri . baskı ( c ) ;
}

Sunucu genellikle HTTP isteğini tamamladıktan sonra yapacağı bağlantıyı keserse, istemciyi yerel olarak durdurun ve loop kapatın.

if ( ! istemci. kullanılabilir ( ) && ! istemci. bağlı ( ) )
{
Seri . println ( ) ;
Seri . println ( "bağlantı kesiliyor." ) ;
istemcisi. stop ( ) ;

// sonsuza dek hiçbir şey yapma:
için ( ;; )
;
}
}

Kodunuz yüklendikten sonra seri monitörü açın. Http://arduino.cc HTML'nin alındığında ekranda çıktısını görmelisiniz. Yaklaşık bir dakika sürer, bu yüzden hemen bir geri bildiriminiz yoksa endişelenmeyin!

Çizimin tamamı aşağıdadır.

/ *
Web istemcisi

Bu çizim, bir MKR GSM 1400 kartı üzerinden SSL kullanan bir web sitesine bağlanır. özellikle,
bu örnekte "http://www.arduino.cc/asciilogo.txt" URL'si indirilir ve
Seri monitöre yazdırır.

Devre:
* MKR GSM 1400 kartı
* Anten
* Veri planlı SIM kart

oluşturuldu 8 Mar 2012
tarafından Tom Igoe
* /


// kütüphaneler
#include <MKRGSM.h>

#include "arduino_secrets.h"
// Lütfen hassas verilerinizi Gizli sekmesine veya arduino_secrets.h girin
// PIN numarası
const char PINNUMBER [ ] = SECRET_PINNUMBER ;
// APN verileri
const char GPRS_APN [ ] = SECRET_GPRS_APN ;
const char GPRS_LOGIN [ ] = SECRET_GPRS_LOGIN ;
const char GPRS_PASSWORD [ ] = SECRET_GPRS_PASSWORD ;

// kütüphane örneğini başlat
GSMSSLClient istemcisi ;
GPRS gpr'leri ;
GSM gsmAccess ;

// URL, yol ve bağlantı noktası (örneğin: arduino.cc)
char server [ ] = "arduino.cc" ;
char path [ ] = "/asciilogo.txt" ;
int bağlantı noktası = 443 ; // 443 numaralı bağlantı noktası HTTPS için varsayılan değerdir

void setup ( ) {
// seri iletişimi başlatın ve portun açılmasını bekleyin:
Seri . başlar ( 9600 ) ;
while ( ! Seri ) {
; // seri portun bağlanmasını bekleyin. Yalnızca yerel USB bağlantı noktası için gereklidir
}

Seri . println ( "Arduino web istemcisini başlatma." ) ;
// bağlantı durumu
bool bağlı = yanlış ;

// Modemi GSM.begin () ile başlattıktan sonra
// kalkanı APN, oturum açma adı ve parola ile GPRS şebekesine ekleyin
while ( ! bağlı ) {
eğer ( ( gsmAccess. başlar ( PINNUMBER ) == GSM_READY ) &&
( gprs. attachGPRS ( GPRS_APN , GPRS_LOGIN , GPRS_PASSWORD ) == GPRS_READY ) ) {
bağlı = doğru ;
} başka {
Seri . println ( "Bağlı değil" ) ;
gecikme ( 1000 ) ;
}
}

Seri . println ( "bağlanıyor ..." ) ;

// bir bağlantı alırsanız, seri yoluyla rapor verin:
if ( istemci. bağlantı ( sunucu , bağlantı noktası ) ) {
Seri . println ( "bağlı" ) ;
// Bir HTTP isteği yapın:
istemcisi. yazdır ( "GET" ) ;
istemcisi. yazdırma ( yol ) ;
istemcisi. println ( "HTTP / 1.1" ) ;
istemcisi. print ( "Ana Bilgisayar:" ) ;
istemcisi. println ( sunucu ) ;
istemcisi. println ( "Bağlantı: kapat" ) ;
istemcisi. println ( ) ;
} başka {
// sunucuyla bağlantı bulamadıysanız:
Seri . println ( "bağlantı başarısız" ) ;
}
}

void loop ( ) {
// kullanılabilir gelen bayt varsa
// sunucudan okuyun ve yazdırın:
if ( müşteri. kullanılabilir ( ) ) {
char c = istemci. read ( ) ;
Seri . baskı ( c ) ;
}

// sunucunun bağlantısı kesilirse, istemciyi durdurun:
if ( ! istemci. kullanılabilir ( ) && ! istemci. bağlı ( ) ) {
Seri . println ( ) ;
Seri . println ( "bağlantı kesiliyor." ) ;
istemcisi. stop ( ) ;

// sonsuza dek hiçbir şey yapma:
için ( ;; )
;
}
}

See Also