MKRNBScanNetworks

Bu örnek, modemin IMEI numarasını yazdırır, ardından bir taşıyıcıya bağlı olup olmadığını kontrol eder ve sinyal gücünü yazdırır. Ayrıca yakındaki tüm ağları tarar.

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, NBScanner ve NBModem sınıflarına ihtiyacınız olacak.

NB nbAccess;
NBScanner scannerNetworks;
NBModem modemTest;
[Kodu Al]

IMEI numarasını tutacak bir değişken ve seri monitöre gönderilecek bir durum mesajı oluşturun:

Dize IMEI = "" ;

Dize errortext = "ERROR" ;

setup , bilgisayara seri bir bağlantı açın. Bağlantıyı açtıktan sonra, Seri Monitöre çizimin başladığını belirten bir mesaj gönderin. Modemi sıfırlamak için @ scannerNetworks.begin () @@ 'yi arayın.

void setup ( ) {
Seri . başlar ( 9600 ) ;
Seri . println ( "NB ağ tarayıcı" ) ;
scannerNetworks. begin ( ) ;

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 bağlı = true ;

gsmAccess.begin() çağırarak ağa bağlanın. SIM kartın PIN kodunu argüman olarak alır. Bunu bir while() döngüsünün içine yerleştirerek, bağlantının durumunu sürekli olarak kontrol edebilirsiniz. Modem bağlandığında, nbAccess() işlevi NB_READY değerini döndürür. 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 ) ;
}
}

modemTest.getIMEI() ile modemin IMEI'sini alın ve seri monitöre yazdırın.

Seri . print ( "Modem IMEI:" ) ;
IMEI = modemTest. getIMEI ( ) ;
IMEI. değiştirin ( " \ n " , "" ) ;
eğer ( IMEI ! = NULL )
Seri . println ( IMEI ) ;

loop() , mevcut tüm ağları tarayın ve yazdırın. Bu biraz zaman alabilir

Seri . println ( "Kullanılabilir ağları tarama. Birkaç saniye sürebilir." ) ;
Seri . println ( scannerNetworks. readNetworks ( ) ) ;

Bağlı olan taşıyıcıyı ve sinyalin gücünü yazdırın. Sinyal gücü 0-31 arasındadır, burada 0 en düşük ve 31 en yüksektir. loop() kapatın loop() .

Seri . print ( "Şu anki taşıyıcı:" ) ;
Seri . println ( scannerNetworks. getCurrentCarrier ( ) ) ;

Seri . print ( "Sinyal Gücü:" ) ;
Seri . print ( scannerNetworks. getSignalStrength ( ) ) ;
Seri . println ( "[0-31]" ) ;

Kodunuz yüklendikten sonra, bağlantının durumunu görmek için seri monitörü açın.

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

/ *

NB Tarama Ağları

Bu örnek, modemin IMEI numarasını yazdırır,
daha sonra bir taşıyıcıya bağlı olup olmadığını kontrol eder.
Ardından yakındaki ağları tarar ve sinyal güçlerini yazdırır.

Devre:
* MKR NB 1500 kartı
* Anten
* SIM kart

8 Mart 2012 tarihinde oluşturuldu
Tom Igoe, Javier Carazo tarafından uygulandı
Değiştirildi 4 Şub 2013
ile Scott Fitzgerald
* /


// 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 ; // hata ayıklamayı etkinleştirmek için bir 'true' parametresi ekle
NBScanner tarayıcı Ağları ;
NBModem modem Testi ;

// Veri değişkenlerini kaydet
Dize IMEI = "" ;

// seri monitör sonuç mesajları
Dize errortext = "ERROR" ;

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
}

Seri . println ( "NB IoT / LTE Cat M1 ağ tarayıcı" ) ;
scannerNetworks. begin ( ) ;

// bağlantı durumu
boole bağlı = yanlış ;

// Modülü başlat
// SIM'iniz PIN içeriyorsa, tırnak işaretleri halinde begin () parametresi olarak iletin
while ( ! bağlı ) {
eğer ( nbAccess. başlar ( PINNUMBER ) == NB_READY ) {
bağlı = doğru ;
} başka {
Seri . println ( "Bağlı değil" ) ;
gecikme ( 1000 ) ;
}
}

// modem parametrelerini al
// IMEI, benzersiz modem tanımlayıcısı
Seri . print ( "Modem IMEI:" ) ;
IMEI = modemTest. getIMEI ( ) ;
IMEI. değiştirin ( " \ n " , "" ) ;
eğer ( IMEI ! = NULL ) {
Seri . println ( IMEI ) ;
}
}

void loop ( ) {
// şu anda bağlı olan operatör
Seri . print ( "Şu anki taşıyıcı:" ) ;
Seri . println ( scannerNetworks. getCurrentCarrier ( ) ) ;

// gücü ve ber döndürür
// 0-31 ölçeğinde sinyal gücü. 31, güç> 51dBm anlamına gelir
// BER, Bit Hata Oranıdır. 0-7 ölçek. 99 = algılanamaz
Seri . print ( "Sinyal Gücü:" ) ;
Seri . print ( scannerNetworks. getSignalStrength ( ) ) ;
Seri . println ( "[0-31]" ) ;

// mevcut ağları tara, ağların bir listesini görüntüler
Seri . println ( "Kullanılabilir ağları tarama. Birkaç saniye sürebilir." ) ;
Seri . println ( scannerNetworks. readNetworks ( ) ) ;
// tekrar taramadan önce on saniye bekleyin
gecikme ( 10000 ) ;
}

See Also