Eğitimler
MKRNBToolsPinManagement
Bu örnek, Arduino MKR NB 1500 için sağlanan araçların bir parçasıdır ve bir SIM kartın PIN'ini değiştirmenize veya çıkarmanıza yardımcı olur.
Gerekli Donanım
- Arduino MKR NB 1500
- anten
- SIM kart
Devre
Kod
İlk olarak, MKRNB kütüphanesini içe aktarın
#include <MKRNB.h>
NBPin sınıfının bir örneğini başlatın .
NBPIN PINManager ;
Seri monitörden girişi tutmak için bir String ile başlayarak değişkenlerinizi oluşturun. SIM'in kimlik doğrulaması yapıldığını kontrol etmek için seri bayrağı için bir bayrak ve mesajlar da gönderin.
boolean auth = false;
String oktext = "OK";
String 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 PINManager .begin()
.
Seri . başlar ( 9600 ) ;
Seri . println ( "PIN örneğini değiştir \ n " ) ;
PINManager. begin ( ) ;
SIM'in PIN ile kilitlenip kilitlenmediğini kontrol edin
int pin_query = PINManager. isPIN ( ) ;
eğer ( pin_query == 1 )
{
Kilitliyse, seri monitörden PIN kodunu isteyin. Bilgileri ayrıştırmak için readSerial()
adlı özel bir işlev kullanırsınız.
user_input = readSerial ( ) ;
PIN geçerliyse, auth
bayrağını true
. Seri monitöre sonucu belirten bir durum mesajı gönderin. Yanlış PIN girerseniz, tekrar deneyebilirsiniz. 3 cevapsız denemeden sonra PIN kilitlenir ve kilidi açmak için PUK numarasına ihtiyacınız vardır.
{
auth = doğru ;
PINManager. setPINUsed ( true ) ;
Seri . println ( oktext ) ;
}
Başka
{
Seri . println ( "Yanlış PIN. 3 fırsatınız olduğunu unutmayın." ) ;
}
}
SIM PUK kilidi modundaysa, PUK kodunu ve yeni bir PIN kodu isteyin
{
Seri . println ( "PIN kilitlendi. PUK kodunu girin:" ) ;
String puk = readSerial ( ) ;
Seri . print ( "Şimdi yeni bir PIN kodu girin:" ) ;
user_input = readSerial ( ) ;
eğer ( PINManager. checkPUK ( puk , user_input ) == 0 )
{
auth = doğru ;
PINManager. setPINUsed ( true ) ;
Seri . println ( oktext ) ;
}
Başka
{
Seri . println ( "Hatalı PUK veya geçersiz yeni PIN. Tekrar deneyin !." ) ;
}
}
Bir hata varsa ve hem PIN numarası hem de PUK kilitliyse, uygun bir durum mesajı gönderin:
{
Seri . println ( "PIN ve PUK kilitli. Cep telefonunda PIN2 / PUK2 kullanın." ) ;
while ( true ) ;
}
PIN numarası yoksa, auth
bayrağını true
{
// SIM kimlik doğrulaması gerektirmez
Seri . println ( "Pin gerekmez." ) ;
auth = doğru ;
}
}
NB ağındaki kaydı kontrol edin ve bağlı olup olmadığınızı ve dolaşımda olup olmadığınızı belirtin.
eğer ( PINManager. checkReg ( ) == 0 )
Seri . println ( oktext ) ;
else if ( PINManager. checkReg ( ) == 1 )
Seri . println ( "ROAMING" + oktext ) ;
Başka
{
Seri . println ( hata metni ) ;
while ( true ) ;
}
}
Seri monitörden seri girişi işlemek için özel bir işlev oluşturacaksınız. String
türünde adlandırılmış bir işlev yapın.
{
Kullanılabilir seri bilgiler varken yeni bir Dize halinde okuyun. Yeni satır karakteri ile karşılaşılırsa, ana programa dönün.
süre ( 1 )
{
(Seri. mevcuttur ()> 0) ise
{
char inChar = Seri . read ( ) ;
eğer ( inChar == ' \ n ' )
{
metin döndürme ;
}
eğer ( inChar ! = ' \ r ' )
metin + = inChar ;
}
}
}
loop()
, PIN'i açmanıza veya kapatmanıza ve değiştirmenize olanak tanıyan bir PIN yönetim aracı olarak işlev görür.
{
Seri . println ( "Bir seçenek belirleyin: \ n 1 - Açık / Kapalı PIN." ) ;
eğer ( PINManager. getPINUsed ( ) )
Seri . println ( "2 - PIN'i değiştir." ) ;
Dize user_op = readSerial ( ) ;
eğer ( user_op == "1" )
{
Seri . println ( "PIN kodunuzu girin:" ) ;
user_input = readSerial ( ) ;
PINManager. switchPIN ( kullanıcı_sayısı ) ;
}
else if ( user_op == "2" ve PINManager. getPINUsed ( ) )
{
Seri . println ( "Gerçek PIN kodunuzu girin:" ) ;
String oldPIN = readSerial ( ) ;
Seri . println ( "Şimdi yeni PIN kodunuzu girin:" ) ;
Dize newPIN = readSerial ( ) ;
PINManager. changePIN ( oldPIN , newPIN ) ;
}
Başka
{
Seri . println ( "Hatalı seçenek. Tekrar deneyin !." ) ;
}
gecikme ( 1000 ) ;
}
Kodunuz yüklendikten sonra, PIN ile çalışmak için seri monitörü açın.
Çizimin tamamı aşağıdadır.
Bu örnek, PIN numarasını değiştirmenizi veya kaldırmanızı sağlar.
bir MKR NB 1500 kartına takılan bir SIM kart.
Devre:
* MKR NB 1500 kartı
* Anten
* SIM kart
12 Haz 2012 tarihinde oluşturuldu
ile David del Peral
* /
// kütüphaneler
#include <MKRNB.h>
// pin yöneticisi nesnesi
NBPIN PINManager ;
// girişi seri olarak kullanıcı tarafından kaydet
String user_input = "" ;
// PIN kodu ile doğrulandı
boolean auth = yanlış ;
// seri monitör sonuç mesajları
Dize oktext = "Tamam" ;
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 ( "PIN örneğini değiştir \ n " ) ;
PINManager. begin ( ) ;
// SIM'in pin kilidinin olup olmadığını kontrol edin
while ( ! auth ) {
int pin_query = PINManager. isPIN ( ) ;
eğer ( pin_query == 1 ) {
// SIM kilitliyse, PIN kodunu girin
Seri . print ( "PIN kodunu girin:" ) ;
user_input = readSerial ( ) ;
// PIN kodunu kontrol et
eğer ( PINManager. checkPIN ( user_input ) == 0 ) {
auth = doğru ;
PINManager. setPINUsed ( true ) ;
Seri . println ( oktext ) ;
} başka {
// PIN kodu doğrulanmamışsa
Seri . println ( "Yanlış PIN. 3 fırsatınız olduğunu unutmayın." ) ;
}
} else if ( pin_query == - 1 ) {
// PIN kodu kilitli, kullanıcı PUK kodunu girmelidir
Seri . println ( "PIN kilitlendi. PUK kodunu girin:" ) ;
String puk = readSerial ( ) ;
Seri . print ( "Şimdi yeni bir PIN kodu girin:" ) ;
user_input = readSerial ( ) ;
// PUK kodunu kontrol et
eğer ( PINManager. checkPUK ( puk , user_input ) == 0 ) {
auth = doğru ;
PINManager. setPINUsed ( true ) ;
Seri . println ( oktext ) ;
} başka {
// PUK o veya yeni PIN yanlışsa
Seri . println ( "Hatalı PUK veya geçersiz yeni PIN. Tekrar deneyin !." ) ;
}
} else if ( pin_query == - 2 ) {
// en kötü durum, PIN ve PUK kilitli
Seri . println ( "PIN ve PUK kilitli. Cep telefonunda PIN2 / PUK2 kullanın." ) ;
while ( true ) ;
} başka {
// SIM kimlik doğrulaması gerektirmez
Seri . println ( "Pin gerekmez." ) ;
auth = doğru ;
}
}
// başlangıç modülü
Seri . print ( "NB IoT / LTE Cat M1 ağındaki kayıt kontrol ediliyor ..." ) ;
eğer ( PINManager. checkReg ( ) == 0 ) {
Seri . println ( oktext ) ;
}
// dolaşım yoluyla bağlanıyorsanız
else if ( PINManager. checkReg ( ) == 1 ) {
Seri . println ( "ROAMING" + oktext ) ;
} başka {
// hata bağlantısı
Seri . println ( hata metni ) ;
while ( true ) ;
}
}
void loop ( ) {
// İşlev döngüsü pin yönetimi kullanıcı menüsünü uygular
// Sadece SIM tuş kilidi kullanıyorsanız, PIN kodunu değiştirebilirsiniz
// user_op değişkenleri kullanıcı kaydetme seçeneği
Seri . println ( "Bir seçenek belirleyin: \ n 1 - Açık / Kapalı PIN." ) ;
if ( PINManager. getPINUsed ( ) ) {
Seri . println ( "2 - PIN'i değiştir." ) ;
}
Dize user_op = readSerial ( ) ;
if ( user_op == "1" ) {
Seri . println ( "PIN kodunuzu girin:" ) ;
user_input = readSerial ( ) ;
// PIN kilidini etkinleştirme / devre dışı bırakma
PINManager. switchPIN ( kullanıcı_sayısı ) ;
} else if ( kullanıcı_op == "2" && PINManager. getPINUsed ( ) ) {
Seri . println ( "Gerçek PIN kodunuzu girin:" ) ;
String oldPIN = readSerial ( ) ;
Seri . println ( "Şimdi yeni PIN kodunuzu girin:" ) ;
Dize newPIN = readSerial ( ) ;
// pin'i değiştir
PINManager. changePIN ( oldPIN , newPIN ) ;
} başka {
Seri . println ( "Hatalı seçenek. Tekrar deneyin !." ) ;
}
gecikme ( 1000 ) ;
}
/ *
Giriş dizisini oku
* /
Dize readSerial ( ) {
Dize metni = "" ;
yaparken ( 1 ) {
while ( Seri . kullanılabilir ( ) > 0 ) {
char inChar = Seri . read ( ) ;
if ( inChar == ' \ n ' ) {
metin döndürme ;
}
eğer ( inChar ! = ' \ r ' ) {
metin + = inChar ;
}
}
}
}
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.
- GSMPIN
- begin()
- isPIN()
- checkPIN()
- checkPUK()
- changePIN()
- switchPIN()
- checkReg()
- getPINUsed()
- setPINUsed()
- MKRNBScanNetworks- Kullanılabilir ağları tarar ve IMEI ve SIM kart numarası hakkında bilgi yazdırır.
- MKRNBToolsTestGPRS- GPRS üzerinden internete erişmeye çalışır.
- MKRNBToolsTestModem- MKR NB 1500 modeminin doğru çalışıp çalışmadığını test eder.