- Как работи:
- Необходими компоненти:
- Обяснение на веригата:
- Преобразуване на координати от минута до десетична степен от GPS:
- Обяснение на програмирането:
Системата за проследяване на превозни средства става много важна днес, особено в случай на откраднати превозни средства. Ако в автомобила ви е инсталирана GPS система, можете да проследявате местоположението на автомобила и това помага на полицията да проследява откраднатите превозни средства. По-рано изградихме подобен проект, в който координатите на местоположението на превозното средство се изпращат на мобилния телефон, проверете тук „Базиран на Arduino Vehicle Tracker с помощта на GPS и GSM.
Тук изграждаме по-усъвършенствана версия на системата за проследяване на превозни средства, в която можете да проследявате автомобила си в Google Maps. В този проект ние ще изпратим координатите на местоположението на локалния сървър и просто трябва да отворите „уеб страница“ на вашия компютър или мобилен телефон, където ще намерите връзка към Google Maps с вашите координати за местоположение на превозни средства. Когато кликнете върху тази връзка, тя ще ви отведе в Google Maps, показвайки местоположението на вашите превозни средства. В тази система за проследяване на превозни средства, използваща Google Maps, GPS модулът се използва за получаване на координатите на местоположението, Wi-Fi модулът за поддържане на изпращане на данни към компютър или мобилен телефон чрез Wi-Fi и Arduino се използва, за да накарат GPS и Wi-Fi да говорят помежду си.
Как работи:
За да проследим превозното средство, трябва да намерим координатите на превозното средство с помощта на GPS модул. GPS модулът комуникира непрекъснато със сателита за получаване на координати. След това трябва да изпратим тези координати от GPS до нашия Arduino с помощта на UART. И тогава Arduino извлича необходимите данни от получените данни чрез GPS.
Преди това Arduino изпраща команда на Wi-Fi модул ESP8266 за конфигуриране и свързване към рутера и получаване на IP адреса. След това Arduino инициализира GPS за получаване на координати и LCD дисплеят показва съобщение за обновяване на страницата. Това означава, че потребителят трябва да опресни уеб страницата. Когато потребителят опреснява уеб страницата, Arduino получава GPS координатите и ги изпраща до уеб страница (локален сървър) през Wi-Fi, с допълнителна информация и връзка към Google Maps в нея. Сега, като щракне върху тази връзка, потребителят пренасочва към Google Maps с координатите и след това той / тя ще получи текущото местоположение на превозното средство на червеното място в Google Maps. Целият процес е правилно показан във видеото в края.
Необходими компоненти:
- Arduino UNO
- Wi-Fi модул ESP8266
- GPS модул
- USB кабел
- Свързващи проводници
- Лаптоп
- Захранване
- 16x2 LCD
- Дъска за хляб
- Wi-Fi рутер
Обяснение на веригата:
Веригата за това „ Проследяване на превозни средства с помощта на проект на Google Maps“ е много проста и се нуждаем главно от Arduino UNO, GPS модул и Wi-Fi модул ESP8266. Налице е 16x2 LCD, свързано по избор за показване на състоянието. Този LCD е свързан на 14-19 (A0-A5) щифтове на Arduino.
Тук Tx щифтът на GPS модула е директно свързан с цифров щифт номер 10 на Arduino. Използвайки тук софтуерна серийна библиотека, ние разрешихме серийна комуникация на щифтове 10 и 11 и ги направихме съответно Rx и Tx и оставихме Rx щифта на GPS модула отворен. По подразбиране Пин 0 и 1 на Arduino се използват за серийна комуникация, но като използваме библиотеката SoftwareSerial, можем да разрешим серийна комуникация на други цифрови щифтове на Arduino. 12-волтов адаптер се използва за захранване на GPS модула. Преминете от тук, за да научите „Как да използвате GPS с Arduino“ и да получите координатите.
Винтовите и GND изводи на Wi-Fi модул ESP8266 са директно свързани към 3.3V и GND на Arduino, а CH_PD също е свързан с 3.3V. Tx и Rx щифтовете на ESP8266 са директно свързани към щифтове 2 и 3 на Arduino. Тук се използва и софтуерна серийна библиотека, която позволява серийна комуникация на пинове 2 и 3 на Arduino. Вече разгледахме подробно взаимодействието на Wi-Fi модула ESP8266 с Arduino, също така моля, преминете през „Как да изпращате данни от Arduino до уеб страница чрез WiFi“, преди да направите този проект. По-долу е снимката на ESP8266:
ESP8266 има два светодиода, единият е червен, за индикация на захранването, а вторият е син, който е светодиод за комуникация на данни. Синият светодиод мига, когато ESP изпраща някои данни чрез своя Tx щифт. Също така, не свързвайте ESP към захранване +5 волта, в противен случай устройството ви може да се повреди. Тук в този проект ние избрахме 9600 скорости на предаване за всички UART комуникации.
Потребителят може да види и комуникацията между Wi-Fi модул ESP8266 и Arduino на серийния монитор при скорост на предаване 9600:
Също така проверете видеото в края на този проект за подробен работен процес.
Преобразуване на координати от минута до десетична степен от GPS:
Модулът GPS получава координати от сателит във формат Degree Minute (ddmm.mmmm) и тук се нуждаем от формат Decimal Degree за търсене на местоположението в Google Maps. Така че първо трябва да преобразуваме координатите от Формат на минутна степен в Десетичен градусов формат, като използваме дадената формула.
Да предположим, че 2856.3465 (ddmm.mmmm) е Latitude, който получаваме от 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; плаваща степен = lat_degree.toFloat (); географска ширина = градус + минута; minut = long_minut.toFloat (); minut = minut / 60; степен = long_degree.toFloat (); географска ширина = степен + минута;
Обяснение на програмирането:
В този код използвахме библиотека SerialSoftware за свързване на ESP8266 и GPS модул с Arduino. След това дефинирахме различни пинове и за двете и инициализираме UART с 9600 скорости на предаване. Включен е и LiquidCrystal Library за LCD интерфейс с Arduino.
#include
След него трябва да дефинираме или декларираме променлива и низ за различна цел.
Низ уеб страница = ""; int i = 0, k = 0; int gps_status = 0; Име на низ = "
1. Име: Вашето име
"; // 22 String dob ="2. Място на раждане: 12 февруари 1993 г.
"; // 21 String number ="4. Номер на превозното средство: RJ05 XY 4201
"; // 29 String 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 () {String lat_degree = ""; за (i = 18; i <20; i ++) lat_degree + = gpsString; Низ lat_minut = ""; за (i = 20; i <28; i ++) lat_minut + = gpsString;……………….
Функция за изпращане на команди до ESP8266 за конфигуриране и свързване с WIFI.
void connect_wifi (String cmd, int t) {int temp = 0, i = 0; докато (1) {Serial.println (cmd); Serial1.println (cmd); докато (Serial1.available ()> 0)……………….
void show_coordinate () функция за показване на координати на LCD и сериен монитор и void get_ip () функция за получаване на IP адрес.
Функция Void Send () за създаване на низ от информация, която трябва да бъде изпратена до уеб страница с помощта на ESP8266 и void sendwebdata () Функция за изпращане на информационен низ към уеб страница чрез UART.
Във функцията за невалидни цикли Arduino непрекъснато чака уеб страница с формуляр за заявка (Опресняване на уеб страница).
цикъл void () {k = 0; Serial.println ("Моля, опреснете Ur страницата"); lcd.setCursor (0,0); lcd.print ("Моля, опреснете"); lcd.setCursor (0,1); lcd.print ("Вашата уеб страница.."); докато (k <1000)……………….
Проверете пълния код по-долу.