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 мин.
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 ч.

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, доработка

Последние записи:

Комментариев 4 на “GPS GSM Трекер

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

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

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

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

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

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *