GSMExamplesWebClient

Bu çizim, bir Arduino veya Genuino kartını GSM kalkanı ü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 <GSM.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.

GSMClient 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ı = 80 ;

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 GSM kalkanıyla 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:
* Arduino'ya bağlı GSM kalkanı
* Veri planlı SIM kart

oluşturuldu 8 Mar 2012
tarafından Tom Igoe

http: egitim.aspx e = GSMExamplesWebClient

* /


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

// PIN numarası
#define PINNUMBER ""

// APN verileri
#define GPRS_APN "GPRS_APN" // GPRS APN'nizi değiştirin
#define GPRS_LOGIN "login" // GPRS giriş bilgilerinizle değiştirin
#define GPRS_PASSWORD "şifre" // GPRS şifrenizle değiştirin

// kütüphane örneğini başlat
GSMClient 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ı = 80 ; // 80 numaralı bağlantı noktası HTTP 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 notConnected = true ;

// Modemi GSM.begin () ile başlattıktan sonra
// kalkanı APN, oturum açma adı ve parola ile GPRS şebekesine ekleyin
while ( notConnected ) {
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 ) ;
}
}

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