Wifi Diaktifkan Pengukur Mobil OLED ESP32: 3 Langkah (dengan Gambar)
Wifi Diaktifkan Pengukur Mobil OLED ESP32: 3 Langkah (dengan Gambar)
Anonim
Image
Image
Wifi Diaktifkan Pengukur Mobil OLED ESP32
Wifi Diaktifkan Pengukur Mobil OLED ESP32

Perkenalan dulu…

Saya membuat pengukur mobil sebagai semacam hobi yang berulang-ulang. Lihat https://www.instructables.com/id/Remote-Car-Monit… dan https://www.instructables.com/id/Remote-Car-Monit… untuk dua contoh terbaru. Saya terutama suka yang berbaur dengan bagian asli mobil. Jadi, mengapa yang satu ini berbeda dan apa yang mengilhami saya untuk membangunnya. Jawabannya adalah dua hal:

1) ESP32 - Saya ingin mencoba anak baru pada chip blok, terutama karena toolchain berbasis arduino untuk itu cukup matang. Salah satu hal menarik yang memungkinkan ESP32 adalah IOT dengan kemampuan wifi dan bluetooth bawaannya. Komunitas telah menulis beberapa perpustakaan untuk membuat ini agak mudah (server web, AP, klien wifi, mDNS, dll, dll.).

2) Layar OLED Murah - Pada tahun 2007 saya membuat pengukur menggunakan TFT yang menggantikan jam pada WRX GD (2004-2007). TFT hadir dalam berbagai rasa. Beberapa bekerja lebih baik di malam hari, beberapa bekerja lebih baik di siang hari, dll. Tapi tidak satupun dari mereka bekerja di semua kondisi. Saya tidak menyadari kesalahan cara saya sampai salah satu pengukur yang saya gunakan tidak berguna selama hari trek cerah anggota forum. Masukkan OLED, yang luar biasa untuk aplikasi otomotif. Mereka tidak terlalu terang di malam hari dan (lebih penting lagi) terlihat di sebagian besar kondisi sinar matahari.

Ini adalah instruksi dua untuk satu karena saya menulis semuanya untuk dua pengukur mobil umum, tekanan oli dan tekanan turbo. Keduanya pada dasarnya adalah hal yang sama: pengukur faktor bentuk kecil dengan tampilan OLED analog bernyawa dengan angka diskrit dan maksimum yang ditampilkan. Keduanya juga berfungsi sebagai AP wifi dan server web. Ketika seseorang menghubungkannya melalui komputer atau ponsel, grafik jenis EKG yang bergerak dapat dilihat (ini adalah bagian yang agak inovatif).

Perlengkapan

Modul HELTEC ESP32 - dapatkan varian wifi

Bagian khusus Tekanan Oli:

Sensor Tekanan Oli - Saya menggunakan automter 5222 Suku cadang sensor tekanan oli - ini bervariasi menurut mobil dan lokasi pemasangan. Silakan berkonsultasi dengan manual servis, forum, mekanik, dll dan lakukan ini dengan benar sehingga tidak ada kebocoran oli

Boost gauge bagian tertentu:

  • Sensor tekanan udara (hanya jika Anda ingin membuat pengukur dorongan) -
  • Selang udara
  • T fitting

Perpustakaan yang saya gunakan sangat diperlukan:

Smoothiecharts - https://smoothiecharts.org/ Grafik pembaruan langsung yang sangat baik dan ringan. Sangat dapat disesuaikan dan tidak bergantung pada referensi perpustakaan js di tempat lain di internet. Ini memungkinkan untuk pengaturan tipe "local-IOT" dan seluruh perpustakaan cocok dalam satu string untuk pernyataan server web dalam kode!

ESPAsyncWebServer -https://github.com/me-no-dev/ESPAsyncWebServer- melakukan apa yang tertulis di kotak dan melakukannya dengan baik

Perpustakaan grafis ThingPulse OLED (terkadang disebut perpustakaan squix) - https://github.com/ThingPulse/esp8266-oled-ssd130… - grafik yang sangat efisien dan mudah untuk chip ESP. Mengizinkan saya melakukan pemrograman yang malas dan masih mendapatkan animasi yang meyakinkan.

Alat/lainnya:

besi solder - digunakan untuk membuat kabel panjang untuk sensor, memasang header di papan, shrink shrink wrap, dll.

obeng/soket/perkakas mobil lainnya - diperlukan untuk memasang sensor pada mobil

selotip dua sisi - untuk memasang pengukur di rumah dan memasang rumah di mobil (lem panas dan hal-hal lain mungkin bekerja, tapi saya lebih suka pita trim eksterior dua sisi 3M. Ini tahan dengan baik dan dapat ditarik tanpa merusak barang.)

gunting - untuk selotip dan pemotongan pipa dan ikatan ritsleting

ikatan ritsleting - untuk menyatukan barang-barang, mengikat kabel di bawah dasbor dan di kompartemen mesin, menahan sensor di tempatnya, dll.

