SMSでボードをローカライズする
コンポーネントと消耗品
> |
| × | 1 |
このプロジェクトについて
注:このチュートリアルは古くなっている可能性があります。どうぞ ここ 最新バージョンの場合。
このプロジェクトの目的は、Arduino MKR GSM 1400のセルラーローカリゼーションの使用方法を示すことです。これを行うために、セキュリティチェック付きのSMSでMKRGSMの緯度と経度を再試行できる簡単なアプリケーションを実装しました。手紙を受け取ります。受信したSMSから送信者番号が復元され、u-bloxモジュールが提供する位置情報サービスによって提供される座標によって完成された適切なGoogleマップリンクを使用して返信が作成されます。
必要なもの
このプロジェクトは、Arduino MKR GSM 1400、アンテナ、LiPoバッテリーパック、スマートフォン、および1枚のデータSIMカードに基づいています。
- Arduino MKR GSM 1400はスケッチを実行し、プロジェクトに必要なローカリゼーション機能を可能にするGSM接続をサポートします。
- アンテナとバッテリーパックはそれぞれ、セルラーデータネットワークへの良好な信号接続を可能にし、他の電源が利用できない場合にデバイスに電力を供給するために使用されます。
- SMSをMKRGSM 1400に送信し、GPRSローカリゼーションを要求するにはスマートフォンが必要です。
- データネットワークにアクセスしてネットワーク操作を許可するには、SIMカードが必要です。
- データネットワークに接続するには、PIN、APN、およびアクセスクレデンシャルが必要です。
ハードウェアのセットアップ
このプロジェクトには特別なことは何も必要ありません。ボードにアンテナを接続し、SIMカードを挿入して、LiPoバッテリーをJSTコネクタに接続します。
LiPoバッテリーはオプションですが、GSMモジュールがカバレッジの悪い特定の条件で必要とする可能性のある電流のピークに対処することができます。
<図>
仕組み
このプロジェクトでは、MKRGSMライブラリを使用して、SMSメッセージとセルベースのジオリファレンスを管理します。
SMSを受信すると、コンテンツに「L」の文字が含まれているかどうかがチェックされます。この場合のみ、スケッチはローカリゼーションとSMS送信を続行します。このソリューションでは、任意の番号がシステムの場所を要求できますが、パスワード(「秘密の手紙」)を知っている人だけが応答を受け取ります。これは、 if(c!=76)
のチェックを行う行です。 76は「L」のASCIIコードです。値を変更して、認識される文字を変更できます。
GSMモジュールにはGPS受信機がありませんが、製造元はGSMネットワークの各セルの位置のデータベースを持っているため、提供された各セルIDの座標を提供します。このシステムは、各セルが小さな領域をカバーする都市部では非常に正確です。農村地域では、各セルのカバレッジははるかに大きく、提供される場所はより粗い近似値です。
Googleマップのリンクを作成するには、標準のURLを使用して、最後に適切なLong値とLat値を連結します。このURLは「https://www.google.com/maps/place/
スケッチ
スケッチの詳細な説明に続いて;最初のコードセクションは、アプリケーションに必要なライブラリを含めるために使用されます。
MKRGSM すべてのGSM接続、ローカリゼーション、およびSMS管理機能が含まれます。これは、オブジェクト GSMClient、GPRS、GSM を介して利用できます。 および GSMLocation、 SMS管理APIは、オブジェクト GSM_SMS から利用できます。 、ヘッダー ArduinoLowPower ボードのモジュールの低電力管理を可能にするAPIをインポートします。
Webエディターからコードをダウンロードすると、 arduino_secrets.h が見つかります。 PIN、APN、ユーザーなどの適切なデータを含むファイル およびパスワード。 Webエディターでは、[シークレット]タブに適切なデータを入力する必要があります。
// GSMライブラリを含める#include #include "ArduinoLowPower.h" char PINNUMBER [] =SECRET_PINNUMBER; char GPRS_APN [] =SECRET_GPRS_APN; char GPRS_LOGIN [] =SECRET_GPRS_LOGIN; char GPRS_PASSWORD [ ] =SECRET_GPRS_PASSWORD; //ライブラリインスタンスを初期化しますGPRSgprs; GSM gsmAccess; GSM_SMS sms; GSMLocation location;
measureLocation() セルラーネットワークで座標を再試行するようにモジュールにクエリを実行します。新しい座標が利用可能な場合は、それをグローバル変数に割り当てます。それ以外の場合は、45秒間再度要求します。精度の制約を尊重する利用可能なメジャーがない場合は、最後の適切な座標を返します。
//ロケーション管理に使用されるグローバル変数StringGSMlatitude ="0.000000"; String GSMlongitude ="0.000000"; //この関数は、ロケーションのAPIを使用してデバイスの座標を取得し、すべての要件が満足したvoidmeasureLocation(){unsigned long timeout =millis(); while(millis()-timeout <45000){if(location.available()&&location.accuracy()<300 &&location.accuracy()!=0){ GSMlatitude =String(location.latitude()、6); GSMlongitude =String(location.longitude()、6); break;}}}
connectNetwork() 関数はAPIを使用します smAccess.begin および gprs.attachGPRS ボードをデータネットワークに接続します。クレデンシャルデータのピンが使用されます 、 apn 、ユーザー および合格 arduino_secrets.hの宣言によって割り当てられます。
// connectNetwork()関数はボードデータに使用されますconnectionvoid connectNetwork(){bool status =false; //グローバルATコマンドタイムアウトを設定しますこれにより、uart通信からの回復が可能になります// samdモジュールとの間のフリーズublox module.gprs.setTimeout(100000); gsmAccess.setTimeout(100000); // GSM接続を開始while(status ==false){if((gsmAccess.begin(PINNUMBER)==GSM_READY)&(gprs.attachGPRS(GPRS_APN、 GPRS_LOGIN、GPRS_PASSWORD)==GPRS_READY)){status =true;} else {delay(1000);}}}セットアップセクションでは、スケッチで使用されるすべてのオブジェクトを初期化できます。これは、データを確立するためのconnectionNetwork()関数と呼ばれます。接続とローカリゼーション構造の始まり。//データ接続とローカリゼーションオブジェクトの初期化に使用されるコードセクションvoidsetup(){connectNetwork(); location.begin();}
最後のコードセクションは、SMS管理とロケーション測定が実装されるループ機能です。新しいSMSが利用可能になるたびに、ボードの座標を使用したSMSを使用して、送信者に対するボードの応答を行い、ボードがモジュールをシャットダウンして消費を削減します。 60秒間深い睡眠を取ります。
void loop(){int c;文字列応答;文字列messager =""; measureLocation(); unsigned long timeout =millis(); while(millis()-timeout <5000){if(sms.available()){// SMSが利用可能かどうかを確認charsenderNumber [20] ={"0"}; sms.remoteNumber(senderNumber、20); //リモート番号を取得しますintc =sms.read(); if(c!=76){sms.flush(); break;} //リモート番号に送信される文字列メッセージを連結しますStringtxtMsg ="https:// www.google.com/maps/place/ "+ GSMlatitude +"、 "+ GSMlongitude; //メッセージを送信ms.beginSMS(senderNumber); sms.print(txtMsg); sms.endSMS(); break;}} // gsmAccess.shutdown();をスリープ状態にしている間、GSMモジュールをオフにして、ボードからの消費電力を最小限に抑えます。 LowPower.sleep(60000); //低電力を60秒間有効にし、ボードを再試行した後connectNetwork(); //モジュールをオンにして、データネットワークに再接続します}
使い方
上記のようにハードウェアをセットアップし、アクセスクレデンシャルを使用してスケッチをパーソナライズし、スケッチをボードにロードして、GSMネットワークとの接続が確立されるのを待ちます。これには30秒かかる場合があります。
接続が確立されたら、テキストとして「L」を付けてMKRGSM SIM番号にSMSを送信します。これにより、ローカリゼーションプロセスが開始され、ボードは、要求された位置のGoogleマップリンクを含むSMSで応答します。
コード
Arduino
製造プロセス