Eğitimler
MKRNBToolsTestGPRS
Bu çizim Arduino MKR NB 1500 üzerindeki GPRS veri bağlantısını test eder. Arduino.cc adresine bağlanmaya çalışır.
MKR NB 1500 ile veri bağlantısı kullanmak için, sağlayıcınızın Erişim Noktası Adı (APN), oturum açma adı ve parolaya ihtiyacınız vardır. Bu bilgileri edinmek için en güncel bilgiler için şebeke sağlayıcısına başvurun. Bu sayfada çeşitli operatör ayarları hakkında bazı bilgiler var, ancak güncel olmayabilir.
Gerekli Donanım
- Arduino MKR NB 1500
- anten
- Veri için SIM kart etkinleştirme
Devre
Kod
İlk olarak, MKRNB 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. GSM, GPRS ve GSMClient sınıflarına ihtiyacınız olacak.
GPRS gprsAccess;
GSM gsmAccess;
Seri monitöre göndermek için bazı durum mesajları oluşturun:
Dize errortext = "ERROR" ;
Bağlanmak istediğiniz sunucuyu, yolu ve proxy'yi tutmak için bazı değişkenler oluşturun.
char yolu [ ] = "/" ;
char urlproxy [ ] = "http://arduino.cc" ;
Sunucudan gelen yanıtı tutmak için bir değişken ve vekil kullanıp kullanmayacağınızı belirten bir işaret oluşturun.
boolean use_proxy = yanlış ;
setup
, bilgisayara seri bir bağlantı açın.
Seri . başlar ( 9600 ) ;
}
Seri monitörden seri girişi işlemek için özel bir işlev oluşturacaksınız. char
dizisini bağımsız değişken olarak kabul eden adlandırılmış bir işlev oluşturur.
{
sayaç olarak hareket etmek için bir değişken yapın. Seri bilgiler varken char
dizisine okuyun. Yeni satır karakteri ile karşılaşılırsa, diziyi sonlandırın ve ana programa dönün.
süre ( 1 )
{
(Seri. mevcuttur ()> 0) ise
{
char inChar = Seri . read ( ) ;
eğer ( inChar == ' \ n ' )
{
sonuç [ i ] = ' \ 0 ' ;
dönüş 0 ;
}
eğer ( inChar ! = ' \ r ' )
{
sonuç [ i ] = inChar ;
i ++;
}
}
}
}
loop()
içinde proxy bayrağını false olarak ayarlayın
{
use_proxy = yanlış ;
PIN numarasını (varsa) gsmAccess.begin()
ileterek GSM şebekesine bağlantıyı gsmAccess.begin()
.
eğer ( gsmAccess. başlar ( PINNUMBER ) ! = GSM_READY )
{
Seri . println ( hata metni ) ;
while ( true ) ;
}
Seri . println ( oktext ) ;
APN'yi tutmak için bir char
dizisi oluşturun. Seri monitörden bayt almak için oluşturduğunuz readSerial()
işlevini kullanın
Seri . print ( "APN'nizi girin:" ) ;
readSerial ( apn ) ;
Seri . println ( apn ) ;
APN oturumunu tutmak için bir char
dizisi oluşturun. Seri monitörden bayt almak için oluşturduğunuz readSerial()
işlevini kullanın
Seri . print ( "Şimdi girişinizi girin:" ) ;
readSerial ( giriş ) ;
Seri . println ( giriş ) ;
APN parolasını tutmak için bir char
dizisi oluşturun. Seri monitörden bayt almak için oluşturduğunuz readSerial()
işlevini kullanın
Seri . print ( "Son olarak, şifrenizi girin:" ) ;
readSerial ( şifre ) ;
gprs.attachGPRS()
kullanarak GPRS şebekesine gprs.attachGPRS()
. Bu, az önce girdiğiniz APN, oturum açma adı ve şifreyi gerektirir.
Modem kendisini GPRS şebekesine gsmAccess()
, gsmAccess()
GSM_READY
.
if ( gprsAccess. attachGPRS ( apn , kullanıcı adı , şifre ) ! = GPRS_READY )
{
Seri . println ( hata metni ) ;
}
başka {
Seri . println ( oktext ) ;
İhtiyacınız olabilecek proxy bilgilerini saklamak için bir char
dizisi oluşturun. Seri monitörden bayt almak için oluşturduğunuz readSerial()
işlevini kullanın.
Seri . print ( "Operatörünüz bir proxy kullanıyorsa girin, değilse girin: tuşuna basın ) " ) ;
readSerial ( proxy ) ;
Seri . println ( proxy ) ;
Bir proxy belirtilmişse, bağlantı noktası numarasını isteyin ve proxy bayrağını true
if ( proxy [ 0 ] ! = ' \ 0 ' ) {
// kullanıcı tarafından tanıtılan proxy bağlantı noktasını oku
char proxyport [ 10 ] ;
Seri . print ( "Proxy bağlantı noktasını girin:" ) ;
readSerial ( proxyport ) ;
// tamsayıya cast proxy bağlantı noktası eklendi
pport = ( int ) proxyport ;
use_proxy = true ;
Seri . println ( proxyport ) ;
}
Sunucuya bağlı olup olmadığınızı belirtmek için bir değişken oluşturun. client.connect()
ile client.connect()
bağlantı kurun. Bağlantının nasıl yapılacağı proxy kullanıyorsanız veya kullanmamanıza bağlıdır.
int res_connect ;
eğer ( kullan_proxy )
res_connect = istemci. connect ( proxy , bağlantı noktası ) ;
Başka
res_connect = istemci. bağlayın ( url , 80 ) ;
bağlandıysanız, client.print()
kullanarak bir HTTP GET isteği yapın.
{
istemcisi. yazdır ( "GET" ) ;
eğer ( kullan_proxy )
istemcisi. baskı ( urlproxy ) ;
Başka
istemcisi. yazdırma ( yol ) ;
istemcisi. println ( "HTTP / 1.0" ) ;
istemcisi. println ( ) ;
Seri . println ( oktext ) ;
}
Bağlantı yapılmadıysa, bir hata yazdırın
{
// sunucuyla bağlantı bulamadıysanız
Seri . println ( hata metni ) ;
}
Sunucunun client.available()
kullanarak bayt client.available()
döndürmediğini kontrol edin. Varsa, response
dizesine okuyun ve ardından bir char dizisine yayınlayın. Arduino.cc kaynağından geçerli bir yanıtı belirten "200 OK" alt dizesi için diziyi denetleyin.
boolean testi = doğru ;
süre ( test )
{
if ( istemci. kullanılabilir ( ) )
{
char c = istemci. read ( ) ;
cevap + = c ;
Char responsechar [cevap. uzunluk ( ) + 1 ] ;
tepki. toCharArray ( yanıt , yanıt. uzunluk ( ) + 1 ) ;
if ( strstr ( responseechar , "200 OK" ) ! = BOŞ ) {
Seri . println ( oktext ) ;
Seri . println ( "TEST TAMAMLANDI!" ) ;
test = yanlış ;
}
}
Sunucunun bağlantısı kesildiyse, istemciyi durdurun ve loop()
kapatın loop()
{
Seri . println ( ) ;
Seri . println ( "bağlantı kesiliyor." ) ;
istemcisi. stop ( ) ;
test = yanlış ;
}
}
}
}
Kodunuz yüklendikten sonra, bağlantının durumunu görmek için seri monitörü açın.
Çizimin tamamı aşağıdadır.
Bu çizim, MKR NB 1500 kartının bir
GPRS ağı. APN bilgilerini ister.
seri monitörü ve example.org'a bağlanmaya çalışır.
Devre:
* MKR NB 1500 kartı
* Anten
* Veri planlı SIM kart
18 Haz 2012 tarihinde oluşturuldu
ile David del Peral
* /
// 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
NB nbAccess ; // NB erişimi: hata ayıklama için bir 'true' parametresi etkin
GPRS gprsAccess ; // GPRS erişimi
NBClient istemcisi ; // TCP bağlantısı için istemci hizmeti
// seri monitör yanıtı için mesajlar
Dize oktext = "Tamam" ;
Dize errortext = "ERROR" ;
// URL ve yol (örneğin: example.org)
char url [ ] = "example.org" ;
char urlproxy [ ] = "http://example.org" ;
char yolu [ ] = "/" ;
// kaydedilen yanıtı kaydetmek için değişken
Dize yanıtı = "" ;
// proxy kullan
boolean use_proxy = yanlış ;
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 Leonardo için gerekli
}
}
void loop ( ) {
use_proxy = yanlış ;
// başlangıç modülü
// SIM'iniz PIN koduna sahipse, tırnak işaretleri halinde begin () parametresi olarak iletin
Seri . print ( "NB IoT / LTE Cat M1 ağını bağlama ..." ) ;
eğer ( nbAccess. başlar ( PINNUMBER ) ! = NB_READY ) {
Seri . println ( hata metni ) ;
while ( true ) ;
}
Seri . println ( oktext ) ;
// GPRS ekle
Seri . println ( " GPRS'ye ekleniyor ..." ) ;
eğer ( gprsAccess. attachGPRS ( ) ! = GPRS_READY ) {
Seri . println ( hata metni ) ;
} başka {
Seri . println ( oktext ) ;
// kullanıcı tarafından sunulan proxy'yi oku
char proxy [ 100 ] ;
Seri . print ( "Operatörünüz bir proxy kullanıyorsa girin, değilse girin: tuşuna basın ) " ) ;
readSerial ( proxy ) ;
Seri . println ( proxy ) ;
// kullanıcı bir proxy tanıttıysa, ondan proxy bağlantı noktası ister
int pport ;
if ( proxy [ 0 ] ! = ' \ 0 ' ) {
// kullanıcı tarafından tanıtılan proxy bağlantı noktasını oku
char proxyport [ 10 ] ;
Seri . print ( "Proxy bağlantı noktasını girin:" ) ;
readSerial ( proxyport ) ;
// tamsayıya cast proxy bağlantı noktası eklendi
pport = ( int ) proxyport ;
use_proxy = true ;
Seri . println ( proxyport ) ;
}
// example.org ile bağlantı kurun ve HTTP isteği gerçekleştirin
Seri . print ( "example.org'a GET isteği bağlama ve gönderme ..." ) ;
int res_connect ;
// proxy kullanıyorsanız, ona bağlanın
if ( kullan_proxy ) {
res_connect = istemci. connect ( proxy , bağlantı noktası ) ;
} başka {
res_connect = istemci. bağlayın ( url , 80 ) ;
}
if ( res_connect ) {
// HTTP 1.0 GET isteği yapma (istemci isteği gönderir)
istemcisi. yazdır ( "GET" ) ;
// proxy kullanıyorsanız, yol example.org URL'sidir
if ( kullan_proxy ) {
istemcisi. baskı ( urlproxy ) ;
} başka {
istemcisi. yazdırma ( yol ) ;
}
istemcisi. println ( "HTTP / 1.1" ) ;
istemcisi. print ( "Ana Bilgisayar:" ) ;
istemcisi. println ( url ) ;
istemcisi. println ( "Bağlantı: kapat" ) ;
istemcisi. println ( ) ;
Seri . println ( oktext ) ;
} başka {
// sunucuyla bağlantı bulamadıysanız
Seri . println ( hata metni ) ;
}
Seri . print ( "Yanıt alınıyor ..." ) ;
boolean testi = doğru ;
while ( test ) {
// kullanılabilir gelen bayt varsa
// sunucudan okuyun ve kontrol edin
if ( müşteri. kullanılabilir ( ) ) {
char c = istemci. read ( ) ;
cevap + = c ;
// karakter dizisinden karakter dizisine alınıyor
Char responsechar [cevap. uzunluk ( ) + 1 ] ;
tepki. toCharArray ( yanıt , yanıt. uzunluk ( ) + 1 ) ;
// yanıt "200 OK" alt dizesi içeriyorsa
if ( strstr ( responseechar , "200 OK" ) ! = BOŞ ) {
Seri . println ( oktext ) ;
Seri . println ( "TEST TAMAMLANDI!" ) ;
test = yanlış ;
}
}
// sunucunun bağlantısı kesilirse, istemciyi durdurun:
if ( ! istemci. bağlı ( ) ) {
Seri . println ( ) ;
Seri . println ( "bağlantı kesiliyor." ) ;
istemcisi. stop ( ) ;
test = yanlış ;
}
}
}
}
/ *
Giriş dizisini oku
* /
int readSerial ( karakter sonucu [ ] ) {
int i = 0 ;
yaparken ( 1 ) {
while ( Seri . kullanılabilir ( ) > 0 ) {
char inChar = Seri . read ( ) ;
if ( inChar == ' \ n ' ) {
sonuç [ i ] = ' \ 0 ' ;
dönüş 0 ;
}
eğer ( inChar ! = ' \ r ' ) {
sonuç [ i ] = inChar ;
i ++;
}
}
}
}
See Also
- Arduino MKR NB 1500- Komple ürün açıklaması.
- Getting started with the MKR NB 1500- Her şeyi dakikalar içinde kurun.
- MKRNB library- NB Kütüphanesi için referansınız.
- GPRSinşaatçı
- GSMClientinşaatçı
- MKRNBattachGPRS()
- MKRNBScanNetworks- Kullanılabilir ağları tarar ve IMEI ve SIM kart numarası hakkında bilgi yazdırır.
- MKRNBToolsPinManagement- PIN numarası nasıl değiştirilir veya kaldırılır.
- MKRNBToolsTestModem- MKR NB 1500 modeminin doğru çalışıp çalışmadığını test eder.