Одометр на ардуино для авто
GPS-спидометр и одометр
В простых велокомпьютерах обычно считаются обороты колеса — зная количество оборотов в минуту не сложно подсчитать скорость и пройденное расстояние. Вот только датчики Холла на вилку ставить морока, они быстро покрываются грязью и начинают сбоить. Лишние провода отнюдь не украшают байк, а только привлекают внимание воришек. Да и что делать, если в хозяйстве не только велосипед, но ещё и самокат, ролики или сноуборд?
Мы пошли другим путём. Данные о скорости мы получаем от приёмника сигналов спутниковой навигации GLONASS/GPS. А дальше — дело техники. Милые сердцу моряков и авиаторов узлы мы переводим в привычные «км/ч», а информацию об изменении координат используем для определения пройденного расстояния. Полученные значения в реальном времени выводим на четырёхразрядный индикатор, переключаясь между выводом скорости и дистанции обычной тактовой кнопкой.
Получилось компактное устройство, которое быстро крепится на руль, раму или просто на руку. Без лишних проводов и проблем с калибровкой.
Что потребуется
Полный сет компонентов проекта. В сет входят:
Видеоинструкция
Как собрать
Поверните GLONASS/GPS на 90 градусов против часовой стрелки и вставьте в правый верхний слот.
Переверните Quad Dispaly вверх ногами и вставьте в центральный и правый слоты нижнего ряда.
Переверните тактовую кнопку на 90 градусов против часовой стрелки и вставьте в центральный верхний слот.
Скетч
Прошейте контроллер скетчем через Arduino IDE.
Что дальше?
Хотите собрать другой девайс? Выберите своё будущее устройство из списка проектов на Slot Shield.
Цифровой спидометр на Ардуино для автомобиля или мотоцикла и электронный одометр своими руками
В инструкции будет рассказано, как сделать цифровой спидометр для своего велосипеда. Да, это то же самое, что мы используем в автомобилях и мотоциклах, но он будет очень дешевым.
У собранного своими руками электронного спидометра будет три режима:
Спидометр собран на Ардуино, так что нет предела вашему воображению.
Шаг 1: Как всё работает
Принцип работы проекта прост, но для сборки его нужно понимать. В самом простом понимании, он состоит из Геркона или магнитного выключателя, установленного на раму велосипеда и еще одного магнита, установленного на спицу колеса.
Так как колесо вращается, то магнит активизирует выключатель при каждом обороте. Сигнал поступает на Ардуино, который считает количество оборотов и по ним определяет покрытую дистанцию (нужно будет сначала указать диаметр вашего колеса). Также Ардуино следит за временем и вычисляет скорость. Данные выводятся на дисплей, где они отображаются в милях в час (или в километрах, если доработать формулу).
Шаг 2: Необходимые материалы
Проект недорогой и может обойтись вам в 300-700 рублей. Сборка потребует от вас некоторые умения в пайке.
Материалы для сборки:
Список необходимого инструмента:
Шаг 3: Код
Перед тем, как мы перейдём к электронике, будет неплохо загрузить код, чтобы вы не испытывали конфуз, метаясь между неправильно подключенными проводами. Загрузите код на Ардуино, перед этим не забыв указать диаметр колеса вашего велосипеда.
Шаг 4: Электроника
Схема соединения компонентов приложена выше, но я также напишу её отдельно.
После соединения всех компонентов можно запитать девайс и проверить, что всё работает.
Шаг 5: Корпус
Корпус можно сделать из пластика или дерева, он должен быть прочным и в нём должно быть достаточно пространства.
После установки переключателей, экрана, кнопки и хедеров проверьте девайс на работоспособность. Постарайтесь сделать устройство водонепроницаемым, ведь оно окажется в самых худших для работы условиях.
Шаг 6: Тестирование и устранение неполадок
Запитайте устройство от батарейки 9V и проверьте все три режима. Поднесите магнит близко к Геркону и скорость с дистанцией должны начать увеличиваться.
Рассказываю как сделать какую-либо вещь с пошаговыми фото и видео инструкциями.
GPS спидометр на Arduino и OLED дисплее своими руками
Спидометры используются для измерения скорости движения транспортного средства. Ранее на нашем сайте мы уже рассматривали создание аналогового спидометра на основе платы Arduino и цифрового спидометра на Arduino и смартфоне на Android. В аналоговом спидометре для измерения скорости мы использовали инфракрасный датчик, а в цифровом – датчик Холла. В этой же статье для измерения скорости мы будем использовать технологию GPS. В большинстве случаев GPS спидометры более точно измеряют скорость чем обычные спидометры. Также технология GPS в настоящее время широко используется в смартфонах и транспортных средствах для навигации и предупреждения о различных дорожных ситуациях.
В данной статье мы рассмотрим создание GPS спидометра на основе платы Arduino, GPS модуля NEO6M и OLED дисплея.
Необходимые компоненты
GPS модуль NEO6M
NEO-6M является популярным GPS приемником со встроенной керамической антенной, которая обеспечивает хороший прием сигнала с GPS спутников. Данный приемник способен отслеживать до 22 спутников и обеспечивает определение местоположения в любой точке земного шара. Модуль имеет аккумулятор для автономной подпитки (backup battery), что позволяет ему сохранять данные когда основное питание схемы отключено.
Ядром модуля является GPS чип NEO-6M от компании u-blox. Он может отслеживать до 22 спутников по 50 каналам и обладает чрезвычайно хорошей чувствительностью (-161 dBm). Модуль поддерживает скорости передачи данных 4800-230400 бод. По умолчанию он настроен на скорость 9600 бод.
Технические характеристики модуля:
Назначение контактов (распиновка) GPS модуля NEO6M:
• VCC : входное питающее напряжение;
• GND : общий контакт (земля);
• RX, TX : контакты для UART (последовательной) связи с микроконтроллером.
На нашем сайте мы уже достаточно часто рассматривали проекты с использованием GPS модулей, список данных проектов можно посмотреть по следующей ссылке.
OLED дисплей
Термин OLED расшифровывается как “Organic Light emitting diode” (органический светоизлучающий диод) и в используемом нами OLED дисплее используется та же самая технология, что и в привычных нам современных телевизорах, только разрешение экрана нашего дисплея существенно меньше чем у телевизоров. С подобными дисплеями проекты на Arduino сразу начинают «сверкать новыми красками» поскольку они обеспечивают значительно более презентабельную картинку чем обычные монохромные ЖК дисплеи. В нашем проекте мы будем использовать монохромный OLED дисплей SH1106 1.28” с 4-мя контактами, подключаемый по интерфейсу I2C.
Технические характеристики дисплея:
Назначение контактов (распиновка) дисплея:
VCC : питающее напряжение 3.3-5V DC;
GND : общий провод (земля);
SCL : контакт синхронизации интерфейса I2C;
SDA : контакт передачи данных интерфейса I2C.
Сообществом Arduino разработано уже достаточно много библиотек для работы с OLED дисплеями, нам среди них понравилась библиотека Adafruit_SH1106.h – она проста в использовании и позволяет работать с графикой.
Подобный дисплей мы ранее уже использовали в следующих проектах:
Схема проекта
Схема GPS спидометра на Arduino и OLED дисплее представлена на следующем рисунке.
Внешний вид собранной на макетной плате конструкции проекта выглядит следующим образом:
Объяснение программы для Arduino
Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.
Первым делом в программе необходимо подключить все используемые библиотеки. В нашем проекте мы будем использовать библиотеку TinyGPS++.h для считывания GPS координат с GPS модуля и библиотеку Adafruit_SH1106.h для работы с OLED дисплеем.
одометр, спидометр на расмотрение
Комментарии 32
переменные в обработчиках прерываний должны иметь квалификатор volatile.
Т.е. volatile unsigned long m;
Счетчик можно ставить в прерывания, но в идеале конечно флаг.
Расчеты проверять у меня времени нет.
Автор, пожелание, если меняешь прикрепленный скетч, пиши об этом в посте. Чтобы комментаторы не выглядели идиотами. ))
пока оставлю.скетч изменил.сообщил же час назад. значит при изменении будет добавлятся скетч а старый убираться не будет
Правило хорошего тона. Изменил прикрепленные файлы, обновил шапку/пост. Я же тебя не заставляю, не хочешь, не делай. Удачи с проектом. ))
Спасибо.а по делу то сказать нечего? Куча ненужного и не оптимизированного. … Не мы выскажется за подмену скетча. Про подмену которого я всеже сообщил. Покажи как надо тогда я тебя пойму.
По делу тебе в самом начале сказал. Как опрашивать ds18 без дилея полно примеров в интернете. Если не найдешь, завтра с компа скину. По поводу замены скетча не претензия, а пожелание. Я пишу, что контроллер на опросах стоит, а мне человек отвечает, что это не так. Получается я тупой, пишу фигню.
покажи содержимое файла DS18B20.h и DS18B20.cpp Вот это ds.getTempC() очень смахивает на вызов из dallasTemperature, если это так, то у меня для тебя плохие новости, там те же самые дилеи. В обработчике прерывания не должно быть ничего, кроме установки флагов. У тебя же там куча расчетов. В это время все висит. Вся обработка должна быть в лупе.
спс за конструктивную критику будем думать.
покажи содержимое файла DS18B20.h и DS18B20.cpp Вот это ds.getTempC() очень смахивает на вызов из dallasTemperature, если это так, то у меня для тебя плохие новости, там те же самые дилеи. В обработчике прерывания не должно быть ничего, кроме установки флагов. У тебя же там куча расчетов. В это время все висит. Вся обработка должна быть в лупе.
byte wheelsize=16; //Размер диска(14.15 и.т.д)
int wheelwidth=225; // Ширина шины
byte wheelprofile=50; // Профиль шины
float mainpair=3.64; //Передаточное число ГП(Редуктор моста)
//int a = (1000000/(((((wheelwidth /100) * wheelprofile)*2) +(25,4 * wheelsize))*3.14))*12; //24852 — количество срабатываний датчика на км пути
volatile unsigned int Circumference=2071; //Длинна окружности колеса 1960 1738
//Диаметр покрышки 205/70 14 = 64,5см, в метрах= 0,645 м
//Длина окружности pi*d=3.14*0.645=2.03
//Кол-во оборотов колеса на км пути=1000/2,03=492 об
//Кол-во оборотов кардана, при ГП 3,9=492*3,9=1921 об
//Adafruit_SSD1306 display(OLED_RESET);
Adafruit_SSD1306 display(128, 64, &Wire, OLED_RESET);
void setup() <
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.setTextColor(WHITE);
attachInterrupt(0, odom, RISING);
tone(2,1000);
//tone(2, random(75,300));
>
void odom() <
m++;
>
void loop() <
cur_ms = millis(); //сколько прошло мс с момента включения
ms = cur_ms — prev_ms; //сколько прошло мс с последнего срабатывания расчета
if (ms > 500) <
prev_ms = cur_ms; //ставим метку когда было срабатывание
sp = ((m — m_temp) * 3600 / ms)/24; //вычисляем скорость км в час по кол-ву пройденных метров за отрезок времени ms
m_temp = m; //ставим метку когда было вычисление
ms=0; //обнуляем отрезок времени
>
Тахометр-спидометр на Arduino
С помощью датчика Холла и платы Ардуино можно измерять скорость вращения к примеру колеса велосипеда или самоката, в общем в любых механизмах и машинах, которым необходимы измерения скорости.
В этом проекте мы делали спидометр из кольца адресных светодиодов под управлением компактной платы Ардуино Нано версии с CH340.
1. Аппаратная часть
Для реализации тахометра с применением адресных светодиодов на понадобится:
2. Схема и программная часть
После подбора компонентов для сборки, собираем небольшую схему
Кольцо можно временно отключить, чтобы просто не мешалось.
Проверяем схему еще раз и загружаем в Arduino следующий скетч
После загрузки скетча можно проверить работу датчика холла, для этого подключаем осциллограф на выход тахометра и смотрим что выдает датчик холла при вращении диска с магнитом рядом с датчиком. Если сигнал отсутствуем проверяем правильность подключения датчика и при необходимости делаем подтяжку сигнала резистором 10 кОм на плюс питания.
После проверки работоспособности подключаем кольцо на светодиодах WS2812 и вращая рядом с датчиком диском с магнитом получаем частоту вращения диска.
Перед установкой в какие либо механизмы необходимо откалибровать данный тахометр, используя заведомо исправный тахометр заводского исполнения.
Смотрим что получилось.
Заключение.
Применение данной схемы масса.Например сделать спидометр для велосипеда закрепив магнит на колесе, а датчик на вилке или сделать модернизацию приборной панели автомобиля. В общем везде, где необходимо измерение частоты или скорости вращения механизма.