Оглавление
- 1 Описание проекта
- 1.1 Логирование GPS-треков поездок
- 1.2 Автоматическое получение текущего пробега автомобиля
- 1.3 Просмотр информации на дисплее
- 1.4 Управление устройством с помощью IR-пульта
- 1.5 Возможность внесения данных по заправке
- 1.6 Создание основных и вспомогательных путевых точек
- 1.7 Голосовые оповещения водителя
- 1.8 Синхронизация с домашним сервером
- 1.9 Режим Big Brother
- 2 Необходимые модули
Описание проекта
Приобретя автомобиль я стал записывать все расходы, связанные с ним, а также информацию о поездках и пробеге. Вскоре понял, что записывать все это в блокнот (хоть и специально приобретенный для этого) неудобно. Так как невозможно оценить совокупность расходов (придется с калькулятором считать). Поэтому создал модуль для своего умного дома, в который стал вносить все эти данные.
В настоящее время я все реже вношу данные, так как то некогда, то забываю. И возникла у меня мысль автоматизировать часть вносимых данных. Так родилась идея создания данного устройства для моего автомобиля.
Вот список возможностей, которые я хочу реализовать в этом проекте (в устройстве):
- Логирование GPS треков поездок (при помощи GPS/GSM модуля)
- Автоматическое получение текущего пробега автомобиля (через OBD разъем)
- Просмотр информации на дисплее (валяется дома небольшой дисплей для ардуино LCD 1602)
- Управление устройством при помощи пульта (есть IR пульт)
- Возможность внесения данных по заправке (автоматическое получение GPS координат и текущего пробега; ввод данных о количестве заправленного топлива, его цене и информации о полностью заправленном баке или нет)
- Создание основных и вспомогательных путевых точек (основными точками являются: точка начала и окончания маршрута, а также точки, устанавливаемые вручную; вспомогательными точками являются все остальные GPS-координаты, получаемые от GPS-трекера и используются для создания трека поездки)
- Голосовые оповещения водителя (используется модуль mp3-плеер)
- Выгрузка данных на сервер при обнаружении домашней WiFi сети, либо принудительно через GPRS
- Режим Big Brother. Когда устройство постоянно шлет на сервер свои координаты по заданному алгоритму.
Теперь опишу каждую из возможностей более подробно.
Логирование GPS-треков поездок
При помощи GPS/GSM модуля устройство получает свои текущие координаты и сохраняет их в файл лога (в сыром, необработанном виде). Также производит обработку полученных координат и при необходимости пишет в отдельный файл маршрута. При этом для основных путевых точек (см. п.6) сохраняется также текущий пробег автомобиля (см. п.2). Таким образом для сырых данных новый файл создается каждый день и в него пишутся данные с 00:00:00 до 23:59:59 (время берется с GPS), а для данных маршрутов создается новый файл для каждого маршрута.
При включении зажигания устройство:
- поигрывает приветствие (см. п.7)
- получает текущие координаты устройства
- если текущие координаты являются существующей основной точкой, считает, что предыдущий маршрут завершен, при этом проигрывает (“Предыдущий маршрут завершен, начинаю новый маршрут”, см п.7)
- если текущие координаты не являются существующей основной точкой, определяет время выключения зажигания. Если зажигание было выключено более [2] (время настраивается) часов назад, считается, что начался новый маршрут (система произносит “Предыдущий маршрут завершен, начинаю новый маршрут”, см. п.7), иначе продолжается старый (система произносит “Продолжаем текущий маршрут”, см п.7)
- если устройство определило, что необходимо продолжить текущий маршрут у водителя есть возможность принудительно начать новый
- также водитель может указать, что в данный момент автомобиль находится на заправке и было заправлено топливо. В этом случае создается отдельная запись в файле о заправках, куда вносятся текущие координаты, текущий пробег и система ожидает ввода данных о заправке (при этом остальные функции не блокируются, так что водитель может отъехать от заправки и, остановившись в удобном месте, ввести данные по заправке, см. п.5), при этом новый маршрут не создается, а продолжается текущий
- при начале нового маршрута устройство создает основную путевую точку, используя полученные координаты, которую вносит, как последнюю в файл предыдущего маршрута, затем создает файл нового маршрута и вносит в него эту же точку, как первую точку маршрута
- во время движения по маршруту в маршрутный файл пишутся не все полученные координаты, а предварительно проверяются на ряд условий: не записываются одинаковые значения координат, не записываются координаты, расположенные близко друг от друга (расстояние настраивается), не записываются координаты с недостаточной точностью (порог точности настраивается)
Автоматическое получение текущего пробега автомобиля
При помощи OBD2 модуля устройство подключено к системе автомобиля и считывает данные о текущем пробеге. Есть возможность внести корректировки считываемых значений (если данные из OBD отличаются от данных одометра и данные уже вносились вручную с него (с одометра)), а также возможность настроить корректировки для каждого получаемого значения, для автоматической корректировки последующих значений (нужно сначала посчитать на сколько значения различаются).
Данные о текущем пробеге используются для создания основных путевых точек, а также для записях данных о заправках.
Просмотр информации на дисплее
При включении зажигания на дисплее отображается информация о начале нового/продолжении старого маршрута и информация об основной путевой точке.
При движении по маршруту, отображается информация о текущем маршруте. А также информация о последней основной путевой точке.
При активации функции заправки на экране появляется информация о путевой точке “заправка”, текущий пробег (на момент активации), а также поля для ввода значений о заправке: тип топлива (по умолчанию указан основной тип топлива), полный/не полный бак, количество заправленного топлива, стоимость литра топлива. Если продолжить движение не вбив данные о заправке, устройство будет ожидать ввода данных по топливу и не скроет поля для ввода до их внесения.
Подсветка экрана включается при нажатии на кнопку [On/Off] на пульте, либо соответствующей кнопкой около экрана. После отсутствия каких-либо действий [1 минуту] (время настраивается), подсветка экрана отключается. Во время ожидания внесения данных о заправке экран не отключается (напоминая о необходимости внесения данных).
Управление устройством с помощью IR-пульта
Для начала нового маршрута, ручного создания основной путевой точки, активации режима заправки и включения/выключения подсветки дисплея существуют “быстрые” кнопки, расположенные рядом с дисплеем. Для ввода каких либо других данных в устройство, а также для осуществления настройки устройства необходимо использовать IR-пульт управления.
Для включения/выключения подсветки устройства используется кнопка On/Off.
Во время активации функции заправки, при помощи пульта вносятся следующие данные о заправке (вносимое значение мигает на экране при переходе к нему), для подтверждения ввода необходимо нажать кнопку [OK], для очистки кнопку [C]:
- текущий пробег. По умолчанию тут отображается пробег, определенный автоматически через OBD2. Его можно изменить или оставить без изменения
- бак (для случаев заправки в разные баки и в канистры). Заполняется так же, как и тип топлива (см. ниже).
- данные о типе топлива. При активации режима заправки уже выбран тип топлива, назначенный по-умолчанию для указанного бака. Изменения типа топлива осуществляется при помощи цифровых кнопок пульта (1-9) для выбора типа топлива по-умолчанию нужно нажать кнопку [0].
- неполный/полный бак. По умолчанию, установлено значение “полный бак”. Для указания полной заправки нужно нажать кнопку [1], для неполной заправки [0], либо просто подтвердить значение по-умолчанию
- количество заправленных литров топлива. Для ввода данных используются цифровые кнопки. Каждое нажатие добавляет разрядность числу, таким образом, для указания заправки 35,5 литров необходимо последовательно нажать клавиши [3][5][5][0]. Нажатие лишь 3 кнопок [3][5][5] будет соответствовать значению 3,55 л. Т.о. после запятой необходимо всегда указывать два числа, например, для 1 литра необходимо нажать [1][0][0]. Если допущена ошибка ввода нужно нажать кнопку [C] для сброса значения и ввести значение заново
- цена 1 литра топлива. Данные вводятся также, как и в случае ввода количества заправленных литров.
- в самом конце запрашивается подтверждение правильности ввода данных. Для подтверждения необходимо нажать кнопки [1][OK], а если необходимо исправить какие-либо введенные данные — кнопки [0][OK] или просто [OK] и изменяемым значением вновь станет текущий пробег, затем бак, затем тип топлива и т.д. При этом ранее введенные значения не будут удалены. Таким образом для изменения значений о баке, типе топлива и полном/неполном баке можно произвести так же, как они вносились, а для остальных данные нужно будет очистить значение (нажатием кнопки [C]) и заново ввести верное значение.
- после ввода [1][OK] данные о заправке сохраняются в файле заправки и устройство возвращается в стандартный режим работы
Также с помощью пульта осуществляется общая настройка устройства (значения по-умолчанию, таймеры и т.д)
Возможность внесения данных по заправке
Активация режима “заправка” осуществляется при помощи быстрой кнопки “Заправка”, расположенной рядом экраном. Внесение данных о заправки может быть осуществлено в любое удобное время, так как с момента активации данного режима устройство будет ожидать ввода данных о заправки до тех пор, пока они не будут внесены. При этом само устройство продолжает свою работу и лишь на экране сохраняется запрос данных по заправке и остается включенной подсветка экрана.
Внесение данных по заправке осуществляется при помощи IR-пульта дистанционного управления и описано в соответствующем разделе выше.
Создание основных и вспомогательных путевых точек
Основные путевые точки автоматически создаются при начале и окончании маршрута.
Также у водителя есть возможность принудительного создания основной путевой точки. Для данной точки возможно указание типа точки (путевая, ДТП, поломка и др), а также задание короткого названия, при помощи цифровой клавиатуры пульта (методом, как на старых кнопочных телефонах), либо, если тип и название не будет указано, точка будет названа текущим датой, временем и текущим пробегом.
Голосовые оповещения водителя
Оповещение водителя о режимах устройства осуществляется при помощи модуля mp3-плеера, с использованием заранее записанных уведомлений на SD-карточку памяти. В случае наличия нескольких фраз по одной теме — выбирается случайная фраза.
Приветствие:
- “Желаю легкой дороги!”
- “Счастливого пути!”
- “Доброго и счастливого пути!”
- “Удачной дороги!”
- “В добрый путь!”
- “Увлекательного путешествия!”
- “Доброй дороги!”
- “Благополучной дороги!”
- “Попутного ветра”
- “Доброго пути!”
- “Счастливо добраться!”
- “Ни гвоздя, ни жезла!”
- “Комфортной езды!”
- “Быстрого пути!”
- “Ровной дороги. ”
- “Гладкой дороги.”
- “Будь внимательней на дороге!”
- “Удачи на дорогах.”
- “Пусть удовольствие от дороги будет сильнее усталости.”
- “Красивых видов за окном.”
- “Приятного путешествия.”
- “Поменьше крутых поворотов.”
- “Поменьше крутых спусков и крутых подъёмов.”
- “Тебе добраться и багажу не потеряться!”
- “Пусть не будет на пути ни заторов, ни пробок, ни аварий!”
- “Хороших радиоволн в дороге!”
- “Хорошей погоды в пути.”
- “Дороги — без ям, без выбоин и без ухабов!”
- “Попутного ветра!”
- “Всегда зелёного света!”
- “Не гоняй и дураку дорогу дай.”
- “Пусть будет лёгкою дорога”
- “Пусть линия горизонта всегда остается ровной.”
- “Легкого тебе пути и ровных дорог.”
- “Пусть дорога преподносит только приятные сюрпризы.”
- “Храни тебя судьба!”
- “Пусть к колесам прилипают только счастливые лотерейные билеты и крупные купюры!”
- “Пусть ничто не огорчит тебя в пути.”
- “Пусть твоя дорога будет покрыта чудесами!”
- “Безопасных тебе дорог!”
- “Пусть любая дорога приведет туда, куда тебе надо.”
- “Береги себя!”
- “Желаю не сбиться с пути.”
- “Пусть в конце пути тебя ждет награда.”
- “Желаю чтобы твой путь стоил затраченных на него
- усилий.”
- “Пусть поездка будет в радость!”
- “Удачи, и – в добрый путь!”
- “Приятного вояжа!”
- “Благополучно тебе добраться до пункта назначения!”
- “Желаю получить новые интересные впечатления.”
- “Пусть всегда тебе горит «зеленый»!”
- “Пусть дорога будет к тебе добра.”
- “Пусть всякая дорога всегда приводит тебя домой!”
- “Бодрости в пути!”
- “Успешной поездки и благополучного возвращения!”
- “Пусть никто и ничто не омрачит твоего пути.”
- “Пусть счастливая звезда освещает твой путь.”
- “Безаварийного тебе пути.”
- “Спокойствия тебе и терпения. Тогда путь сам станет счастливым!”
- “Пусть дорога будет – ровной, а место для отдыха – сухим!”
- “Везения в пути.”
- “Волшебной поездки.”
- “Хорошего тебе самочувствия за рулем.”
- “Пусть все попутные события будут только – приятными!”
- “В добрый путь!”
- “Пусть всё у тебя будет ровно и гладко!”
- “Безоблачного неба и бодрствующей интуиции.”
- “Спокойствия тебе за рулем!”
- “Пусть в пути встречаются только отзывчивые люди.”
- “Пусть все цели будут достигнуты.”
- “Поменьше тебе крутых поворотов.”
- “Пусть помощь приходит своевременно, если она потребуется.”
- “Пусть здравый смысл не изменяет в пути.”
- “Довези себя не только живым, но и – здоровым!”
- “Пусть повороты в пути будут только – к лучшему.”
Основные:
- “Предыдущий маршрут завершен, начинаю новый маршрут”
- “Продолжаем движение по текущему маршруту”
- “Создана новая путевая точка”
- “Ожидаю данные о заправке”
- “Отмена приема данных о заправке”
Прощание (при выключении зажигания):
- “До скорой встречи”
- “Всего хорошего”
- “Всего доброго”
- “Удачи”
- “В добрый час”
- “Всего лучшего”
- “Всего наилучшего”
- “Всех благ”
- “До свидания”
Синхронизация с домашним сервером
При обнаружении устройством домашней WiFi сети, оно синхронизируется с сервером, передавая на него все полученные данные. Передав данные и получив подтверждение, устройство удаляет информацию о маршрутах со своей карты памяти.
Сырые данные GPS, данные об основных путевых точках и данные о путевых точках заправок с карты памяти автоматически не удаляются.
Режим Big Brother
При активации данного режима устройство постоянно отправляет на сервер свои координаты. Если зажигание выключено, устройство большую часть времени находится в режиме сна, периодически просыпаясь для определения своих координат и при изменении их переходит в активное состояние, отправив их на сервер. При отсутствии изменений координат, устройство вновь засыпает, до следующей проверки.
При включенном зажигании GPS-координаты постоянно отправляются на домашний сервер для обработки модулем GPS-трекер. Можно настроить, какие координаты не будут отправлены на сервер:
- полностью одинаковые координаты
- координаты, находящиеся друг от друга на расстоянии менее [10 метров] (расстояние настраивается)
- полученные чаще чем [1 раз] (частота настраивается) в [30 секунд] (период настраивается)
Также возможна особая логика периодичности получения и отправки GPS-координат на сервер устройством, с использованием совокупности параметров, в том числе данные компаса и акселерометра.
Необходимые модули
- GSM/GPS-модуль — определение GPS координат, отправка/получение служебных SMS сообщений, синхронизация данных с домашним сервером (активируется вручную)
- ELM327 — подключение к OBD2 разъему для считывания текущего пробега автомобиля
- WiFi модуль — подключение к домашней WiFi сети для синхронизации данных с домашним сервером (в автоматическом режиме)
- LCD-экран с подсветкой — отображение информации устройства
- Тактовые кнопки (4х) — кнопки основного функционала устройства
- IR-датчик — считывание сигналов IR-пульта
- IR-пульт — полноценное управление устройством, настройка устройства
- RGB-светодиод (либо обычный (режимы мерцанием)) — отображение текущего режима работы устройства
- Модуль SD-карты — сохранение данных устройства
- Модуль MP3-плеера — для воспроизведения уведомлений устройства
- Динамик — для воспроизведения уведомлений устройства
- Arduino/ESP8266 — мозги устройства
- Нажимной подстроечный резистор, для более простого управления устройством (возможно)
- Акселерометр/компас (предположительно)
Вот такой концепт получился. Продолжение напишу, когда начну реализацию данного проекта и будет о чем написать.
