Daftar Isi:

Tampilan Mobil Arduino: 7 Langkah (dengan Gambar)
Tampilan Mobil Arduino: 7 Langkah (dengan Gambar)

Video: Tampilan Mobil Arduino: 7 Langkah (dengan Gambar)

Video: Tampilan Mobil Arduino: 7 Langkah (dengan Gambar)
Video: Bluetooth controlled Arduino RC Car | Control using your Mobile Phone | Ut Go 2024, November
Anonim
Image
Image
Tampilan Mobil Arduino
Tampilan Mobil Arduino
Tampilan Mobil Arduino
Tampilan Mobil Arduino

Saya membuat layar berbasis diagnostik on-board (OBD-II) menggunakan LCD TFT 7 dari Adafruit, Teensy 3.6, Adaptor OBD-II I2C Freematics, dan beberapa sensor cadangan ciak yang saya temukan di Amazon. Layar memiliki dua halaman: satu untuk saat Honda Accord saya dalam keadaan berkendara dan satu lagi saat dalam keadaan mundur.

Saat mobil saya sedang dikendarai, RPM, MPH, persentase beban mesin, tegangan baterai, suhu kabin, dan suhu cairan pendingin mesin ditampilkan (ada beberapa statistik kendaraan lain yang tersedia untuk ditampilkan jika seseorang tidak menginginkannya).

Ketika mobil saya mundur, Teensy 3.6 yang kompatibel dengan Arduino IDE membaca gambar bitmap animasi mobil saya yang saya temukan online, menampilkannya, dan kemudian membaca sensor cadangan. Keempat sensor masing-masing memiliki jarak dalam kaki ditambah animasi di belakang mobil yang berubah warna berdasarkan seberapa dekat objek dengan mobil (hanya hijau berarti <5 kaki, hijau dan kuning berarti <2,6 kaki, dan hijau, kuning, dan merah berarti <1 kaki).

Terakhir, saya menambahkan kemampuan untuk meredupkan layar di malam hari.

Hasil akhirnya terlihat bagus dan berfungsi sangat baik di mobil saya. Saya bahkan akhirnya menginstalnya di konsol tengah, yang merupakan proses lain yang tidak akan saya bahas dalam instruksi ini. Daftar bagian yang saya gunakan untuk membuat layar LCD ini ada di bawah.

1) Adaptor OBD-II Freematics - $35

2) Sensor Cadangan - $15

3) Layar LCD TFT 7 - $38

4) Driver Layar LCD berbasis SPI - $35

5) Kecil 3.6 - $30

6) Pergeseran Level - $4

7) 74HC125 Tri State Buffer IC -$6 untuk 2 paket (saya yakin Anda dapat menemukan cheeper ini di tempat lain)

8) Kartu MicroSD >= 1 GB - $4

9) Kawat, kapasitor, dan resistor.

10) LP3470-2.93 Power on Reset IC - $2

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

12) (opsional): Pemisah OBD-II - $10

13) (opsional): Tambahkan kabel sekering sirkuit - $8 untuk paket 5

Langkah 1: Membaca Sensor Cadangan

Membaca Sensor Cadangan
Membaca Sensor Cadangan
Membaca Sensor Cadangan
Membaca Sensor Cadangan
Membaca Sensor Cadangan
Membaca Sensor Cadangan
Membaca Sensor Cadangan
Membaca Sensor Cadangan

Langkah ini rumit karena sensor cadangan ini berkomunikasi dengan transceiver dan kemudian ke LCD kecil seperti yang terlihat pada gambar di atas. Saya ingin cara untuk menyingkirkan tampilan mereka dan menggunakan tampilan saya sendiri. Dengan bantuan situs web yang saya temukan setelah beberapa googling (Peretasan sensor parkir terbalik), saya dapat membaca protokol komunikasi eksklusif yang dikirim oleh transceiver ke layar LCD. Untuk beberapa alasan, protokol komunikasi tidak biasa seperti I2C, UART, CAN, USB, dll. dan protokolnya berbeda tergantung pada pemasoknya. Saya sangat menyarankan Anda membeli set yang saya tautkan di atas jika Anda akan menggunakan kode saya karena itu ditulis khusus untuk sensor tersebut.

Sebelum melepas LCD yang mereka sediakan, saya memeriksa tiga kabel yang menghubungkan transceiver dan LCD. Ada kabel merah +5V, kabel hitam ground, dan kabel biru. Setelah menghubungkan osiloskop saya ke kabel biru dan ground, saya melihat jejak yang mirip dengan gambar yang terlihat di atas tetapi tidak persis (saya menggunakan gambar dari situs web yang ditautkan di atas). Jejak saya memiliki bit awal durasi TINGGI yang lebih lama, diikuti oleh 17 bit durasi yang lebih pendek. Bit 0-5 setelah bit awal tidak memiliki informasi yang berguna. Bit 6-8 sesuai dengan sensor A, B, C, atau D. Bit 9-16 sesuai dengan panjang dalam meter. Saya menyertakan sketsa Arduino IDE yang membaca sensor dan mengeluarkan data melalui konsol serial.

Langkah 2: Membuat Gambar Bitmap dan Meletakkannya di Kartu MicroSD

Membuat Gambar Bitmap dan Meletakkannya di Kartu MicroSD
Membuat Gambar Bitmap dan Meletakkannya di Kartu MicroSD
Membuat Gambar Bitmap dan Meletakkannya di Kartu MicroSD
Membuat Gambar Bitmap dan Meletakkannya di Kartu MicroSD

Saya menggunakan perangkat lunak pengedit foto gratis bernama GIMP untuk memotong dan mengubah ukuran gambar mobil saya dari tampilan atas. Saya kemudian mengekspor gambar sebagai gambar bitmap 24 bit bernama "car.bmp" yaitu 110 piksel kali 250 piksel. Saya mengunggah ini ke kartu microSD dan memasukkan kartu microSD ke mikrokontroler Teensy 3.6 saya.

Alasan utama saya menggunakan Teensy 3.6 daripada UNO adalah kecepatan di mana Teensy dapat membaca kartu SD dan menampilkan gambar menggunakan driver tampilan RA8875. Menggunakan UNO, prosesnya memakan waktu sekitar 8 detik, sedangkan Teensy 3.6 membutuhkan waktu 1,8 detik.

Langkah 3: Menghubungkan Perangkat Keras

Menghubungkan Perangkat Keras
Menghubungkan Perangkat Keras

Adafruit memiliki LCD TFT 7 yang sangat bagus yang digerakkan oleh IC yang disebut RA8875. Saya memilih driver tampilan dan tampilan ini karena dua alasan. Pertama, ada banyak perpustakaan yang telah ditulis sebelumnya untuk tampilan. Kedua, driver tampilan dapat berbicara dengan mikrokontroler apa pun melalui SPI, artinya tidak banyak kabel yang menghubungkan mikrokontroler ke RA8875.

Ada dua kelemahan dari pengaturan ini. Pertama adalah fakta bahwa ada bug perangkat keras dengan papan RA8875 dari Adafruit yang membutuhkan penggunaan IC buffer tri-state 74HC125 jika Anda ingin menggunakan perangkat berbasis SPI seperti kartu SD. Untuk lebih memahami bug perangkat keras, silakan baca forum berikut. Kedua, adalah waktu yang relatif lama untuk mengirim gambar ke LCD. Selain itu, lama waktu yang diperlukan untuk mengirim gambar ke LCD karena koneksi SPI, yang dibatasi oleh kecepatan clock mikrokontroler dan banyaknya data yang harus dikirim ke driver tampilan melalui sangat sedikit kabel.

Saya membuat skema Fritzing sehingga siapa pun yang ingin membuat tampilan ini dapat dengan mudah membaca pin apa yang terhubung dengan Teensy 3.6. Saya menyertakan file.frz di bawah ini. Hanya dua komponen yang tidak diberi label adalah kapasitor, yaitu kapasitor elektrolitik 1F 16V dan kapasitor keramik 100μF. Saya menyertakan ini untuk memastikan daya ke mikrokontroler Teensy stabil DC +5V dan tidak mengandung lonjakan tegangan (mungkin tidak diperlukan tetapi saya memasukkannya karena suplai tegangan mobil dapat berfluktuasi dengan cepat tergantung pada beban baterai).

Beberapa hal untuk disebutkan tentang komponen. Pertama, level shifter mengambil sinyal 5V dan mengubahnya menjadi tegangan aman 3.3V Teensy 3.6. Ini diperlukan untuk adaptor OBD I2C serta transceiver sensor cadangan. Kedua, jalur I2C yang sangat kecil membutuhkan resistor pull-up 4.7kΩ. Ketiga, empat resistor yang menghubungkan "kawat waktu malam" (kawat peredupan) dan "kawat pengikat cadangan" diperlukan untuk berfungsi sebagai pembagi tegangan untuk menurunkan sinyal 12V-13V menjadi sekitar sinyal 2,5-3V.

PEMBARUAN 22/7/18: Saya menemukan sensor suhu internal modul OBD-I2C mengeluarkan angka yang sangat aneh. Kadang-kadang itu akan berhasil, tetapi sebagian besar waktu, modul mengeluarkan suhu di atas 400 derajat F. Karena itu, saya memutuskan untuk menambahkan sensor suhu ds18b20 saya sendiri. Anda dipersilakan untuk menggunakan semua jenis sensor suhu di sini, tetapi Anda harus mengedit kode Arduino.

PEMBARUAN 3/1/19: Teensy 3.6 tidak mulai saat cuaca sangat dingin. Saya menambahkan sirkuit power on reset untuk memastikan boot dengan benar.

Langkah 4: Driver Tampilan dan Desain Grafis RA8875

Driver Tampilan dan Desain Grafis RA8875
Driver Tampilan dan Desain Grafis RA8875

Driver tampilan RA8875 memiliki pustaka yang disebut Adafruit_RA8875, yang saya gunakan saat membuat bentuk yang terlihat di halaman pertama dan halaman kedua. Pustaka untuk RA8875 hanya dapat membuat garis, persegi panjang, persegi panjang bulat, segitiga, elips, dan lingkaran, sehingga grafik harus dirancang dengan cara yang cerdas untuk membuat bentuk yang lebih kompleks. Misalnya, cincin abu-abu pada halaman pertama sebenarnya adalah lingkaran abu-abu penuh dengan diameter lebih besar diikuti oleh lingkaran hitam penuh dengan diameter lebih kecil. Juga, satu bagian kecil dari halaman sensor cadangan berisi 2 segitiga yang disusun sedemikian rupa sehingga membentuk poligon. Saya melakukan ini agar saya dapat mengubah warna setiap bagian dari halaman sensor cadangan. File Arduino untuk tampilan berisi serangkaian titik yang saya gunakan untuk melacak di mana segitiga dan bentuk lainnya berada.

Saya menggunakan situs web hebat ini untuk memilih warna RGB565 dan mendefinisikannya dalam sketsa sehingga saya bisa menggunakan warna non-default yang sudah ditentukan sebelumnya di perpustakaan Adafruit_RA8875.

Dalam hal font, perpustakaan Adafruit_RA8875 hanya mendukung satu kecuali Anda mengomentari bagian perpustakaan, yang memungkinkan Anda untuk menggunakan font perpustakaan Adafruit_GFX. Saya menyertakan pustaka Adafruit_RA8875 yang dimodifikasi di bawah ini. Saya baru saja mengomentari beberapa baris kode dan kemudian dapat menggunakan font di perpustakaan Adafruit_GFX. Juga, untuk menggunakan font 7 segmen yang saya gunakan dalam proyek ini, pastikan file "FreeSevenSegNumFont.h" saya ada di folder font di perpustakaan Adafruit_GFX.

Langkah 5: Mengunggah Sketsa

Mengunggah Sketsa
Mengunggah Sketsa
Mengunggah Sketsa
Mengunggah Sketsa

Untuk mengunggah sketsa ke Teensy 3.6, Anda perlu menginstal Teensyduino. Maka Anda perlu mengganti pustaka Adafruit_RA8875 dan Adafruit_GFX di lokasi pustaka yang sangat kecil (bukan lokasi tipikal Anda di dokumen). Di Mac, saya harus mengklik kanan ikon aplikasi Arduino di aplikasi, dan kemudian menavigasi ke /Contents/Java/hardware/teensy/avr/libraries. Di windows, saya cukup yakin itu ada di bawah drive C Anda di file Program x86, Arduino, dan kemudian folder perangkat keras di sana. Setelah Anda melakukannya, Anda perlu mengubah lokasi buku sketsa di aplikasi Arduino dengan mengeditnya sesuai preferensi ke mana pun perpustakaan kecil Anda berada (mis. /Applications/Arduino.app/Contents/Java/hardware/teensy/avr).

PEMBARUAN 22/7/16: Karena masalah sensor suhu internal yang saya bicarakan sebelumnya, saya harus memasang sensor suhu modul DS18B20. Anda akan melihat 4 sketsa arduino di file zip. Silakan unggah sketsa display_code jika Anda ingin menggunakan sensor suhu internal modul OBD-II I2C. Silakan unggah sketsa display_code_with_new_temperature_sensor jika Anda ingin menggunakan modul DS18B20 yang saya tautkan di atas.

PEMBARUAN 17/11/17: Saya memperbaiki beberapa bug dalam perangkat lunak termasuk DS18B20 yang menghasilkan suhu 185 Fahrenheit, layar tidak menyala sama sekali dalam cuaca dingin, dan piksel terjebak dalam warna yang salah saat layar diredupkan.

Kemudian, gunakan gambar yang saya miliki di atas untuk memastikan pengaturan kecil Anda sesuai dengan gambar. Saya menemukan overclocking yang sangat kecil ke 240MHz tidak memungkinkan adaptor I2C OBD-II untuk berkomunikasi dengan yang sangat kecil. Terakhir tinggal klik upload.

Saya menulis komentar yang cukup luas di file sketsa arduino. Silakan lihat di sana untuk penjelasan tentang cara kerja perangkat lunak. Jangan ragu untuk menghubungi saya dengan pertanyaan apapun. Saya akan mencoba menjawabnya dengan kemampuan terbaik saya. Semoga beruntung!

Langkah 6: Cetak 3D Casing LCD

Cetak 3D Casing LCD
Cetak 3D Casing LCD
Cetak 3D Casing LCD
Cetak 3D Casing LCD
Cetak 3D Casing LCD
Cetak 3D Casing LCD

Saya membuat penutup atas dan bawah LCD cetak 3D untuk melindungi layar 7 . Saya telah melampirkan file bagian inventor. IPT serta file. STL.

Saya juga menyertakan bagian yang disebut backup_sensor_ring.ipt, yang merupakan cincin yang cocok dengan sensor cadangan yang saya tautkan di atas. Mobil saya sudah memiliki lubang sensor cadangan yang sudah dibor sebelumnya yang terlalu besar untuk sensor cadangan yang saya beli di Amazon, jadi saya harus membuat cincin yang sesuai dengan sensor cadangan. Jika Anda akan mengebor bumper Anda dengan bor melingkar yang disertakan di set, Anda tidak memerlukan bagian ini.

Langkah 7: Memisahkan Port OBD-II Jadi Arduino Hanya Memiliki Daya Saat Mobil Berjalan

Memisahkan Port OBD-II Jadi Arduino Hanya Memiliki Daya Saat Mobil Berjalan
Memisahkan Port OBD-II Jadi Arduino Hanya Memiliki Daya Saat Mobil Berjalan
Memisahkan Port OBD-II Jadi Arduino Hanya Memiliki Daya Saat Mobil Berjalan
Memisahkan Port OBD-II Jadi Arduino Hanya Memiliki Daya Saat Mobil Berjalan
Memisahkan Port OBD-II Jadi Arduino Hanya Memiliki Daya Saat Mobil Berjalan
Memisahkan Port OBD-II Jadi Arduino Hanya Memiliki Daya Saat Mobil Berjalan

Saya menyadari segera setelah memasang layar saya bahwa layar selalu menyala, bahkan ketika mobil mati. Melihat ke pinout OBD-II, saya menemukan bahwa saluran listrik 12V ke konektor OBD-II selalu terhubung langsung ke baterai.

Untuk menyiasatinya, saya membeli splitter OBD-II, memotong kabel ke pin 16 pada salah satu dari dua konektor pada splitter, dan kemudian menghubungkan kabel yang dipotong itu ke kabel sirkuit tambahan.

Kemudian, dengan menggunakan multimeter saya, saya pergi ke kotak sekering sisi pengemudi dan menguji sekering yang ada untuk melihat sekering mana yang mendapat daya setelah kunci diputar ke kunci kontak.

Akhirnya saya sambungkan kabel rangkaian tambah ke sekring yang saya tempatkan sehingga tampilan sekarang hanya menyala saat mobil saya berjalan. Silakan lakukan riset tentang cara menambahkan sirkuit dengan benar ke mobil Anda. Saya menemukan tutorial youtube ini bagus.

Direkomendasikan: