오늘날 차량 추적 시스템 은 특히 차량 도난의 경우 매우 중요합니다. 당신이있는 경우 GPS 시스템은 귀하의 차량에 설치, 당신은 당신에게 차량 위치를 추적 할 수 있습니다, 그는 도난 차량을 추적하는 경찰을 도와줍니다. 이전에 우리는 차량의 위치 좌표가 휴대폰으로 전송되는 유사한 프로젝트를 구축했습니다. 여기에서 'GPS 및 GSM을 사용하는 Arduino 기반 차량 추적기'를 확인하십시오.
여기 에서는 Google지도 에서 차량을 추적 할 수있는 고급 버전의 차량 추적 시스템을 구축하고 있습니다. 이 프로젝트에서는 위치 좌표를 로컬 서버로 전송하고 컴퓨터 또는 모바일에서 '웹 페이지'를 열면 차량 위치 좌표가있는 Google지도 링크가 있습니다. 해당 링크를 클릭하면 Google지도로 이동하여 차량 위치를 표시합니다. Google Maps를 사용하는 이 차량 추적 시스템 에서 GPS 모듈 은 위치 좌표를 가져 오는 데 사용되며 Wi-Fi 모듈 은 Wi-Fi를 통해 컴퓨터 또는 모바일로 데이터를 계속 전송하는 데 사용 되며 Arduino 는 GPS와 Wi-Fi가 서로 대화하는 데 사용됩니다..
작동 원리:
차량을 추적하려면 GPS 모듈을 사용하여 차량의 좌표를 찾아야합니다. GPS 모듈은 좌표를 얻기 위해 위성과 지속적으로 통신합니다. 그런 다음 UART 를 사용하여 GPS에서 Arduino로 이러한 좌표를 보내야합니다. 그런 다음 Arduino는 GPS로 수신 된 데이터에서 필요한 데이터를 추출합니다.
그 전에 Arduino는 라우터를 구성 및 연결하고 IP 주소를 얻기 위해 Wi-Fi 모듈 ESP8266 에 명령을 보냅니다. Arduino가 좌표를 얻기 위해 GPS를 초기화하고 LCD에 '페이지 새로 고침 메시지'가 표시됩니다. 즉, 사용자는 웹 페이지를 새로 고침해야합니다. 사용자가 웹 페이지를 새로 고침하면 Arduino는 GPS 좌표를 가져 와서 Wi-Fi를 통해 웹 페이지 (로컬 서버)에 동일한 정보를 보내고 일부 추가 정보와 Google지도 링크를 포함합니다. 이제이 링크를 클릭하면 좌표가있는 Google지도로 리디렉션되고 Google지도의 빨간색 지점에 차량 현재 위치가 표시됩니다. 전체 과정은 마지막 비디오 에 제대로 표시됩니다.
필요한 구성 요소:
- Arduino UNO
- Wi-Fi 모듈 ESP8266
- GPS 모듈
- USB 케이블
- 전선 연결
- 노트북
- 전원 공급
- 16x2 LCD
- 브레드 보드
- Wi-Fi 라우터
회로 설명:
이 ' Google Maps를 사용한 차량 추적 프로젝트'의 회로 는 매우 간단하며 주로 Arduino UNO, GPS 모듈 및 ESP8266 Wi-Fi 모듈이 필요 합니다. 상태를 표시하기 위해 선택적으로 연결된 16x2 LCD 가 있습니다. 이 LCD는 Arduino의 14-19 (A0-A5) 핀에 연결됩니다.
여기서 GPS 모듈 의 Tx 핀 은 Arduino의 디지털 핀 번호 10에 직접 연결됩니다. 여기에서 소프트웨어 직렬 라이브러리를 사용하여 핀 10과 11에서 직렬 통신을 허용하고 각각 Rx 및 Tx로 만들고 GPS 모듈의 Rx 핀을 열어 둡니다. 기본적으로 Arduino의 핀 0과 1은 직렬 통신에 사용되지만 SoftwareSerial 라이브러리를 사용하면 Arduino의 다른 디지털 핀에서 직렬 통신을 허용 할 수 있습니다. 12V 어댑터는 GPS 모듈에 전원을 공급하는 데 사용됩니다. 여기를 통해 "Arduino에서 GPS 사용 방법"을 배우고 좌표를 얻으십시오.
Wi-Fi 모듈 ESP8266 의 Vcc 및 GND 핀은 3.3V에 직접 연결되고 Arduino 및 CH_PD의 GND도 3.3V에 연결됩니다. ESP8266의 Tx 및 Rx 핀은 Arduino의 핀 2 및 3에 직접 연결됩니다. 소프트웨어 직렬 라이브러리는 Arduino의 핀 2와 3에서 직렬 통신을 허용하는데도 사용됩니다. 우리는 이미 ESP8266 Wi-Fi 모듈과 Arduino의 인터페이스에 대해 자세히 다루었으며이 프로젝트를 수행하기 전에“WiFi를 사용하여 Arduino에서 웹 페이지로 데이터를 전송하는 방법”을 참조하십시오. 아래는 ESP8266의 사진입니다.
ESP8266에는 두 개의 LED가 있습니다. 하나는 전원을 나타내는 빨간색이고 두 번째는 데이터 통신 LED 인 파란색입니다. ESP가 Tx 핀을 통해 일부 데이터를 보낼 때 파란색 LED가 깜박입니다. 또한 ESP를 + 5V 공급 장치에 연결하지 마십시오. 그렇지 않으면 장치가 손상 될 수 있습니다. 이 프로젝트에서는 모든 UART 통신에 대해 9600 보오율을 선택했습니다.
사용자는 또한 직렬 모니터에서 9600의 전송 속도로 Wi-Fi 모듈 ESP8266과 Arduino 간의 통신을 볼 수 있습니다.
자세한 작업 과정은이 프로젝트 마지막에있는 비디오를 확인하십시오.
GPS 학위 분에서 십진수로 좌표 수렴:
GPS 모듈은 학위 분 형식 (ddmm.mmmm)으로 위성으로부터 좌표를 수신 하며 여기 에서 Google지도 에서 위치를 검색 하려면 십진수 형식이 필요합니다 . 따라서 먼저 주어진 공식을 사용하여 좌표를 Degree Minute 형식에서 Decimal Degree Format으로 변환해야합니다.
2856.3465 (ddmm.mmmm)가 GPS 모듈에서 수신하는 위도라고 가정합니다. 이제 처음 두 숫자는도이고 나머지는 분입니다.
따라서 28은도이고 56.3465는 분입니다.
이제도 부분 (28)을 변환 할 필요가 없지만 60을 나누어 분 부분을 십진수로 변환하면됩니다.
십진수 좌표 =도 + 분 / 60
십진수 좌표 = 28 + 56.3465 / 60
십진수 좌표 = 28 + 0.94
십진수 좌표 = 28.94
경도 데이터에 대해서도 동일한 프로세스가 수행됩니다. Arduino Sketch에서 위의 공식을 사용하여 좌표를 분 단위에서 십진수로 변환했습니다.
float minut = lat_minut.toFloat (); minut = minut / 60; float degree = lat_degree.toFloat (); 위도 = degree + minut; minut = long_minut.toFloat (); minut = minut / 60; degree = long_degree.toFloat (); logitude = degree + minut;
프로그래밍 설명:
이 코드에서는 SerialSoftware 라이브러리를 사용하여 Arduino와 ESP8266 및 GPS 모듈을 인터페이스했습니다. 그런 다음 둘 다에 대해 서로 다른 핀을 정의하고 9600 보오율로 UART를 초기화했습니다. Arduino와 LCD 인터페이스를위한 LiquidCrystal 라이브러리도 포함되어 있습니다.
#포함
그 후에 다른 목적으로 변수와 문자열을 정의하거나 선언해야합니다.
String webpage = ""; int i = 0, k = 0; int gps_status = 0; 문자열 이름 = "
1. 이름: 귀하의 이름
"; // 22 문자열 dob ="2. 생년월일: 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! = 테스트) {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;……………….
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)……………….
void show_coordinate () 함수는 LCD 및 Serial Monitor에 좌표를 표시하고 void get_ip () 함수는 IP 주소를 가져 옵니다 .
ESP8266을 이용하여 웹 페이지로 보낼 정보 문자열을 생성하는 Void Send () 함수와UART를 이용하여 웹 페이지로 정보 문자열을 보내는 함수 void sendwebdata () .
에서는 보이드 루프 기능의 Arduino 연속적 신청서 웹 페이지 (리프레싱 웹 페이지) 기다린다.
무효 루프 () {k = 0; Serial.println ("페이지를 새로 고침하십시오"); lcd.setCursor (0,0); lcd.print ("새로 고침하십시오"); lcd.setCursor (0,1); lcd.print ("웹 페이지.."); while (k <1000)……………….
아래의 전체 코드를 확인하십시오.