Arduino GPS shield

Матеріал з Вікі-знання або навчання 2.0 в ТНТУ
(відмінності між версіями)
Перейти до: навігація, пошук
 
Рядок 1: Рядок 1:
[[Файл:Arduino GPS shield.jpg|200px|thumb|rigth|Arduino GPS shield]]
+
[[Файл: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''-сумісними платами.
  
'''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"'''.
 
Базою для створення цієї плати слугував популярний GPS-модуль '''"EB-365"'''.
 +
 +
Модуль реалізований за допомогою стандартного протоколу передачі даних позиціювання '''NMEA''' через послідовний порт.
 +
 +
GPS-модуль визначає географічні координати, висоту над рівнем моря, швидкість переміщення, дату і час ''UTC''.
  
 
== Характеристики ==
 
== Характеристики ==
Рядок 15: Рядок 26:
 
*Екстремально швидкий час ''TTFF'' при низькому рівні сигналу;
 
*Екстремально швидкий час ''TTFF'' при низькому рівні сигналу;
 
*''UART'' інтерфейс;
 
*''UART'' інтерфейс;
*Діпазон робочих температур: від -40℃ до +85℃
+
*Напруга живлення ''5В/3.3В''
 +
*Діпазон робочих температур: від ''-40℃'' до ''+85℃''
  
  
Рядок 26: Рядок 38:
 
== Застосування ==
 
== Застосування ==
  
[[Файл:GPScar.jpg|200px|thumb|rigth|Приклад застосування пристрою Arduino із модулем ''Arduino GPS shield'' в автомобілі]]
+
[[Файл: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]]
  
 
*'''Автомобільна навігація''':
 
*'''Автомобільна навігація''':
Рядок 48: Рядок 63:
 
*'''Низька вартість'''
 
*'''Низька вартість'''
  
У порівнянні зі схожими апратними платформами, плати Arduino мають відносно низьку вартість: готові модулі Arduino коштують не дорожче 50$, а можливість власноруч зібрати плату дозволяє максимально зекономити кошти і отримати пристрій за мінімальну ціну.
+
У порівнянні зі схожими апратними платформами, плати Arduino мають відносно низьку вартість: готові модулі Arduino не дорожчі 50$, а можливість власноруч зібрати плату дозволяє максимально зекономити кошти і отримати пристрій за мінімальну ціну.
  
 
*'''Кросплатформеність'''
 
*'''Кросплатформеність'''
Рядок 62: Рядок 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|Результат виконання]]
 +
 +
  
 
== Джерела ==
 
== Джерела ==
Рядок 67: Рядок 261:
 
<br>2. https://arduino-ua.com/prod171-Arduino_GPS_shield
 
<br>2. https://arduino-ua.com/prod171-Arduino_GPS_shield
 
<br>3. http://arduino.ua/
 
<br>3. http://arduino.ua/
<br>4.
+
<br>4. https://jt5.ru/examples/arduino-gps/

Поточна версія на 13:48, 5 червня 2017

Arduino GPS shield
Підключений 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) при слабкому сигналі.

Базою для створення цієї плати слугував популярний GPS-модуль "EB-365".

Модуль реалізований за допомогою стандартного протоколу передачі даних позиціювання NMEA через послідовний порт.

GPS-модуль визначає географічні координати, висоту над рівнем моря, швидкість переміщення, дату і час UTC.

Зміст

[ред.] Характеристики

  • Побудований на базі популярного GPS модуля ЕВ-365.
  • Виводи RX, TX модуля можуть бути підключені к виводів D0-D7 Arduino шляхом переключення перемичок на гребенці;
  • Роз'єм Micro SD;
  • Роз'єм для активної антени з високою чуттєвістю, сумісний з нормальною антеною;
  • Екстремально швидкий час TTFF при низькому рівні сигналу;
  • UART інтерфейс;
  • Напруга живлення 5В/3.3В
  • Діпазон робочих температур: від -40℃ до +85℃


ТаблицяGps.png
Схема Arduino GPS shield‎


[ред.] Застосування

Приклад застосування пристрою Arduino із модулем Arduino GPS shield в автомобілі
Пристрій Arduino. Відображення місцезнаходження та швидкості руху
Відображення географічних координат пристрою Arduino
  • Автомобільна навігація:

Автомобілі, спортивні автоперегони, пошта, автобуси, громадський транспорт та ін.

  • Морська навігація:

Кораблі, лайнери, катери та ін.

  • Залізнична навігація:

Поїзди, диспечерські установи для контролю за рухом залізничного транспорту.

  • Персональне місцезнаходження:

Захоплення ентузіастів, туристичне приладдя

  • Створення програм та систем прокладання маршрутів:

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/

Особисті інструменти
Google AdSense
реклама