Eğitimler
MKRGSMToolsPinManagement
Bu örnek, Arduino MKR GSM 1400 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 GSM 1400
- anten
- SIM kart
Devre
Kod
İlk olarak, MKRGSM kütüphanesini içe aktarın
#include <MKRGSM.h>
GSMPin sınıfının bir örneğini başlatın .
GSMPIN 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 ;
}
}
GSM şebekesindeki 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.
GSM kalkanına takılı bir SIM kart.
Devre:
* MKR GSM 1400 kartı
* Anten
* SIM kart
12 Haz 2012 tarihinde oluşturuldu
ile David del Peral
* /
// kütüphaneler
#include <MKRGSM.h>
// pin yöneticisi nesnesi
GSMPIN PINManager ;
// girişi seri olarak kullanıcı tarafından kaydet
String user_input = "" ;
// PIN kodu ile doğrulandı
bool 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 ;
}
}
// GSM kalkanını başlat
Seri . print ( "GSM şebekesindeki 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 GSM 1400- Komple ürün açıklaması.
- Getting started with the MKR GSM 1400- Her şeyi dakikalar içinde kurun.
- MKRGSM library- GSM Kütüphanesi için referansınız.
- GSMPIN
- begin()
- isPIN()
- checkPIN()
- checkPUK()
- changePIN()
- switchPIN()
- checkReg()
- getPINUsed()
- setPINUsed()
- MKRGSMToolsTestGPRS- Verilen APN ve kimlik bilgileriyle GPRS üzerinden internete erişmeye çalışır.
- MKRGSMToolsBandManagement- Modemde yapılandırılmış olan bandı kontrol eder ve değiştirmenize izin verir.
- MKRGSMToolsGsmScanNetworks- Kullanılabilir ağları tarar ve IMEI ve SIM kart numarası hakkında bilgi yazdırır.
- MKRGSMToolsTestModem- GSM kalkanı modemin doğru çalışıp çalışmadığını test eder.
- MKRGSMToolsTestWebServer- Hiçbir şeyi yanıtlamayan, ancak istemcinin isteğini ve sunucu IP adresini yazdıran basit bir web sunucusu.
- MKRGSMExamplesMakeVoiceCall- Mikrofon ve hoparlör ile sesli arama nasıl yapılır.