Проект 33: Модуль GPS. Принцип роботи, підключення, приклади

В цьому експерименті розглянемо роботу модуля GPS-приймача, що дозволяє визначати наше місце розташування за допомогою глобальної системи GPS, і підключення даного приймача до плати Arduino.

Необхідні компоненти:

GPS (Global Positioning System) - це система, що дозволяє з точністю не гірше 100 м визначити місце розташування об'єкта, тобто визначити його широту, довготу і висоту над рівнем моря, а також напрямок і швидкість його руху. Крім того, за допомогою GPS можна визначити час з точністю до 1 наносекунди. GPS складається з сукупності певної кількості штучних супутників Землі (супутникової системи NAVSTAR) і наземних станцій спостереження, об'єднаних в загальну мережу. Як абонентського обладнання служать індивідуальні GPS-приймачі, здатні приймати сигнали з супутників і за прийнятою інформації обчислювати своє місце розташування. Ми використовуємо GPS-приймач V.KEL VK16E (див. Рис. 33.1).


Рис. 33.1. GPS-приймач V.KEL VK16E

Призначення виводів:

Холодний старт відбувається, коли GPS-приймач був вимкнений тривалий час, переміщався в вимкненому стані на значну відстань або його годинник не збігаються з даними супутника. При холодному старті зі супутників скачується альманах. Час оновлення альманаху - від 5 до 15 хвилин в залежності від умов прийому і кількості видимих супутників. Особливість - приймач в цей час повинен бути нерухомий. Теплий старт відбувається, коли приймач був вимкнений більше 30 хв. При цьому відбувається прийом уточнюючих даних. Займає 0,5-1,5 хв. Гарячий старт відбувається, коли приймач був відключений нетривалий час. Дані вважаються свіжими, і приймач просто знаходить супутники (спираючись на дані альманаху). Для перевірки працездатності підключимо модуль по послідовному порту до комп'ютера з ОС Windows, використовуючи USBTTL- адаптер, і запустимо програму MiniGPS_v1.7.1.exe. Програма показує кількість знайдених приймачем супутників і в разі їх достатнього числа показує наше місце розташування - географічні широти і довготи (див. Рис. 33.2). Миготіння зеленого світлодіода сигналізує про достатній для визначення положення кількості супутників. Тепер підключимо GPS-приймач до плати Arduino і будемо виводити дані про місцезнаходження - географічні широти і довготи в монітор послідовного порту Arduino. Схема підключення показана на рис. 33.3.


Рис. 33.3. Схема підключення GPS-приймача до Arduino

Приступимо до написання скетчу. Будемо використовувати бібліотеки SoftwareSerial і TinyGPS, що дозволяє виділяти потрібні дані з усього потоку, переданого приймачем. Вміст скетчу показано в лістингу 33.1.


#include <SoftwareSerial.h>
#include <TinyGPS.h>
TinyGPS gps;
SoftwareSerial gpsSerial (7, 8);
bool newdata = false;
unsigned long start;
long lat, lon;
unsigned long time, date;
void setup ()
{
gpsSerial.begin (9600); // швидкість обміну з GPS-приймачем
Serial.begin (9600);
Serial.println ( "Waiting data of GPS ...");
}
void loop ()
{
// затримка в секунду між оновленнями координат
if (millis () - start> 1000)
{
newdata = readgps ();
if (newdata)
{
start = millis ();
gps.get_position (& lat, & lon);
gps.get_datetime (& date, & time);
Serial.print ( "Lat:"); Serial.print (lat);
Serial.print ( "Long:"); Serial.print (lon);
Serial.print ( "Date:"); Serial.print (date);
Serial.print ( "Time:"); Serial.println (time);
}
}
}
// перевірка наявності даних
bool readgps ()
{
while (gpsSerial.available ())
{
int b = gpsSerial.read ();
// в TinyGPS є помилка: не обробляються дані з \ r і \ n
if ( '\ r'! = b)
{
if (gps.encode (b))
return true;
}
}
return false;
}
}

Порядок підключення:

  1. Збираємо схему, згідно з рис. 33.1.
  2. Завантажуємо в плату Arduino скетч з лістингу 33.1.
  3. Чекаємо миготіння зеленого світлодіода на приймачі GPS, що сигналізує про наявність даних про местоположеніі.
  4. Дивимося в моніторі послідовного порту Arduino вивід даних широти і довготи. Також отримуємо поточну дату і час за Гринвічем (рис. 33.4).

Рис. 33.4. Вивід даних GPS в монітор послідовного порту Arduino

Організація підключення до мережі Інтернет за допомогою модуля Ai-Thinker A6
У попередніх розділі ми розглянули ми зробили великі кроки побудови "розумного будинку" - оснастили його датчиками і виконавчими пристроями і створили і забезпечили певний ступінь автоматизації для створення комфорту і безпеки. Тепер прийшов час зробити наш "розумний будинок" пристроєм IoT (Інтернету речей), щоб отримати доступ до нього для моніторингу та управління з будь-якої точки світу через мережу інтернет. Організуємо доступ контролерів нашого будинку до мережі інтернет.NodeMCU - це плата на основі Wi-Fi модуля ESP8266, що дозволяє підключитися їй до мережі інтернет по Wi-Fi з'єднання. З Arduino MEGA трохи складніше - необхідні зовнішні модулі для організації доступу до інтернет. В якості зовнішніх модулів часто використовується плата Ethenet shield W5100 або W5500. Можна використовувати і модулі ESP8266, керуючи ними по UART. Ми розглянемо організацію доступу в інтернет з використанням GPRS Shield - плати розширення, що дозволяє Arduino працювати в мережах стільникового зв'язку за технологіями GSM / GPRS для прийому і передачі даних, SMS і голосового зв'язку.