Агуулгын хүснэгт:

Arduino машины дэлгэц: 7 алхам (зурагтай)
Arduino машины дэлгэц: 7 алхам (зурагтай)

Видео: Arduino машины дэлгэц: 7 алхам (зурагтай)

Видео: Arduino машины дэлгэц: 7 алхам (зурагтай)
Видео: RAMPS 1.6 - A4988/DRV8825 configuration 2024, Долдугаар сарын
Anonim
Image
Image
Arduino машины дэлгэц
Arduino машины дэлгэц
Arduino машины дэлгэц
Arduino машины дэлгэц

Би Adafruit-ийн 7 инчийн TFT LCD дэлгэц, Teensy 3.6, Freematics OBD-II I2C адаптер, Amazon дээрээс олж авсан зарим мэдрэгчийг ашиглан самбар дээрх оношлогоо (OBD-II) дээр суурилсан дэлгэц нь хоёр хуудастай.: нэг нь миний Honda Accord машин жолоодож байхад, нөгөө нь урвуу үед.

Миний машин жолоодож байх үед RPM, MPH, хөдөлгүүрийн ачааллын хувь, батерейны хүчдэл, бүхээгийн температур, хөдөлгүүрийн хөргөлтийн температур зэргийг харуулна (хэрэв хүсэхгүй байгаа бол бусад хэд хэдэн тээврийн хэрэгслийн статистик мэдээллийг харуулах боломжтой).

Миний машин урвуу байхад Arduino IDE -тэй нийцтэй Teensy 3.6 нь онлайнаар олсон машиныхаа bitmap дүрсийг уншиж, харуулаад нөөц мэдрэгчийг уншдаг. Дөрвөн мэдрэгч тус бүрийн зай нь футоор хэмжигддэг бөгөөд машины ард байгаа хөдөлгөөнт дүрс нь машинтай хэр ойрхон байгаагаас хамаарч өөрчлөгддөг (зөвхөн ногоон гэдэг нь <5 фут, ногоон, шар нь <2.6 фут, ногоон, шар, улаан гэдэг нь <1 фут) гэсэн утгатай.

Эцэст нь би шөнийн цагаар дэлгэцийг бүдэгрүүлэх чадварыг нэмсэн.

Эцсийн үр дүн нь маш сайн харагдаж, миний машинд маш сайн ажилладаг. Би бүр үүнийг төв консол дээр суулгаж дуусгасан бөгөөд энэ бол миний зааж өгөх боломжгүй бусад процесс юм. Энэхүү LCD дэлгэцийг бүтээхэд ашиглаж байсан эд ангиудын жагсаалтыг доор харуулав.

1) Freematics OBD -II адаптер - 35 доллар

2) Нөөц мэдрэгч - 15 доллар

3) 7 инчийн TFT LCD дэлгэц - 38 доллар

4) SPI дээр суурилсан LCD дэлгэцийн драйвер - 35 доллар

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

6) Түвшин шилжүүлэгч - $ 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 задлагч - 10 доллар

13) (заавал биш): 5 хайрцагт 8 долларын хэлхээний гал хамгаалагчийн утас нэмнэ

Алхам 1: Нөөц мэдрэгчийг уншина уу

Нөөц мэдрэгчийг уншиж байна
Нөөц мэдрэгчийг уншиж байна
Нөөц мэдрэгчийг уншиж байна
Нөөц мэдрэгчийг уншиж байна
Нөөц мэдрэгчийг уншиж байна
Нөөц мэдрэгчийг уншиж байна
Нөөц мэдрэгчийг уншиж байна
Нөөц мэдрэгчийг уншиж байна

Дээрх зурагт үзүүлсэн шиг эдгээр нөөц мэдрэгч нь дамжуулагчтай, дараа нь жижиг LCD дэлгэцтэй холбогддог тул энэ алхам нь төвөгтэй юм. Би тэдний дэлгэцийг арилгаж, өөрийн дэлгэцийг ашиглах арга замыг хүсч байсан. Зарим googling хийсний дараа олж авсан вэбсайтын тусламжтайгаар (Урвуу зогсоолын мэдрэгчийг хакердах) би дамжуулагчийн LCD дэлгэц рүү илгээдэг өмчлөлийн холбооны протоколыг уншиж чадсан юм. Зарим шалтгааны улмаас холбооны протокол нь I2C, UART, CAN, USB гэх мэт ердийн протокол биш бөгөөд нийлүүлэгчээс хамаарч өөр өөр байдаг. Хэрэв та эдгээр кодыг мэдрэгчдэд зориулан бичсэн тул миний кодыг ашиглах гэж байгаа бол дээр дурдсан холбоосыг худалдаж авахыг зөвлөж байна.

Тэдний өгсөн LCD -ийг салгахын өмнө би дамжуулагч болон LCD -тэй холбогдсон гурван утсыг шалгасан. +5В улаан утас, газардуулсан хар утас, цэнхэр утас байсан. Осциллографоо цэнхэр утас, газарт холбосны дараа дээр үзүүлсэн зурагтай төстэй мөрийг олж харав (би дээрх линкээс авсан зургийг ашигласан). Миний ул мөр нь өндөр урт хугацаатай эхлэх бит, дараа нь 17 богинохон богино хугацаатай байсан. Эхлэх битийн дараа 0-5 битүүд ашигтай мэдээлэл аваагүй байна. 6-8 бит нь A, B, C эсвэл D мэдрэгчтэй тохирч байна. 9-16 бит нь метрээр урттай тохирч байна. Би мэдрэгчийг уншиж, өгөгдлийг цуваа консол дээр гаргадаг Arduino IDE ноорог оруулсан.

Алхам 2: Bitmap зургийг үүсгэж, MicroSD карт дээр байрлуулах

Bitmap зургийг үүсгэж, MicroSD карт дээр байрлуулах
Bitmap зургийг үүсгэж, MicroSD карт дээр байрлуулах
Bitmap зургийг үүсгэж, MicroSD карт дээр байрлуулах
Bitmap зургийг үүсгэж, MicroSD карт дээр байрлуулах

Би GIMP хэмээх үнэгүй зураг засварлах програмыг ашиглан машиныхаа зургийг дээд талаас нь тайрч, хэмжээг нь өөрчилсөн. Дараа нь би зургийг "car.bmp" нэртэй 24 битийн зургийн хэлбэрээр экспортолсон бөгөөд энэ нь 110 пикселээс 250 пиксел юм. Би үүнийг microSD карт руу оруулаад microSD картыг Teensy 3.6 микроконтроллерт хийлээ.

Миний UNO -ийн оронд Teensy 3.6 -тэй явсан гол шалтгаан бол Teensy нь SD карт уншиж, RA8875 дэлгэцийн драйвер ашиглан зургийг харуулах хурд байсан юм. НҮБ -ыг ашиглан уг процесс 8 секунд орчим үргэлжилсэн бол Teensy 3.6 нь 1.8 секунд зарцуулсан байна.

Алхам 3: Тоног төхөөрөмжийг холбох

Тоног төхөөрөмжийг холбох
Тоног төхөөрөмжийг холбох

Adafruit нь RA8875 гэж нэрлэгддэг IC төхөөрөмжөөр удирддаг 7 инчийн TFT LCD дэлгэцтэй. Би энэ дэлгэц болон дэлгэцийн драйверийг хоёр шалтгаанаар сонгосон. Нэгдүгээрт, дэлгэцэнд зориулж урьдчилан бичсэн олон тооны номын сан байдаг. Хоёрдугаарт, дэлгэцийн драйвертай ярилцах боломжтой. SPI дээр ажилладаг аливаа микроконтроллер, өөрөөр хэлбэл RA8875 -тай микроконтроллерыг холбосон тийм олон утас байдаггүй.

Энэхүү тохиргооны хоёр сул тал бий. Нэгдүгээрт, хэрэв та SD карт гэх мэт SPI суурилсан төхөөрөмж ашиглахыг хүсвэл 74HC125 гурван муж улсын буфер IC ашиглахыг шаарддаг Adafruit-ийн RA8875 самбартай тоног төхөөрөмжийн алдаа гарсан явдал юм. Тоног төхөөрөмжийн алдааг илүү сайн ойлгохын тулд дараах форумыг уншина уу. Хоёрдугаарт, зургийг 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 кОм хүртэл эсэргүүцэл шаарддаг. Гуравдугаарт, "шөнийн цагийн утас" (бүдэгрүүлэх утас) ба "нөөц залгах утас" -ыг холбосон дөрвөн резистор нь 12V-13V дохиог ойролцоогоор 2.5-3V дохио болгохын тулд хүчдэл хуваагчийн үүрэг гүйцэтгэх ёстой.

ШИНЭЧЛЭХ 7/22/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).

7/22/16 UPDATE: Дотоод температур мэдрэгчийн асуудлын талаар би өмнө нь ярьсан тул DS18B20 модулийн температур мэдрэгчийг суулгах шаардлагатай болсон. Та zip файлд 4 arduino ноорог харах болно. Хэрэв та OBD-II I2C модулийн дотоод температур мэдрэгчийг ашиглахыг хүсвэл display_code эскизийг байршуулна уу. Хэрэв та миний дээр холбосон DS18B20 модулийг ашиглахыг хүсвэл display_code_with_new_temperature_sensor ноорогыг байршуулна уу.

ШИНЭЧЛЭХ 11/17/17: Би DS18B20 -ийн 185 Фаренгейтийн температурыг гаргадаг, хүйтэн цаг агаарт дэлгэц огт асдаггүй, дэлгэц бүдгэрсэн үед пикселүүд буруу өнгөөр гацсан зэрэг хэд хэдэн алдааг зассан.

Дараа нь дээр дурдсан зургийг ашиглан таны өсвөр насны тохиргоо зурагтай тохирч байгаа эсэхийг шалгаарай. Өсвөр насны хүүхдийг 240 МГц хүртэл overclock хийх нь I2C OBD-II адаптерийг өсвөр насныхантай харилцах боломжийг олгодоггүй болохыг олж мэдсэн. Эцэст нь байршуулах дээр дарна уу.

Би arduino ноорог файлд нэлээд өргөн хүрээтэй тайлбар бичсэн. Програм хангамж хэрхэн ажилладаг талаар тайлбарыг эндээс харна уу. Асуух зүйл байвал надтай холбоо бариарай. Би тэдэнд чадах чинээгээрээ хариулахыг хичээх болно. Амжилт хүсье!

Алхам 6: LCD хайрцгийг 3D хэвлэх

LCD хайрцгийг 3D хэвлэх
LCD хайрцгийг 3D хэвлэх
LCD хайрцгийг 3D хэвлэх
LCD хайрцгийг 3D хэвлэх
LCD хайрцгийг 3D хэвлэх
LCD хайрцгийг 3D хэвлэх

Би 7 инчийн дэлгэцийг хамгаалахын тулд 3D хэвлэсэн LCD дээд ба доод тагийг бүтээсэн. Би. IPT зохион бүтээгчийн хэсгийн файлууд болон. STL файлуудыг хавсаргасан.

Би дээр дурдсан нөөц мэдрэгчийг тойрсон бөгж болох backup_sensor_ring.ipt гэсэн хэсгийг оруулсан. Миний машин Амазон дээрээс худалдаж авсан нөөц мэдрэгчийн хувьд хэт том хэмжээтэй нөөц мэдрэгчийн нүхийг аль хэдийн өрөмдсөн байсан тул нөөц мэдрэгч дээр таарах бөгж хийх шаардлагатай болсон. Хэрэв та дугуй бөмбөрцөгт багтсан бамбайгаа өрөмдөх гэж байгаа бол энэ хэсэг танд хэрэггүй болно.

Алхам 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 холбогч руу 12V хүчдэлийн шугамыг үргэлж зай руу шууд холбодог болохыг олж мэдэв.

Үүнийг даван туулахын тулд би OBD-II задлагч худалдаж аваад, задлагч дээрх хоёр холболтын аль нэгний 16-р зүү рүү залгах утсыг хайчилж, дараа нь тэр зүссэн утсыг хэлхээний утас руу холбов.

Дараа нь би мультиметрээ ашиглан жолоочийн талын гал хамгаалагчийн хайрцаг руу очиж түлхүүрийг гал асаахад аль гал хамгаалагч хүч авсан болохыг шалгахын тулд одоо байгаа гал хамгаалагчийг туршиж үзэв.

Эцэст нь би хэлхээний утсыг өөрийн байрлуулсан гал хамгаалагчтай холбосон бөгөөд ингэснээр дэлгэцийг зөвхөн миний машин ажиллаж байх үед асаах болно. Машиныхаа хэлхээг хэрхэн зөв нэмэх талаар бага зэрэг судалж үзээрэй. Би энэ youtube хичээлийг сайн хичээл гэж үзсэн.

Зөвлөмж болгож буй: