Talaan ng mga Nilalaman:

Ipakita ang Arduino Car: 7 Mga Hakbang (na may Mga Larawan)
Ipakita ang Arduino Car: 7 Mga Hakbang (na may Mga Larawan)

Video: Ipakita ang Arduino Car: 7 Mga Hakbang (na may Mga Larawan)

Video: Ipakita ang Arduino Car: 7 Mga Hakbang (na may Mga Larawan)
Video: Котенка просто оставили на обочине. Котенок по имени Роки 2024, Hulyo
Anonim
Image
Image
Ipakita ang Arduino Car
Ipakita ang Arduino Car
Ipakita ang Arduino Car
Ipakita ang Arduino Car

Nagtayo ako ng isang on-board diagnostic (OBD-II) batay sa display gamit ang isang 7 TFT LCD mula sa Adafruit, isang Teensy 3.6, ang Freematics OBD-II I2C Adapter, at ilang mga cheep backup sensor na nakita ko sa Amazon. Ang display ay may dalawang pahina: isa para sa kung ang aking Honda Accord ay nasa drive at isa para sa kung ito ay baligtad.

Kapag ang aking kotse ay nasa drive, ang RPM, MPH, porsyento ng pag-load ng engine, boltahe ng baterya, temperatura ng cabin, at temperatura ng coolant ng engine ay ipinapakita (maraming iba pang mga istatistika ng sasakyan ang magagamit upang ipakita kung ang isa ay hindi nais ang mga ito).

Kapag ang aking kotse ay nakabaligtad, ang Arduino IDE na katugmang Teensy 3.6 ay nagbabasa ng isang animated na imahe ng bitmap ng aking kotse na nakita ko sa online, ipinapakita ito, at pagkatapos ay binabasa ang mga backup sensor. Ang apat na sensor bawat isa ay may distansya sa mga paa kasama ang isang animation sa likod ng kotse na nagbabago ng kulay batay sa kung gaano kalapit ang bagay sa kotse (berde lang ang ibig sabihin <5 talampakan, berde at dilaw ay nangangahulugang <2.6 talampakan, at berde, dilaw, at pula ay nangangahulugang <1 talampakan).

Sa wakas, idinagdag ko ang kakayahan upang malabo ang display sa gabi.

Ang huling resulta ay mukhang mahusay at gumagana nang mahusay sa aking kotse. Natapos ko rin ang pag-install nito sa center console, na kung saan ay isang buong iba pang proseso na hindi ako makakapasok sa itinuturo na ito. Ang listahan ng mga bahagi na ginamit ko upang likhain ang LCD display na ito ay nasa ibaba.

1) Freematics OBD-II Adapter - $ 35

2) Mga Backup Sensor - $ 15

3) 7 TFT LCD Display - $ 38

4) Nakabatay sa SPI na LCD Display Driver - $ 35

5) Teensy 3.6 - $ 30

6) Level Shifter - $ 4

7) 74HC125 Tri State Buffer IC - $ 6 para sa 2 pack (Sigurado akong mahahanap mo ang cheeper na ito sa ibang lugar)

8) MicroSD Card> = 1 GB - $ 4

9) Wire, capacitors, at resistors.

10) LP3470-2.93 Lakas sa I-reset ang IC - $ 2

11) (opsyonal): DS18B20 Temperature Sensor - $ 8

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

13) (opsyonal): Magdagdag ng isang circuit fuse cord - $ 8 para sa pack ng 5

Hakbang 1: Pagbasa ng Mga Backup Sensor

Pagbasa ng Mga Backup Sensor
Pagbasa ng Mga Backup Sensor
Pagbasa ng Mga Backup Sensor
Pagbasa ng Mga Backup Sensor
Pagbasa ng Mga Backup Sensor
Pagbasa ng Mga Backup Sensor
Pagbasa ng Mga Backup Sensor
Pagbasa ng Mga Backup Sensor

