Відмінності між версіями «Arduino GPS shield»
(Створена сторінка: '''Arduino GPS shield''' - це плата з '''GPS''' модулем, розроблена для отримання сигналу від супутникі...) |
|||
(Не показано одну проміжну версію цього користувача) | |||
Рядок 1: | Рядок 1: | ||
− | '''Arduino GPS shield''' - це плата з '''GPS''' модулем, розроблена для отримання сигналу від супутників системи '''GPS''' (''Global Position System''), яка | + | [[Файл:Arduino GPS shield.jpg|250px|thumb|rigth|Arduino GPS shield]] |
+ | |||
+ | [[Файл:Arduino GPS Shield Full.jpg|250px|thumb|rigth|Підключений ''Arduino GPS shield'' до плати Arduino]] | ||
+ | |||
+ | |||
+ | '''Arduino GPS shield''' - це плата з '''GPS''' модулем, розроблена для отримання сигналу від супутників системи '''GPS''' (''Global Position System''), яка також містить в собі '''SD інтерфейс''', що надзвичайно зручно для запису положення на '''SD карти'''. | ||
+ | |||
+ | Напруга живлення 5В/3.3В робить її сумісною з платами: ''Arduino, Leaf Maple, IFlat32'' та іншими ''Arduino''-сумісними платами. | ||
+ | |||
Шілд має компактний форм-фактор, високу продуктивність і низьке енргоспоживання. | Шілд має компактний форм-фактор, високу продуктивність і низьке енргоспоживання. | ||
+ | |||
Використовується популярний '''Sirf Star III''' чіп, який може приймати до 20 супутників одночасно і використовує '''TTFF''' (''Time to first fix'') при слабкому сигналі. | Використовується популярний '''Sirf Star III''' чіп, який може приймати до 20 супутників одночасно і використовує '''TTFF''' (''Time to first fix'') при слабкому сигналі. | ||
− | |||
+ | Базою для створення цієї плати слугував популярний GPS-модуль '''"EB-365"'''. | ||
+ | |||
+ | Модуль реалізований за допомогою стандартного протоколу передачі даних позиціювання '''NMEA''' через послідовний порт. | ||
+ | |||
+ | GPS-модуль визначає географічні координати, висоту над рівнем моря, швидкість переміщення, дату і час ''UTC''. | ||
== Характеристики == | == Характеристики == | ||
Рядок 13: | Рядок 26: | ||
*Екстремально швидкий час ''TTFF'' при низькому рівні сигналу; | *Екстремально швидкий час ''TTFF'' при низькому рівні сигналу; | ||
*''UART'' інтерфейс; | *''UART'' інтерфейс; | ||
− | *Діпазон робочих температур: від -40℃ до +85℃ | + | *Напруга живлення ''5В/3.3В'' |
+ | *Діпазон робочих температур: від ''-40℃'' до ''+85℃'' | ||
+ | |||
+ | |||
+ | |||
+ | [[Файл:ТаблицяGps.png|500px|thumb|left]] | ||
[[Файл:Arduino_GPS_shield_схема.jpg|500px|thumb|center|Схема Arduino GPS shield]] | [[Файл:Arduino_GPS_shield_схема.jpg|500px|thumb|center|Схема Arduino GPS shield]] | ||
Рядок 20: | Рядок 38: | ||
== Застосування == | == Застосування == | ||
− | [[Файл:GPScar.jpg| | + | [[Файл:GPScar.jpg|250px|thumb|rigth|Приклад застосування пристрою Arduino із модулем ''Arduino GPS shield'' в автомобілі]] |
+ | |||
+ | [[Файл:Arduino GPS LCD full.jpeg|300px|thumb|rigth|Пристрій Arduino. Відображення місцезнаходження та швидкості руху]] | ||
+ | |||
+ | [[Файл:Arduino_GPS_LCD.jpg|250px|thumb|rigth|Відображення географічних координат пристрою Arduino]] | ||
+ | |||
+ | *'''Автомобільна навігація''': | ||
+ | Автомобілі, спортивні автоперегони, пошта, автобуси, громадський транспорт та ін. | ||
+ | |||
+ | *'''Морська навігація''': | ||
+ | Кораблі, лайнери, катери та ін. | ||
+ | |||
+ | *'''Залізнична навігація''': | ||
+ | Поїзди, диспечерські установи для контролю за рухом залізничного транспорту. | ||
− | * | + | *'''Персональне місцезнаходження''': |
− | + | Захоплення ентузіастів, туристичне приладдя | |
− | + | ||
− | *Створення програм та систем прокладання маршрутів | + | *'''Створення програм та систем прокладання маршрутів''': |
+ | GPS-навігатори. | ||
== Переваги над іншими модулями GPS == | == Переваги над іншими модулями GPS == | ||
Рядок 31: | Рядок 63: | ||
*'''Низька вартість''' | *'''Низька вартість''' | ||
− | У порівнянні зі схожими апратними платформами, плати Arduino мають відносно низьку вартість: готові модулі Arduino | + | У порівнянні зі схожими апратними платформами, плати Arduino мають відносно низьку вартість: готові модулі Arduino не дорожчі 50$, а можливість власноруч зібрати плату дозволяє максимально зекономити кошти і отримати пристрій за мінімальну ціну. |
*'''Кросплатформеність''' | *'''Кросплатформеність''' | ||
Рядок 45: | Рядок 77: | ||
Програмне забезпечення Arduino має відкритий вихідний код, завдяки якому досвідчені програмісти можуть змінювати і доповнювати його, а можливості мови Ардуіно можна розширювати за допомогою С++ бібліотек. | Програмне забезпечення Arduino має відкритий вихідний код, завдяки якому досвідчені програмісти можуть змінювати і доповнювати його, а можливості мови Ардуіно можна розширювати за допомогою С++ бібліотек. | ||
Оскільки мова програмування Arduino заснована на мові ''AVR C'', то користувачі можуть користуватися мовою програмування ''С'' або безпосередньо вставляти фрагменти коду в програми Arduino. | Оскільки мова програмування Arduino заснована на мові ''AVR C'', то користувачі можуть користуватися мовою програмування ''С'' або безпосередньо вставляти фрагменти коду в програми Arduino. | ||
+ | |||
+ | == Недоліки Arduino GPS модуля == | ||
+ | |||
+ | *Низька надійсність в екстремальних умовах використання | ||
+ | |||
+ | *Громіздкість та великі розміри плати в порівнянні з іншими GPS-модулями | ||
+ | |||
+ | *Скомпільована програма на мові Arduino займає більше пам'яті в порівнянні з іншими мовами через надлишню "перевірку на ідіота" в бібліотеках Arduino, яка призначена для початківців. | ||
+ | |||
+ | |||
+ | == Програмування. Приклад програми. == | ||
+ | |||
+ | |||
+ | ''В даному прикладі використаємо Arduino GPS shield від libelium.com'' | ||
+ | |||
+ | *Підключити GPS-шілд до Arduino, а плату до комп'ютера та завантажити наступну програму в мікроконтролер: | ||
+ | |||
+ | |||
+ | '''КОД ПРОГРАМИ''' | ||
+ | '' | ||
+ | // include the SoftwareSerial library | ||
+ | #include <SoftwareSerial.h> | ||
+ | |||
+ | // Constants | ||
+ | #define rxPin 9 //rx pin in gps connection | ||
+ | #define txPin 8 //tx pin in gps connection | ||
+ | |||
+ | // set up the serial port | ||
+ | SoftwareSerial gps = SoftwareSerial(rxPin, txPin); | ||
+ | |||
+ | // variables | ||
+ | byte byteGPS = 0; | ||
+ | int i = 0; | ||
+ | int h = 0; | ||
+ | |||
+ | // Buffers for data input | ||
+ | char inBuffer[300] = ""; | ||
+ | char GPS_RMC[100]=""; | ||
+ | char GPS_GGA[100]=""; | ||
+ | |||
+ | void setup() | ||
+ | { | ||
+ | |||
+ | //setup for mySerial port | ||
+ | pinMode(rxPin, INPUT); | ||
+ | pinMode(txPin, OUTPUT); | ||
+ | gps.begin(4800); | ||
+ | |||
+ | //setup for Serial port | ||
+ | Serial.begin(19200); | ||
+ | |||
+ | delay(1000); | ||
+ | } | ||
+ | |||
+ | void loop() | ||
+ | { | ||
+ | // Read the RMC sentence from GPS | ||
+ | byteGPS = 0; | ||
+ | byteGPS = gps.read(); | ||
+ | |||
+ | while(byteGPS != 'R') | ||
+ | { | ||
+ | byteGPS = gps.read(); | ||
+ | } | ||
+ | |||
+ | GPS_RMC[0]='$'; | ||
+ | GPS_RMC[1]='G'; | ||
+ | GPS_RMC[2]='P'; | ||
+ | GPS_RMC[3]='R'; | ||
+ | |||
+ | i = 4; | ||
+ | |||
+ | while(byteGPS != '*' | ||
+ | { | ||
+ | byteGPS = gps.read(); | ||
+ | inBuffer[i]=byteGPS; | ||
+ | GPS_RMC[i]=byteGPS; | ||
+ | i++; | ||
+ | } | ||
+ | |||
+ | // Read GGA sentence from GPS | ||
+ | |||
+ | byteGPS = 0; | ||
+ | byteGPS = gps.read(); | ||
+ | |||
+ | while(byteGPS != 'A') | ||
+ | { | ||
+ | byteGPS = gps.read(); | ||
+ | } | ||
+ | GPS_GGA[0]='$'; | ||
+ | GPS_GGA[1]='G'; | ||
+ | GPS_GGA[2]='P'; | ||
+ | GPS_GGA[3]='G'; | ||
+ | GPS_GGA[4]='G'; | ||
+ | GPS_GGA[5]='A'; | ||
+ | |||
+ | i = 6; | ||
+ | |||
+ | while(byteGPS != '*') | ||
+ | { | ||
+ | byteGPS = gps.read(); | ||
+ | inBuffer[i]=byteGPS; | ||
+ | GPS_GGA[i]=byteGPS; | ||
+ | i++; | ||
+ | } | ||
+ | |||
+ | // print the GGA sentence to USB | ||
+ | Serial.print("GGA sentence: "); | ||
+ | |||
+ | h = 0; | ||
+ | |||
+ | while(GPS_GGA[h] != 42) | ||
+ | { | ||
+ | Serial.print(GPS_GGA[h],BYTE); | ||
+ | h++; | ||
+ | } | ||
+ | |||
+ | Serial.println(); | ||
+ | |||
+ | // print the RMC sentence to USB | ||
+ | Serial.print("RMC sentence: "); | ||
+ | |||
+ | h = 0; | ||
+ | |||
+ | while(GPS_RMC[h] != 42) | ||
+ | { | ||
+ | Serial.print(GPS_RMC[h],BYTE); | ||
+ | h++; | ||
+ | } | ||
+ | Serial.println(); | ||
+ | } | ||
+ | |||
+ | '' | ||
+ | |||
+ | ---- | ||
+ | |||
+ | Результат виконання програми ми побачимо на екрані комп'ютера: | ||
+ | |||
+ | [[Файл:ResultGPS.jpg|500px|thumb|center|Результат виконання програми]] | ||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | Налаштуваня GPS-шілда здійснюється за допомогою '''''NMEA''' команд'', через які можна активувати або деактивувати деякі параметри чипа: | ||
+ | |||
+ | ''GGA, GLL, GSA, GSV, RMC'' та ''VTG''. | ||
+ | |||
+ | *'''Приклад''' | ||
+ | |||
+ | GGA: | ||
+ | Activate => $PSRF103,00,00,01,01*25 | ||
+ | Deactivate =>$PSRF103,00,00,00,01*24 | ||
+ | |||
+ | GLL: | ||
+ | Activate => $PSRF103,01,00,01,01*24 | ||
+ | Deactivate => $PSRF103,01,00,00,01*25 | ||
+ | |||
+ | ---- | ||
+ | |||
+ | == Підключення GPS модуля до Arduino (режим USB шлюза) == | ||
+ | |||
+ | *Для підключення модуля GPS в режимі шлюза, необхідно витягнути мікроконтролер '''Atmega''' із плати Arduino. | ||
+ | |||
+ | Цим самим послідовний порт GPS-модуля буде напряму підключений до USB. | ||
+ | |||
+ | *Під'єднайте GPS-шілд до плати Arduino. Після підключення потрібно подати на нього живлення. | ||
+ | |||
+ | Для цього використайте два невеликих провода (''червоний'' '''5V''' і ''чорний'' '''GND'''). | ||
+ | |||
+ | [[Файл:tutorial_gps.jpg|300px|thumb|center|Приклад підключення]] | ||
+ | |||
+ | *Підключіть Arduino до USB-порту комп'ютера, запустить програуму для прослуховування послідовного порта. Використайте наступні конфігурації серійного | ||
+ | порта: 4800 бод, 8 біт даних, без перевірки парності, 1 стоп-біт, без керування потоком (''4800 baud, 8 data bits, no parity, 1 stop bit, no flow control''). | ||
+ | |||
+ | На термінал будуть поступати дані з модуля – координати, висота і т.д. | ||
+ | |||
+ | [[Файл:tutorial_gps2.jpg|300px|thumb|center|Результат виконання]] | ||
+ | |||
+ | |||
+ | |||
+ | == Джерела == | ||
+ | <br>1. http://www.compoexpress.com/modules-and-sensors/gps-gprs/arduino-gps-shield.html | ||
+ | <br>2. https://arduino-ua.com/prod171-Arduino_GPS_shield | ||
+ | <br>3. http://arduino.ua/ | ||
+ | <br>4. https://jt5.ru/examples/arduino-gps/ |
Поточна версія на 13:48, 5 червня 2017
Arduino GPS shield - це плата з GPS модулем, розроблена для отримання сигналу від супутників системи GPS (Global Position System), яка також містить в собі SD інтерфейс, що надзвичайно зручно для запису положення на SD карти.
Напруга живлення 5В/3.3В робить її сумісною з платами: Arduino, Leaf Maple, IFlat32 та іншими Arduino-сумісними платами.
Шілд має компактний форм-фактор, високу продуктивність і низьке енргоспоживання.
Використовується популярний Sirf Star III чіп, який може приймати до 20 супутників одночасно і використовує TTFF (Time to first fix) при слабкому сигналі.
Базою для створення цієї плати слугував популярний GPS-модуль "EB-365".
Модуль реалізований за допомогою стандартного протоколу передачі даних позиціювання NMEA через послідовний порт.
GPS-модуль визначає географічні координати, висоту над рівнем моря, швидкість переміщення, дату і час UTC.
Зміст
Характеристики
- Побудований на базі популярного GPS модуля ЕВ-365.
- Виводи RX, TX модуля можуть бути підключені к виводів D0-D7 Arduino шляхом переключення перемичок на гребенці;
- Роз'єм Micro SD;
- Роз'єм для активної антени з високою чуттєвістю, сумісний з нормальною антеною;
- Екстремально швидкий час TTFF при низькому рівні сигналу;
- UART інтерфейс;
- Напруга живлення 5В/3.3В
- Діпазон робочих температур: від -40℃ до +85℃
Застосування
- Автомобільна навігація:
Автомобілі, спортивні автоперегони, пошта, автобуси, громадський транспорт та ін.
- Морська навігація:
Кораблі, лайнери, катери та ін.
- Залізнична навігація:
Поїзди, диспечерські установи для контролю за рухом залізничного транспорту.
- Персональне місцезнаходження:
Захоплення ентузіастів, туристичне приладдя
- Створення програм та систем прокладання маршрутів:
GPS-навігатори.
Переваги над іншими модулями GPS
- Низька вартість
У порівнянні зі схожими апратними платформами, плати Arduino мають відносно низьку вартість: готові модулі Arduino не дорожчі 50$, а можливість власноруч зібрати плату дозволяє максимально зекономити кошти і отримати пристрій за мінімальну ціну.
- Кросплатформеність
Програмне забезпечення Arduino працює на операційних системах Windows, Macintosh OSX та Linux, в той, коли більшість подібних систем орієнтовані на роботу лише на Windows.
- Просте середовище програмування
Середовище програмування Arduino зрозуміле і просте для початківців і в той же час гнучке для досвідчених користувачів.
- Розширене програмне забезпечення з відкритим серцевим кодом
Програмне забезпечення Arduino має відкритий вихідний код, завдяки якому досвідчені програмісти можуть змінювати і доповнювати його, а можливості мови Ардуіно можна розширювати за допомогою С++ бібліотек. Оскільки мова програмування Arduino заснована на мові AVR C, то користувачі можуть користуватися мовою програмування С або безпосередньо вставляти фрагменти коду в програми Arduino.
Недоліки Arduino GPS модуля
- Низька надійсність в екстремальних умовах використання
- Громіздкість та великі розміри плати в порівнянні з іншими GPS-модулями
- Скомпільована програма на мові Arduino займає більше пам'яті в порівнянні з іншими мовами через надлишню "перевірку на ідіота" в бібліотеках Arduino, яка призначена для початківців.
Програмування. Приклад програми.
В даному прикладі використаємо Arduino GPS shield від libelium.com
- Підключити GPS-шілд до Arduino, а плату до комп'ютера та завантажити наступну програму в мікроконтролер:
КОД ПРОГРАМИ
// include the SoftwareSerial library #include <SoftwareSerial.h> // Constants #define rxPin 9 //rx pin in gps connection #define txPin 8 //tx pin in gps connection // set up the serial port SoftwareSerial gps = SoftwareSerial(rxPin, txPin); // variables byte byteGPS = 0; int i = 0; int h = 0; // Buffers for data input char inBuffer[300] = ""; char GPS_RMC[100]=""; char GPS_GGA[100]=""; void setup() { //setup for mySerial port pinMode(rxPin, INPUT); pinMode(txPin, OUTPUT); gps.begin(4800); //setup for Serial port Serial.begin(19200); delay(1000); } void loop() { // Read the RMC sentence from GPS byteGPS = 0; byteGPS = gps.read(); while(byteGPS != 'R') { byteGPS = gps.read(); } GPS_RMC[0]='$'; GPS_RMC[1]='G'; GPS_RMC[2]='P'; GPS_RMC[3]='R'; i = 4; while(byteGPS != '*' { byteGPS = gps.read(); inBuffer[i]=byteGPS; GPS_RMC[i]=byteGPS; i++; } // Read GGA sentence from GPS byteGPS = 0; byteGPS = gps.read(); while(byteGPS != 'A') { byteGPS = gps.read(); } GPS_GGA[0]='$'; GPS_GGA[1]='G'; GPS_GGA[2]='P'; GPS_GGA[3]='G'; GPS_GGA[4]='G'; GPS_GGA[5]='A'; i = 6; while(byteGPS != '*') { byteGPS = gps.read(); inBuffer[i]=byteGPS; GPS_GGA[i]=byteGPS; i++; } // print the GGA sentence to USB Serial.print("GGA sentence: "); h = 0; while(GPS_GGA[h] != 42) { Serial.print(GPS_GGA[h],BYTE); h++; } Serial.println(); // print the RMC sentence to USB Serial.print("RMC sentence: "); h = 0; while(GPS_RMC[h] != 42) { Serial.print(GPS_RMC[h],BYTE); h++; } Serial.println(); }
Результат виконання програми ми побачимо на екрані комп'ютера:
Налаштуваня GPS-шілда здійснюється за допомогою NMEA команд, через які можна активувати або деактивувати деякі параметри чипа:
GGA, GLL, GSA, GSV, RMC та VTG.
- Приклад
GGA: Activate => $PSRF103,00,00,01,01*25 Deactivate =>$PSRF103,00,00,00,01*24
GLL: Activate => $PSRF103,01,00,01,01*24 Deactivate => $PSRF103,01,00,00,01*25
Підключення GPS модуля до Arduino (режим USB шлюза)
- Для підключення модуля GPS в режимі шлюза, необхідно витягнути мікроконтролер Atmega із плати Arduino.
Цим самим послідовний порт GPS-модуля буде напряму підключений до USB.
- Під'єднайте GPS-шілд до плати Arduino. Після підключення потрібно подати на нього живлення.
Для цього використайте два невеликих провода (червоний 5V і чорний GND).
- Підключіть Arduino до USB-порту комп'ютера, запустить програуму для прослуховування послідовного порта. Використайте наступні конфігурації серійного
порта: 4800 бод, 8 біт даних, без перевірки парності, 1 стоп-біт, без керування потоком (4800 baud, 8 data bits, no parity, 1 stop bit, no flow control).
На термінал будуть поступати дані з модуля – координати, висота і т.д.
Джерела
1. http://www.compoexpress.com/modules-and-sensors/gps-gprs/arduino-gps-shield.html
2. https://arduino-ua.com/prod171-Arduino_GPS_shield
3. http://arduino.ua/
4. https://jt5.ru/examples/arduino-gps/