Спидометр, тахометр, одометр для любой техники (с GPS модулем).

Vladikas
Offline
Зарегистрирован: 25.07.2013

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

Использованные модули:

Arduino Nano, GPS приёмник от видеорегистратора, OLED экран 128х64 SSD1306, понижающий преобразователь напряжения на MP1584, сенсорная кнопка на TTP223, ну и рассыпуха по мелочи указана на схеме. Вместо сенсорной кнопки можно поставить обычную (пин замыкать на массу), но тогда нужно изменить конфигурацию в скетче (33 строку закомментировать). Кстати, сенсорная кнопка работает отлично - сквозь пластик палец в кожаной перчатке нормально отрабатывает, но нужно вплотную прижать/приклеить сенсорную пластину к пластику (отпаять пины, сделать эту сторону плоской).

GPS модуль покупал вот этот https://ru.aliexpress.com/item/32879520862.html, но что-то цена на него сейчас неадекватная (стоил с доставкой 300 рублей). Вот пара похожих лотов, похоже, что там внутри у всех одно и то же https://ru.aliexpress.com/item/33024312145.html и https://ru.aliexpress.com/item/33022736881.html Возможно, что по 200 рублей продают без ГЛОНАСС. Я в своём приёмнике пытался его активировать (чип вроде поддерживает), но не заработало. Да и нафиг он тут не нужен.

Логика работы такая:

Когда только включился показывает служебный экран:
    chars            символов принято
    sentences    фраз с позицией принято
    failed            ошибочных контрольных сумм
    passed         прошедших контрольных сумм
    hdop            горизонтальная точность
    lat                широта
    lng               долгота
    available      символов в буфере (1 - переполнение для softserial)

Если при этом заведён мотор, то показан тахометр.
Когда будет получено время с GPS, то будет показан экран времени.
Когда будет скорость выше минимальной (minTrueSpeed), то будет показана скорость.

Однократное нажатие кнопки - переключение экрана.
Двухкратное - блокировка на текущем экране (символ Н справа вверху).
Длительное удержание на экране одометров - сброс одометра.

В правом нижнем углу количество спутников. На экране тахометра внизу экрана рисуется полоска (максимум 10000 об/мин).

Я продублировал светодиод (13 пин) на приборную панель, чтоб видеть, что кнопка реагирует на касания (на схеме не указан).

Вцелом устройство работает нормально, не смотря на то, что внутри говнокод (старался всё комментировать). Иногда может зависнуть, если мотоцикл стоял ночь под дождём или едешь по сильному туману. Отловить проблему мне не удалось. Склоняюсь к тому, что зависает OLED экран. После того, как покрыл всю пайку цапон-лаком, стало гораздо лучше.

Пришлось немного модифицировать шрифты для библиотеки работы с экраном. Их надо добавить в папку библиотеки SSD1306Ascii и добавить шрифт в файл allFonts.h (переделанная библиотека прилагается).

Так же можно сделать устройство с двумя экранами, чтоб на одном из них всё время были, например, часы или тахометр. Можно сделать на отдельной ардуине только тахометр.

Все файлы (с библиотеками и прочим) https://yadi.sk/d/MXha8QHyRGsR2w

Скетч и шрифты https://yadi.sk/d/jMVPCIzbapkLCQ

b707
Offline
Зарегистрирован: 26.05.2017

скорость с GPS идет? и как быстродействие?

Vladikas
Offline
Зарегистрирован: 25.07.2013

Всё кроме оборотов идёт с GPS. Модуль выдаёт инфу в порт раз в секунду, так что экран спидометра обновляется раз в секунду. Экран тахометра обновляется раз в 100мс или раз в 500мс в зависимости от того аппаратный UART используется для связи с GPS или софтовый.

Vladikas
Offline
Зарегистрирован: 25.07.2013

Видео работы https://youtu.be/4xzfTJs3LxY