У вас никогда не было такого, что вы выходите из торгового центра и не можете вспомнить, где оставили свою машину? У меня было. Существует много приложений для смартфона, помогающих найти авто, но смартфоны дороги.
Поэтому трекер я решил сделать GPS трекер для автомобиля своими руками.



Принцип действия:
Припарковав свою машину, нажмите на кнопку, чтобы автомобильный трекер сохранил ваши GPS координаты в EEPROM, после чего mini трекер можно выключить. Когда вы выходите из здания, трекер вычисляет ваши новые GPS координаты и выводит на дисплей направление, в котором нужно двигаться к вашей машине и расстояние до нее по прямой.

Шаг 1: Модуль автотрекера






Показать еще 3 изображения



Модуль дисплея состоит из нескольких основных компонентов, которые можно заказать на Ибэе:

  • GPS модуль NEO6M от компании Ublox (на фото)
  • Магнитометр LSM303DLHC (на фото)
  • Графический дисплей LCD5110 (на фото)
  • Кастомная печатная плата Arduino
  • Литиевый аккумулятор (на фото)

Для питания я использовал 3,7 В литий-ионный аккумулятор. Такие обычно используют для некоторых смартфонов и планшетов, они бывают разных размеров и емкости. Я припаял разъем JST2.0 для подключения аккумулятора, но какой использовать пока не решил.

Вы можете также использовать аккумуляторы типоразмера 18650.
Я купил зарядное устройство на 1А для литий-ионных аккумуляторов с USB разъемом. К нему я прикрепил коннектор JST2.0 для заряда этих аккумуляторов.

Внимание! Стандартный USB порт на компьютере выдает только 0,5 А, поэтому процесс заряда от компьютера будет идти дольше. Заряд займет меньше времени, если использовать источник питания на 1 или 2А, например, USB-адаптер переменного тока.

Схема платы Arduino приложена. Питание регулируется 3,3 В регулятором. S1 – кнопка выключателя.
Buz1,2 – контакты для зуммера, не используются.
Коннектор, помеченный nrf24L01, также не используется.
Коннектор USB-BUB, используется для загрузки скетчей на Arduino.
На фото с дисплеем показана «стрелка», показывающая на предмет и расстояние до него.

Принцип действия:
Модуль GPS постоянно измеряет широту и долготу места нахождения автотрекера. При нажатии кнопки эти данные сохраняются на EEPROM. Таким образом, сохранено место положения вашей машины.
А теперь, допустим, вы вышли из магазина и вспоминаете, где вы оставили свой автомобиль. Включите трекер машины, но не нажимайте на кнопку. Модуль GPS высчитает ваши координаты и вычислит расстояние до сохраненного места положения машины и направление, в котором она стоит. На дисплей будет выведена информация о расстоянии до машины и стрелка будет показывать направление, в котором машина находится.

Шаг 2: Скетчи Arduino


Скетч для автотрекера: файл ArduinoCarTracker.zip

У меня установлен «стандартный» штыревой контакт USB-BUB, поэтому нужен USB-BUB адаптер или аналог (PL2303)
GPS: TinyGPS++ библиотека ссылка
LSM303DLHC: файл Compass.zip

CALIBRATE (Калибровка): эта программа аналогична программе Serial Calibrate в Примерах, но вместо отображения последних считанных данных, она отображает на LCD5110 дисплее максимальные и минимальные считанные данные с каждой оси магнитометра. Эти значения можно использовать для калибровки указания курса и примера маршрута, проведя акселерометр LSM303 через все возможные координаты.

Я изменил программу так, чтобы максимумы и минимумы выводились на дисплей. Запустите программу на модуле трекера. Запустите программу, и медленно и аккуратно поворачивайте и наклоняйте модуль во всех направлениях. Запишите максимумы и минимумы, отображенные на дисплее, и вставьте их в программу, заменяя значения в следующих строках:
compass.m_min = (LSM303::vector){-433, -600, -546};
compass.m_max = (LSM303::vector){+570, +488, +579};
это должно повысить точность компаса.

Когда я качал обновления для Arduino, мне пришлось обновить также библиотеки Adafruit_GFX и Adafruit_PCD8544. Вот ссылки:
Adafruit_GFX
Adafruit_PCD8544
Резюме скетча автотрекера:

Кроме функций setup и loop, я прописал шесть функций:

void setSetPoint(); // установка SetPoint, сохранение координат широты и долготы в EEPROM
void getGPS(); // получение текущих данных GPS
void calculate(); // вычисление дистанции и направления
int getHeading(); // получение данных направления с компаса
byte getPostion(int); // вычисление позиции с помощью направления
void displayDirection(); // выводит данные на дисплей
Блок команд setup() — считывание в EEPROM заданных координат, запуск GPS, компаса, запуск дисплея.
Блок цикличных команд loop() – получение текущих координат с GPS, высчитывание расстояния и направления до заданной точки, вывод на дисплей значения расстояния и стрелки, показывающей направление.
Другие программы для Arduino:
Compass: простой компас, указывающий на север и показывающий направление на дисплее.
GPStoLCD: вывод GPS координат на дисплей.

Файлы

Шаг 3: Доработки и заключение


Возможные варианты доработки:
Многие люди оставляют машины в многоуровневых паркингах. GPS может отображать на экране данные высоты.
Корпус для модуля джипиэс трекера.

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

Уровень сложности исполнения:
Не просто.

Модуль трекера машины: модуль GPS должен моргать/мигать, это значит, что он работает. При составлении программы я оставляю трекер подключенным к компьютеру, чтобы посылать на последовательный монитор сообщения, например, GPS координаты, чтобы убедиться, что они отображаются верно. Также нужно вывести на последовательный монитор расстояние и направление, также чтобы проверить правильность отображения. Если все отображается верно, выводите их на LCD5110-дисплей.

Время работы аккумулятора: время работы можно увеличить, если убрать диод с модуля GPS.
Заключение: трекер работает нормально. Я редко использую его, потому что он достаточно объемистый и я забываю нажать кнопку выходя из машины.

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