MKRNBExamplesNBWebClient

Bu çizim, bir Arduino MKR NB 1500 kartını NB 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, NB kütüphanesini içe aktarın

#include <MKRNB.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 ""

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

NBClient client;
GPRS gprs;
NB nbAccess;
[Kodu Al]

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

char server [ ] = "example.org" ;
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 ;

nbAccess.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. 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 nbAccess() , nbAccess() işlevi NB_READY . connected değişkeni true veya false olarak ayarlamak için bunu bayrak olarak kullanın. Bağlandıktan sonra, setup geri kalanı çalışır.

iken (! bağlı)
{
eğer ( ( nbAccess. başlar ( PINNUMBER ) == GSM_READY ) &&
( gprs. attachGPRS ( ) == GPRS_READY ) ) {
bağlı = doğru ;
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://example.org HTML'sinin 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 NB 1500 kartı üzerinden bir web sitesine bağlanır. özellikle,
bu örnekte "http://example.org/" URL'si indirilir ve
Seri monitöre yazdırır.

Devre:
- MKR NB 1500 kartı
- Anten
- Veri planlı SIM kart

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


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

#include "arduino_secrets.h"
// Lütfen hassas verilerinizi Gizli sekmesine veya arduino_secrets.h girin
// PIN numarası
const char PINNUMBER [ ] = SECRET_PINNUMBER ;

// kütüphane örneğini başlat
NBClient istemcisi ;
GPRS gpr'leri ;
NB nbAccess ;

// URL, yol ve bağlantı noktası (örneğin: example.org)
char server [ ] = "example.org" ;
char yolu [ ] = "/" ;
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
boole bağlı = yanlış ;

// Modemi NB.begin () ile başlattıktan sonra
// APN, oturum açma adı ve parola ile GPRS şebekesine bağlanma
while ( ! bağlı ) {
eğer ( ( nbAccess. başlar ( PINNUMBER ) == NB_READY ) &&
( gprs. attachGPRS ( ) == 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 ( ) ) {
Seri . print ( ( char ) istemcisi. read ( ) ) ;
}

// 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