- Arduinoベースの車両追跡システムに必要なコンポーネント:
- GSMモジュールを使用して場所を追跡するにはどうすればよいですか?
- GSMとGPSをArduinoとインターフェースするための回路の説明:
- Arduinoを使用したGSMおよびGPSベースの車両追跡システム-作業中
- 車両の位置を追跡するためのArduinoコードとのGAMおよびGPSインターフェース
車両追跡システムは、車両管理および資産追跡アプリケーションで非常に一般的に使用されています。今日、これらのシステムは、車両の位置を追跡できるだけでなく、速度を報告したり、リモートで制御したりすることもできます。一般に、車両の追跡は、緯度と経度 (GPS座標)の形式で車両の位置を追跡するプロセス です。 GPS座標は、場所の値です。このシステムは、屋外での使用に非常に効率的です。この種の 車両追跡システムプロジェクト は、タクシー/タクシー、盗難車、学校/大学のバスなどの追跡に広く使用されています。このプロジェクトでは、Arduinoを使用してGSMおよびGPSベースの車両追跡システムを構築するGPSを一歩進めます。この 車両追跡システム は、 GPSとGSMを使用して車両を追跡し、ハードウェアとソフトウェアにわずかな変更を加えるだけで、事故検出アラートシステム、兵士追跡システムなどとして使用することもできます。
以前にも他の多くのタイプの車両追跡システムを構築しました。興味があればチェックしてください。
- Arduinoを使用したGPS車両追跡と事故警報
- ArduinoとESP8266を使用したGoogleマップによる車両追跡
- MSP430を使用したGPS車両追跡と事故警報
- Arduinoを使用したLoRaベースのGPS車両追跡
- SIM800とArduinoを使用したGPSなしのロケーショントラッカー
Arduinoベースの車両追跡システムに必要なコンポーネント:
Arduinoを訴える簡単な車両追跡システムを構築するには、次のコンポーネントが必要になります。
- Arduino UNO
- GSMモジュール
- GPSモジュール
- 16x2 LCD
- 電源
- 接続線
- 10 K POT
GSMモジュールを使用して場所を追跡するにはどうすればよいですか?
GPSは全地球測位システムの略で、正確なUTC時間(協定世界時)で地球上の任意の場所の緯度と経度を検出するために使用されます。GPSモジュールは、車両追跡システムプロジェクトの主要コンポーネントです。このデバイスは、衛星から毎秒、時刻と日付の座標を受信します。
GPSモジュールは、追跡位置に関連するデータをリアルタイムで送信し、NMEA形式で非常に多くのデータを送信します(下のスクリーンショットを参照)。NMEA形式は複数の文で構成されており、必要な文は1つだけです。この文は$ GPGGAから始まり、座標、時間、その他の役立つ情報が含まれています。このGPGGAは、全地球測位システム修正データと呼ばれます。GPSデータとその文字列の読み取りについて詳しくは、こちらをご覧ください。
文字列内のコンマを数えることで、$ GPGGA文字列から座標を抽出できます。$ GPGGA文字列を見つけて配列に格納すると、Latitudeは2つのコンマの後に、Longitudeは4つのコンマの後に見つけることができます。これで、これらの緯度と経度を他の配列に配置できます。
以下は、$ GPGGA文字列とその説明です。
$ GPGGA、104534.000,7791.0381、N、06727.4434、E、1,08,0.9,510.4、M、43.9、M,, * 47
$ GPGGA、HHMMSS.SSS、latitude、N、longitude、E、FQ、NOS、HDP、altitude、M、height、M,,チェックサムデータ
識別子 |
説明 |
$ GPGGA |
全地球測位システムの修正データ |
HHMMSS.SSS |
時間、分、秒、ミリ秒の形式の時間。 |
緯度 |
緯度(座標) |
N |
方向N =北、S =南 |
経度 |
経度(座標) |
E |
方向E =東、W =西 |
FQ |
品質データを修正する |
NOS |
使用されている衛星の数 |
HPD |
精度の水平希釈 |
高度 |
海面からの高度 |
M |
メーター |
高さ |
高さ |
チェックサム |
チェックサムデータ |
GSMとGPSをArduinoとインターフェースするための回路の説明:
この車両追跡システムプロジェクトの回路接続は単純で、下の画像に示されています。ここで、GPSモジュールのTxピンはArduinoのデジタルピン番号10に直接接続されています。ここでソフトウェアシリアルライブラリを使用することにより、ピン10と11でシリアル通信を許可し、それぞれRxとTxにし、GPSモジュールのRxピンを開いたままにしました。デフォルトでは、Arduinoのピン0と1がシリアル通信に使用されますが、SoftwareSerialライブラリを使用することで、Arduinoの他のデジタルピンでのシリアル通信を許可できます。 12ボルトの電源はGPSモジュールに電力を供給するために使用されます。
GSMモジュールのTxピンとRxピンは、ArduinoのピンRxとTxに直接接続されています。GSMモジュールも12v電源から電力を供給されます。オプションのLCDのデータピンD4、D5、D6、およびD7は、Arduinoのピン番号5、4、3、および2に接続されています。LCDのコマンドピンRSとENはArduinoのピン番号2と3に接続され、RWピンは直接グランドに接続されています。ポテンショメータは、LCDのコントラストや明るさを設定するためにも使用されます。
Arduinoを使用したGSMおよびGPSベースの車両追跡システム-作業中
このプロジェクトでは、Arduinoを使用してGPS受信機とGSMモジュールを使用してプロセス全体を制御します。GPS受信機は車両の座標を検出するために使用され、GSMモジュールはSMSによってユーザーに座標を送信するために使用されます。また、オプションの16x2 LCDは、ステータスメッセージまたは座標を表示するためにも使用されます。GPSモジュールSKG13BLとGSMモジュールSIM900Aを使用しました。
プログラミング後にハードウェアの準備ができたら、車両に取り付けて電源を入れることができます。次に、車両に配置されているシステムにSMS「TrackVehicle」を送信する必要があります。これらのプロジェクトで行ったように、#Track Vehicle *のようなプレフィックス(#)またはサフィックス(*)を使用して、文字列の開始と終了を適切に識別することもできます:GSMベースのホームオートメーションとワイヤレス掲示板
送信されたメッセージは、システムに接続されているGSMモジュールによって受信され、メッセージデータをArduinoに送信します。Arduinoはそれを読み取り、メッセージ全体からメインメッセージを抽出します。そして、それをArduinoの事前定義されたメッセージと比較します。一致が発生した場合、ArduinoはGPSモジュールデータから$ GPGGA文字列を抽出して座標を読み取り(上記で説明したGPSの動作)、GSMモジュールを使用してユーザーに送信します。このメッセージには、車両の位置の座標が含まれています。
車両の位置を追跡するためのArduinoコードとのGAMおよびGPSインターフェース
プログラミングのパートでは、最初にライブラリを含め、LCDとソフトウェアのシリアル通信用のピンを定義します。また、データを格納するための配列を使用して変数を定義します。ソフトウェアシリアルライブラリは、ピン10および11でのシリアル通信を可能にするために使用されます。
#include
ここで、配列 str はGSMモジュールから受信したメッセージを保存するために使用され、 gpsString はGPS文字列を保存するために使用されます。 char * test =” $ GPGGA” は、座標に必要な正しい文字列を比較するために使用されます。
その後、セットアップ機能でシリアル通信、LCD、GSM、GPSモジュールを初期化し、LCDにウェルカムメッセージを表示しました。
void setup(){lcd.begin(16,2); Serial.begin(9600); gps.begin(9600); lcd.print( "車両追跡"); lcd.setCursor(0,1);…………..。
ループ機能では、メッセージとGPS文字列を受信します。
void loop(){serialEvent(); if(temp){get_gps(); 追跡(); }}
関数 voidinit_sms および voidsend_sms() は、メッセージの初期化と送信に使用されます。 init_sms 関数で、適切な10桁の携帯電話番号を使用します。
関数 voidget_gps() は、受信した文字列から座標を抽出するために使用されています。
関数 voidgpsEvent() は、GPSデータをArduinoに受信するために使用されます。
関数 voidserialEvent() は、GSMからメッセージを受信し、受信したメッセージを事前定義されたメッセージ(Track Vehicle)と比較するために使用されます。
void serialEvent(){while(Serial.available()){if(Serial.find( "Track Vehicle")){temp = 1; ブレーク; }………….。
初期化関数 「gsm_init() 」 は、GSMモジュールの初期化と構成に使用されます。最初に、「AT」コマンドをGSMモジュールに送信することにより、GSMモジュールが接続されているかどうかがチェックされます。応答OKを受信した場合は、準備ができていることを意味します。システムは、モジュールが準備ができるまで、または「OK」が受信されるまで、モジュールをチェックし続けます。次に、ATE0コマンドを送信してECHOをオフにします。オフにしないと、GSMモジュールがすべてのコマンドをエコーします。次に、最後に「AT + CPIN?」を介してネットワークの可用性がチェックされます。コマンド、挿入されたカードがSIMカードであり、PINが存在する場合、応答+ CPIN:READYを返します。これも、ネットワークが見つかるまで繰り返しチェックされます。これは、以下のビデオで明確に理解できます。
以下のコードセクションで上記のすべての機能を確認してください。