Orodha ya maudhui:

Uonyesho wa Gari la Arduino: Hatua 7 (na Picha)
Uonyesho wa Gari la Arduino: Hatua 7 (na Picha)

Video: Uonyesho wa Gari la Arduino: Hatua 7 (na Picha)

Video: Uonyesho wa Gari la Arduino: Hatua 7 (na Picha)
Video: ESP32 Tutorial 15 - DC Motor Speed Control with ESP32 L293D | SunFounder's ESP32 IoT Learnig kit 2024, Novemba
Anonim
Image
Image
Uonyesho wa Gari la Arduino
Uonyesho wa Gari la Arduino
Uonyesho wa Gari la Arduino
Uonyesho wa Gari la Arduino

Niliunda uchunguzi wa bodi (OBD-II) kwa kutumia onyesho la msingi la 7 TFT LCD kutoka Adafruit, Teensy 3.6, Freematics OBD-II I2C Adapter, na sensorer zingine za cheep nilizozipata kwenye Amazon. Onyesho lina kurasa mbili: moja ya wakati Honda Accord yangu iko kwenye gari na moja kwa wakati iko kinyume.

Wakati gari langu linapoendesha, RPM, MPH, asilimia ya mzigo wa injini, joto la betri, joto la kabati, na joto la kupoza injini huonyeshwa (kuna takwimu zingine kadhaa za gari zinazopatikana kuonyesha ikiwa mtu hataki hizi).

Wakati gari langu liko nyuma, Arduino IDE Teensy 3.6 inayoambatana inasoma picha ya michoro ya gari langu niliyoipata mkondoni, kuionyesha, na kisha kusoma sensorer za chelezo. Sensorer nne kila moja ina umbali wa miguu pamoja na uhuishaji nyuma ya gari ambayo hubadilisha rangi kulingana na jinsi kitu kilivyo karibu na gari (kijani kibichi ina maana <miguu 5, kijani na manjano inamaanisha miguu ya 2.6, na kijani, manjano, na nyekundu inamaanisha <1 mguu).

Mwishowe, niliongeza uwezo wa kupunguza onyesho usiku.

Matokeo ya mwisho yanaonekana vizuri na hufanya kazi vizuri sana kwenye gari langu. Niliishia kuiweka kwenye kiweko cha katikati, ambayo ilikuwa mchakato mwingine kabisa ambao sitaingia katika hii inayoweza kufundishwa. Orodha ya sehemu ambazo nilikuwa nikitengeneza onyesho hili la LCD ziko hapa chini.

1) Freematics OBD-II Adapter - $ 35

2) Sensorer za Backup - $ 15

3) 7 Onyesho la LCD la TFT - $ 38

4) Dereva wa Uonyesho wa LCD wa SPI - $ 35

5) Vijana 3.6 - $ 30

6) Shifter ya kiwango - $ 4

7) 74HC125 Tri State Buffer IC - $ 6 kwa pakiti 2 (nina hakika unaweza kupata cheeper hii mahali pengine)

8) Kadi ya MicroSD> = 1 GB - $ 4

9) Waya, capacitors, na vipinga.

10) LP3470-2.93 Nguvu kwenye Rudisha IC - $ 2

11) (hiari): Sensor ya Joto la DS18B20 - $ 8

12) (hiari): OBD-II Splitter - $ 10

13) (hiari): Ongeza kamba ya fuse ya mzunguko - $ 8 kwa pakiti ya 5

Hatua ya 1: Kusoma sensorer za Backup

Kusoma sensorer Backup
Kusoma sensorer Backup
Kusoma sensorer Backup
Kusoma sensorer Backup
Kusoma sensorer Backup
Kusoma sensorer Backup
Kusoma sensorer Backup
Kusoma sensorer Backup

Hatua hii ni ngumu kwa sababu sensorer hizi za mawasiliano huwasiliana na transceiver na kisha kwa LCD ndogo kama inavyoonekana kwenye picha hapo juu. Nilitaka njia ya kuondoa maonyesho yao na kutumia yangu mwenyewe. Kwa msaada wa wavuti niliyoipata baada ya kuzunguka-zunguka (Kukamata sensorer za kuegesha nyuma), niliweza kusoma itifaki ya mawasiliano ya wamiliki ambayo transceiver hutuma kwa skrini ya LCD. Kwa sababu fulani, itifaki ya mawasiliano sio ile ya kawaida kama I2C, UART, CAN, USB, nk na itifaki hutofautiana kulingana na muuzaji. Ninapendekeza sana ununue seti niliyounganisha hapo juu ikiwa utatumia nambari yangu kwa sababu iliandikwa haswa kwa sensorer hizo.

Kabla ya kukata LCD waliyotoa, nilichunguza waya tatu zinazojiunga na transceiver na LCD. Kulikuwa na waya nyekundu + 5V, waya mweusi chini, na waya wa samawati. Baada ya kuunganisha oscilloscope yangu kwa waya wa bluu na ardhi, niliona athari inayofanana na picha iliyoonekana hapo juu lakini sio haswa (nilitumia picha kutoka kwa wavuti iliyounganishwa hapo juu). Ufuatiliaji wangu ulikuwa na kuanza kwa muda mrefu wa HIGH, ikifuatiwa na bits 17 zaidi za muda mfupi. Biti 0-5 baada ya kuanza kidogo hazikuwa na habari muhimu. Bits 6-8 zinahusiana na sensorer A, B, C, au D. Bits 9-16 inalingana na urefu wa mita. Nilijumuisha mchoro wa Arduino IDE ambao unasoma sensorer na hutoa data juu ya kiweko cha serial.

Hatua ya 2: Kuunda Picha ya Bitmap na Kuiweka kwenye Kadi ya MicroSD

Kuunda Picha ya Bitmap na Kuiweka kwenye Kadi ya MicroSD
Kuunda Picha ya Bitmap na Kuiweka kwenye Kadi ya MicroSD
Kuunda Picha ya Bitmap na Kuiweka kwenye Kadi ya MicroSD
Kuunda Picha ya Bitmap na Kuiweka kwenye Kadi ya MicroSD

Nilitumia programu ya kuhariri picha bure inayoitwa GIMP kupanda na kubadilisha ukubwa wa picha ya gari langu kutoka kwa mtazamo wa juu. Kisha nikasafirisha picha hiyo kama picha ya bitmap 24 inayoitwa "car.bmp" ambayo ni saizi 110 na saizi 250. Nilipakia hii kwenye kadi ya MicroSD na kuweka kadi ya MicroSD katika Mdhibiti wangu mdogo wa Vijana 3.6.

Sababu kuu nilikwenda na Teensy 3.6 badala ya UNO ilikuwa kasi ambayo Teensy angeweza kusoma kadi ya SD na kuonyesha picha hiyo kwa kutumia dereva wa onyesho la RA8875. Kutumia UNO, mchakato huo ulichukua sekunde 8, wakati Teensy 3.6 ilichukua sekunde 1.8.

Hatua ya 3: Kuunganisha vifaa

Kuunganisha vifaa
Kuunganisha vifaa

Adafruit ina muonekano mzuri wa 7 TFT LCD ambayo inaendeshwa na IC inayoitwa RA8875. Nilichagua onyesho hili na kuonyesha dereva kwa sababu mbili. Kwanza, kuna maktaba makubwa yaliyoandikiwa maonyesho hayo. Pili, dereva wa onyesho anaweza kuzungumza na microcontroller yoyote juu ya SPI, ikimaanisha hakuna waya nyingi zinazounganisha microcontroller kwa RA8875.

