- отправка GPS-данных по GSM/GPRS на интернет-сайт с сохранением в базе данных;
- просмотр маршрута авто за определенный интервал времени на web-странице с использованием Яндекс.Карт;
- просмотр в реальном времени текущего положения авто на web-странице с использованием Яндекс.Карт.
Используемые компоненты:
1) Плата Arduino UNO (заказать)
2) SIM800l для Arduino (заказать)
3) GPS-модуль GPS GY-NEO-6M (заказать)
Начнем с описания модуля SIM900 GSM/GPRS.
Компактный GSM/GPRS модуль на основе SIM800L, производства компании SimCom. Модуль имеет встроенную антенну, и разъем для подключения внешней, для улучшения сигнала.

Модуль автоматически ищет сеть при подаче питания. При нахождении сети светодиод начинает медленно мигать, при отсутствии сети - мигать быстро.
SIM800L поддерживает micro SIM карты 1.8В и 3В.
Характеристики:
- GPRS class 12 (85.6 кБс)
- Напряжение: 3.7 - 4.2 В
- Поддержка сети: 4х диапазонная сеть, 900, 1800, 1900
- Размер: 2.5 см x 2.3 см
- Встроенная антенна
- Разъем для внешней антенны
GPS GY-NEO-6M

Антенна в комплект не входит.
Характеристики:
- Напряжение питания: 3-5В
- Точность позиционирования: до 5м
- «Горячий старт» : 1 с
- Чувствительность отслеживания : -162 dBm
- Скорость обновления местоположения: 5Hz
- Температурный режим: от -40 до 85°C
- Размер модуля: 22мм x 30мм x 13мм
По даташиту, холодный старт должен занимать 39 секунд, у меня это заняло примерно 20 минут. Следующий старт примерно 2 минуты. Назначение выводов
Основное, что можно делать с этим приемником — читать данные по протоколу NMEA с TX пина. Уровни — 5V,скорость — 9600 бод. Для подключения к Arduino используем программный UART на пинах 2 и 3. Для чтения данных используем библиотеку TinyGPS.
Отправка данных на сервер (GSM/GPRS shield)
Подключаемся к Arduino к контактам 7 и 8.
Для получения страницы по определенному URL нужно послать следующие команды:
AT+SAPBR=1,1 //Открыть несущую (Carrier)
AT+SAPBR=3,1,"CONTYPE","GPRS" //тип подключения - GPRS
AT+SAPBR=3,1,"APN","internet.beeline.ru" //APN, для Билайна - internet
AT+HTTPINIT //Инициализировать HTTP
AT+HTTPPARA="CID",1 //Carrier ID для использования.
AT+HTTPPARA="URL","http:/????????.ru/gps_tracker/gps_tracker1.php?id_avto=?N&lat=XXXXXlon=YYYYY" //Собственно URL, после sprintf с координатами
AT+HTTPACTION=0 //Запросить данные методом GET
AT+HTTPREAD //дождаться ответа
AT+HTTPTERM //остановить HTTP
Предусмотрим еще один момент - при написании серверной части и web-интерфейса предусмотрим получение и вывод результатов для нескольких модулей (id_avto=N), поставим переключатель на 3 позиции, что позволит получать информацию от 8 транспортных средств.
Чтобы не отправлять данные во время стоянки транспортного средства, отправлять будем данные, только если GPS дынные будут изменяться на значение, указанное в константе MINCANGE.
Интервал отправки данных - константа INTERVALSEND мсек. Наличие двух активных программных последовательных портов приводит к ошибкам получения/отправки данных, поэтому приходится переключать состояние программных последовательных портов для работы с каждым шилдом.
Отправка данных на сервер - обработчик скрипт gps_tracer1.php. Скрипт обрабатывает GET-данные и записывает их в базу данных.
WEB-интерфейс
Web-интерфейс -отображение на Яндекс.Картах текущего (последнего переданного) положения либо маршрута за выбранный период.
Текущее положение - метка , на балуне время для данной метки.

Интерфейс написан с использованием технологии ajax (,библиотека xajax). В прикрепленном архиве файлы сайта и дамп БД.
Файлы
Теги: