Isi kandungan:

Paparan Kereta Arduino: 7 Langkah (dengan Gambar)
Paparan Kereta Arduino: 7 Langkah (dengan Gambar)

Video: Paparan Kereta Arduino: 7 Langkah (dengan Gambar)

Video: Paparan Kereta Arduino: 7 Langkah (dengan Gambar)
Video: Tonton Sampai Habis !!! Belajar Arduino Di Jamin Bisa 2024, Julai
Anonim
Image
Image
Paparan Kereta Arduino
Paparan Kereta Arduino
Paparan Kereta Arduino
Paparan Kereta Arduino

Saya membina paparan berdasarkan diagnostik on-board (OBD-II) menggunakan LCD TFT 7 dari Adafruit, Teensy 3.6, Adaptor Freematics OBD-II I2C, dan beberapa sensor sandaran curang yang saya dapati di Amazon. Paparan ini mempunyai dua halaman: satu untuk ketika Honda Accord saya dalam perjalanan dan satu untuk ketika ia terbalik.

Semasa kereta saya dalam perjalanan, RPM, MPH, peratusan beban enjin, voltan bateri, suhu kabin, dan suhu penyejuk enjin ditunjukkan (terdapat beberapa statistik kenderaan lain yang tersedia untuk dipaparkan jika seseorang tidak menginginkannya).

Apabila kereta saya terbalik, Teensy 3.6 yang serasi dengan Arduino IDE membaca gambar bitmap animasi kereta yang saya dapati dalam talian, memaparkannya, dan kemudian membaca sensor sandaran. Keempat-empat sensor masing-masing mempunyai jarak kaki serta animasi di belakang kereta yang berubah warna berdasarkan seberapa dekat objek ke kereta (hanya bermaksud hijau <5 kaki, hijau dan kuning bermaksud <2.6 kaki, dan hijau, kuning, dan merah bermaksud <1 kaki).

Akhirnya, saya menambahkan keupayaan untuk meredupkan paparan pada waktu malam.

Hasil akhirnya kelihatan hebat dan berfungsi dengan baik di dalam kereta saya. Saya akhirnya memasangnya di konsol tengah, yang merupakan proses lain yang tidak akan saya jalankan dalam arahan ini. Senarai bahagian yang saya gunakan untuk membuat paparan LCD ini ada di bawah.

1) Penyesuai Freematics OBD-II - $ 35

2) Sensor Sandaran - $ 15

3) Paparan LCD TFT 7 - $ 38

4) Pemacu Paparan LCD berasaskan SPI - $ 35

5) Teensy 3.6 - $ 30

6) Level Shifter - $ 4

7) 74HC125 Tri State Buffer IC - $ 6 untuk 2 pek (saya pasti anda dapat mencari cheeper ini di tempat lain)

8) Kad MicroSD> = 1 GB - $ 4

9) Wayar, kapasitor, dan perintang.

10) LP3470-2.93 Kuasa pada Reset IC - $ 2

11) (pilihan): Sensor Suhu DS18B20 - $ 8

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

13) (pilihan): Tambahkan kabel fius litar - $ 8 untuk pek 5

Langkah 1: Membaca Sensor Sandaran

Membaca Sensor Sandaran
Membaca Sensor Sandaran
Membaca Sensor Sandaran
Membaca Sensor Sandaran
Membaca Sensor Sandaran
Membaca Sensor Sandaran
Membaca Sensor Sandaran
Membaca Sensor Sandaran

Langkah ini sukar kerana sensor sandaran ini berkomunikasi dengan transceiver dan kemudian ke LCD kecil seperti yang dilihat pada gambar di atas. Saya mahukan cara untuk menghilangkan paparan mereka dan menggunakan paparan saya sendiri. Dengan bantuan laman web yang saya dapati selepas beberapa googling (Hacking sensor parkir terbalik), saya dapat membaca protokol komunikasi proprietari yang dihantar oleh pemancar ke skrin LCD. Atas sebab tertentu, protokol komunikasi bukanlah yang biasa seperti I2C, UART, CAN, USB, dll. Dan protokolnya berbeza bergantung pada pembekal. Saya sangat mengesyorkan agar anda membeli set yang saya pautkan di atas jika anda akan menggunakan kod saya kerana ia ditulis khusus untuk sensor tersebut.

Sebelum memutuskan sambungan LCD yang mereka sediakan, saya memeriksa tiga wayar yang bergabung dengan transceiver dan LCD. Terdapat wayar merah + 5V, wayar hitam tanah, dan wayar biru. Setelah menghubungkan osiloskop saya ke dawai biru dan tanah, saya melihat jejak yang serupa dengan gambar yang dilihat di atas tetapi tidak tepat (saya menggunakan gambar dari laman web yang dipautkan di atas). Jejak saya mempunyai bit permulaan yang lebih lama dengan HIGH, diikuti dengan 17 bit durasi yang lebih pendek. Bit 0-5 selepas bit permulaan tidak mempunyai maklumat berguna. Bits 6-8 sesuai dengan sensor A, B, C, atau D. Bits 9-16 sesuai dengan panjang dalam meter. Saya memasukkan sketsa Arduino IDE yang membaca sensor dan mengeluarkan data melalui konsol bersiri.

Langkah 2: Membuat Imej Bitmap dan Menempatkannya pada Kad MicroSD

Membuat Imej Bitmap dan Memasukkannya pada Kad MicroSD
Membuat Imej Bitmap dan Memasukkannya pada Kad MicroSD
Membuat Imej Bitmap dan Memasukkannya pada Kad MicroSD
Membuat Imej Bitmap dan Memasukkannya pada Kad MicroSD

Saya menggunakan perisian penyuntingan foto percuma yang disebut GIMP untuk memotong dan mengubah saiz gambar kereta saya dari pandangan atas. Saya kemudian mengeksport gambar sebagai gambar bitmap 24 bit bernama "car.bmp" iaitu 110 piksel dengan 250 piksel. Saya memuat naik ini ke kad microSD dan memasukkan kad microSD ke dalam mikrokontroler Teensy 3.6 saya.

Sebab utama saya menggunakan Teensy 3.6 dan bukannya UNO adalah kepantasan Teensy dapat membaca kad SD dan memaparkan gambar menggunakan pemacu paparan RA8875. Menggunakan UNO, prosesnya memakan masa sekitar 8 saat, sementara Teensy 3.6 mengambil masa 1.8 saat.

Langkah 3: Menyambungkan Perkakasan

Menyambungkan Perkakasan
Menyambungkan Perkakasan

Adafruit mempunyai LCD TFT 7 yang sangat cantik yang didorong oleh IC yang disebut RA8875. Saya memilih pemacu paparan dan paparan ini kerana dua sebab. Pertama, terdapat perpustakaan yang luas yang ditulis sebelumnya untuk paparan. Kedua, pemacu paparan boleh bercakap dengan mana-mana mikrokontroler melalui SPI, yang bermaksud tidak banyak wayar yang menghubungkan mikrokontroler ke RA8875.

Terdapat dua kelemahan untuk persediaan ini. Pertama adalah kenyataan bahawa terdapat bug perkakasan dengan papan RA8875 dari Adafruit yang memerlukan penggunaan IC buffer tri-keadaan 74HC125 jika anda ingin menggunakan mana-mana peranti berasaskan SPI seperti kad SD. Untuk lebih memahami pepijat perkakasan, baca forum berikut. Kedua, adalah jangka masa yang agak lama untuk gambar dihantar ke LCD. Juga, jangka masa yang lama untuk gambar dihantar ke LCD disebabkan oleh sambungan SPI, yang dibatasi oleh kelajuan jam pengawal mikro dan sejumlah besar data yang harus dihantar ke pemacu paparan wayar sangat sedikit.

Saya membuat skema Fritzing supaya sesiapa sahaja yang ingin membuat paparan ini dapat membaca pin apa yang disambungkan dengan Teensy 3.6 dengan mudah. Saya memasukkan fail.frz di bawah. Dua komponen yang tidak dilabel adalah kapasitor, iaitu kapasitor elektrolit 1F 16V dan kapasitor seramik 100μF. Saya memasukkannya untuk memastikan kuasa ke mikrokontroler Teensy DC + 5V stabil dan tidak mengandungi lonjakan voltan (mungkin tidak diperlukan tetapi saya memasukkannya kerana bekalan voltan kereta dapat turun naik dengan cepat bergantung pada beban pada bateri).

Beberapa perkara yang perlu disebutkan mengenai komponen. Pertama, pengubah tahap mengambil sebarang isyarat 5V dan mengubahnya menjadi voltan selamat 3.3V Teensy 3.6. Ini diperlukan untuk penyesuai OBD I2C dan juga transceiver sensor sandaran. Kedua, garis I2C remaja memerlukan perintang tarik 4.7kΩ. Ketiga, empat perintang yang menghubungkan "wayar waktu malam" (wayar peredupan) dan "wayar pengikat sandaran" diperlukan untuk berfungsi sebagai pembahagi voltan untuk membawa isyarat 12V-13V turun ke sekitar isyarat 2.5-3V.

UPDATE 7/22/18: Saya mendapati sensor suhu dalaman modul OBD-I2C mengeluarkan nombor yang sangat pelik. Kadang-kadang ia berfungsi, tetapi selalunya, modul ini menghasilkan suhu melebihi 400 darjah F. Oleh kerana itu, saya memutuskan untuk menambahkan sensor suhu ds18b20 saya sendiri. Anda dialu-alukan untuk menggunakan jenis sensor suhu di sini, tetapi anda perlu mengedit kod Arduino.

KEMASKINI 3/1/19: Teensy 3.6 tidak bermula apabila sangat sejuk. Saya menambah kuasa pada litar ulang untuk memastikan ia boot dengan betul.

Langkah 4: Pemacu Paparan dan Reka Bentuk Grafik RA8875

Reka Bentuk Pemacu Paparan dan Grafik RA8875
Reka Bentuk Pemacu Paparan dan Grafik RA8875

Pemacu paparan RA8875 mempunyai perpustakaan yang disebut Adafruit_RA8875, yang saya gunakan ketika membuat bentuk yang terlihat pada halaman pertama dan halaman kedua. Perpustakaan untuk RA8875 hanya dapat membuat garis, persegi panjang, segi empat bulat, segitiga, elips, dan bulatan, jadi grafik harus dirancang dengan cara yang cerdas untuk membuat bentuk yang lebih kompleks. Sebagai contoh, cincin kelabu pada halaman pertama sebenarnya adalah lingkaran kelabu penuh dengan diameter lebih besar diikuti dengan lingkaran hitam penuh dengan diameter yang lebih kecil. Juga, satu bahagian kecil dari halaman sensor sandaran mengandungi 2 segitiga yang disusun sedemikian rupa sehingga mereka membentuk bentuk poligon. Saya melakukan ini supaya saya dapat mengubah warna bahagian individu halaman sensor sandaran. Fail Arduino untuk paparan mengandungi pelbagai titik yang saya gunakan untuk melacak tempat segitiga dan bentuk lain.

Saya menggunakan laman web hebat ini untuk memilih warna RGB565 dan menentukannya dalam lakaran sehingga saya dapat menggunakan warna bukan lalai yang sudah ditentukan sebelumnya di perpustakaan Adafruit_RA8875.

Dari segi fon, perpustakaan Adafruit_RA8875 hanya menyokong satu kecuali anda memberi komen pada bahagian perpustakaan, yang membolehkan anda menggunakan fon perpustakaan Adafruit_GFX. Saya sertakan pustaka Adafruit_RA8875 yang telah diubahsuai di bawah. Saya hanya mengulas beberapa baris kod dan kemudian dapat menggunakan fon di perpustakaan Adafruit_GFX. Juga, untuk menggunakan fon segmen 7 yang saya gunakan dalam projek ini, pastikan fail "FreeSevenSegNumFont.h" yang saya ada di folder fon di perpustakaan Adafruit_GFX.

Langkah 5: Memuat naik Lakaran

Memuat naik Lakaran
Memuat naik Lakaran
Memuat naik Lakaran
Memuat naik Lakaran

Untuk memuat naik lakaran ke Teensy 3.6, anda perlu memasang Teensyduino. Maka anda perlu mengganti perpustakaan Adafruit_RA8875 dan Adafruit_GFX di lokasi perpustakaan remaja (bukan lokasi biasa anda dalam dokumen). Pada Mac, saya harus klik kanan pada ikon aplikasi Arduino dalam aplikasi, dan kemudian menavigasi ke / Isi / Java / perkakasan / teensy / avr / perpustakaan. Di tingkap, saya yakin ia berada di bawah pemacu C anda dalam fail Program x86, Arduino, dan kemudian folder perkakasan di sana. Sebaik sahaja anda melakukannya, anda perlu mengubah lokasi buku lakaran dalam aplikasi Arduino dengan mengeditnya mengikut pilihan di mana sahaja perpustakaan remaja anda (iaitu / Aplikasi / Arrinoino.app/Contents/Java/hardware/teensy/avr).

KEMASKINI 7/22/16: Kerana masalah sensor suhu dalaman yang saya bicarakan sebelumnya, saya harus memasang sensor suhu modul DS18B20. Anda akan melihat 4 lakaran arduino dalam fail zip. Sila muat naik sketsa display_code jika anda ingin menggunakan sensor suhu dalaman modul OBD-II I2C. Sila muat naik lakaran display_code_with_new_temperature_sensor jika anda ingin menggunakan modul DS18B20 yang saya pautkan di atas.

KEMASKINI 11/17/17: Saya membetulkan beberapa bug dalam perisian termasuk DS18B20 yang mengeluarkan suhu 185 Fahrenheit, paparan tidak dihidupkan sama sekali dalam cuaca sejuk, dan piksel terjebak dalam warna yang salah ketika layar redup.

Kemudian, gunakan gambar yang saya ada di atas untuk memastikan tetapan remaja anda sesuai dengan gambar. Saya mendapati overclocking remaja hingga 240MHz tidak membenarkan penyesuai I2C OBD-II untuk berkomunikasi dengan remaja. Akhirnya, klik muat naik.

Saya menulis komen yang cukup luas dalam fail sketsa arduino. Sila cari penjelasan mengenai bagaimana perisian tersebut berfungsi. Jangan ragu untuk menghubungi saya untuk sebarang pertanyaan. Saya akan berusaha menjawabnya dengan sebaik mungkin. Semoga berjaya!

Langkah 6: Cetak 3D Kotak LCD

3D Mencetak Kes LCD
3D Mencetak Kes LCD
3D Mencetak Kes LCD
3D Mencetak Kes LCD
3D Mencetak Kes LCD
3D Mencetak Kes LCD

Saya membuat penutup atas dan bawah LCD bercetak 3D untuk melindungi paparan 7 . Saya telah melampirkan fail bahagian pencipta. IPT dan juga fail. STL.

Saya juga memasukkan bahagian yang disebut backup_sensor_ring.ipt, yang merupakan cincin yang sesuai dengan sensor sandaran yang saya pautkan di atas. Kereta saya sudah mempunyai lubang sensor sandaran pra-bor yang terlalu besar untuk sensor sandaran yang saya beli di Amazon, jadi saya harus membuat cincin yang sesuai dengan sensor sandaran. Sekiranya anda akan menggerudi bumper anda dengan potongan gerudi bulat yang disertakan dalam set, anda tidak memerlukan bahagian ini.

Langkah 7: Memisahkan Pelabuhan OBD-II Jadi Arduino Hanya Mempunyai Kekuatan Ketika Kereta Berlari

Membelah Port OBD-II Sehingga Arduino Hanya Mempunyai Kekuatan Ketika Kereta Berlari
Membelah Port OBD-II Sehingga Arduino Hanya Mempunyai Kekuatan Ketika Kereta Berlari
Membelah Port OBD-II Sehingga Arduino Hanya Mempunyai Kekuatan Ketika Kereta Berlari
Membelah Port OBD-II Sehingga Arduino Hanya Mempunyai Kekuatan Ketika Kereta Berlari
Membelah Port OBD-II Sehingga Arduino Hanya Mempunyai Kekuatan Ketika Kereta Berlari
Membelah Port OBD-II Sehingga Arduino Hanya Mempunyai Kekuatan Ketika Kereta Berlari

Saya menyedari sejurus selepas memasang paparan saya bahawa paparan sentiasa menyala, walaupun ketika kereta dimatikan. Melihat pinout OBD-II, saya mendapati bahawa talian kuasa 12V ke penyambung OBD-II selalu disambungkan terus ke bateri.

Untuk menyelesaikannya, saya membeli pemisah OBD-II, memotong wayar yang akan menjadi pin 16 pada salah satu daripada dua penyambung pada pemisah, dan kemudian menyambungkan wayar pemotong itu ke wayar litar tambahkan.

Kemudian, dengan menggunakan multimeter saya, saya pergi ke kotak fius sebelah pemandu dan menguji sekering yang ada untuk melihat fius mana yang mendapat kuasa setelah kunci diubah menjadi pencucuhan.

Akhirnya, saya menghubungkan wayar litar tambah ke fius yang saya letakkan sehingga paparan sekarang hanya menyala ketika kereta saya berjalan. Sila buat kajian mengenai cara menambah litar ke kereta anda dengan betul. Saya dapati tutorial youtube ini bagus.

Disyorkan: