Съдържание:
- Стъпка 1: Четене на резервните сензори
- Стъпка 2: Създаване на растерно изображение и поставяне на MicroSD карта
- Стъпка 3: Свързване на хардуера
- Стъпка 4: RA8875 Драйвер на дисплея и графичен дизайн
- Стъпка 5: Качване на скицата
- Стъпка 6: 3D отпечатване на LCD калъф
- Стъпка 7: Разделяне на OBD-II порта, така че Arduino има мощност само когато автомобилът работи
Видео: Дисплей за автомобил Arduino: 7 стъпки (със снимки)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:52
Изградих дисплей, базиран на бордова диагностика (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 карта
Използвах безплатен софтуер за редактиране на снимки, наречен 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 има библиотека, наречена 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, за да защитя 7 -инчовия дисплей. Прикачих файловете с части. IPT изобретател, както и. STL файловете.
Включих и част, наречена backup_sensor_ring.ipt, която е пръстен, който пасва около онези сензори за архивиране, които свързах по -горе. Моята кола вече имаше предварително пробити дупки за резервни сензори, които бяха твърде големи за резервните сензори, които купих на Amazon, така че трябваше да създам пръстен, който да пасне на резервните сензори. Ако ще пробивате в бронята си с включената в комплекта кръгла бормашина, няма да имате нужда от тази част.
Стъпка 7: Разделяне на OBD-II порта, така че Arduino има мощност само когато автомобилът работи
Малко след като инсталирах дисплея си, разбрах, че дисплеят винаги е включен, дори когато колата е изключена. Разглеждайки извода на OBD-II, открих, че захранващата линия 12V към конектора OBD-II винаги е свързана директно към батерията.
За да заобиколя това, закупих OBD-II сплитер, отрязах проводника, който ще бъде към щифт 16 на един от двата конектора на сплитера, и след това свързах този отрязан проводник към проводник за добавяне на верига.
След това, използвайки своя мултицет, отидох до кутията с предпазители от страната на водача и тествах съществуващите предпазители, за да видя кой предпазител се захранва, след като ключът се превърне в запалването.
Накрая свързах кабела за добавяне на верига към предпазителя, който открих, така че дисплеят сега да се включва само когато колата ми работи. Моля, направете проучване как правилно да добавите верига към колата си. Намерих този урок за youtube за добър.
Препоръчано:
Направи си сам Arduino Bluetooth контролиран автомобил: 6 стъпки (със снимки)
Направи си сам Arduino Bluetooth контролиран автомобил: Здравейте приятели! Казвам се Николас, на 15 години съм и живея в Атина, Гърция. Днес ще ви покажа как да направите двуколесна кола с Bluetooth контрол, използвайки Arduino Nano, 3D принтер и някои прости електронни компоненти! Не пропускайте да гледате моите
Bluetooth автомобил Arduino: 6 стъпки (със снимки)
Arduino Bluetooth Car: това е първият ми проект на Arduino, който е доста лесен за правене. ще отнеме около половин час, за да стане съвсем просто, тъй като си мислите, че можете да го направите и като следвате стъпките, дадени по -долу, и се забавлявайте, това ми дава радост, когато най -накрая направих
Играчка с контролиран автомобил Arduino: 3 стъпки (със снимки)
Играчка с контролиран автомобил Arduino: Това е втората част в моите коли с играчки, контролирани от Arduino. Отново това е избягване на препятствия. В тази кола използвам Arduino Nano вместо Uno. Драйверът на двигателя е модул L298N
RC автомобил, управляван от смартфон, използващ Arduino: 13 стъпки (със снимки)
RC автомобил, управляван от смартфон, използващ Arduino: Тази инструкция показва как да направите Arduino робот, управляван от смартфон. Актуализирайте на 25 октомври 2016 г
Автомобил с контролиран Arduino (Bluetooth): 5 стъпки (със снимки)
Arduino Controlled Car (Bluetooth): Всичко, което знаем, че Arduino е отлична платформа за прототипиране, главно защото използва приятелски език за програмиране и има много допълнителни невероятни компоненти, които ни осигуряват страхотно изживяване. Можем да интегрираме Arduino с различни