Глонасс gps трекер своїми руками – захист для авто. Реєструємо, налаштовуємо та встановлюємо GPS GSM маяк своїми руками

Це один з найвдаліших проектів head tracker'ів, котрий я тільки зустрічав. Використовуються передові технології — акселерометр, гіроскоп і компас, такі ж, як і в віртуальній гарнітурах. реальності Gear VR, Playstation VR, Oculus Riftта інших. А для створення достатньо лише мінімального вміння паяти та більш ніж скромної суми грошей. А тепер по порядку.

Варіанти

Підсумкова вартість: 750 рублів.

Складання

Є дуже проста та докладна офіційна інструкція. Нам із неї потрібна лише таблиця сполук.

Я думаю коментарі зайві. Просто беремо дві плати, приміряємо одна до одної та склеюємо двостороннім скотчем. Після цього проводами з'єднуємо контакти плат відповідно до таблички.

Тут я дав би дві рекомендації. Перша:плата датчиків вже плати Arduino, а більшість підключень припадає на одну сторону (2,3,7,GNDx2), так що її залишаємо відкритою (плату датчиків зрушуємо до іншої сторони), а два проводи (VCC і GND) краще припаяти до того, як склеїмо плати разом , оскільки після цього буде складніше. Друга:спочатку паяти довгі дроти(GND та INT), а потім уже короткі (SCL, SDA, AD0). Я, як бачимо на фотографії, помилився з INT. І найголовніше: не шкодуйте флюсу! І якщо він нейтральний (наприклад каніфоль), його можна не відмивати.

Кнопка просто припаюється одним кінцем Arduino (10), а іншим кінцем через провід до найближчої землі (GND). В принципі, кнопка і так зафіксована, але я додатково підклею її цианакрилатом.

І це все можна користуватися!

Поліпшення

Пам'ятаєте, я згадував про роз'єм на два контакти на самому початку? Він потрібний для упору. Клеїться на суперклей прямо під кнопкою. Достатньо двох маленьких крапель.

В принципі мені подобається зовнішній виглядпристрої, та й зіпсувати його досить складно. Але, для більшої надійності, все ж таки сховав його в термоусадку.

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

Прошивка, калібрування та налаштування

Тут усе більш ніж просто. Завантажуємо офіційний додаток EDTracker GUI, розпаковуємо та запускаємо.

Вибираємо версію (EDTraket2_9250) та відповідний порт. Якщо потрібного портуні, можна оновити список кнопкою "Scan Ports". Коли вибрали відповідний порт, запускаємо прошивку кнопкою Flash. Після закінчення прошивки розпочнеться стандартне 20-ти секундне калібрування гіроскопа, при якому необхідно тримати трекер нерухомо. Таке ж калібрування проводиться при кожному включенні пристрою.

  1. Праворуч відкриваємо кладку Magnetometr
  2. Виставляємо Sensevity приблизно на 75% (3/4 шкали)
  3. Тиснемо Restart і починаємо обертати наш пристрій у всіх можливих площинах
  4. Робити це потрібно доти, поки коефіцієнти матриці перестануть змінюватися, але має накопичитися не менше 500 Points, більше краще

На зображенні відображаються точки. Червоні – сирі виміри з датчика, зелені – перераховані. Все це тривимірна картинкаобертається довкола нуля, тобто. середини сфери з зелених крапок.

Якщо не відкалібрувати компас, відстеження повороту голови коректно працювати не буде.

Налаштувань тут небагато:

  • Вибір режиму осей (Експонентний/Лінійний)
  • Чутливість по кожній осі
  • Згладжування

Я не люблю косити очі на монітор, тому використовую експоненційний режим, чутливість вище 100, згладжування 75-90%. Мені так зручно.

Залишилося тільки прикріпити до вашої улюбленої гарнітури і можна розпочинати бій! Єдина кнопка служить для центрування.

Враження

Враження украй позитивні. У мене вже був трекер на камері та мітці (GTX vTrack MkI) і мені є з чим порівнювати.

  • низька вартість
  • компактність
  • відсутність камери (для параноїків)
  • і найголовніше - вам не потрібно фіксувати своє становище перед комп'ютером, я люблю в процесі гри спускатися нижче і підніматися, а з камерою доводилося тримати себе завжди в центрі кадру
  • деренчання в крайніх положеннях - розплата за високу чутливість та експоненційний режим
  • спливає калібрування гіроскопа, якщо гарнітура деякий час лежить на столі, доводиться перед використанням наново 20 секунд калібрувати вже на голові
  • високі значення чутливості не зберігаються після відключення, перед кожним використанням доводиться заново виставляти чутливість - це, швидше за все, помилка у прошивці
  • програма EDTracker UI падає з помилкою після деякого часу роботи
  • на гарячу клавішуне можна призначити комбінацію кнопок, та й те, що програма періодично падає, робить використання HotKey неможливим. Добре, що достатньо кнопки на самому пристрої

Як на мене, мінуси зовсім незначні. А оскільки ПЗ з відкритим вихідним кодом— Завжди можна щось виправити. Мені подобається пристрій і я використовуватиму його. Може професійні пристроїтипу TrackIR можуть виявитися чимось кращим, я не готовий відмовитися від тих плюсів, що дає цей пристрій.

Кілька років тому у мене виникла ідея, розробити пристрій для відстеження розташування об'єкта за допомогою GPS та GSM систем, я почав купувати необхідні модуліАле до реалізації проекту справа так і не дійшла. І ось кілька місяців тому я знову згадав про цю ідею і взявся до справи. В умі промальовувалися такі ідеї: пристрій має бути автономним та максимально економічним; управління та передача даних здійснюється мережами мобільної зв'язку GSM; визначення координат за допомогою системи глобального позиціонування GPS.

Для роботи в мережах мобільного зв'язкувикористовуються GSM модулі, які споживають досить багато енергії, якщо модуль буде постійно увімкнений, заряду батарей або акумуляторів не вистачить на тривалу роботупристрої. Тому я вирішив використовувати режим роботи за розкладом, у пристрої встановлено годинник реального часу, за заданим часом пристрій прокидається і вмикається GSM модульдля очікування дзвінка або SMS повідомлення. Після виконання всіх завдань пристрій "засинає". Таким чином, відбувається суттєва економія енергії.

На наступній картинці наведена схема GPS-GSM трекера на мікроконтролері PIC16F690:

У пристрої використовується . Мікросхема DD1 (PCF8583) є , з функцією будильника. Пробудження мікроконтролера DD2 зі сплячого режиму заданий часвідбувається за перериванням, яке генерується на лінії INT мікросхеми DD1. Змінюючи ємність конденсатора C2*, можна підлаштовувати хід годинника.

Для визначення координат використовується. Плата модуля була допрацьована, щоб мати можливість вмикати і вимикати модуль сигналу від мікроконтролера. Спочатку модуль включався відразу після подачі живлення, що не пасувало мені. На платі модуля встановлений стабілізатор напруги 3,3В у корпусі SOT-23, який має висновок керуючий стабілізатором, але він підключений безпосередньо до лінії живлення. Я розрізав доріжки та звільнив виведення управління для мікроконтролера. На одному примірнику мені не вдалося зберегти стабілізатор напруги (обламався висновок), тому поставив інший стабілізатор, на напругу 3В, у такому самому корпусі (DA1' – LP2981-30DBVR). У Китаї можна придбати два види модуля: із синьою платою та великою антеною, а також із червоною платою та маленькою антеною.

Мікроконтролер "спілкується" з обома модулями за протоколом UART, причому для GSM модуля використовується апаратний UART вбудований в мікроконтролер, для GPS модуля реалізований програмний UART, швидкість передачі даних становить 9600 біт/сек, модулі попередньо повинні бути налаштовані на цю швидкість.

Світлодіоди HL1, HL2 індикаційні, коли мікроконтролер перебуває у робочому режимі, світлодіод HL1 світиться, під час переходу мікроконтролера в “сплячий” режим, світлодіод гасне. Світлодіод HL2 загоряється у разі виникнення помилок під час роботи пристрою. Світлодіод HL3 відображає стан модуля GSM.

Є два основні режими роботи: режим очікування та режим маяка. У режимі очікування пристрій прокидається за розкладом і чекає вхідного дзвінка, при виявленні дзвінка пристрій виконує скидання виклику на другий за рахунком "гудок" і продовжує скидати ще протягом 20 секунд, далі визначає координати та надсилає їх у вигляді SMS повідомлення абоненту, від якого надійшов дзвінок. Можна встановлювати час очікування вхідного дзвінка. У режимі маяка пристрій періодично прокидається через заданий інтервалчасу, визначає координати та надсилає їх абоненту.

Після першого включення за замовчуванням активний режим очікування, для включення режиму маяка, на пристрій необхідно відправити SMS повідомлення з текстом GPS-STARThhmm, де hh-годинник, mm-хвилини який задає період відсилання координат. Наприклад, якщо потрібно отримувати координати кожні півтори години, то повідомлення матиме вигляд GPS-START0130. Координати в цьому режимі надсилаються абоненту, від якого надійшло повідомлення. Для вимкнення маяка та перемикання в режим очікування необхідно надіслати повідомлення з текстом GPS-STOP, пристрій продовжить роботу за розкладом.

Пристрій читає SMS повідомлення на сім-карті під час кожного сеансу пробудження, читання виконується після визначення та надсилання координат абоненту, або після закінчення часу очікування вхідного дзвінка в режимі очікування (якщо дзвінок не надійшов).

При надсиланні повідомлень потрібно враховувати деякі нюанси, справа в тому, що якщо відправити повідомлення, коли пристрій "спить" (GSM модуль вимкнено), то при наступному включенні повідомлення може не відразу надійти на модуль, затримка може становити від декількох хвилин до декількох годин, залежно від особливостей мобільного оператора. Для цього у пристрої реалізовано паузу для очікування SMS повідомлень, відлік паузи починається після визначення та відправлення координат абоненту (тривалість паузи можна налаштовувати). Таким чином, повідомлення бажано надсилати на пристрій під час паузи очікування SMS або під час очікування вхідного дзвінка.

Є два варіанти включення режиму маяка: під час чергового пробудження пристрою виконати виклик після отримання повідомлення з координатами (під час паузи очікування SMS) відправити SMS повідомлення GPS-STARThhmm. Далі пристрій перейде в режим маяка і наступного разу прокинеться через проміжок часу, зазначений у повідомленні. Другий варіант, не виконуючи виклику надіслати SMS повідомлення GPS-STARThhmm (під час очікування вхідного дзвінка), прочитавши повідомлення, пристрій визначить координати та надішле їх абоненту, після чого перейде в режим маяка і засне, пауза очікування SMS повідомлень у цьому випадку виконуватися не буде .

У процесі визначення координат виконується оновлення значення годинника реального часу, для компенсації догляду годинника через неточність ходу. Точне значеннячасу вилучається з даних модуля, що надійшли з GPS. Крім цього, виконується вимірювання напруги живлення пристрою, значення якого передається в SMS повідомленні з координатами. Текст повідомлення з координатами виглядає так: “5511.21316,N,06117.54100,E 4,07V”. Якщо координати не отримали за певний проміжок часу, абоненту надсилається повідомлення виду: “NO KOORD 4,10V”. Час очікування координат від GPS модуля можна настроювати.

Час пробудження пристрою (розклад) та інші параметри можна встановити двома способами: попередньо записати в EEPROM пам'ять мікроконтролера при програмуванні, або за допомогою відправки SMSповідомлення на пристрій.

Розглянемо перший спосіб завдання параметрів, нижче в таблиці наведено основні налаштування GPS-GSM трекера та відповідні адреси в EEPROM пам'яті:

Адреса EEPROM пам'яті Параметр Опис Значення за замовчуванням
0x00 Годинник Значення часу, що записується в годинник реального часу при першому вмиканні пристрою (tek_time) 00 год.
0x01 Хвилини 00 хв.
0x02 Tgsm Час очікування вхідного дзвінка,

2 хв ≤ Tgsm ≤ 30хв

10 хвилин
0x03 Tgps Час очікування координат від GPS модуля, 2 хв ≤ Tgps ≤ 20 хв 7 хвилин
0x04 Tsms Час очікування SMS повідомлення,

2 хв ≤ Tsms ≤ 20хв

5 хвилин
0x05 UTC Часовий пояс

00год ≤ UTC ≤ 23год

00год
0x06 Годинник Час пробудження пристрою (Будильник 1) 00 год.
0x07 Хвилини
0x7E Годинник Час пробудження пристрою (Будильник 61)
0x7F Хвилини
0x80 Код Інформація про помилку (Помилка 1)
0x81 Місяць
0x82 День
0x83 Годинник
0x84 Хвилини
0xF3-0xF7 Інформація про помилку, (Помилка 24)
0xF8-0xFC Інформація про помилку, (Помилка 25)

Час для будильників потрібно задавати послідовно по зростанню починаючи з 00:00 год (точка відліку), значення першого будильника не обов'язково повинне бути рівним 00:00год, час останнього будильника в EEPROM пам'яті, не повинен перевищувати 23:59 год. Інші осередки EEPROM пам'яті повинні мати значення більше 23 (24 і більше), при програмуванні мікроконтролера значення осередків зазвичай встановлюється рівним 0xFF (255).

Період часу вказаний у SMS повідомленні для режиму маяка не повинен перевищувати значення 23:59 (1439 хвилин) і не повинен бути менше 00:05 (5 хвилин). Інакше період за замовчуванням становитиме 1 год.

GPS модульотримує час за Грінвічем, тому необхідно задати часовий пояс, відповідно до регіону.
Всього в EEPROM пам'яті можна встановити 61 значень часу для будильника в інтервалі 00:00-23:59 годин. Якщо параметри задані некоректно, або зовсім не задані, а також у разі виходу за межі, зазначені в таблиці, будуть використовуватися значення за замовчуванням.

Розглянемо другий спосіб завдання параметрів з допомогою SMSповідомлення. При першому увімкненні пристрій протягом 5-ти хвилин читає SMS повідомлення на сім-карті, в цей період необхідно відправити наведене нижче повідомлення або попередньо записати його на сім-карту перед включенням:

NAST– – – – –[Будильник 1] –[ Будильник 2]–…–[ Будильник 11]

Приклад: NAST0850–10–07–05–05–0900–1200–1500–1800–2100–2300

У такому варіанті можна встановити максимум 11 будильників, послідовність яких повинна починатися з точки відліку (00:00 год), як було сказано вище. Після зчитування повідомлення всі параметри переписуються в EEPROM пам'ять мікроконтролера, якщо операція успішно пройшла світлодіоди HL1, HL2 блимають три рази, після чого пристрій засинає. У подальшому налаштуваннятрекера можна оперативно змінювати, відправивши SMS повідомлення з новими параметрами під час пробудження пристрою (під час паузи очікування SMS або під час очікування вхідного дзвінка), параметр не враховуватиметься (використовується тільки при першому включенні трекера), але пропускати його не можна.

Початковий запуск трекера я виконую так: для прикладу візьмемо розклад (12.00–15.00–18.00–21.00), параметр я встановлюю рівним 11.50, таким чином, після успішного прийняття параметрів, трекер прокинеться через 10 хвилин. Після цього я дзвоню на нього та отримую координати, час трекера при цьому оновлюється за даними GPS, далі трекер прокидатиметься за розкладом.

Всі SMS повідомлення на СІМ картці видаляються після кожної операції читання з метою звільнення місця для подальших повідомлень.

Якщо при першому включенні мікроконтролер не зможе ініціалізувати GSM модуль або годинник реального часу не відповідатиме на команди, то виконання програми припиниться ( критична помилка), при цьому постійно блиматиме світлодіод HL2 “Помилка”.

Надалі при появі помилок, програма буде виконуватися далі пропускаючи проблемну ділянку, при цьому загоряється світлодіод HL2 "Помилка", який залишається увімкненим після засинання пристрою, і гасне при подальшому пробудженні. Крім цього, мікроконтролер відправляє в реальному часі код помилки по лінії UART. Щоб відстежувати помилки за допомогою комп'ютера (а також команди, відправлені на модуль GSM), до пристрою можна підключити USB-UART перетворювач у точці TX' на схемі. Помилки видаються термінал у вигляді повідомлення ERRxx, де xx-код помилки. У точці RX можна відстежувати повідомлення, що надходять від модуля до мікроконтролера.

Крім індикації, інформація про помилки зберігається в EEPROM пам'ять мікроконтролера. Кожна помилка займає в пам'яті 5 байт (див. таблицю вище): перший байт містить код помилки (номер), другий і третій байти – дату виникнення помилки (місяць, день), четвертий та п'ятий байти – час помилки (годинник та хвилина). Під помилки в EEPROM пам'яті виділено 128 байт, починаючи з адреси 0x80 (128), таким чином, мікроконтролер може зберігати останні 25 помилок.

Для зменшення енергоспоживання світлодіодну індикаціюпомилок можна відключити, для цього лівий висновок резистора R4 на схемі необхідно підключити до загального дроту. Список всіх помилок наведено в текстовому файлі, який можна завантажити наприкінці статті.

Пристрій зібрано на двосторонній друкованій платірозміром 49 x 62 мм, в основному на платі встановлені елементи smd. Для харчування я використовую три пальчикові батареї. Всі частини пристрою розміщені всередині водонепроникного корпусу з розмірами 85x58x33 мм (придбаний у Китаї). У режимі сну пристрій споживає 90-104 мкА, в режимі очікування дзвінка 5,5мА, під час визначення координат 60 мА. Один з екземплярів трекера працює у мене близько 2 місяців, при цьому за розкладом прокидається 5 разів на добу, час очікування дзвінка становить 10 хвилин. Напруга живлення цей час знизилося приблизно 0,3В.

Наведена в кінці статті прошивка має обмеження, координати можна запросити лише 10 разів, після відправки 10-го SMS повідомлення з координатами, трекер засне, і не прокидатиметься. Прошивка зі знятими обмеженнямиплатна, звертайтесь за контактами вказаними на сторінці “ ”, крім цього можу зібрати трекер на замовлення.



Це вже друга версія трекера. Перший дозволяв відстежувати об'єкт лише у вигляді СМС. Що самі розумієте, не зовсім зручно. Тому було ухвалено рішення створити другу версію, але вже для роботи із сервісами GPS-моніторингу. Не все задумане реалізовано, але основні функції вже працюють.

Трекер щохвилини надсилає дані на безкоштовний сервер GPS-моніторингу за протоколом Wialon IPS v1.1: дані про місцезнаходження, швидкість, курс напрямку руху. Також реалізована можливість налаштування та запит координат по SMS з будь-якого номера.

Можливі наступні команди:

1. Налаштування трекера:

$0000#SETUP#111111111111111;2222#

0000 - Старий парольабо пароль за промовчанням (при першому налаштуванні).
11111111111111111 - ID пристрою який заданий на сервері (довільні 15 цифр).
2222 - Новий пароль. Надалі всі команди мають починатися з нього. Пароль повинен збігатися з тим, що заданий на сервері GPS моніторингу.

У відповідь надходить повідомлення виду: «ID-11111111111111111; PASS-2222» з новим ID та новим паролем.

0000 - ваш пароль.

У відповідь надходить повідомлення виду: "A;111111;222222;N3333.33333;E4444.44444;5;1"

"A" - дані достовірні або "V" - дані застаріли.
"111111" - час UTC.
"222222" - дата.
"N3333.33333" - широта.
"E4444.44444" - довгота.
"5" - швидкість в км/год.
"1" - живлення від основного джерела або "0" - живлення від вбудованого акумулятора.

Якщо якісь дані не доступні, то замість них передається «NA».

3. Сигнал тривоги:

У цьому випадку дані про місцезнаходження передаються сервер з інтервалом 30 сек. У відповідь надходить повідомлення виду: "ALARM ON". Повторне надсилання команди вимикає сигнал тривоги. У відповідь надходить повідомлення виду: "ALARM OFF".

У відповідь надходить повідомлення виду: "Vash balans 50.01r."

Якщо у будь-якій команді буде відправлено неправильний пароль, то у відповідь надходить повідомлення виду: "Password ERROR".

Наразі технічна частина.

Основа: Arduino PROMINI 3.3V 8MHz, GSM модем NEOWAY M590, модуль GPS UBLOX NEO-6M, зовнішня активна антена GPS.
Живлення: DC-DC перетворювач на основі MP2307DN, контролер заряду батареї STC4054, акумулятор 3.7v 900mAh.

Час роботи від акумулятора 9 годин, за умови, що акумулятор не новий.

Щодо сервера GPS-моніторингу - таких сервісів багато. За бажання можна працювати з іншим сервером, для цього в коді достатньо поміняти IP-адресу та номер порту сервера. Головне, щоб сервер підтримував роботу з Wialon IPS v1.1. Корпус виготовлений з ПВХ. Вийшов, правда, на вигляд не дуже, але особливо й не старався, все одно його не видно буде. Надалі хочу додати управління зовнішнім пристроємабо яким-небудь реле та отримання яких-небудь параметрів про стан авто, для цього на платі передбачено два входи та один вихід. Програмно поки що це не реалізовано.

Витрачено було приблизно 1500 – 2000 руб.












Всі нюанси з технічної та програмної сторони описувати зараз не буду. Кого зацікавить – пишіть, постараюся всім відповісти. знаходиться все необхідне: схема, вихідники на СІ, hex-файл прошивки трекера (обов'язково прошивати і файл для EEPROM, файл з розширенням.eep), прошивка та прога для GPS, файли ПП для Sprint-Layout, інформація по протоколу Wialon IPS, та кілька фото.

Пісочниця

Наталка 27 квітня 2016 о 12:12

GPS трекер для автомобіля своїми руками

  • DIY або Зроби сам ,
  • Автомобільні гаджети * ,
  • Гаджети *

Це вже друга версія трекера. Перший дозволяв відстежувати об'єкт лише у вигляді СМС. Що самі розумієте, не зовсім зручно. Тому було ухвалено рішення створити другу версію, але вже для роботи із сервісами GPS-моніторингу. Не все задумане реалізовано, але основні функції вже працюють.

Трекер щохвилини відправляє дані на безкоштовний сервер GPS-моніторингу за протоколом Wialon IPS v1.1: дані про місцезнаходження, швидкість, курс напрямку руху. Також реалізована можливість налаштування та запит координат по SMS з будь-якого номера.

Можливі наступні команди:

1. Налаштування трекера:

$0000#SETUP#111111111111111;2222#

0000 - старий пароль або пароль за промовчанням (при першому налаштуванні).
11111111111111111 - ID пристрою який заданий на сервері (довільні 15 цифр).
2222 - новий пароль. Надалі всі команди мають починатися з нього. Пароль повинен збігатися з тим, що заданий на сервері GPS моніторингу.

У відповідь надходить повідомлення виду: «ID-11111111111111111; PASS-2222» з новим ID та новим паролем.

0000 - ваш пароль.

У відповідь надходить повідомлення виду: "A;111111;222222;N3333.33333;E4444.44444;5;1"

"A" - дані достовірні або "V" - дані застаріли.
"111111" - час UTC.
"222222" - дата.
"N3333.33333" - широта.
"E4444.44444" - довгота.
"5" - швидкість в км/год.
"1" - живлення від основного джерела або "0" - живлення від вбудованого акумулятора.

Якщо якісь дані не доступні, то замість них передається «NA».

3. Сигнал тривоги:

У цьому випадку дані про місцезнаходження передаються сервер з інтервалом 30 сек. У відповідь надходить повідомлення виду: "ALARM ON". Повторне надсилання команди вимикає сигнал тривоги. У відповідь надходить повідомлення виду: "ALARM OFF".

У відповідь надходить повідомлення виду: "Vash balans 50.01r."

Якщо в будь-якій команді буде надіслано неправильний пароль, то у відповідь надходить повідомлення виду: "Password ERROR".

Наразі технічна частина.

Основа: Arduino PROMINI 3.3V 8MHz, GSM модем NEOWAY M590, модуль GPS UBLOX NEO-6M, зовнішня активна антена GPS.
Живлення: DC-DC перетворювач на основі MP2307DN, контролер заряду батареї STC4054, акумулятор 3.7v 900mAh.

Час роботи від акумулятора 9 годин, за умови, що акумулятор не новий.

Щодо сервера GPS-моніторингу - таких сервісів багато. За бажання можна працювати з іншим сервером, для цього в коді достатньо поміняти IP-адресу та номер порту сервера. Головне, щоб сервер підтримував роботу з Wialon IPS v1.1. Корпус виготовлений з ПВХ. Вийшов, правда, на вигляд не дуже, але особливо й не старався, все одно його не видно буде. Надалі хочу додати керування зовнішнім пристроєм або яким-небудь реле та отримання яких-небудь параметрів про стан авто, для цього на платі передбачено два входи та один вихід. Програмно поки що це не реалізовано.

Витрачено було приблизно 1500 – 2000 руб.

Всі нюанси з технічної та програмної сторони описувати зараз не буду. Кого зацікавить – пишіть, постараюся всім відповісти.

Після кількох експериментів з Ардуін вирішив зробити простенький і не дуже дорогий GPS-tracker з відправкою координат по GPRS на сервер.
Використовується Arduino Mega 2560 ( Arduino Uno), SIM900 - GSM/GPRS модуль (для надсилання інформації на сервер), GPS приймач SKM53 GPS.

Все закуплено на ebay.com, у сумі близько 1500 р (приблизно 500р ардуїну, трохи менше – GSM модуль, трохи більше – GPS).

GPS приймач

Спочатку потрібно розібратися з роботою з GPS. Вибраний модуль - один із найдешевших і найпростіших. Тим не менш, виробник обіцяє наявність батарейки для збереження даних про супутники. За датасітом, холодний стартповинен займати 36 секунд, проте, в моїх умовах (10 поверх з підвіконня, впритул будинків немає) це зайняло аж 20 хвилин. Наступний старт, проте, вже 2 хвилини.

Важливий параметр пристроїв, що підключаються до ардуїни, - енергоспоживання. Якщо перевантажити перетворювач ардуїни, вона може згоріти. Для приймача максимальне енергоспоживання - 45mA @ 3.3v. Навіщо в специфікації вказувати силу струму на напрузі, відмінному від необхідного (5V), для мене загадка. Тим не менш, 45 mA перетворювач ардуїни витримає.

Підключення
GPS не керований, хоч і має RX пін. Для чого – невідомо. Основне, що можна робити з цим приймачем - читати дані протоколу NMEAз TX піна. Рівні - 5V, саме для ардуїни, швидкість - 9600 бод. Підключаю VIN у VCC ардуїни, GND у GND, TX у RX відповідного serial. Читаю дані спочатку вручну, потім із використанням бібліотеки TinyGPS. На диво, все читається. Після переходу на Uno довелося використовувати SoftwareSerial, і тут почалися проблеми - втрачається частина символів повідомлення. Це не дуже критично, тому що TinyGPS відсікає невалідні повідомлення, але досить неприємно: про частоту 1Гц можна забути.

Невелике зауваження щодо SoftwareSerial: на Uno немає хардверних портів (крім з'єднаного з USB Serial), тому доводиться використовувати програмний. Так от він може приймати дані тільки на піні, на якому плата підтримує переривання. У випадку Uno це 2 і 3. Мало того, дані одночасно може отримувати лише один порт.

Ось так виглядає тестовий стенд.

GSM приймач/передавач


Тепер починається цікавіша частина. GSM модуль – SIM900. Він підтримує GSM та GPRS. Ні EDGE, ні тим більше 3G, не підтримуються. Для передачі даних про координати це, мабуть, добре - не буде затримок та проблем при перемиканні між режимами, плюс GPRS зараз є майже скрізь. Однак, для якихось більш складних додатківцього вже може не вистачити.

Підключення
Модуль управляється також за послідовному порту, з тим самим рівнем - 5В. І тут нам знадобляться і RX, і TX. Модуль - shield, тобто він встановлюється на ардуїну. Причому сумісний як із mega, так і з uno. Швидкість за замовчуванням – 115200.

Збираємо на Mega, і тут на нас чекає перший неприємний сюрприз: TX пін модуля потрапляє на 7й пін мегі. На 7м піну меги недоступні переривання, а отже, доведеться з'єднати 7й пін, скажімо, з 6м, на якому можливі переривання. Таким чином, витратимо один пін ардуїни марно. Ну, для меги це не дуже страшно – таки пінів вистачає. А ось для Uno це вже складніше (нагадаю, там лише 2 піна, що підтримують переривання – 2 та 3). Як вирішення цієї проблеми можна запропонувати не встановлювати модуль на ардуїну, а з'єднати його проводами. Тоді можна використовувати Serial1.

Після підключення намагаємося «поговорити» з модулем (не забуваємо його увімкнути). Вибираємо швидкість порту – 115200, при цьому добре, якщо всі вбудовані послідовні порти (4 на мезі, 1 на uno) та всі програмні працюють на одній швидкості. Так можна досягти більш стійкої передачі даних. Чому - не знаю, хоч і здогадуюсь.

Отже, пишемо примітивний код для прокидання даних між послідовними портами, відправляємо atz, у відповідь тиша. Що таке? А, case sensitive. ATZ отримуємо OK. Ура, модуль чує нас. А чи не зателефонувати нам заради інтересу? ATD +7499 ... Телефонує міський телефон, з ардуїни йде димок, ноутбук вирубується. Згорів перетворювач Arduino. Було поганою ідеєю годувати його 19 вольтами, хоча написано, що він може працювати від 6 до 20V, рекомендують 7-12V. У даташіті на GSM модуль ніде не сказано про споживану потужність під навантаженням. Ну що ж, Mega вирушає до складу запчастин. Із завмиранням серця включаю ноутбук, що отримав +19V по +5V лінії від USB. Працює, і навіть USB не вигоріли. Дякую Lenovo за захист.

Після вигоряння перетворювача я пошукав струм, що споживається. Так ось, піковий – 2А, типовий – 0.5А. Таке не під силу перетворювачу ардуїни. Потрібне окреме харчування.

Програмування
Модуль надає широкі можливостіпередачі даних. Починаючи від голосових дзвінківта SMS та закінчуючи, власне, GPRS. Причому для останнього можна виконати HTTP запитза допомогою AT команд. Доведеться відправити кілька, але це того варто: формувати запит вручну не дуже хочеться. Є пара нюансів з відкриттям каналу передачі даних за GPRS - пам'ятаєте класичні AT+CGDCONT=1, IP, apn? Так от, тут те саме потрібно, але злегка хитріше.

Для отримання сторінки за певним URL потрібно надіслати такі команди:
AT+SAPBR=1,1 //Відкрити несучу (Carrier) AT+SAPBR=3,1,"CONTYPE","GPRS" //тип підключення - GPRS AT+SAPBR=3,1,"APN","internet" //APN, для Мегафону - internet AT+HTTPINIT //Ініціалізувати HTTP AT+HTTPPARA="CID",1 //Carrier ID для використання. AT+HTTPPARA="URL","http://www.example.com/GpsTracking/record.php?Lat=%ld&Lng=%ld" //Власне URL, після sprintf з координатами AT+HTTPACTION=0 //Запросити дані методом GET //дочекатися відповіді AT+HTTPTERM //зупинити HTTP

В результаті, за наявності з'єднання отримаємо відповідь від сервера. Тобто фактично ми вже вміємо надсилати дані про координати, якщо сервер приймає їх за GET.

живлення
Оскільки живити GSM модуль від Arduino перетворювач, як я з'ясував, погана ідея, було вирішено купити перетворювач 12v->5v, 3A, на тому ж ebay. Однак, модулю не подобається живлення у 5V. Ідемо на хак: підключаємо 5V до пін, з якого приходить 5V від ардуїни. Тоді вбудований перетворювач модуля (істотно потужніший за перетворювач ардуїни, MIC 29302WU) зробить з 5V те, що потрібно модулю.

Сервер

Сервер написав примітивний - зберігання координат та малювання на Яндекс.картах. Надалі можливе додавання різних фіч, включаючи підтримку багатьох користувачів, статус «на охороні/не на охороні», стан систем автомобіля (запалювання, фари тощо), можливе навіть керування системами автомобіля. Звичайно, з відповідною підтримкою трекера, що плавно перетворюється на повноважну сигналізацію.

Польові випробування

Ось так виглядає зібраний девайс, без корпусу:

Після встановлення перетворювача живлення та укладання в корпус від дохлого DSL модему система виглядає так:

Припаював дроти, вийняв кілька контактів із колодок ардуїни. Виглядають так:

Підключив 12V в машині, проїхався Москвою, отримав трек:


Крапки треку досить далеко один від одного. Причина в тому, що відправка даних по GPRS займає багато часу, і в цей час координати не зчитуються. Це очевидна помилка програмування. Лікується по-перше, відправкою відразу пачки координат з часом, по-друге, асинхронною роботою з модулем GPRS.

Час пошуку супутників на пасажирському сидінні автомобіля – пара хвилин.

Висновки

Створення GPS трекера на Ардуїно своїми руками можливе, хоча і не є тривіальним завданням. Головне питаннязараз - як сховати пристрій у машині так, щоб він не піддавався впливам шкідливих факторів(вода, температура), не було закрито металом (GPS і GPRS екрануватимуться) і не було особливо помітно. Поки що просто лежить в салоні і підключається до гнізда прикурювача.

Ну і ще потрібно поправити код для плавнішого треку, хоча основне завдання трекер і так виконує.

Використані пристрої

  • Arduino Mega 2560
  • Arduino Uno
  • GPS SkyLab SKM53
  • SIM900 заснований GSM/GPRS Shield
  • DC-DC 12v->5v 3A converter