GPS GSM Трекер

GPS-GSM Трекер
Несколько лет назад у меня возникла идея, разработать устройство для отслеживания местоположения объекта посредством GPS и GSM систем, я начал приобретать необходимые модули, но до реализации проекта дело так и не дошло. И вот несколько месяцев назад я снова вспомнил про эту идею и принялся за дело. В уме прорисовывались следующие идеи: устройство должно быть автономным и максимально экономичным; управление и передача данных осуществляется сетями мобильной связи GSM; определение координат с помощью системы глобального позиционирования GPS.

Для работы в сетях мобильной связи используются GSM модули, которые потребляют достаточно много энергии, если модуль будет постоянно включен, заряда батарей или аккумуляторов не хватит на продолжительную работу устройства. Поэтому я решил использовать режим работы по расписанию, в устройстве установлены часы реального времени, по заданному времени устройство просыпается и включается GSM модуль для ожидания звонка или SMS сообщения. После выполнения всех задач устройство “засыпает”. Таким образом, происходит существенная экономия энергии.

На следующей картинке приведена схема GPS-GSM трекера на микроконтроллере PIC16F690:
Схема GPS-GSM Трекер
В устройстве используется 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 сообщения на устройство.

Рассмотрим первый способ задания параметров, ниже в таблице приведены основные настройки GPS-GSM трекера и соответствующие адреса в EEPROM памяти:

Адрес EEPROM памятиПараметрОписаниеЗначение по умолчанию
0x00ЧасыЗначение времени, которое записывается в часы реального времени при первом включении устройства (tek_time)00 ч.
0x01Минуты00 мин.
0x02TgsmВремя ожидания входящего звонка,

2 мин ≤ Tgsm ≤ 30мин

10 минут
0x03TgpsВремя ожидания координат от GPS модуля, 2 мин ≤ Tgps ≤ 20мин

 

7 минут
0x04TsmsВремя ожидания SMS сообщения,

2 мин ≤ Tsms ≤ 20мин

 

5 минут
0x05UTCЧасовой пояс

00ч ≤ UTC ≤ 23ч

00ч
0x06ЧасыВремя пробуждения устройства, (Будильник 1)00 ч.

10 мин.

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[tek_time]–[Tgsm] –[Tgps] –[Tsms] –[UTC] –[Будильник 1] –[ Будильник 2]–…–[ Будильник 11]

Пример: NAST0850–10–07–05–05–0900–1200–1500–1800–2100–2300

В таком варианте можно задать максимум 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’ можно отслеживать сообщения, поступающие от модуля к микроконтроллеру.

Кроме индикации, информация об ошибках сохраняется в 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, доработка