Ang hakbang na ito ay nakakalito dahil ang mga backup sensor na ito ay nakikipag-usap sa isang transceiver at pagkatapos ay sa isang maliit na LCD tulad ng nakikita sa larawan sa itaas. Nais kong isang paraan upang mapupuksa ang kanilang display at magamit ang aking sarili. Sa tulong ng isang website na natagpuan ko pagkatapos ng ilang pag-Google (Pag-hack ng mga reverse parking sensor), nabasa ko ang pagmamay-ari na protocol ng komunikasyon na ipinapadala ng transceiver sa LCD screen. Para sa ilang kadahilanan, ang protocol ng komunikasyon ay hindi isang tipikal na tulad ng I2C, UART, CAN, USB, atbp. At ang protokol ay naiiba depende sa tagapagtustos. Masidhing inirerekumenda kong bilhin mo ang hanay na na-link ko sa itaas kung gagamitin mo ang aking code dahil partikular itong isinulat para sa mga sensor na iyon.

Bago idiskonekta ang LCD na kanilang ibinigay, sinubukan ko ang tatlong mga wire na sumasali sa transceiver at sa LCD. Mayroong + 5V pulang kawad, ground black wire, at isang asul na kawad. Matapos maikabit ang aking oscilloscope sa asul na kawad at lupa, nakita ko ang isang bakas na katulad ng larawan na nakikita sa itaas ngunit hindi eksakto (Ginamit ko ang larawan mula sa website na naka-link sa itaas). Ang aking bakas ay nagkaroon ng isang MAS mataas na tagal ng pagsisimula ng bit, na sinusundan ng 17 higit pang mga mas maikling tagal ng mga piraso. Ang mga piraso 0-5 pagkatapos ng simula ay walang kapaki-pakinabang na impormasyon. Ang mga bit 6-8 ay tumutugma sa sensor A, B, C, o D. Ang mga bit 9-16 ay tumutugma sa haba sa metro. Nagsama ako ng isang Arduino IDE sketch na nagbabasa ng mga sensor at naglalabas ng data sa serial console.

Hakbang 2: Paglikha ng Bitmap Image at paglalagay nito sa isang MicroSD Card

Paglikha ng Bitmap Image at paglalagay nito sa isang MicroSD Card
Paglikha ng Bitmap Image at paglalagay nito sa isang MicroSD Card
Paglikha ng Bitmap Image at paglalagay nito sa isang MicroSD Card
Paglikha ng Bitmap Image at paglalagay nito sa isang MicroSD Card

Gumamit ako ng isang libreng software sa pag-edit ng larawan na tinatawag na GIMP upang i-crop at baguhin ang laki ng isang imahe ng aking kotse mula sa tuktok na pagtingin. Pagkatapos ay na-export ko ang imahe bilang isang 24 bit bitmap na imahe na pinangalanang "car.bmp" na 110 pixel ng 250 pixel. Na-upload ko ito sa isang microSD card at inilagay ang microSD card sa aking Teensy 3.6 microcontroller.

Ang mga pangunahing kadahilanan na nagpunta ako sa Teensy 3.6 sa halip na isang UNO ay ang bilis na mabasa ng Teensy ang isang SD card at ipakita ang imahe gamit ang RA8875 display driver. Gamit ang isang UNO, tumagal ang proseso ng halos 8 segundo, habang ang isang Teensy 3.6 ay tumagal ng 1.8 segundo.

Hakbang 3: Pagkonekta sa Hardware

Pagkonekta sa Hardware
Pagkonekta sa Hardware

Ang Adafruit ay may isang napakahusay na pagtingin na 7 TFT LCD na hinihimok ng isang IC na tinatawag na RA8875. Pinili ko ang display at display driver na ito para sa dalawang kadahilanan. Una, may mga malawak na aklatan na naitala para sa display. Pangalawa, maaaring makipag-usap ang driver ng display anumang microcontroller sa SPI, nangangahulugang walang gaanong mga wires na kumukonekta sa microcontroller sa RA8875.

Mayroong dalawang mga kabiguan sa pag-setup na ito. Una ay ang katunayan na mayroong isang hardware bug kasama ang RA8875 board mula sa Adafruit na nangangailangan ng paggamit ng 74HC125 tri-state buffer IC kung nais mong gumamit ng anumang aparato na nakabatay sa SPI tulad ng isang SD card. Upang higit na maunawaan ang bug ng hardware, mangyaring basahin ang sumusunod na forum. Pangalawa, ay ang mahabang haba ng oras na kinakailangan para maipadala ang mga imahe sa LCD. Gayundin, ang mahabang oras na kinakailangan para maipadala ang isang imahe sa LCD ay dahil sa koneksyon ng SPI, na kung saan ay limitado ng bilis ng orasan ng microntrollers at ang malaking halaga ng data na kailangang maipadala sa display driver. napakakaunting mga wire.

Lumikha ako ng isang iskemang Fritzing upang ang sinuman na nais na likhain ang display na ito ay madaling mabasa kung anong mga pin sa Teensy 3.6 na kumonekta. Nagsama ako ng isang.frz file sa ibaba. Ang dalawang bahagi lamang na hindi may label ay ang mga capacitor, na kung saan ay isang 1F 16V electrolytic capacitor at isang 100μF ceramic capacitor. Isinama ko ang mga ito upang matiyak na ang lakas sa Teensy microcontroller ay matatag ang DC + 5V at hindi naglalaman ng anumang mga voltage spike (maaaring hindi kinakailangan ngunit isinama ko sila dahil ang supply ng boltahe ng isang kotse ay maaaring mabilis na magbago depende sa pag-load sa baterya).

Ang ilang mga bagay na banggitin tungkol sa mga bahagi. Una, ang antas ng shifter ay tumatagal ng anumang 5V signal at ginawang isang ligtas na boltahe ng 3.3V Teensy 3.6. Ito ay kinakailangan para sa adapter ng OBD I2C pati na rin ang backup sensor transceiver. Pangalawa, ang mga linya ng I2C ng teensy ay nangangailangan ng 4.7kΩ na pull up resistors. Pangatlo, ang apat na resistors na kumokonekta sa "night time wire" (ang dimming wire) at ang "backup na nakikipag-wire" ay kinakailangan upang magsilbing isang voltner divider upang dalhin ang 12V-13V signal pababa sa halos 2.5-3V signal.

I-UPDATE 7/22/18: Natagpuan ko ang panloob na sensor ng temperatura ng module ng OBD-I2C na naglalabas ng mga kakaibang numero. Minsan gagana ito, ngunit sa karamihan ng oras, ang module ay naglalabas ng temperatura sa itaas 400 degree F. Dahil dito, napagpasyahan kong idagdag ang aking sariling sensor ng temperatura na ds18b20. Malugod na maligayang pagdating sa iyo na gumamit ng anumang uri ng sensor ng temperatura dito, ngunit kakailanganin mong i-edit ang Arduino code.

I-UPDATE 3/1/19: Ang tinedyer 3.6 ay hindi nagsisimula kapag ito ay sobrang lamig. Nagdagdag ako ng isang kapangyarihan sa pag-reset ng circuit upang matiyak na maayos ang pag-boot nito.

Hakbang 4: RA8875 Display Driver at Disenyo ng Graphics

RA8875 Display Driver at Disenyo ng Graphics
RA8875 Display Driver at Disenyo ng Graphics

Ang driver ng display na RA8875 ay mayroong silid-aklatan na tinatawag na Adafruit_RA8875, na ginamit ko noong lumilikha ng mga hugis na nakikita sa unang pahina at pangalawang pahina. Ang silid-aklatan para sa RA8875 ay makakalikha lamang ng mga linya, parihaba, bilugan na parihaba, tatsulok, ellipses, at bilog, kaya't ang mga graphic ay dapat na idisenyo sa isang matalinong paraan upang lumikha ng mas kumplikadong mga hugis. Halimbawa, ang kulay-abo na singsing sa unang pahina ay talagang isang buong kulay-abo na bilog ng isang mas malaking lapad na sinusundan ng isang buong itim na bilog ng isang mas maliit na diameter. Gayundin, ang isang maliit na seksyon ng pahina ng pag-backup ng sensor ay naglalaman ng 2 mga triangles na nakaayos sa isang paraan na gumawa sila ng isang hugis ng polygon. Ginawa ko ito upang mabago ko ang kulay ng isang indibidwal na seksyon ng pahina ng pag-backup ng sensor. Ang Arduino file para sa display ay naglalaman ng isang hanay ng mga puntos na ginamit ko upang subaybayan kung nasaan ang mga triangles at iba pang mga hugis.

Ginamit ko ang mahusay na website na ito upang pumili ng mga kulay na RGB565 at tukuyin ang mga ito sa sketch upang magamit ko ang mga hindi default na kulay na paunang natukoy sa Adafruit_RA8875 library.

Sa mga tuntunin ng mga font, sinusuportahan lamang ng Adafruit_RA8875 library ang isa maliban kung magkomento ka ng isang seksyon ng silid-aklatan, na nagbibigay-daan sa iyo upang magamit ang mga font ng Adafruit_GFX library. Isinama ko ang binagong Adafruit_RA8875 library sa ibaba. Nagkomento lamang ako ng ilang mga linya ng code at nagawa kong gamitin ang mga font sa Adafruit_GFX library. Gayundin, upang magamit ang 7 segment na font na ginamit ko sa proyektong ito, mangyaring tiyakin ang "FreeSevenSegNumFont.h" na file na nasa folder ako ng mga font sa Adafruit_GFX library.

Hakbang 5: Pag-upload ng Sketch

Pag-upload ng Sketch
Pag-upload ng Sketch
Pag-upload ng Sketch
Pag-upload ng Sketch

Upang mai-upload ang sketch sa isang Teensy 3.6, kakailanganin mong i-install ang Teensyduino. Pagkatapos ay kakailanganin mong palitan ang mga aklatan ng Adafruit_RA8875 at Adafruit_GFX sa lokasyon ng library ng teensy (hindi ang iyong karaniwang lokasyon sa mga dokumento). Sa Mac, kinailangan kong mag-right click sa icon ng application ng Arduino sa mga application, at pagkatapos ay mag-navigate sa / Mga Nilalaman / Java / hardware / teensy / avr / library. Sa mga bintana, sigurado akong nasa ilalim ito ng iyong C drive sa Program files x86, Arduino, at pagkatapos ay ang folder ng hardware doon. Kapag nagawa mo iyon, kakailanganin mong baguhin ang lokasyon ng sketchbook sa application ng Arduino sa pamamagitan ng pag-edit nito sa mga kagustuhan kung nasaan man ang iyong mga libraryong tinedyer (ibig sabihin /Applications/Arduino.app/Contents/Java/hardware/teensy/avr).

I-UPDATE 7/22/16: Dahil sa isyu ng panloob na temperatura sensor na pinag-usapan ko nang maaga, kailangan kong mag-install ng sensor ng temperatura ng module ng DS18B20. Makakakita ka ng 4 na mga sketch ng arduino sa zip file. Mangyaring i-upload ang display_code sketch kung nais mong gamitin ang panloob na sensor ng temperatura ng module na OBD-II I2C. Mangyaring i-upload ang display_code_with_new_temperature_sensor sketch kung nais mong gamitin ang module na DS18B20 na na-link ko sa itaas.

I-UPDATE 11/17/17: Nag-ayos ako ng maraming mga bug sa software kasama ang DS18B20 na naglalabas ng temperatura ng 185 Fahrenheit, ang display ay hindi lumiliko sa malamig na panahon, at ang mga pixel ay natigil sa maling kulay kapag ang display ay lumabo.

Pagkatapos, gamitin ang larawan na mayroon ako sa itaas upang matiyak na ang iyong mga setting ng teensy ay tumutugma sa larawan. Natagpuan ko ang overclocking ng teensy sa 240MHz ay hindi pinapayagan ang I2C OBD-II adapter na makipag-usap sa teensy. Panghuli, i-click lamang ang upload.

Sumulat ako ng medyo malawak na mga komento sa mga arduino sketch file. Mangyaring maghanap doon para sa isang paliwanag kung paano gumagana ang software. Mangyaring huwag mag-atubiling makipag-ugnay sa akin sa anumang mga katanungan. Susubukan kong sagutin ang mga ito sa abot ng aking makakaya. Good luck!

Hakbang 6: 3D Mag-print ng isang LCD Kaso

3D Mag-print ng isang LCD Kaso
3D Mag-print ng isang LCD Kaso
3D Mag-print ng isang LCD Kaso
3D Mag-print ng isang LCD Kaso
3D Mag-print ng isang LCD Kaso
3D Mag-print ng isang LCD Kaso

Lumikha ako ng isang 3D na naka-print na LCD sa itaas at ilalim na takip upang maprotektahan ang 7 display. Inilakip ko ang mga file na bahagi ng imbentong. IPT pati na rin ang mga. STL file.

Nagsama rin ako ng isang bahagi na tinatawag na backup_sensor_ring.ipt, na isang singsing na umaangkop sa paligid ng mga backup sensor na na-link ko sa itaas. Ang aking kotse ay mayroon nang paunang drill na mga butas ng backup na sensor na masyadong malaki para sa mga backup sensor na binili ko sa Amazon, kaya't kailangan kong lumikha ng isang singsing na magkakasya sa mga backup sensor. Kung mag-drill ka sa iyong bumper na may kasamang piraso ng pabilog na drill sa hanay, hindi mo kakailanganin ang bahaging ito.

Hakbang 7: Ang Paghahati sa Port ng OBD-II Kaya Ang Arduino ay May Lamang Lakas Kapag Tumatakbo ang Kotse

Paghiwalay sa Port ng OBD-II Kaya Ang Arduino Lamang ay May Lakas Kapag Tumatakbo ang Kotse
Paghiwalay sa Port ng OBD-II Kaya Ang Arduino Lamang ay May Lakas Kapag Tumatakbo ang Kotse
Paghiwalay sa Port ng OBD-II Kaya Lamang Ang Arduino ay May Lakas Kung Tumatakbo ang Kotse
Paghiwalay sa Port ng OBD-II Kaya Lamang Ang Arduino ay May Lakas Kung Tumatakbo ang Kotse
Paghiwalay sa Port ng OBD-II Kaya Ang Arduino Lamang ay May Lakas Kapag Tumatakbo ang Kotse
Paghiwalay sa Port ng OBD-II Kaya Ang Arduino Lamang ay May Lakas Kapag Tumatakbo ang Kotse

Napagtanto ko ilang sandali lamang matapos mai-install ang aking display na ang display ay laging nakabukas, kahit na naka-off ang kotse. Sa pagtingin sa pinout ng OBD-II, nalaman ko na ang linya ng kuryente na 12V sa konektor ng OBD-II ay palaging konektado nang direkta sa baterya.

Upang mapalibot ito, bumili ako ng isang splitter ng OBD-II, gupitin ang kawad na mag-pin 16 sa isa sa dalawang konektor sa splitter, at pagkatapos ay konektado ang gupit na kawad upang magdagdag ng isang circuit wire.

Pagkatapos, gamit ang aking multimeter, nagpunta ako sa kahon ng fuse ng driver at sinubukan ang mayroon nang mga piyus upang makita kung aling piyus ang nagkakaroon ng lakas pagkatapos na ang susi ay naging ignition.

Sa wakas, ikinonekta ko ang magdagdag ng isang circuit wire sa piyus na matatagpuan ko upang ang display ngayon ay bubuksan lamang kapag ang aking kotse ay tumatakbo. Mangyaring gumawa ng ilang pagsasaliksik sa kung paano maayos na magdagdag ng isang circuit sa iyong sasakyan. Natagpuan kong mahusay ang tutorial sa youtube na ito.

Inirerekumendang: