Съдържание:

Дисплей за автомобил Arduino: 7 стъпки (със снимки)
Дисплей за автомобил Arduino: 7 стъпки (със снимки)

Видео: Дисплей за автомобил Arduino: 7 стъпки (със снимки)

Видео: Дисплей за автомобил Arduino: 7 стъпки (със снимки)
Видео: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Ноември
Anonim
Image
Image
Дисплей за автомобил Arduino
Дисплей за автомобил Arduino
Дисплей за автомобил Arduino
Дисплей за автомобил Arduino

Изградих дисплей, базиран на бордова диагностика (OBD-II), използвайки 7-инчов TFT LCD от Adafruit, Teensy 3.6, адаптера Freematics OBD-II I2C и някои сензори за резервно копие, които намерих на Amazon. Дисплеят има две страници: един за това, когато моята Honda Accord е в шофиране и един за, когато е на заден ход.

Когато колата ми е в движение, се показват оборотите в минута, MPH, процентът на натоварване на двигателя, напрежението на акумулатора, температурата в кабината и температурата на охлаждащата течност на двигателя (има няколко други статистически данни за автомобила, които да се показват, ако някой не иска тези).

Когато колата ми е на заден ход, съвместимият с Arduino IDE Teensy 3.6 чете анимирано растерно изображение на моята кола, което намерих онлайн, показва го и след това чете сензорите за архивиране. Четирите сензора имат разстояние в крака плюс анимация зад колата, която променя цвета в зависимост от това колко близо е обектът до колата (само зелено означава <5 фута, зелено и жълто означава <2,6 фута, а зелено, жълто, а червеното означава <1 крак).

Накрая добавих възможността да затъмнявам дисплея през нощта.

Крайният резултат изглежда страхотно и функционира много добре в колата ми. Дори в крайна сметка го инсталирах в централната конзола, което беше съвсем друг процес, в който няма да влизам в тази инструкция. Списъкът с части, които използвах за създаването на този LCD дисплей, е по -долу.

1) Безжичен адаптер OBD -II - 35 долара

2) Сензори за архивиране - $ 15

3) 7 TFT LCD дисплей - $ 38

4) Драйвер за LCD дисплей, базиран на SPI - 35 долара

5) Тийнейджърски 3,6 - 30 долара

6) Превключвател на нива - $ 4

7) 74HC125 Tri State Buffer IC -$ 6 за 2 опаковки (сигурен съм, че можете да намерите това по -евтино другаде)

8) MicroSD карта> = 1 GB - $ 4

9) Тел, кондензатори и резистори.

10) LP3470-2.93 Захранване при нулиране на IC - $ 2

11) (по избор): Температурен сензор DS18B20 - $ 8

12) (по избор): OBD -II сплитер - $ 10

13) (по избор): Добавете кабел с предпазител на верига - $ 8 за пакет от 5 броя

Стъпка 1: Четене на резервните сензори

Четене на резервни сензори
Четене на резервни сензори
Четене на резервни сензори
Четене на резервни сензори
Четене на резервни сензори
Четене на резервни сензори
Четене на резервни сензори
Четене на резервни сензори

Тази стъпка е трудна, защото тези сензори за архивиране комуникират с приемо -предавател, а след това с малък LCD, както се вижда на снимката по -горе. Исках начин да се отърва от дисплея им и да използвам своя. С помощта на уебсайт, който намерих след малко гугъл (Хакване на сензори за паркиране на заден ход), успях да прочета собствения комуникационен протокол, който трансивърът изпраща на LCD екрана. По някаква причина комуникационният протокол не е типичен като I2C, UART, CAN, USB и т.н. и протоколът се различава в зависимост от доставчика. Горещо препоръчвам да закупите комплекта, който свързвах по -горе, ако ще използвате кода ми, защото той е специално написан за тези сензори.

Преди да изключим предоставения от тях LCD, опитах трите проводника, свързващи трансивъра и LCD. Имаше +5V червен проводник, заземен черен проводник и син проводник. След като свързах осцилоскопа си към синята жица и земята, видях следа, подобна на снимката, видяна по -горе, но не точно (използвах снимката от уебсайта, свързан по -горе). Моята следа имаше начален бит с висока продължителност, последван от още 17 бита с по -кратка продължителност. Битовете 0-5 след началния бит нямаха полезна информация. Битове 6-8 съответстват на сензор A, B, C или D. Битове 9-16 съответстват на дължината в метри. Включих скица на Arduino IDE, която чете сензорите и извежда данните през серийната конзола.

Стъпка 2: Създаване на растерно изображение и поставяне на MicroSD карта

Създаване на растерно изображение и поставяне на MicroSD карта
Създаване на растерно изображение и поставяне на MicroSD карта
Създаване на растерно изображение и поставяне на MicroSD карта
Създаване на растерно изображение и поставяне на MicroSD карта

Използвах безплатен софтуер за редактиране на снимки, наречен GIMP, за да изрязвам и преоразмерявам изображение на колата си от изгледа отгоре. След това експортирах изображението като 24 -битово растерно изображение, наречено "car.bmp", което е 110 пиксела на 250 пиксела. Качих това на microSD карта и поставих microSD картата в моя Teensy 3.6 микроконтролер.

Основните причини, поради които отидох с Teensy 3.6 вместо с UNO, беше скоростта, с която Teensy можеше да чете SD карта и да показва изображението с помощта на драйвера за дисплея RA8875. Използвайки UNO, процесът отне около 8 секунди, докато Teensy 3.6 отне 1,8 секунди.

Стъпка 3: Свързване на хардуера

Свързване на хардуера
Свързване на хардуера

Adafruit има наистина добре изглеждащ 7 -инчов TFT LCD, който се задвижва от интегрална схема, наречена RA8875. Избрах този дисплей и драйвер на дисплея по две причини. Първо, има обширни библиотеки, предварително написани за дисплея. Второ, драйверът на дисплея може да говори с всеки микроконтролер над SPI, което означава, че няма толкова много проводници, свързващи микроконтролера към RA8875.

Тази настройка има два недостатъка. Първо е фактът, че има хардуерна грешка с платката RA8875 от Adafruit, която изисква използването на IC-буфер с три състояния 74HC125, ако искате да използвате каквото и да е SPI устройство, като например SD карта. За да разберете по -пълно хардуерната грешка, моля, прочетете следния форум. Второ, това е относително дългото време, необходимо за изпращане на изображения на LCD дисплея. Също така, дългото време, необходимо за изпращане на изображение на LCD, се дължи на SPI връзката, която е ограничена от тактовата честота на микроконтролерите и голямото количество данни, които трябва да бъдат изпратени до драйвера на дисплея през много малко жици

Създадох схема на Fritzing, така че всеки, който би искал да създаде този дисплей, да може лесно да прочете към какво се свързват щифтовете на Teensy 3.6. Включих.frz файл по -долу. Единствените два компонента, които не са маркирани, са кондензаторите, които са 1F 16V електролитен кондензатор и 100μF керамичен кондензатор. Включих ги, за да се уверя, че захранването на микроконтролера Teensy е стабилно DC +5V и не съдържа никакви скокове на напрежение (може да не е необходимо, но ги включих, защото захранването на автомобила може да варира бързо в зависимост от натоварването на батерията).

Няколко неща за споменаване на компонентите. Първо, превключвателят на нивото приема всеки 5V сигнал и го превръща в 3.3V Teensy 3.6 безопасно напрежение. Това е необходимо за OBD I2C адаптера, както и за трансивъра за резервен сензор. Второ, I2C линиите на тийнейджърите изискват 4,7 kΩ издърпващи се резистори. Трето, четирите резистора, свързващи „нощния проводник“(затъмняващия проводник) и „проводника за резервно включване“, са необходими, за да служат като разделител на напрежение, за да сведат 12V-13V сигналите до около 2.5-3V сигнали.

АКТУАЛИЗИРАНЕ 7/22/18: Открих, че вътрешният температурен сензор на модула OBD-I2C извежда много странни числа. Понякога щеше да работи, но през повечето време модулът извеждаше температури над 400 градуса F. Поради това реших да добавя свой собствен температурен сензор ds18b20. Вие сте повече от добре дошли да използвате всеки тип температурен сензор тук, но ще трябва да редактирате кода на Arduino.

АКТУАЛИЗИРАНЕ 3/1/19: Teensy 3.6 не стартира, когато е изключително студено. Добавих верига за нулиране при включване, за да се уверя, че се зарежда правилно.

Стъпка 4: RA8875 Драйвер на дисплея и графичен дизайн

RA8875 Драйвер на дисплея и графичен дизайн
RA8875 Драйвер на дисплея и графичен дизайн

Драйверът на дисплея RA8875 има библиотека, наречена Adafruit_RA8875, която използвах при създаването на фигурите, които се виждат на първата и втората страница. Библиотеката за RA8875 може да създава само линии, правоъгълници, заоблени правоъгълници, триъгълници, елипси и кръгове, така че графиките трябва да бъдат проектирани по интелигентен начин, за да създават по -сложни форми. Например, сивият пръстен на първата страница всъщност е пълен сив кръг с по -голям диаметър, последван от пълен черен кръг с по -малък диаметър. Също така, една малка част от страницата със сензори за архивиране съдържа 2 триъгълника, подредени по такъв начин, че да образуват форма на многоъгълник. Направих това, за да мога да променя цвета на отделен раздел на страницата със сензора за архивиране. Файлът Arduino за дисплея съдържа масив от точки, които използвах, за да следя къде са триъгълниците и други форми.

Използвах този страхотен уебсайт, за да избера RGB565 цветове и да ги дефинирам в скицата, за да мога да използвам цветове по подразбиране, които вече са предварително дефинирани в библиотеката Adafruit_RA8875.

По отношение на шрифтовете библиотеката Adafruit_RA8875 поддържа само един, освен ако не коментирате част от библиотеката, която ви позволява да използвате шрифтовете библиотеката Adafruit_GFX. Включих модифицираната библиотека Adafruit_RA8875 по -долу. Току -що коментирах няколко реда код и след това успях да използвам шрифтовете в библиотеката Adafruit_GFX. Също така, за да използвате 7 -сегментния шрифт, който използвах в този проект, моля, уверете се, че файлът "FreeSevenSegNumFont.h" се намира в папката с шрифтове в библиотеката Adafruit_GFX.

Стъпка 5: Качване на скицата

Качване на скица
Качване на скица
Качване на скица
Качване на скица

За да качите скицата в Teensy 3.6, ще трябва да инсталирате Teensyduino. След това ще трябва да замените библиотеките Adafruit_RA8875 и Adafruit_GFX в тийнейджърското библиотечно местоположение (не типичното ви местоположение в документите). На Mac трябваше да щракна с десния бутон върху иконата на приложението Arduino в приложенията и след това да отида до/Contents/Java/hardware/teensy/avr/libraries. На Windows съм почти сигурен, че е под вашето устройство C в програмни файлове x86, Arduino и след това хардуерната папка там. След като направите това, ще трябва да промените местоположението на скицника в приложението Arduino, като го редактирате в предпочитанията, където и да са вашите тинейджърски библиотеки (т.е. /Applications/Arduino.app/Contents/Java/hardware/teensy/avr).

АКТУАЛИЗИРАНЕ 7/22/16: Поради проблема с вътрешния температурен сензор, за който говорих по -рано, трябваше да инсталирам сензор за температура на модула DS18B20. Ще видите 4 скици на arduino в zip файла. Моля, качете скицата display_code, ако искате да използвате вътрешния температурен сензор на модула OBD-II I2C. Моля, качете скицата на display_code_with_new_temperature_sensor, ако искате да използвате модула DS18B20, който свързах по -горе.

АКТУАЛИЗИРАНЕ 11/17/17: Поправих няколко грешки в софтуера, включително DS18B20, извеждащ температура от 185 градуса по Фаренхайт, дисплеят изобщо не се включва при студено време и пикселите се забиват в грешен цвят, когато дисплеят е затъмнен.

След това използвайте снимката, която имам по -горе, за да се уверите, че вашите тийнейджърски настройки съвпадат с картината. Открих, че овърклокът на тийнейджърите до 240MHz не позволява на I2C OBD-II адаптера да комуникира с тийнейджърите. И накрая, просто щракнете върху качване.

Написах доста обширни коментари във файловете за скици на arduino. Моля, потърсете там за обяснение как работи софтуерът. Моля, не се колебайте да се свържете с мен с всякакви въпроси. Ще се опитам да им отговоря, доколкото мога. Късмет!

Стъпка 6: 3D отпечатване на LCD калъф

3D печат на LCD калъф
3D печат на LCD калъф
3D печат на LCD калъф
3D печат на LCD калъф
3D печат на LCD калъф
3D печат на LCD калъф

Създадох 3D отпечатан горен и долен капак на LCD, за да защитя 7 -инчовия дисплей. Прикачих файловете с части. IPT изобретател, както и. STL файловете.

Включих и част, наречена backup_sensor_ring.ipt, която е пръстен, който пасва около онези сензори за архивиране, които свързах по -горе. Моята кола вече имаше предварително пробити дупки за резервни сензори, които бяха твърде големи за резервните сензори, които купих на Amazon, така че трябваше да създам пръстен, който да пасне на резервните сензори. Ако ще пробивате в бронята си с включената в комплекта кръгла бормашина, няма да имате нужда от тази част.

Стъпка 7: Разделяне на OBD-II порта, така че Arduino има мощност само когато автомобилът работи

Разделянето на OBD-II порта, така че Arduino има мощност само когато автомобилът работи
Разделянето на OBD-II порта, така че Arduino има мощност само когато автомобилът работи
Разделянето на OBD-II порта, така че Arduino има мощност само когато автомобилът работи
Разделянето на OBD-II порта, така че Arduino има мощност само когато автомобилът работи
Разделянето на OBD-II порта, така че Arduino има мощност само когато автомобилът работи
Разделянето на OBD-II порта, така че Arduino има мощност само когато автомобилът работи

Малко след като инсталирах дисплея си, разбрах, че дисплеят винаги е включен, дори когато колата е изключена. Разглеждайки извода на OBD-II, открих, че захранващата линия 12V към конектора OBD-II винаги е свързана директно към батерията.

За да заобиколя това, закупих OBD-II сплитер, отрязах проводника, който ще бъде към щифт 16 на един от двата конектора на сплитера, и след това свързах този отрязан проводник към проводник за добавяне на верига.

След това, използвайки своя мултицет, отидох до кутията с предпазители от страната на водача и тествах съществуващите предпазители, за да видя кой предпазител се захранва, след като ключът се превърне в запалването.

Накрая свързах кабела за добавяне на верига към предпазителя, който открих, така че дисплеят сега да се включва само когато колата ми работи. Моля, направете проучване как правилно да добавите верига към колата си. Намерих този урок за youtube за добър.

Препоръчано: