- Як це працює:
- Необхідні компоненти:
- Пояснення схеми:
- Перетворення координат від хвилини до десяткової градусної шкали GPS:
- Пояснення програмування:
Система відстеження транспортних засобів стає дуже важливою вже сьогодні, особливо у випадку викрадених автомобілів. Якщо у вашому автомобілі встановлена система GPS, ви можете відстежувати місцезнаходження вашого автомобіля, і це допомагає поліції відстежувати викрадені транспортні засоби. Раніше ми побудували подібний проект, в якому координати місцезнаходження транспортного засобу надсилаються на стільниковий телефон, перевірте тут «Відстежувач автомобілів на базі Arduino за допомогою GPS та GSM.
Тут ми створюємо більш вдосконалену версію системи відстеження транспортних засобів, в якій ви можете відстежувати свій транспортний засіб на Картах Google. У цьому проекті ми надішлемо координати місцезнаходження на Локальний сервер, і вам просто потрібно відкрити „веб-сторінку” на своєму комп’ютері чи мобільному телефоні, де ви знайдете Посилання на Карти Google із вашими координатами розташування транспортних засобів. Коли ви натискаєте це посилання, ви потрапляєте на Карти Google, показуючи місцезнаходження вашого автомобіля. У цьому автомобілі система стеження з допомогою 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 для отримання координат, а на РК-дисплеї з'являється повідомлення "Оновлення сторінки". Це означає, що користувачеві потрібно оновити веб-сторінку. Коли користувач оновлює веб-сторінку, Arduino отримує координати GPS і надсилає їх на веб-сторінку (локальний сервер) через Wi-Fi, з деякою додатковою інформацією та посиланням на Google Maps. Тепер, натиснувши це посилання, користувач перенаправляє на Google Maps з координатою, а потім він / вона отримає поточне місце розташування автомобіля в червоній точці на Google Maps. Весь процес належним чином показано у відео у кінці.
Необхідні компоненти:
- Arduino UNO
- Модуль Wi-Fi ESP8266
- GPS-модуль
- USB-кабель
- Підключення проводів
- Ноутбук
- Блок живлення
- РК-дисплей 16x2
- Хлібна дошка
- Wi-Fi роутер
Пояснення схеми:
Схема для цього " Відстеження транспортних засобів за допомогою проекту Google Maps" дуже проста, і нам в основному потрібні Arduino UNO, GPS-модуль та Wi-Fi-модуль ESP8266. Для відображення стану додатково підключений РК-дисплей 16x2. Цей РК-екран підключений на 14-19 (A0-A5) висновках Arduino.
Тут штекер Tx модуля GPS безпосередньо підключений до цифрового штифта № 10 Arduino. Застосувавши тут послідовну бібліотеку програмного забезпечення, ми дозволили послідовний зв’язок на виводах 10 та 11, зробили їх відповідно Rx та Tx, а штифт Rx модуля GPS залишили відкритим. За замовчуванням для послідовного зв'язку використовуються виводи 0 та 1 Arduino, але, використовуючи бібліотеку SoftwareSerial, ми можемо дозволити послідовний зв’язок на інших цифрових контактах Arduino. 12-вольтовий адаптер використовується для живлення GPS-модуля. Пройдіть сюди, щоб дізнатись “Як користуватися GPS з Arduino” та отримати координати.
Виводи Vcc та GND модуля Wi-Fi ESP8266 безпосередньо підключені до 3,3 В, а GND Arduino, а CH_PD також 3,3 В. Виводи Tx і Rx ESP8266 безпосередньо підключені до виводів 2 і 3 Arduino. Тут також використовується програмна послідовна бібліотека, яка дозволяє послідовний зв’язок на контактах 2 і 3 Arduino. Ми вже детально висвітлювали взаємодію модуля Wi-Fi ESP8266 з Arduino, перед тим, як робити цей проект, також, будь ласка, пройдіть “Як надсилати дані з Arduino на веб-сторінку за допомогою Wi-Fi”. Нижче наведено зображення ESP8266:
ESP8266 має два світлодіоди, один - червоний, для позначення живлення, а другий - синій, що є світлодіодом передачі даних. Синій світлодіод блимає, коли ESP надсилає деякі дані через свій Tx-штифт. Також не підключайте ESP до джерела живлення +5 вольт, інакше пристрій може пошкодитися. У цьому проекті ми вибрали 9600 бод для всіх комунікацій UART.
Користувач також може бачити зв'язок між модулем Wi-Fi ESP8266 та Arduino на послідовному моніторі зі швидкістю передачі даних 9600:
Також перегляньте Відео в кінці цього проекту для детального робочого процесу.
Перетворення координат від хвилини до десяткової градусної шкали GPS:
Модуль GPS отримує координати від супутника у форматі градусних хвилин (ddmm.mmmm), і тут нам потрібен формат десяткового градуса для пошуку місця на Картах Google. Отже, спочатку нам потрібно перетворити координати з Формули Хвилин Градуса в Формат Десятків Градусів за допомогою заданої формули.
Припустимо, 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; плаваючий градус = lat_degree.toFloat (); широта = градус + хвилина; minut = long_minut.toFloat (); minut = minut / 60; градус = long_degree.toFloat (); довгота = градус + хвилина;
Пояснення програмування:
У цьому коді ми використовували бібліотеку SerialSoftware для взаємодії ESP8266 та GPS-модуля з Arduino. Потім ми визначили різні виводи для обох та ініціалізуємо UART зі швидкістю передачі 9600 бод. Також включена бібліотека LiquidCrystal для інтерфейсу РК-дисплея з Arduino.
#включати
Після цього нам потрібно визначити або оголосити змінну та рядок для різних цілей.
Рядок веб-сторінки = ""; int i = 0, k = 0; int gps_status = 0; Ім'я рядка = "
1. Ім'я: Ваше ім’я
"; // 22 Рядок dob ="2. Дата народження: 12 лютого 1993 р
"; // 21 Рядок номер ="4. Номер транспортного засобу: RJ05 XY 4201
"; // 29 Рядок cordinat ="Координати:
"; // 17 Широта рядка =" "; Логітація рядка =" "; Рядок gpsString =" "; char * test =" $ GPGGA ";Тоді ми створили деякі функції для різних цілей, такі як:
Функція отримання даних GPS з координатами:
недійсний gpsEvent () {gpsString = ""; while (1) {while (gps.available ()> 0) {char inChar = (char) gps.read (); gpsString + = inChar; if (i <7) {if (gpsString! = тест) {i = 0;……………….
Функція для вилучення даних із рядка GPS та перетворення цих даних у десятковий формат градусів із десяткової хвилини, як пояснювалося раніше.
порожня координата2dec () {Рядок 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; while (1) {Serial.println (cmd); Serial1.println (cmd); в той час як (Serial1.available ()> 0)……………….
void show_coordinate () для відображення координат на РК-дисплеї та послідовному моніторі та void get_ip () для отримання IP-адреси.
Функція Void Send () для створення рядка інформації, що надсилається на веб-сторінку за допомогою ESP8266 та void sendwebdata () Функція для надсилання інформаційного рядка на веб-сторінку за допомогою UART.
У незначною петлевий функції Arduino безперервно чекати форми запиту веб - сторінки (веб - сторінки Освіжаючий).
цикл void () {k = 0; Serial.println ("Будь ласка, оновіть сторінку"); lcd.setCursor (0,0); lcd.print ("Будь ласка, оновіть"); lcd.setCursor (0,1); lcd.print ("Ваша веб-сторінка.."); в той час як (k <1000)……………….
Перевірте повний код нижче.