車両追跡システムは、特に盗難車両の場合、今日非常に重要になっています。あなたが持っている場合はGPSシステムあなたの車両に搭載し、あなたはあなたの車の位置を追跡することができ、そしてその盗まれた車を追跡するために警察に役立ちます。以前、車両の位置座標が携帯電話で送信される同様のプロジェクトを構築しました。GPSとGSMを使用したArduinoベースの車両トラッカーを確認してください。
ここでは、Googleマップで車両を追跡できるより高度なバージョンの車両追跡システムを構築しています。このプロジェクトでは、位置座標をローカルサーバーに送信します。コンピュータまたはモバイルで「ウェブページ」を開くだけで、車両の位置座標を含むGoogleマップへのリンクが見つかります。そのリンクをクリックすると、Googleマップに移動し、車両の位置が表示されます。Googleマップを使用するこの車両追跡システムでは、GPSモジュールを使用して位置座標を取得し、Wi-Fiモジュールを使用してWi-Fi経由でコンピューターまたはモバイルにデータを送信し続け、Arduinoを使用してGPSとWi-Fiを相互に通信させます。
使い方:
車両を追跡するには、GPSモジュールを使用して車両の座標を見つける必要があります。 GPSモジュールは、座標を取得するために衛星と継続的に通信します。次に、UARTを使用してこれらの座標をGPSからArduinoに送信する必要があります。そして、ArduinoはGPSで受信したデータから必要なデータを抽出します。
この前に、ArduinoはWi-FiモジュールESP8266にコマンドを送信して、ルーターの構成と接続、およびIPアドレスの取得を行います。その後、Arduinoは座標を取得するためにGPSを初期化し、LCDに「ページ更新メッセージ」が表示されます。つまり、ユーザーはWebページを更新する必要があります。ユーザーがウェブページを更新すると、ArduinoはGPS座標を取得し、Wi-Fi経由でウェブページ(ローカルサーバー)に送信します。追加情報とGoogleマップのリンクが含まれています。このリンクをクリックすると、ユーザーは座標を使用してGoogleマップにリダイレクトし、Googleマップの赤いスポットにある車両の現在地を取得します。プロセス全体は、最後のビデオに適切に示されています。
必要なコンポーネント:
- Arduino UNO
- Wi-FiモジュールESP8266
- GPSモジュール
- USBケーブル
- 接続線
- ラップトップ
- 電源
- 16x2 LCD
- ブレッドボード
- Wi-Fiルーター
回路の説明:
この「Googleマッププロジェクトを使用した車両追跡」の回路は非常に単純であり、主にArduino UNO、GPSモジュール、およびESP8266Wi-Fiモジュールが必要です。ステータスを表示するためにオプションで接続された16x2LCDがあります。このLCDは、Arduinoの14-19(A0-A5)ピンに接続されています。
ここでは、GPSモジュールのTxピンがArduinoのデジタルピン番号10に直接接続されています。ここでソフトウェアシリアルライブラリを使用することにより、ピン10と11でシリアル通信を許可し、それぞれRxとTxにし、GPSモジュールのRxピンを開いたままにしました。デフォルトでは、Arduinoのピン0と1がシリアル通信に使用されますが、SoftwareSerialライブラリを使用することで、Arduinoの他のデジタルピンでのシリアル通信を許可できます。 12ボルトのアダプターはGPSモジュールに電力を供給するために使用されます。ここを通過して「ArduinoでGPSを使用する方法」を学び、座標を取得します。
Wi-FiモジュールESP8266のVccピンとGNDピンは3.3Vに直接接続され、ArduinoのGNDとCH_PDも3.3Vに接続されています。 ESP8266のTxピンとRxピンは、Arduinoのピン2と3に直接接続されています。ソフトウェアシリアルライブラリは、Arduinoのピン2と3でシリアル通信を可能にするためにもここで使用されます。 ESP8266 Wi-FiモジュールのArduinoへのインターフェースについてはすでに詳しく説明しました。また、このプロジェクトを実行する前に、「WiFiを使用してArduinoからWebページにデータを送信する方法」を参照してください。以下はESP8266の写真です。
ESP8266には2つのLEDがあります。1つは電源を示すための赤で、もう1つはデータ通信LEDである青です。ESPがTxピンを介してデータを送信すると、青色のLEDが点滅します。また、ESPを+5ボルトの電源に接続しないでください。接続するとデバイスが損傷する可能性があります。このプロジェクトでは、すべてのUART通信に9600ボーレートを選択しました。
ユーザーは、Wi-FiモジュールESP8266とArduinoの間の通信を、シリアルモニターで9600のボーレートで確認することもできます。
詳細な作業プロセスについては、このプロジェクトの最後にあるビデオも確認してください。
GPS度分から10進度への座標の収束:
GPSモジュールは衛星から座標を度分形式(ddmm.mmmm)で受信します。ここでは、Googleマップで場所を検索するために10進度形式が必要です。したがって、最初に、指定された式を使用して、座標をDegree MinuteFormatからDecimalDegreeFormatに変換する必要があります。
2856.3465(ddmm.mmmm)がGPSモジュールから受信する緯度であるとします。現在、最初の2つの数値は度で、残りは分です。
つまり、28は度で、56.3465は分です。
ここで、度の部分(28)を変換する必要はありませんが、60を除算して分部分を10進度に変換するだけで済みます。
10進度座標=度+分/ 60
10進座標= 28 + 56.3465 / 60
10進座標= 28 + 0.94
10進座標= 28.94
経度データについても同じプロセスが実行されます。Arduino Sketchで上記の式を使用して、座標を分度から小数度に変換しました。
float minut = lat_minut.toFloat(); minut = minut / 60; floatdegree = lat_degree.toFloat(); 緯度=度+分; minut = long_minut.toFloat(); minut = minut / 60; 度= long_degree.toFloat(); logitude = degree + minut;
プログラミングの説明:
このコードでは、SerialSoftwareライブラリを使用してESP8266とGPSモジュールをArduinoとインターフェイスさせています。次に、両方に異なるピンを定義し、UARTを9600ボーレートで初期化します。ArduinoとのインターフェースLCD用のLiquidCrystalライブラリも含まれています。
#include
その後、さまざまな目的で変数と文字列を定義または宣言する必要があります。
文字列webpage = ""; int i = 0、k = 0; int gps_status = 0; 文字列名= "
1.名前:あなたの名前
"; // 22 String dob ="2. DOB:1993年2月12日
"; // 21文字列番号="4.車両番号:RJ05 XY 4201
"; // 29文字列cordinat ="コーディネート:
"; // 17 String Latitude =" "; String logitude =" "; String gpsString =" "; char * test =" $ GPGGA ";次に、次のようなさまざまな目的のためにいくつかの関数を作成しました。
座標付きのGPSデータを取得するための関数:
void gpsEvent(){gpsString = ""; while(1){while(gps.available()> 0){char inChar =(char)gps.read(); gpsString + = inChar; if(i <7){if(gpsString!= test){i = 0;……………..。
先に説明したように、GPS文字列からデータを抽出し、そのデータを小数分形式から小数度形式に変換する関数。
void Coordinate2dec(){文字列lat_degree = ""; for(i = 18; i <20; i ++)lat_degree + = gpsString; 文字列lat_minut = ""; for(i = 20; i <28; i ++)lat_minut + = gpsString;……………..。
ESP8266を構成してWIFIに接続するためのコマンドをESP8266に送信するための機能。
void connect_wifi(String cmd、int t){int temp = 0、i = 0; while(1){Serial.println(cmd); Serial1.println(cmd); while(Serial1.available()> 0)…………………。
空show_coordinate() LCDとシリアルモニタと上の座標を表示するための機能を 無効get_ip() IPアドレスを取得するための機能。
ボイドセンド() ESP8266と使用してWebページに送信される情報の文字列作成するための機能を 無効sendwebdata() UARTを使用してWebページに情報文字列を送信するための機能を。
では 、ボイドループ 機能Arduinoの連続(ウェブページの更新)申請フォームのWebページを待ちます。
void loop(){k = 0; Serial.println( "Urページを更新してください"); lcd.setCursor(0,0); lcd.print( "更新してください"); lcd.setCursor(0,1); lcd.print( "あなたのWebページ.."); while(k <1000)……………..。
以下の完全なコードを確認してください。