У этой записи 47 комментариев

  1. Отличная идея!
    Можно сделать прекрасный коммерческий продукт, доработав схему до системы “Антиугон для велосипедов”.
    Вставляешь устройство в трубку руля или подседальный штырь. Кнопки должны выводиться скрытно ну и индикацию работы вывести тоже придётся. Когда отлучаешься или оставляешь велосипед, включаешь устройство. Если неприятность случилась, вызываешь координаты устройства. И находишь велосипед.
    Главный вопрос остаётся в автономности этого устройства. По Вашей оценке, сколько он сможет работать на паре батареек в режиме ожидания?

    1. Пара батареек это получается 3В, не хватит для работы трекера, надо 3 пальчиковые батарейки или литий-ионный аккумулятор (3,7В). Среднюю емкость батареек (аккумулятора) примем в 1500 мА/час, если GSM модуль будет постоянно включен, то трекер будет потреблять около 6мА, в итоге получим примерно 250 часов или 10 дней непрерывной работы.

      Только вот надо выяснить будет ли GPS модуль ловить сигнал в железной трубе (GSM модуль не так чувствителен к преградам), иначе придется еще выводить антенну наружу.

  2. Спасибо, привет из Болгарий !
    Сколько времени нужно ждать от пробуждение микроконтроллера DD2 из спящего режима до регистрация в GSM оператор (готовност посьйлат SMS) ?
    Я хочу поекспериментировать, GSM нашел в Ebay, но для водонепроницаемого корпусa нужна подсказка :-).

    1. От пробуждения до регистрации проходит около 6 сек, но подпрограмма инициализация модуля может занимать до 40 сек, в зависимости от готовности телефонной книги на сим карте. Корпус я заказывал в китайском интернет магазине aliexpress.

  3. Добрый день! Оплаченная прошивка будет с исходниками?

    1. Приветствую, да исходник прилагается.

      1. Исходник на каком проге написна? На CodeVisionAVR??

  4. Добрый день. А у вас этот GSM трекер купить можно? И сколько он стоит?

  5. здравствуйте!
    Вот что то подобное я искал.
    Я Фермер, живу в степях Казахстана. В нашем районе почти везде есть остовая связь, по этому поводу я задумался о решений проблем.
    У меня на ферме 3 табуна лошадей, цикл жизни у них отличается от других животных. Они всегда на воле, домой приходят только на водопой, но это происходит только в летнее время, и то когда вокруг засуха. В другие времена года мы тратим очень большое количество времени и сил для определения их мест, поиска.
    Тут я подумал, что если к шеей одного из лошадей привязать такой датчик. Ведь это табун, жеребец этого табуна не допустит чтобы его кабылы уходили к другим.
    Так вот прикрепить такой датчик и находить их через координаты и ехать прямо к месту, а не как сейчас бродить )))

    Вопрос вот такой датчик можно сделать так чтобы она работала дольше?
    В интернете на каком то китайском сайте видел, аппарат в режиме ожидание работает 3 года, если она будет в течений дня один раз высылать местонахождение.

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

    1. Здравствуйте, думаю если один раз в неделю высылать sms, трекер проработает от 6 месяцев и до года, также можно например поставить батарейки большей емкости, просто увеличатся габариты трекера.

    2. А если приклеит маленькая 6V солнечная батарейка к крьйшке ? Конечно лошадь не будет стоять так что уголь бьйл оптимальньй, но при 90-104 мкА потребление, даже когда она дает 2-3 mA она будет заряжат акумулятор. Можно применит одна 18650 Li-Ion и какой-то ограничитель максимального напряжения на 4 V.

      1. Да, думаю можно и солнечную батарею прикрепить, аккумулятор можно подобрать от мобильного телефона, такой аккум имеет прямоугольную форму и небольшую толщину, и отлично впишется в корпус. Для зарядки ничего придумывать не надо, есть готовые модули для зарядки Li-Ion батарей http://ali.pub/2em5uj , эти модули будут заряжать аккумулятор до 4,1В.

  6. А можно его настроить так, что бы он постоянно передавал положение на компьютер через сервер?

    1. В этом трекере не реализована передача данных по GPRS, только SMS.

    2. HTTP POST можно заппрограмировать. Я точно не знаю как в Neoway M590 и PIC16 потому что HTTP сделал на SIM800L и STM32 с Китая. Но вдохновление пришло отсюда.

  7. Хочу тоже собрать такой трекер! Если все это собрать, прошивать нужно только PIC и будет работать? Или надо отдельно еще настраивать модули? Можно ли расчитывать на подсказки, если возникнут вопросы?

    1. Для GSM модуля необходимо настроить скорость UART в 9600 бит/сек, так как скорость может быть разной при покупке. GPS модуль изначально настроен на данную скорость, по крайней мере все мои экземпляры были настроены. По вопросам обращайтесь.

      1. Спасибо! Буду делать

  8. Добрый день! Ищем разработчика GPS трекера в виде браслета. Сможете помочь?
    Олег, Минск.

  9. Скажите, а почему берёте конденсаторы 16B, а не, скажем, 6,3 и др. Ведь три батарейки столько не дадут.

    1. Что было в наличие то и поставил, как-то даже не задумывался о подборе конденсатора по напряжению.

      1. Просто думаю сейчас, если поставить какой-нибудь smd конденсатор электролитический 1000uF 6.3v , то много места освободится.

        Как я понял, чем больше ёмкость конденсатора, тем меньше нужно входное напряжение. Т.е. можно поставить конденсатор более чем на 1000 и пить всё не от 3, а от 2 батареек?

        1. Да, место можно сэкономить если smd вариант ставить.

          Значение питающего напряжения и емкость конденсатора никак не связаны, увеличение емкости не увеличивает напряжение, это неправильное утверждение. Конденсатор в основном предназначен для сглаживания кратковременных пульсаций напряжения.

          От двух батареек работать не будет, так как минимальное напряжения питания GSM модуля 3,3 В.

          1. Да, перепутал. Речь шла о токе, а не напряжении – http://mysku.ru/blog/aliexpress/37745.html
            Чем больше емкость конденсатора, тем требования к току меньше. На включении модуль GSM может до 2А требовать, а батарейки столько вряд ли выдадут.

            1. Новые пальчиковые батарейки спокойно выдадут 2А, для примера померил сейчас на замыкание новую батарейку Energizer, ток составил 6А.

      2. Ещё возник вопрос. Скажите, пожалуйста, с несколькими rx-tx микроконтроллер этот может работать (т.к. это именно его особенность) или это что-то само собой разумеющееся?

        1. не понял, что значит с несколькими rx-tx?

          1. Ну, у нас на схеме к одному микроконтроллеру от gsm и от gps идёт контакты rx-tx. Обычно ведь одна пара есть rx-tx и нужно как-то разводить, если есть необходимость подключить несколько.

            1. по крайней мере так было на attiny и т.п., насколько мой маленький опыт и знания говорят.

              1. Согласно логике входы приемников rx можно соединять параллельно, а вот выходы передатчиков tx соединять параллельно нельзя, то есть микроконтроллер может передавать данные сразу нескольким ведомым устройствам по линии tx, а принимать данные от каждого устройства можно только по отдельным линиям.

                Если соединить линии tx двух устройств, то может возникнуть момент когда одно устройство выдает 0, а второе 1, и получится замыкание, другой вариант использование выходов с открытым коллектором для избежания замыкания, но вдруг оба устройства начнут передавать данные одновременно, тогда передаваемые данные будут искажены.

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

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

    1. Приветствую, я не встречал PIC-и с встроенным RTC (но не отрицаю, возможно такие существуют). В документации на ATtiny 1634 я что-то не увидел наличия RTC.

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

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

      Можно и полевые, если они будут работать при напряжении 3,3-4,5В

  12. Подскажите пожалуйста еще такую вещь – PIC можно программировать внутрисхемно, во впаянном в плату состоянии (опять же как на контроллерах AVR) ?

    1. Поддержка внутрисхемного программирования (ICSP) в PIC имеется, но не во всех контроллерах, например PIC16F690, который использован в трекере, поддерживает такое программирование, но здесь все выводы задействованы, поэтому не получится его так запрограммировать. Также, на память скажу что, ICSP поддерживают контроллеры серии PIC16F87X.

  13. нужны исходники кода. как купить?

    1. Привет, написал на почту.

  14. можно ли заменить TL431C на TL431CLP и BC846B на BC846B.215?

    1. да, для замены подойдут

  15. Задумка отличная, но не для всего годится. Давно ищу подобную тему. Лучший вариант конечно будить контролер по прерыванию от USART. То есть координаты будет высылать по запросу СМС. Так дешевле в использовании симки.
    Можо в качестве GSM прикрутить SIM800L?

  16. Российским законодательством разрешены такие устройства?

  17. Разве в России есть законодательство? Уже сделал маячок. Отлично пашет на гончаре. Собака у сына. На радиокоте чел выложил. Правда на SIM808. Пришлось заказать. Работает тока от 5 В. Но dc/dc, и аккум от сотика.

  18. Здравствуйте,подскажите какой модуль глонасс можно использовать в данной схеме?скажем Геос 1м подойдет?

    1. Приветствую, подключать можно GPS модули, которые выдают сообщения в NMEA формате, скорость передачи модуля должна быть настроена на 9600 бит/сек, 1 стоповый бит, без проверки четности.

      Модуль Геос 1м использовать можно, но только в режиме GPS, также нужно предварительно настроить скорость передачи данных на 9600 бит/сек, 1 стоповый бит, без проверки четности. У этого модуля 2 порта, на одном передается бинарный протокол, на другом протокол NMEA, нужен как раз протокол NMEA.

      Чтобы трекер заработал с модулем в режиме Глонасс, нужно менять прошивку микроконтроллера, так как начало NMEA сообщений у GPS и Глонасс разные.

Имя (обязательно)Email (обязательно)Веб-сайт

Добавить комментарий