Langkah 1: Kode Pertama/Perangkat Keras Kedua

Kode Pertama/Perangkat Keras Kedua
Kode Pertama/Perangkat Keras Kedua
Kode Pertama/Perangkat Keras Kedua
Kode Pertama/Perangkat Keras Kedua

Kode dapat diunduh di sini:

Tekanan Oli -

Meningkatkan Tekanan -

Tingkatkan Tekanan dengan wajah alih-alih pengukur tampilan analog -

Kode grafis: Pustaka ThingPulse sangat efisien sehingga Anda dapat menggambar xbms tepat di atas satu sama lain dan mendapatkan hasil yang meyakinkan!

Gambar pengukur sebenarnya berasal dari repositori grafik sumber terbuka (https://thenounproject.com/). Artis Iconic, CY (https://thenounproject.com/icon/490005/).

Saya menggunakan gimp untuk menghasilkan 20 bingkai berbeda dengan jarum menunjuk ke setiap tanda centang. Ikon wajah tersenyum dibuat oleh NOVITA ASTRI, ID dan ada di sini:

Kemudian saya mengubah semua ini menjadi array const uint8_t menggunakan teknik ini (petunjuk: jika warnanya terbalik saat Anda menampilkannya, balikkan saja warna aslinya): https://blog.squix.org/2015/05/esp8266- nodemcu-ho…

Kode animasi langsung cukup mudah:

  • Dapatkan bacaan dari sensor
  • Pembacaan skala (saya membuatnya 1 banding 1 untuk nilai boost positif dan hanya menggerakkan jarum saat di boost bukan saat vakum)
  • Gambar xbm dan kemudian letakkan karakter angka untuk yang lainnya.
  • bilas dan ulangi

Kode sensor: Saya menggunakan kembali kode sensor yang saya gunakan untuk kedua sensor ini untuk beberapa proyek lainnya. Saya memang menambahkan beberapa rata-rata untuk menjauh dari sensor gelisah. Ini termasuk membaca setiap "bacaan" menjadi rata-rata 5 bacaan.

Kode boost (sensor memberikan val analog dari 0-5 volt yang diubah ADC menjadi langkah dari 0-1024):

int getBoost() { float rboost = ((analogRead(36) + analogRead(36) + analogRead(36) + analogRead(36) + analogRead(36)))/5); //float HasilPSI = (rboost*(.00488)/(.022)+20)/6.89 - atmo; //tinggalkan /6,89 untuk kpa float HasilPSI = (((rboost / 4095) + 0,04) / 0,004) * 0,145 - atmo; //dengan 0,145 untuk menghitung psi //4096 nilai pada esp32 /*rBoost = rBoost + 1; if (rBoost >= 20) { rBoost = 0; }*/ kembali (HasilPSI); }

Kode tekanan oli (sensor mengubah resistansinya berdasarkan tekanan yang dirasakannya sehingga diperlukan pembagi tegangan untuk mengubahnya menjadi tegangan dari 0-5v lihat: https://electronics.stackexchange.com/questions/3…https:/ /www.instructables.com/id/Remote-Car-Monito…(ke bawah) untuk informasi lebih lanjut):

int getOilPSI() { float psival = ((analogRead(36) + analogRead(36) + analogRead(36) + analogRead(36) + analogRead(36)))/5); psival = -0,0601*psival + 177.04 - 14.5; kembali psival; }

Fungsionalitas Server Web dan AP: Fungsionalitas AP cukup sederhana - instantiate dan objek AP dengan ESSID yang ingin Anda siarkan dan kata sandinya dan Anda siap melakukannya.

const char *ssid = "boost_gauge_ap";const char *password = "password";

WiFi.softAP(ssid, kata sandi);

Bahkan memiliki server DHCP sehingga Anda tidak perlu khawatir tentang itu. Secara default IP-nya adalah 192.168.1.4 (tidak tahu mengapa, itulah yang dipilih). Bit server web sedikit lebih rumit dan membutuhkan sedikit riset. Pada dasarnya Anda menginginkan server web async sehingga bisa mendapatkan data pembaruan langsung. Untungnya ada perpustakaan untuk itu. Saya bukan pengembang javascript, jadi saya bermain-main dengan banyak pustaka grafik dan grafik sampai saya menemukan grafik smoothie. Sebagian besar pustaka bagan lainnya ditulis sedemikian rupa sehingga mereka mewarisi semua jenis kode dari pustaka lain dari seluruh web yang dimuat secara dinamis saat halaman dirender. Saya ingin ini bekerja secara independen dari internet jadi ini adalah penemuan besar. Kedua itu harus cukup kecil sehingga muat di arduino dan seperti yang Anda lihat dalam kode itu cocok dalam satu array char.

Deklarasi server web: #include AsyncTCP.h #include ESPAsyncWebServer.h … Server AsyncWebServer(80); // buat instance dan pilih port (80 adalah standar untuk http) … server.on("/", HTTP_GET, (AsyncWebServerRequest *request){ request->send(200, "text/html", "… // halaman web + perpustakaan smoothiecharts dalam array char besar }); server.on("/val", HTTP_GET, (AsyncWebServerRequest *request){ //halaman pertama sebenarnya memanggil halaman yang sangat kecil ini yang baru saja mengembalikan permintaan nilai ->send(200, "teks/html", Sboost); }); server.begin();

Langkah 2: Perangkat Keras dan Pengkabelan

Perangkat Keras dan Pengkabelan
Perangkat Keras dan Pengkabelan
Perangkat Keras dan Pengkabelan
Perangkat Keras dan Pengkabelan
Perangkat Keras dan Pengkabelan
Perangkat Keras dan Pengkabelan

Digambarkan di galeri adalah dua sensor yang saya gunakan. Yang berwarna emas besar adalah sensor tekanan oli Autometer 2242. Badan dan ulir sensor ini ditanahkan dan terminalnya adalah pembacaan dalam tahanan.

Autometer akan memberi Anda kurva resistensi terhadap tekanan atau resistensi terhadap suhu untuk salah satu sensor mereka. Saya telah mengubahnya menjadi tegangan menggunakan pembagi tegangan (lihat diagram pengkabelan).

Sensor tekanan udara MPX4250AP memiliki tiga pin aktif dan beberapa pin yang tidak digunakan. Mereka adalah V in, ground, dan output sensor. Ini menghasilkan pembacaan 0-5v yang dapat dibaca oleh mikrokontroler (atau dalam kasus mcu ini 0-3 volt. Jadi, pembacaan sensor diperkecil menggunakan pembagi tegangan.). Lembar spesifikasi untuk itu dapat ditemukan di sini:

Ada beberapa masalah dalam menurunkan dari logika 5v ke 3v. Dalam kasus saya, saya menggunakan pembagi tegangan untuk kesederhanaan dan saya memiliki bagian-bagian di sekitar meja kerja saya. Anda akan memperkenalkan sedikit kesalahan ke dalam pembacaan berdasarkan kemungkinan kesalahan dari komponen tambahan (dua resistor). Ini bisa membuat bacaan Anda diskon 10% dalam beberapa kasus. Saya dapat hidup dengan keadaan ini. Jika tidak, Anda mungkin ingin menggunakan opamp dan resistor atau konverter level logika (tersedia dari berbagai vendor elektronik. Sparkfun memilikinya di sini: https://www.sparkfun.com/products/12009 Saya dapat beralih ke sana sebagai Terkadang saya mendapatkan pembacaan yang tinggi pada pengukur ini (sebenarnya saya telah menunjukkan produk ini pada diagram pengkabelan saya).

Saya menyalakan ESP32 melalui USB. Ini termasuk memasang pengisi daya langsung seperti ini: https://www.amazon.com/gp/product/B00U2DGKOK/ref=p… ke mobil dan kemudian menggunakan hub USB untuk memisahkannya. Anda dapat melihat bahwa saya menggunakan kabel usb sudut kanan untuk memastikan semuanya berfungsi di area kecil (https://www.amazon.com/gp/product/B00ENZDFQ4/ref=p…).

Foto lain menunjukkan tempat saya memotong lubang atau memasang kawat. Setiap mobil akan berbeda. Berhati-hatilah, pisau dan gunting tajam, listrik bisa berbahaya jadi harap lepaskan baterai sebelum memasang kabel.

Langkah 3: Perumahan Cetak 3D

Perumahan Cetak 3D
Perumahan Cetak 3D

Saya telah menggunakan beberapa rumah cetak 3D untuk ini.

  • Pengukur bulat 2 layar besar yang umum. Anda dapat melihat ini pada gambar halaman pertama ini. Saya meletakkannya di sebelah jam saya di dasbor saya.
  • Gaya baji pengukur tunggal yang pas di area jam subaru impreza (wrx, sti, dll.) dari sekitar tahun 2008 hingga 2014.
  • Potongan pengukur ganda yang pas di kolom roda kemudi dan permukaan sedikit membulat lainnya:

Anda dipersilakan untuk menyalin dan memodifikasi ini agar sesuai dengan kebutuhan Anda. Tak satu pun dari mereka yang sempurna dan mereka semua akan membutuhkan sedikit penyesuaian.

Beberapa catatan:

  • Saya menyelesaikan milik saya dengan plastidip; itu adalah metode yang disukai orang malas.
  • Pengamplasan plastik memang membuat partikulat halus yang tidak baik untuk Anda, gunakan masker yang sesuai.
  • Saya menggunakan PETG untuk rumah saya. ABSnya juga bagus. PLA akan melengkung di bawah terik matahari di dasbor.
Tantangan IoT
Tantangan IoT
Tantangan IoT
Tantangan IoT

Hadiah Kedua dalam Tantangan IoT