Kuna pande mbili chini ya usanidi huu. Kwanza ni ukweli kwamba kuna mdudu wa vifaa na bodi ya RA8875 kutoka Adafruit inayohitaji utumiaji wa bafa ya ICH ya 74HC125 ikiwa unataka kutumia kifaa chochote cha SPI kama kadi ya SD. Ili kuelewa zaidi mdudu wa vifaa, tafadhali soma jukwaa lifuatalo. Pili, ni kiasi gani cha muda inachukua kwa picha kutumwa kwa LCD. Pia, muda mrefu unachukua kwa picha kupelekwa kwa LCD ni kwa sababu ya unganisho la SPI, ambalo limepunguzwa na kasi ya saa ya watawala na idadi kubwa ya data ambayo inapaswa kutumwa kwa dereva wa onyesho waya chache sana.

Niliunda skimu ya Fritzing ili kila mtu ambaye angependa kuunda onyesho hili aweze kusoma kwa urahisi kile pini kwenye Teensy 3.6 unganisha. Nilijumuisha faili ya.frz hapa chini. Vipengele viwili tu ambavyo havijaandikwa lebo ni capacitors, ambayo ni 1F 16V capacitor electrolytic na 100μF kauri capacitor. Nilijumuisha hizi ili kuhakikisha kuwa nguvu ya Mdhibiti Mdogo wa Vijana ilikuwa thabiti DC + 5V na haikuwa na spikes za voltage (inaweza kuwa sio lazima lakini nilijumuisha kwa sababu usambazaji wa voltage ya gari inaweza kubadilika haraka kulingana na mzigo kwenye betri).

Vitu vichache vya kutaja juu ya vifaa. Kwanza, mabadiliko ya kiwango huchukua ishara yoyote ya 5V na kuibadilisha kuwa voltage salama ya 3.3V Teensy 3.6. Hii ni muhimu kwa adapta ya OBD I2C pamoja na transceiver ya sensa ya chelezo. Pili, mistari ya I2C ya ujana inahitaji 4.7kΩ kuvuta vipinga. Tatu, vipinga vinne vinavyounganisha "waya ya wakati wa usiku" (waya wa kupunguzwa) na "waya ya kushirikisha chelezo" ni muhimu kutumika kama mgawanyiko wa voltage ili kuleta ishara za 12V-13V chini hadi ishara 2.5-3V.

UPDATE 7/22/18: Nimepata sensorer ya ndani ya joto ya moduli ya OBD-I2C ikitoa nambari za kushangaza sana. Wakati mwingine ingefanya kazi, lakini wakati mwingi, moduli hiyo ilikuwa ikitoa joto juu ya digrii 400 F. Kwa sababu ya hii, niliamua kuongeza sensa yangu ya joto ya ds18b20. Unakaribishwa zaidi kutumia aina yoyote ya sensorer ya joto hapa, lakini itabidi uhariri nambari ya Arduino.

Sasisha 3/1/19: Vijana 3.6 haianzi wakati kuna baridi kali. Niliongeza nguvu kwenye mzunguko wa upya ili kuhakikisha kuwa ina buti vizuri.

Hatua ya 4: RA8875 Onyesha Dereva na Ubunifu wa Picha

RA8875 Onyesha Dereva na Ubunifu wa Picha
RA8875 Onyesha Dereva na Ubunifu wa Picha

Dereva wa kuonyesha RA8875 ana maktaba inayoitwa Adafruit_RA8875, ambayo nilitumia wakati wa kuunda maumbo ambayo yanaonekana kwenye ukurasa wa kwanza na ukurasa wa pili. Maktaba ya RA8875 inaweza tu kuunda mistari, mstatili, mstatili mviringo, pembetatu, viwiko, na miduara, kwa hivyo michoro lazima zibunwe kwa njia ya ujanja kuunda maumbo magumu zaidi. Kwa mfano, pete ya kijivu kwenye ukurasa wa kwanza kwa kweli ni duara kamili ya kijivu ya kipenyo kikubwa ikifuatiwa na mduara mweusi kamili wa kipenyo kidogo. Pia, sehemu moja ndogo ya ukurasa wa sensorer chelezo ina pembetatu 2 zilizopangwa kwa njia ambayo hufanya umbo la poligoni. Nilifanya hivyo ili niweze kubadilisha rangi ya sehemu ya kibinafsi ya ukurasa wa sensorer chelezo. Faili ya Arduino ya onyesho ina safu ya vidokezo ambavyo nilikuwa nikifuatilia mahali pembetatu na maumbo mengine yalikuwa.

Nilitumia wavuti hii nzuri kuchagua rangi za RGB565 na kuzifafanua kwenye mchoro ili niweze kutumia rangi zisizo chaguomsingi ambazo tayari zimefafanuliwa mapema kwenye maktaba ya Adafruit_RA8875.

Kwa upande wa fonti, maktaba ya Adafruit_RA8875 inasaidia tu moja isipokuwa utoe maoni sehemu ya maktaba, ambayo hukuruhusu kutumia fonti za maktaba ya Adafruit_GFX. Nilijumuisha maktaba ya Adafruit_RA8875 iliyobadilishwa hapa chini. Nilitoa maoni tu kwa mistari michache ya nambari kisha nikaweza kutumia fonti kwenye maktaba ya Adafruit_GFX. Pia, kutumia fonti ya sehemu 7 ambayo nilitumia katika mradi huu, tafadhali hakikisha faili ya "FreeSevenSegNumFont.h" ambayo niko kwenye folda ya fonti kwenye maktaba ya Adafruit_GFX.

Hatua ya 5: Kupakia Mchoro

Inapakia Mchoro
Inapakia Mchoro
Inapakia Mchoro
Inapakia Mchoro

Ili kupakia mchoro kwenye Teensy 3.6, utahitaji kusanikisha Teensyduino. Kisha utahitaji kuchukua nafasi ya maktaba ya Adafruit_RA8875 na Adafruit_GFX katika eneo la maktaba ya vijana (sio eneo lako la kawaida kwenye hati). Kwenye Mac, ilibidi nibofye kulia kwenye ikoni ya programu ya Arduino kwenye programu, na kisha nenda kwa / Yaliyomo / Java / vifaa / ujana / avr / maktaba. Kwenye windows, nina hakika iko chini ya gari lako la C katika faili za Programu x86, Arduino, na kisha folda ya vifaa huko. Mara tu unapofanya hivyo, utahitaji kubadilisha eneo la sketch katika programu ya Arduino kwa kuihariri kwa mapendeleo mahali ambapo maktaba zako za ujana ziko (i.e. /Applications/Arduino.app/Contents/Java/hardware/teensy/avr).

UPDATE 7/22/16: Kwa sababu ya swala ya sensorer ya joto ya ndani niliyozungumza hapo awali, ilibidi niweke sensa ya joto ya moduli ya DS18B20. Utaona michoro 4 za arduino kwenye faili ya zip. Tafadhali pakia mchoro wa nambari ya kuonyesha_kama unataka kutumia sensorer ya ndani ya joto ya moduli ya OBD-II I2C. Tafadhali pakia onyesho_code_with_new_temperature_sensor mchoro ikiwa unataka kutumia moduli ya DS18B20 niliyounganisha hapo juu.

UPDATE 11/17/17: Nilirekebisha mende kadhaa kwenye programu hiyo ikiwa ni pamoja na DS18B20 ikitoa joto la 185 Fahrenheit, onyesho haliwashi kabisa wakati wa baridi, na saizi zinakwama kwenye rangi isiyofaa wakati onyesho limepungua.

Kisha, tumia picha niliyo nayo hapo juu kuhakikisha mipangilio yako ya ujana inafanana na picha. Niligundua kuvunja ujana hadi 240MHz hakuruhusu adapta ya I2C OBD-II kuwasiliana na kijana. Mwishowe, bonyeza tu pakia.

Niliandika maoni mazuri sana kwenye faili za mchoro wa arduino. Tafadhali angalia hapo kwa maelezo ya jinsi programu inavyofanya kazi. Tafadhali jisikie huru kuwasiliana nami na maswali yoyote. Nitajaribu kuwajibu kwa kadiri ya uwezo wangu. Bahati njema!

Hatua ya 6: 3D Chapisha Kesi ya LCD

Chapisha 3D Uchunguzi wa LCD
Chapisha 3D Uchunguzi wa LCD
Chapisha 3D Uchunguzi wa LCD
Chapisha 3D Uchunguzi wa LCD
Chapisha 3D Uchunguzi wa LCD
Chapisha 3D Uchunguzi wa LCD

Niliunda kifuniko cha juu na chini cha LCD cha 3D ili kulinda onyesho la 7. Nimeambatanisha faili za sehemu za mwanzilishi wa. IPT na faili za. STL.

Nilijumuisha pia sehemu inayoitwa backup_sensor_ring.ipt, ambayo ni pete inayofaa karibu na sensorer hizo za chelezo nilizoziunganisha hapo juu. Gari langu tayari lilikuwa na mashimo ya sensorer ya kuchakata kabla ambayo yalikuwa makubwa sana kwa sensorer za chelezo nilizonunua kwenye Amazon, kwa hivyo ilibidi niunde pete ambayo itatoshea kwenye sensorer za chelezo. Ikiwa utachimba kwenye bumper yako na kipande cha kuchimba cha mviringo kilichojumuishwa kwenye seti, hautahitaji sehemu hii.

Hatua ya 7: Kugawanyika Bandari ya OBD-II Kwa hivyo Arduino Ina Nguvu tu Wakati Gari Inafanya Mbio

Kugawanya Bandari ya OBD-II Kwa hivyo Arduino Ina Nguvu tu Wakati Gari Inafanya Mbio
Kugawanya Bandari ya OBD-II Kwa hivyo Arduino Ina Nguvu tu Wakati Gari Inafanya Mbio
Kugawanya Bandari ya OBD-II Kwa hivyo Arduino Ina Nguvu tu Wakati Gari Inafanya Mbio
Kugawanya Bandari ya OBD-II Kwa hivyo Arduino Ina Nguvu tu Wakati Gari Inafanya Mbio
Kugawanya Bandari ya OBD-II Kwa hivyo Arduino Ina Nguvu tu Wakati Gari Inafanya Mbio
Kugawanya Bandari ya OBD-II Kwa hivyo Arduino Ina Nguvu tu Wakati Gari Inafanya Mbio

Niligundua muda mfupi baada ya kusanikisha onyesho langu kuwa onyesho lilikuwa likiwashwa kila wakati, hata wakati gari ilikuwa imezimwa. Kuangalia pinout ya OBD-II, niligundua kuwa laini ya nguvu ya 12V kwa kiunganishi cha OBD-II kila wakati imeunganishwa moja kwa moja na betri.

Ili kuzunguka hii, nilinunua mgawanyiko wa OBD-II, nikata waya kwenda kubandika 16 kwenye moja ya viunganisho viwili kwenye mgawanyiko, kisha nikaunganisha waya hiyo iliyokatwa na kuongeza waya wa mzunguko.

Kisha, kwa kutumia multimeter yangu, nilikwenda kwenye sanduku la fuse la upande wa dereva na kupima fyuzi zilizopo ili kuona ni fyuzi gani ilipata nguvu baada ya ufunguo kugeuzwa kuwa moto.

Mwishowe, niliunganisha nyongeza ya waya wa mzunguko kwenye fuse ambayo nilipata ili onyesho sasa liwashe tu wakati gari langu linaendesha. Tafadhali fanya utafiti juu ya jinsi ya kuongeza vizuri mzunguko kwenye gari lako. Nimeona mafunzo haya ya youtube kuwa nzuri.

Ilipendekeza: