Gps gsm трекер, програмування мікроконтролерів pic

Gps gsm трекер, програмування мікроконтролерів pic

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

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

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

Gps gsm трекер, програмування мікроконтролерів pic

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

Для визначення координат використовується GPS модуль NEO-6M. Плата модуля була доопрацьована, щоб мати можливість включати і вимикати модуль по сигналу від мікроконтролера. Спочатку модуль включався відразу після подачі живлення, що не підходило для мене. На платі модуля стабілізатор напруги 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 повідомлення на пристрій.

Час для будильників потрібно задавати послідовно по зростанню починаючи з 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 [tek_time] - [Tgsm] - [Tgps] - [Tsms] - [UTC] - [Будильник 1] - [Будильник 2] - ... - [Будильник 11]

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

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

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

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

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

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

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

Gps gsm трекер, програмування мікроконтролерів pic
Gps gsm трекер, програмування мікроконтролерів pic
Gps gsm трекер, програмування мікроконтролерів pic

Gps gsm трекер, програмування мікроконтролерів pic
Gps gsm трекер, програмування мікроконтролерів pic
Gps gsm трекер, програмування мікроконтролерів pic

Вітаю!
Ось що щось подібне я шукав.
Я Фермер, живу в степах Казахстану. У нашому районі майже всюди є остова зв'язок, з цього приводу я задумався про рішень проблем.
У мене на фермі 3 табуна коней, цикл життя у них відрізняється від інших тварин. Вони завжди на волі, додому приходять тільки на водопій, але це відбувається тільки в літній час, і то коли навколо посуха. В інші пори року ми витрачаємо дуже багато часу і сил для визначення їх місць, пошуку.
Тут я подумав, що якщо до шиєю одного з коней прив'язати такий датчик. Адже це табун, жеребець цього табуна не допустить щоб його кабил йшли до інших.
Так ось прикріпити такий датчик і знаходити їх через координати і їхати прямо до місця, а не як зараз бродити)))

Питання ось такий датчик можна зробити так щоб вона працювала довше?
В інтернеті на якомусь китайському сайті бачив, апарат в режимі очікування працює 3 роки, якщо вона буде в течій дня один раз висилати місцезнаходження.

Для мене один раз в тиждень в полне досить

Привіт, думаю якщо один раз в тиждень висилати sms, трекер пропрацює від 6 місяців і до року, також можна наприклад поставити батарейки більшої місткості, просто збільшаться габарити трекера.

Згідно з логікою входи приймачів rx можна з'єднувати паралельно, а ось виходи передавачів tx з'єднувати паралельно можна, тобто мікроконтролер може передавати дані відразу декільком веденим пристроям по лінії tx, а приймати дані від кожного пристрою можна тільки по окремих лініях.

Якщо з'єднати лінії tx двох пристроїв, то може виникнути момент коли один пристрій видає 0, а друге 1, і вийде замикання, інший варіант використання виходів з відкритим колектором для уникнення замикання, але раптом обидва пристрої почнуть передавати дані одночасно, тоді передані дані будуть спотворені .

У мене в трекері використаний апаратний UART для GSM модуля, і програмний UART для GPS модуля, в разі GPS, мікроконтролер просто приймає дані.

Доброго дня. Скажіть, а серед продуктів PIC немає контролерів з вбудованим таймером RTC (як наприклад в ATtiny 1634) щоб відмовитися від окремої деталі PCF8583?

Вітаю, я не зустрічав PIC-і з вбудованим RTC (але не заперечую, можливо такі існують). В документації на ATtiny +1634 я щось не побачив наявності RTC.

Так правильно, там не повноцінні годинник, а таймер на 32кГц - пункт 6.2.3 в даташит.
А ще таке питання, як дивіться якщо замість біполярних транзисторів поставити польові, напевно нічого критичного не буде?

Цей генератор працює з приблизною частотою 32 кГц, причому частота залежить від напруги живлення і температури, і на мою його не можна використовувати для відліку часу, він там може використовуватися як тактовий або в якості сторожового таймера для скидання, в PIC теж такий генератор є. Для годин потрібен тактовий генератор на кварці з частотою 32,768 кГц.

Можна і польові, якщо вони будуть працювати при напрузі 3,3-4,5В

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

Підтримка внутрисхемного програмування (ICSP) в PIC є, але не у всіх контролерах, наприклад PIC16F690, який використаний в трекері, підтримує таке програмування, але тут все висновки задіяні, тому не вийде його так запрограмувати. Також, на пам'ять скажу що, ICSP підтримують контролери серії PIC16F87X.