Мазмұны:

Arduino автокөлік дисплейі: 7 қадам (суреттермен)
Arduino автокөлік дисплейі: 7 қадам (суреттермен)

Бейне: Arduino автокөлік дисплейі: 7 қадам (суреттермен)

Бейне: Arduino автокөлік дисплейі: 7 қадам (суреттермен)
Бейне: Lesson 24: Smart Car Part 2: Moving Forwared, Reverse, left and right and Controling Speed of Car 2024, Шілде
Anonim
Image
Image
Arduino автокөлік дисплейі
Arduino автокөлік дисплейі
Arduino автокөлік дисплейі
Arduino автокөлік дисплейі

Мен Adafruit-тен 7 дюймдік TFT СКД, Teensy 3.6, Freematics OBD-II I2C адаптері мен Amazon-да тапқан кейбір резервтік датчиктерді қолдана отырып, борттық диагностикаға (OBD-II) негізделген дисплей жасадым. Дисплейде екі бет бар: бірі менің Honda Accord автокөлігімен жүргенде, екіншісі кері бағытта болғанда.

Менің автокөлігім қозғалыс кезінде RPM, MPH, қозғалтқыштың жүктеме пайызы, аккумулятордың кернеуі, салонның температурасы және қозғалтқыштың салқындатқышының температурасы көрсетіледі (егер бұл қажет болмаса, көліктің басқа статистикасын көрсетуге болады).

Менің көлігім кері бағытта болған кезде, Arduino IDE үйлесімді Teensy 3.6 менің машинамның анимациялық нүктелік кескінін интернеттен тауып оқиды, көрсетеді және резервтік сенсорларды оқиды. Төрт сенсордың әрқайсысының футтық қашықтықтары бар, сонымен қатар объектінің көлікке қаншалықты жақын орналасқандығына байланысты түсі өзгеретін көліктің артындағы анимациясы бар (тек жасыл - <5 фут, жасыл және сары - <2.6 фут, жасыл, сары, және қызыл <1 фут) дегенді білдіреді.

Ақырында мен түнде дисплейді күңгірттеу мүмкіндігін қостым.

Соңғы нәтиже керемет көрінеді және менің көлігімде өте жақсы жұмыс істейді. Мен тіпті оны орталық консольге орнатуды аяқтадым, бұл мүлдем басқа процесс, мен бұл нұсқаулыққа кіре алмаймын. Мен осы LCD дисплейді жасау үшін пайдаланған бөліктердің тізімі төменде.

1) Freematics OBD -II адаптері - $ 35

2) резервтік сенсорлар - $ 15

3) 7 дюймдік TFT СКД дисплейі - 38 доллар

4) SPI негізіндегі LCD дисплей драйвері - $ 35

5) Teensy 3.6 - 30 доллар

6) Level Shifter - $ 4

7) 74HC125 Tri State Buffer IC -2 пакет үшін 6 доллар (бұл чиперді басқа жерден табуға болатынына сенімдімін)

8) MicroSD картасы> = 1 ГБ - $ 4

9) Сымдар, конденсаторлар және резисторлар.

10) LP3470-2.93 Қуатты қалпына келтіру IC - $ 2

11) (міндетті емес): DS18B20 температура сенсоры - $ 8

12) (міндетті емес): OBD -II Splitter - $ 10

13) (міндетті емес): 5 қорапқа сақтандырғыш сымын қосыңыз - $ 8

1 -қадам: резервтік сенсорларды оқу

Резервтік сенсорларды оқу
Резервтік сенсорларды оқу
Резервтік сенсорларды оқу
Резервтік сенсорларды оқу
Резервтік сенсорларды оқу
Резервтік сенсорларды оқу
Резервтік сенсорларды оқу
Резервтік сенсорларды оқу

Бұл қадам қиын, себебі бұл резервтік датчиктер трансивермен, содан кейін жоғарыдағы суретте көрсетілгендей шағын СКД -мен байланысады. Мен олардың дисплейінен құтылудың және менікін қолдануды қалаймын. Біраз гуглингтен кейін (кері тұрақ сенсорларын бұзу) тапқан веб -сайттың көмегімен мен трансивер СКД экранына жіберетін меншікті байланыс хаттамасын оқи алдым. Белгілі бір себептермен байланыс протоколы I2C, UART, CAN, USB және т. Егер сіз менің кодты қолданатын болсаңыз, мен сенсорлар үшін арнайы жазылғандықтан, жоғарыда мен байланыстырған жинақты сатып алуды ұсынамын.

Олар берген СКД ажыратпас бұрын мен трансивер мен СКД қосылатын үш сымды тексердім. +5В қызыл сым, жерге қара сым және көк сым болды. Көк сым мен жерге осциллографты қосқаннан кейін мен жоғарыда көрсетілген суретке ұқсас ізді көрдім, бірақ дәл емес (мен жоғарыдағы сілтеменің веб -сайтынан суретті қолдандым). Менің ізімнің ұзақтығы өте жоғары болды, содан кейін ұзақтығы 17 қысқа. Бастау битінен кейінгі 0-5 биттерде пайдалы ақпарат болмады. 6-8 разрядтар A, B, C немесе D датчиктеріне сәйкес келеді. 9-16 биттер метрдегі ұзындыққа сәйкес келеді. Мен сенсорларды оқитын және деректерді сериялық консоль арқылы шығаратын Arduino IDE эскизін қостым.

2 -қадам: Нүктелік кескінді құру және оны MicroSD картасына енгізу

Нүктелік кескінді құру және оны MicroSD картасына енгізу
Нүктелік кескінді құру және оны MicroSD картасына енгізу
Нүктелік кескінді құру және оны MicroSD картасына енгізу
Нүктелік кескінді құру және оны MicroSD картасына енгізу

Мен GIMP деп аталатын фотосуреттерді өңдеуге арналған ақысыз бағдарламалық жасақтаманы пайдаланып, көлігімнің суретін жоғарыдан қиып алдым. Содан кейін мен кескінді «car.bmp» деп аталатын 24 биттік нүктелік кескін ретінде экспорттадым, ол 110 пиксельден 250 пиксельге дейін. Мен мұны microSD картасына жүктедім және microSD картасын Teensy 3.6 микроконтроллеріне қойдым.

UNO орнына Teensy 3.6 -мен барудың негізгі себептері - Teensy -дің SD картасын оқу жылдамдығы және RA8875 дисплей драйвері арқылы суретті көрсету. UNO көмегімен процесс шамамен 8 секундқа созылды, ал Teensy 3.6 1,8 секундқа созылды.

3 -қадам: жабдықты қосу

Жабдықты қосу
Жабдықты қосу

Adafruit -те RA8875 деп аталатын IC басқаратын шынымен жақсы көрінетін 7 дюймдік TFT LCD бар. Мен бұл дисплей мен дисплей драйверін екі себеп бойынша таңдадым. Біріншіден, дисплейге алдын ала жазылған үлкен кітапханалар бар. Екіншіден, дисплей драйвері сөйлесе алады. кез келген микроконтроллер SPI арқылы, яғни микроконтроллерді RA8875 -ке қосатын сымдар көп емес.

Бұл орнатудың екі кемшілігі бар. Біріншіден, SD картасы сияқты SPI негізіндегі кез келген құрылғыны пайдаланғыңыз келсе, 74HC125 IC үш буферлік IC буферін пайдалануды қажет ететін Adafruit RA8875 тақтасы бар аппараттық қате бар. Аппараттық қатені толық түсіну үшін келесі форумды оқыңыз. Екіншіден, суреттерді СКД -ге жіберуге кететін салыстырмалы ұзақ уақыт. Сондай -ақ, суреттің СКД -ге жіберілуіне қажет ұзақ уақыт микроконтроллерлердің сағат жылдамдығымен және дисплей драйверіне жіберілуге тиісті деректердің үлкен көлемімен шектелген SPI қосылымына байланысты. сымдар өте аз.

Мен Fritzing схемасын жасадым, сондықтан бұл дисплейді жасағысы келетін кез келген адам Teensy 3.6 -дегі түйреуіштерді қосуды оңай оқи алады. Мен төменде.frz файлын қостым. Таңбаланбаған жалғыз екі компонент - 1F 16В электролиттік конденсатор және 100 мкФ керамикалық конденсатор болып табылатын конденсаторлар. Мен оларды Teensy микроконтроллерінің қуаты тұрақты DC +5V тұрақты екеніне көз жеткізу үшін енгіздім және кернеудің көтерілуі жоқ (қажет емес шығар, бірақ мен оларды енгіздім, себебі автокөліктің кернеуі батареядағы жүктемеге байланысты тез өзгеруі мүмкін).

Компоненттер туралы айту керек бірнеше нәрсе. Біріншіден, деңгей ауыстырғыш кез келген 5В сигналды қабылдайды және оны 3.3V Teensy 3.6 қауіпсіз кернеуге айналдырады. Бұл OBD I2C адаптеріне, сондай -ақ резервтік сенсорлық трансиверге қажет. Екіншіден, жасөспірімдердің I2C желілері 4,7 кОм тартылатын резисторларды қажет етеді. Үшіншіден, «түнгі сым» (күңгірттеу сымы) мен «қосалқы сым» қосатын төрт резистор 12В-13В сигналдарын шамамен 2,5-3В сигналға дейін төмендету үшін кернеу бөлгіш ретінде қызмет ету үшін қажет.

22.07.18 ЖАҢАРТУ: Мен OBD-I2C модулінің ішкі температура сенсоры өте таңқаларлық сандар шығаратынын таптым. Кейде бұл жұмыс істейді, бірақ көбінесе модуль 400 градустан жоғары температураны шығарады. Осыған байланысты мен өзімнің 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 сегментті қаріпті қолдану үшін, мен Adafruit_GFX кітапханасындағы қаріптер қалтасында тұрған «FreeSevenSegNumFont.h» файлына көз жеткізіңіз.

5 -қадам: Эскизді жүктеу

Эскизді жүктеу
Эскизді жүктеу
Эскизді жүктеу
Эскизді жүктеу

Эскизді Teensy 3.6 -ге жүктеу үшін сізге Teensyduino орнату қажет болады. Содан кейін сізге Adafruit_RA8875 және Adafruit_GFX кітапханаларын жасөспірімдер кітапханасының орнына ауыстыру қажет болады (құжаттардағы сіздің әдеттегі орныңыз емес). Mac жүйесінде маған Arduino қосымшасындағы белгішені тінтуірдің оң жақ түймесімен нұқып, содан кейін/Contents/Java/hardware/teensy/avr/library өтуге тура келді. Терезелерде бұл сіздің x86, Arduino бағдарламалық файлдарындағы C дискіде, содан кейін аппараттық қалтада екеніне сенімдімін. Мұны жасағаннан кейін сізге Arduino қосымшасындағы нобай орнын өзгерту қажет болады, оны жасөспірімдерге арналған кітапханаларыңыздың қалауы бойынша (мысалы, /Applications/Arduino.app/Contents/Java/hardware/teensy/avr) өзгертуге болады.

22.07.16 ЖАҢАРТУ: Мен жоғарыда айтқан ішкі температура сенсоры мәселесіне байланысты DS18B20 модульдік температура сенсорын орнатуға тура келді. Сіз zip файлында 4 arduino эскизін көресіз. OBD-II I2C модулінің ішкі температура датчигін қолданғыңыз келсе display_code нобайын жүктеңіз. Егер мен жоғарыда байланыстырған DS18B20 модулін қолданғыңыз келсе, display_code_with_new_temperature_sensor эскизін жүктеңіз.

17.11.17 ЖАҢАРТУ: Мен DS18B20 температурасын 185 Фаренгейт шығаратын, суық мезгілде дисплей мүлдем қосылмайтын және дисплей күңгірттенген кезде пиксель дұрыс түске түспейтін DS18B20 бағдарламалық жасақтамасындағы бірнеше қателерді жойдым.

Содан кейін, жоғарыдағы суретті қолданыңыз, бұл сіздің жас кезіңіздегі суреттерге сәйкес келеді. Мен жасөспірімдерді 240 МГц-ке дейін үдеткішпен қарау I2C OBD-II адаптерінің жасөспірімдермен байланысуға мүмкіндік бермейтінін байқадым. Соңында жүктеуді нұқыңыз.

Мен arduino эскиз файлдарына өте кең түсініктемелер жаздым. Бағдарламалық жасақтама қалай жұмыс істейтіні туралы түсініктеме алу үшін осында қараңыз. Барлық сұрақтар бойынша маған хабарласыңыз. Мен оларға мүмкіндігінше жауап беруге тырысамын. Іске сәт!

6 -қадам: СКД корпусын 3D басып шығару

СКД корпусын 3D басып шығару
СКД корпусын 3D басып шығару
СКД корпусын 3D басып шығару
СКД корпусын 3D басып шығару
СКД корпусын 3D басып шығару
СКД корпусын 3D басып шығару

Мен 7 дюймдік дисплейді қорғау үшін 3D басып шығарылған СКД үстіңгі және астыңғы қақпағын жасадым. Мен. 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 түйреуішіне қарап, мен OBD-II коннекторына 12В электр желісі әрқашан тікелей батареяға қосылғанын анықтадым.

Осыны айналып өту үшін мен OBD-II сплиттерін сатып алдым, бөлгіштегі екі қосқыштың біреуіндегі 16-штырмадағы сымды кесіп алдым, содан кейін сол сымды тізбек сымына жалғадым.

Содан кейін мен мультиметрді қолдана отырып, жүргізушінің бүйіріндегі сақтандырғыш қорапшасына барып, сақтандырғышты тексердім, ол кілт тұтануға айналғаннан кейін қандай сақтандырғыштың қуат алғанын білу үшін.

Ақырында, мен сақтандырғышқа электр сымын қостым, сондықтан дисплей енді менің машинам жұмыс істеп тұрған кезде ғана қосылады. Көлігіңізге электр тізбегін қалай дұрыс қосу керектігін зерттеңіз. Мен бұл youtube оқулығын жақсы деп таптым.

Ұсынылған: