Часы в авто на ардуино

Часы с термометром вместо штатных часов.

1. Вместо вступления (можно не читать).
Итак, в мосей машине (Mitsubishi Pajero Sport 1st gen) с завода небыло забортного термометра, но были штатные часы в очень удобном месте. Это натолкнуло на очевидную мысль: в корпус штатных скорячить самоделку. Задача казалась совершенно очевидной: ну что может быть проще термометра с часами? Но не все так просто. Бала разработана и внедрена первая версия часов. Проработала несколько месяцев с благополучно сдохла, оставив за собой несколько бесценных выводов:
1.1 Термоклей как способ монтажа неприемлем.
1.2 Кнопки корректировки времени все-таки нужны.
1.3 Процесс отладки практически бесконечен, поэтому нужно следать возможность вносить изменения в проект (программно и аппаратно) не снимая потолочную консоль. Ибо задолбался!

Отсюда были вынесены основные концепции проекта v2: В консоль прячется то, что не требует отладки/доработки (дисплей, кнопки, питание). Монтаж только не печатной плате, крепление в корпус на винтах.

Еще одно маленькое отступление: вторую версию проекта начал делать не на Ардуино, а на STM32. Плюсы очевидны: больше памяти, больше частота и разрядность. Экран с часамы видавал 35фпс на стм-ке! Но потом выяснилось, что костыль Arduino-STM32 имеет проблемы с нормальным существованием нескольких устройств на шине I2C (это не говоря про необходимость допиливания вручную всех библиотек, которые работают с i2c). И тогда я подумал, что 8 фпс тоже норм (для часов-то!) и вернулся на Ардуино.

Схема всего устройства. Разнесено на два блока по причине из пункта 1.3.

3. Компоненты.
Про Ардуину я уже немного упомянул. Добавлю лишь что у я использовал версию на Atmega328 3.3v 8MHz.

Про часы стоит упомянуть отдельно. Я пробовал несколько модулей реального времени и со всеми была одна проблема: неточный ход. Какие-то спешат, какие-то отстают. Я прочитал много инструкций по устранению этого косяка и остановился на модуле DS1307. Его я доработал таким образом: удалил лишний диод и резистор и заменил кварц на донорский из материнской платы. После этого он показал приемлемую точность отсчета времени и стабильную работу (не обнуляется при сбросе питания).

Экран использовал SSD1306. Это OLED экран с i2c интерфейсом. тоже попробовал несколько штук. Отличаются цветом (белый, синеватый, голубоватый…) и размерами. Когда я рисовал и печатал корпус, модель посадочного места под экран я нашел в интернете. Оно совпадало с экраном, который был у меня тогда с SPI интерфейсом. Потом я купил экран с i2c и он не очень здорово садился в посадочное место. Я подумал тогда что это косяки печати и поего рисования, А потом заказал другой такой же экран и он сел как родной! Так что имейте в виду.

Датчик температуры использовал цифровой DS18B20. Он получается самый дорогой, но и самый точный и менее капризный при подключении, в калибровке не нуждается и показания не зависят от напряжения. А вот все остальные аналоговые — это геммор, решил их не использовать.

Микросхема PCF8574P. Это расширитель цифровых входов/выходов для шины I2C. На нее можно подключить до 8 кнопок и/или светодиодов и управлять по двум проводам. Удобно, вообщем. По маркировке есть небольшие отличия и бывают в разных корпусах, но работают примерно одинаково. Взял ту, что была в наличии.

Рисовал в специальной программе, каковых много разных. Есть он-лайн версии. Если интересно — спросите в каментариях. Печатал методом ЛУТ. В виду отсутствия опыта получилось не сразу. Долго эксперементировал с бумагой. Несколько раз перерировывал с поправками на прошлые ошибки. Ошибки были связаны с размером пятаков под пайку деталей. Могу вам сэкономить время и деньги: делайте отверстие под сверло 1мм.

5. Код.
Код надергал из примеров работы со всеми компонентами. Получилось вроде быстро. Для работы с экраном советую использовать либу Adafruit_SSD1306. Я сперва начал делать на U8GLIB, она вроде прикольная и есть куча разных шрифтов. Но работает гораздо медленнее и шрифты занимают кучу памяти! Поэтому я использовал библиотеку от Adafruit и нарисовал сам шрифты. Не знаю, есть ли смысл выкладывать код тут, все необходимые файлы я выложу отдельным архивом. Кроме библиотек. Вместо этого расскажу как за 0.534секунды найти лубую недостающую библиотеку: Печатаете в Гугл имя файла, который у вас не обнаруживается. Например, Adafruit_SSD1306.h. Первая ссылка будет вести на GitHub проект этой либы. Нам жмете кнопку «Clone or Download», качаете архив и распаковываете его куда надо.

Читайте также:  Что лучше jcb или cat

Ссылка на архив.
Внутри вы найдете скетч для ардуино с файлами шрифтов, модель для 3Д печати и файл со слоями для печатной платы.

Источник

Часы реального времени Arduino

Работает следующим образом: в верхней строке постоянно отображается текущее время, в нижней поочередно день недели, дата (чч.мм.гг), температура за бортом, температура на борту и напряжение в сети. В случае если напряжение ниже 11 Вольт, часы сигнализируют звуковым сигналом о низком заряде, и, так же, в нижней строке, сообщают напряжение в сети, а затем текущую информацию из блока (день недели, дата и т.д.). Бонусом организовал приветствие при включении звуковым сигналом и надписью «TOYOTA MARK II» на экране. Кроме того, часы оповещают о смене каждого следующего часа звуковым сигналом.
Подключение в штатный разъем.
Штатный светофильтр (стекло) пришлось заменить кустарным, т.к. новый дисплей его не просвечивал.

Кнопки были удалены за ненадобностью (обрезал и запаял для вида, чтобы закрыть от них дыры), т.к. модуль 3231 это высокоточные часы, с погрешностью до 15 секунд в год и подстройка мне не понадобится. Так же заменил батарею модуля часов CR2032 из комплекта на перезарядный аккумулятор LIR2032, т.к. из-за особенностей построения конкретно этого RTC модуля CRки надолго не хватит (3231 заряжает ЭП, как следствие ЭП начинает греться и «пухнуть», в итоге просто выходит из строя).

Для реализации использовались следующие компоненты:
1. Arduino Leonardo;
detail.tmall.com/item.htm…e8dGuybSv&_u=k3mah9mi4d42

3. LCD 0802 (Заменю на белый OLED, когда тот появится в продаже);
item.taobao.com/item.htm?…397170311&_u=k3mah9mibc4c

4. Мелкосхема 7805 + 2а конденсатора 1мкф 50В на выход и вход;

6. Два резистора 10КОм и 100КОм для постройки коэффициентного вольтметра;
7. Пьезоэлемент;

Источник

H Бортовой компьютер для авто на Arduino своими руками в черновиках Из песочницы

UPD 27.12.2017: Решил дополнить статью что проект был доработан другим пользователем, улучшен скетч в плане автоматической задержки, восстановления связи в случае разрыва соединения и много других нюансов… спасибо. Oleg его почта для вопросов: 2003shef@gmail.com

Его комментарии к переработке:

1.вся проводка и соединение всех модулей и узлов сохранены из первоначального проекта.(кроме подключения блутуз модуля, он теперь на серийном порте «1»)

2.программа жестко заточена под ардуино МЕГА 2560. на серийном порте «0» присутствует Дебаг при условии раскоментирования дефайна.

3.убран параметр задержки между опросами, задержка полностью интелектуальна и динамична, новый запрос не отправится пока не будет получен ответ на предыдущий с учетом таймаута.

4.добавлена функция восстановления связи в случае разрыва соединения (параметром потери связи служит отсутствие оборотов двигателя).

5.для работы требуется библиотека OBD.h вложенная в архив с проектом, этот экземпляр имеет несколько изменений от оригинала который можно скачать из интернета, и без неё скорее всего проект не будет работать или будет нестабилен.
папку нужно скопировать в папку » \Documents\Arduino\libraries»

Android приложение со всеми нюансами в Google Play: OliviaDrive

Мы сможем сделать бортовой компьютер, умеющий считать расход топлива, показывать температуру охлаждающей жидкости, скорость авто, расстояние поездки, потраченный бензин за поездку, обороты двигателя, давление во впускном коллекторе, температуру впускного коллектора, УОЗ, коррекции топлива, вольтаж датчиков кислорода, нагрузку двигателя и многое другое.







Список требуемых деталей для сборки БК

2) LCD2004 жк-модуль

3) Модуль Bluetooth HC-05

4) OBD ELM327 Bluetooth сканер

5) Резистор 10 кОм подстроечный, бипер для звука, 2 кнопки для смены экранов, провода для соединений, корпус

Настройка блютуз модуля HC-05 для работы

Подпаиваем провода к пинам блютуза: (картинку с выходами смотреть в описании требуемых деталей)

#include
SoftwareSerial BTSerial(6, 7); // TX | RX
void setup()
<
Serial.begin(9600);
Serial.println(‘Enter AT commands:’);
BTSerial.begin(38400);
>

void loop()
<
if (BTSerial.available())
Serial.write(BTSerial.read());
if (Serial.available())
BTSerial.write(Serial.read());
>

После успешной загрузки скетча открываем: Сервис->Монитор порта. Далее снизу ставим скорость 9600 бод и NL+CR вместе.

Далее вводим команды по одной и нажимаем [Послать]. После каждого ввода должен быть ответ ok.

AT // (возможно 1 раз вылетит Error, не пугайтесь… это нормально, повторите опять)
AT+NAME=Car //Присваиваем имя модулю Car
AT+ROLE=1 // Переводим модуль в режим Мастер
AT+PSWD=1234 // Ставим пароль 1234 как на OBD ELM327
AT+BIND=AABB,CC,112233 //Прописываем Mac адрес OBD ELM327.
AT+CMODE=1 // Подключение модуля с фиксированным адресом
AT+UART=9600,0,0 // Скорость работы по UART

Заметьте, что mac-адрес вида: «AA:BB:CC:11:22:33» вводится как «AABB,CC,112233». MAC- адрес своего модуля ELM327 можете посмотреть, подключившись для начала на него со своего мобильника. (Стандартные пароли обычно: 1234, 6789, 0000).

Читайте также:  Фотопечать на торт мопед

Всё, настройка модуля Bluetooth закончена.

Теперь нужно собрать схему Arduino + блютуз + LCD-экран

Схема:

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

3. Подключаем дополнительную кнопку для переключения экранов с данными.

[1 кнопка]: один конец от нормально-открытой кнопки подключаем в GND ардуино, а второй конец в пин 10.
[2 кнопка]: GND + пин 9.

Бипер для звуковых предупреждений подключить по следующей схеме «+» к пину 13, а минус к GND ардуино.

Заливаем скетч в Arduino с помощью Aduino IDE 1.0.6 (использовал эту версию).

Единственное, в скетче присутствуют переменные, которую нужно подправить.

Нужно будет обязательно учесть три переменных:

1) ED=1.998 Например объем двигателя в литрах 1.398;
2) VE_correct=1.0; Корректировка объёмного КПД ДВС по таблице: (если расход реально меньше — то уменьшаем значение в процентном соотношении). Если не хотите калибровать добейтесь чтобы при прогретом двигателе мгновенный расход в л/час был в районе половины обьема двигателя;
5)speed_korrect_val=1; Корректировка скорости машины, смотреть по GPS/

Управление

[Кнопка 1], [кнопка 2] — листать экран вперед назад.
При включении при надписи «Connecting»… держать [кнопку 1] вход в режим показывания технологических экранов и параметров отдаваемых ЭБУ в 16-чном формате. Если будете включать БК не в машине то нужно отключить функцию опроса блютуз, надо продолжать держать две кнопки при надписи «Recovery»… до появлении надписи «All off»… а то экран будет все время пустой.

[Кнопка 1] + [кнопка 2]: 4 секунды — Сброс журнала общего пробега и потраченного бензина на втором экране, также это сброс ошибок на экране информации об ошибках.

Скетч:

Старый скетч был удален в плане многих дефектов в работе… новая версия по ссылке вверху статьи… он был доработан пользователем Oleg, спасибо ему большое. его почта для вопросов: 2003shef@gmail.com

Все, идем в машину, вставляем ELM327 в порт, ардуину в зарядку для авто и проверяем.

Источник

Большие ЖК часы на ардуино

Давно хотел сделать электронные часы на диодной ленте, и вот как-то наткнулся в инете на статью и сразу захотел реализовать — подкупила относительная простота и малое количество проводов — накосячить будет сложно.
Там же, в статье, указаны необходимые компоненты с ссылками на алиэкспресс, по которым я все сразу и заказал и стал изучать тему в ожидании посылки. Как оказалось, слегка поторопился, некоторые элементы можно было заменить, об этом ниже, в недочетах
Компоненты электроники:
— Диодная лента на микросхемах ws2811 (RGB, питание 12в) 5 метров — 700 рублей;
— ардуино нано — 200 рублей;
— датчик освещенности — 28 рублей;
— модуль реального времени RTC DS1307 AT24C32 — 37 рублей;
— преобразователь питания LM2596 — 41 рубль;
— блок питания 12 в 1А — нашел в закромах;
— датчик температуры DALLAS DS18B20 — 48 рублей;
— кусок макетной платы, две таковые кнопки, провода — нашел в закромах.

Для изготовления часов понадобилось так же:
— картон жесткий (изначально хотел фанеру)
— ватман (2 шт)
— двусторонний скотч (3М)
— обычный скотч
— листы вспененного полиэтилена (взял из защитных упаковок оборудования)

Изготовление часов.
1. Установка шрифта в MS Officce, и печать символа 8 на весь размер листа А4. Я сделал это в Visio

2. Нанесение границ кусков диодной ленты на картон

3. По следующему шаблону делаем разметку на вспененном полиэтилене, толщина 15 мм, и далее по разметке вырезаем.

Для резки использовал самодельный станок из трех деревяшек, листа ДСП и натянутой вертикально нихромовой проволоки. Запитал регулируемым блоком питания.

4. По размеченным на картоне границам приклеиваем куски диодной ленты и соединяем пайкой по цепочке.

5. Далее приклеил контуры цифр к картонке с диодной лентой:

Далее сделал из ватмана внешний корпус, хотел сделать из фанеры, деревянных реек и тонированного стекла или акрила — но пока ни времени ни возможности нет.

Электроника
Основную схему вынес в отдельную коробочку, так как такой корпус хлипковат. В итоге к часам подходит кабель, в котором:
+12В — на питание диодной ленты;
+5В — на питание модуля освещенности;
0 — общий провод (минус);
выход данных с ардуино на диодную ленту;
выход сигнала с датчика освещенности на ардуино;

На деле все получилось не так красиво, но вроде работает:

Читайте также:  Что лучше мальтофер или тотема при анемии

Алгоритм работы:
Часы показывают время, дату и температуру в помещении: первые 15 секунд — время, затем 3 секунды — дату, еще 3 секунды — температуру, затем снова время. С 45-й секунды вновь дата 3 секунды, температура 3 секунды и снова время.
Когда в помещении светло — яркость отображения высокая, когда темно — снижается до минимального.

Скетч
yadi.sk/d/apVZ5DBw3XYTZo
Список скетчей:
1. clock_date (02.01.2017) — отображает время, дату и температуру, слегка подтормаживает при смене показаний
2. clock_temp (09.09.2017) — отображает время и температуру, смена каждые 5 секунд
3. new_clock (04.01.2017) — отображает просто время, анимированная смена цвета каждую минуту
4. new_clock_без кнопок (09.09.2017) — то же, что и п. 3, только убрал кнопки корректировки времени
5. clock_temp_animation (09.09.2017) — скетч из п.2 с анимацией как в п.3.
6. clock_temp_x2_animation (25.11.2017) — скетч из п.5 с двумя датчиками температуры: 5 секунд время, 2 секунды — температура внутри, 2 секунды — температура снаружи (наружный отображает отрицательную температуру)

в скетче возможны ошибки — переделывал много раз

для корректировки времени в архиве отдельный скетч, иначе выставить дату проблематично

Источник

GPS часы на ардуино

Знаю, знаю, поделкой назвать сложно… Но мне нужно было быстро создать девайс, родить его так сказать на коленке, потом, может быть и переведу это на обычную АТмегу, а пока быстро создано и проходит испытания в «напроводном» режиме. А может и так вставлю только окультурю…

Почему Ардуина? Мне ее было быстрее освоить.

Давно хотел воткнуть часы в машину, да так, чтоб не приходилось их регулярно подстраивать… Выход очевиден — брать их откуда-то… Откуда?

1. GPS
2. сеть
3. RDS
4. RTC (но тут надо ее же настраивать, значит это не наш метод)

Следовательно второй метод тоже отпадает — т.к. возникает ряд сложностей как в синхронизации времени (через что-то нужно-же в сеть попадать), так в софте и железе…
Остается 2 варианта: GPS и RDS… и опять же последнее мне не подходило так как нужно железо, и некий транспорт (вешаться на какую-то станцию) да и сама синхронизация не всегда возможна (зависит от радиостанции, конечно, но в большинстве случаев это происходит раз в час)
в общем выбор был очевиден с самого начала: GPS.

Остальное в общем то и не важно… далее все это было соединено и усажено за софт.
Первым наткнулся на сайт вот этого дядечки www.hackster.io/rayburne/…o-gps-clock-for-25-496a20 правда скетч топорный и криворукий, дядечка не знает что у текста может быть фон, и потому все каляки-маляки тупо закрашивал — что следовательно сильно тормозило саму прогу, но зато у него была запиленная до минимума либа GPS, которая нихрена кроме часов не тянула. Время старта — молниеносное в любых условиях — в доме, где вообще GPS никогда не фиксировался — ловит!
Дальше он брал стандартную либу Adafruit ILI9340, я взял чуть поинтереснее 9341_AS — пишут что она шустрее работает, но мне это было не сильно критично — мне нужны оттуда были шрифты (Adafruit_GFX) и — стрелочные часы в демке.
Дальше я просто объединил демку с данными из GPS и либой вышеуказанного Рэя и вуаля.

Скачать скетч можно тут: drive.google.com/file/d/0…BX3IxaWM/view?usp=sharing
Потребуются библиотеки: TFT_ILI9341 от Bodmer, SoftwareSerial и еще что-то, гланете в скетче.
у библиотеки TFT_ILI9341 в файле User_Setup.h лучше сделать так:
//#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs

1820 bytes in FLASH
//#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs

3534 bytes in FLASH, 96 characters
#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs

5848 bytes in FLASH, 96 characters
#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs

2666 bytes in FLASH, only characters 1234567890:-.apm
//#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs

2438 bytes in FLASH, only characters 1234567890:.

Иначе скетч не запихнете в ардуину…

что нового в версии 2:
— Аналоговые часы стали меньше
— Цифровые часы стали больше
— Изменен вид календаря
— Добавлен день недели
— Оптимизирован код скетча
— Изменена библиотека экрана (старая глючила и была слишком тяжелой) новая либа тут
— Скорость работы стала выше
— Используется 70% вместо 89% (больше места для опций)
— Освобождено место на дисплее для доп. функций

Источник

Автомобильный справочник "Автовестник"