Arduino GPS shield
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/

