⚡ DOKUMENTASI : VOTOL Smart Dashboard POLYTRON FOX RS (BLE Edition)
Deskripsi Proyek: VOTOL Smart Dashboard adalah instrumen kokpit tambahan berteknologi tinggi untuk motor listrik dengan *controller* VOTOL (khususnya Polytron Fox-R). Alat ini membaca data spesifik pabrikan (Suhu, RPM, Voltase, Arus, hingga Status Per-Cell Baterai BMS) langsung dari jalur CAN Bus menggunakan modul MCP2515.
Pada versi V15.1 (Pro Edition) ini, alat telah dilengkapi dengan Bluetooth Low Energy (BLE) Live Streaming yang memungkinkan data motor ditampilkan secara *real-time* ke layar HP Anda melalui Web Dashboard, tanpa memerlukan aplikasi tambahan atau server khusus.
⭐ Fitur Pintar Otomatis (Smart Overlays):
- Auto-Sleep: Layar Info (Suhu, Watt) akan kembali otomatis ke Halaman Jam jika tidak ada penekanan tombol selama 30 detik.
- Pop-up Mode: Muncul teks layar penuh selama 3 detik saat memindahkan gigi (PARK, DRIVE, SPORT, REVERSE).
- High-Speed Override: Jika dipacu di atas 70 km/h, angka kecepatan akan mendominasi layar secara otomatis demi keselamatan.
- Early Warning System Jika dipacu di atas 85 km/h maka buzzer akan berbunyi, buzzer juga akan berbunyi saat tombol mudur/reverse ditekan (Pengaturan Sound bisa disilent di Pengaturan).
- Smart Charging Display: Saat dicolok *charger* (Ori / Fast Charger), layar bergantian menampilkan Ampere Masuk dan Persentase SOC. Kebal terhadap arus *Regen Braking*.
- BLE Stream Saat mode ini di aktifkan maka sistem akan otomatis fokus melayani ble mode saja, layar yang ditampilkan hanya layar Jam, layar mode, speed override, dan settings saja. ini berguna agar sistem bt tidak crash dengan antena wifi dan menghemat penggunaan ram saat render informasi dari mcp.
- Trip meter, Konsumsi daya Wh/km, & Range estimasi Menambahkan informasi tentang perhitungan Trip Meter, Konsumsi Daya (Wh/km), Estimasi Jarak Tempuh (Range), dan komunikasi BLE 2 Arah (RX/TX).
Fitur unggulan lainnya meliputi:
- Modul RTC (DS3231) untuk jam *offline* super akurat. Syncron jam melalui BLE di web.
- Early Warning System (Buzzer): Alarm kecepatan tinggi dan indikator gigi mundur.
- Perlindungan logika *Anti-Regen* agar pengereman regeneratif tidak disalahartikan sebagai pengecasan.
- Sistem Menu On-Device: Pengaturan alat (Sound, BLE, NTP) langsung dari tombol fisik layar.
🛠️ 1. Alat dan Bahan Utama
- Mikrokontroler: ESP32-C3 Super Mini (Prosesor ringkas, WiFi & BLE tertanam).
- Modul Pembaca CAN: MCP2515 (Transceiver SPI).
*(Catatan Penting: Modul harus menggunakan crystal 8MHz. Jika tertulis 16.000 pada crystal-nya, kode harus disesuaikan ke MCP_16MHZ).*
- Layar Display: OLED SSD1306 ukuran 0.91 inch (128x32 pixel), antarmuka I2C.
- Modul Waktu (RTC): DS3231 (Akurat dengan baterai kancing), antarmuka I2C.
- Tombol Navigasi: 1 buah *tactile switch* (Push Button).
- Buzzer Aktif ATAU Pasive 3V: Untuk *feedback* suara dan peringatan keselamatan.
- Jumper Cap (120 Ohm): Opsional dipasang pada terminal resistor modul MCP2515 untuk mencegah *noise* data pada CAN Bus.
- Kabel Jumper & Timah Solder: Secukupnya.
- Modul stepdown Fix 5v MP1584 : Untuk menurunkan tegangan 12v ke 5v dari reducer.
- Kapasitor Elco 47uF 16v 1000uF : penyimpan muatan listrik sementara dan penstabil arus.
- 2x Kapasitor Keramik (U5 = 2A104J & U3 = 104) : penyaring noise (filter) frekuensi tinggi, serta decoupling pada rangkaian elektronik.
Atau untuk mempermudah dan menghindari kesalahan wiring bisa pake pcb https://id.shp.ee/qLKv1pAj
⚡ 2. Skema Wiring (Jalur Kabel)
Berikut adalah referensi *Pinout* dari ESP32-C3 Super Mini:
Pemasangan pin dioptimalkan untuk ESP32-C3 Super Mini sebagai berikut:
| Komponen | Pin Modul | Sambung ke ESP32-C3 | Keterangan Tambahan |
|---|---|---|---|
| OLED & RTC | SDA | GPIO 8 | Digabung (Paralel) untuk layar OLED & RTC DS3231. |
| *(Jalur I2C)* | SCL | GPIO 9 | Digabung (Paralel) untuk layar OLED & RTC DS3231. |
| VCC | 5V | Tegangan operasi Modul RTC dan Oled. | |
| GND | GND | Gabung ke Ground utama ESP32. | |
| MCP2515 | CS | GPIO 7 | Jalur Chip Select SPI. |
| *(Jalur SPI)* | SI / MOSI | GPIO 6 | Jalur Data Masuk (SPI). |
| SO / MISO | GPIO 5 | Jalur Data Keluar (SPI). | |
| SCK | GPIO 4 | Jalur Clock SPI. | |
| INT | GPIO 10 | Jalur Interrupt (Penting untuk kecepatan data tanpa *lag*). | |
| VCC | 5V (VBUS) | WAJIB 5V! IC Transceiver TJA1050 tidak membaca motor jika diberi 3.3V. | |
| GND | GND | Gabung ke Ground utama dan Ground Motor. | |
| Buzzer | Positif (+) | GPIO 2 | Fitur suara & alarm. |
| Negatif (-) | GND | ||
| CAN Motor | CAN H | Terminal H | Kabel CAN High dari Motor (Abu-abu). |
| CAN L | Terminal L | Kabel CAN Low dari Motor (Hitam). | |
| Tombol Nav. | Kaki 1 | GPIO 3 | Input tombol navigasi halaman & setting. |
| Kaki 2 | GND |
📱 3. Antarmuka Layar (UI) & Navigasi Pintar
Perangkat didesain agar informatif namun tidak memecah konsentrasi.
- **Tekan Pendek (`), tekan tahan 3 detik untuk mengeksekusi pilihan:
- SOUND (ON/OFF): Mengatur suara Buzzer.
- BLE OUT (ON/OFF): Menyalakan pemancar Bluetooth. *(Catatan: Saat BLE ON, navigasi halaman OLED akan dikunci demi membebaskan 100% memori untuk streaming).*
- SYNC NTP: Sinkronisasi jam menggunakan *tethering* WiFi (opsional, karena sekarang bisa via Bluetooth).
🚀 4. Cara Menggunakan Web Dashboard (Streaming ke HP)
Fitur paling mutakhir adalah VOTOL Web Dashboard. Anda bisa memantau puluhan data Can Bus (termasuk status per-sel baterai) layaknya *scanner* pabrikan, dan fitur rekam data telemetry langsung dari *browser* HP Anda tanpa perlu instalas aplikasi khusus untuk edit video reading seperti moto gp!
🌟 Fitur (Baru):
- Real-time Dashboard: Monitoring kecepatan (KM/H), RPM, Mode berkendara, dan suhu (ECU, Motor, Baterai).
- MotoGP Telemetry Record: Merekam koordinat GPS HP dan data motor ke dalam file
.gpxsecara sinkron. - Insta360 & Garmin Compatible: File GPX mendukung overlay otomatis pada Insta360 Studio dan Garmin VIRB Edit.
- Battery Management Display: Visualisasi tegangan per cell (23 cells) secara mendatar dan rapi.
- Remote Settings: Update nama splashscreen motor dan sinkronisasi waktu RTC langsung melalui browser.
- Screen Wake Lock: Menjaga layar HP tetap menyala selama proses perekaman data berlangsung.
Langkah Penggunaan:
- Nyalakan motor, tekan tahan tombol 5 detik untuk masuk ke menu Settings OLED.
- Geser ke opsi
BLE OUT, lalu tekan tahan 3 detik untuk mengubahnya menjadi ON. Alat akan *Restart* untuk memuat modul Bluetooth. - Di HP Android Anda, nyalakan Bluetooth dan Lokasi (GPS). *(GPS diwajibkan oleh Google Chrome untuk memindai perangkat BLE)*.
- Jika Offline unduh dan Buka file
dashboard.htmlyang ada di repositori ini menggunakan aplikasi Google Chrome di HP Anda. atau jika anda online bisa menggunakan halaman https://atzarhika.github.io/jamFoxRS-MCP-OledBLE/ dengan mengijinkan akses lokasi handphone. - Ketuk tombol CONNECT berwarna hijau di layar HP.
- Akan muncul *pop-up* izin Chrome dari bawah layar. Pilih perangkat bernama "Votol_BLE" lalu ketuk Pasangkan / Pair.
- Selamat! Layar HP Anda sekarang berubah menjadi kokpit digital *real-time*.
📊 Integrasi Telemetri
File GPX yang dihasilkan menggunakan standar Garmin Extensions v2:
- Speed: Menggunakan data asli dari kontroler Votol (Unit: m/s).
- Heart Rate (BPM): Menampilkan data RPM Motor.
- Cadence: Menampilkan persentase SOC Baterai.
- Elevation: Data ketinggian real-time dari sensor GPS smartphone.
📱 Kompatibilitas Editor Video
| Data Motor | Widget di Editor | Aplikasi |
|---|---|---|
| Speed (Votol) | Speedometer / G-Metrix | Insta360 / Garmin VIRB |
| RPM Motor | Heart Rate (BPM) | Insta360 / Garmin VIRB |
| SOC Baterai | Cadence | Insta360 / Garmin VIRB |
| Arus (Amps) | Custom Data | Dashware |
💻 Teknologi
- Frontend: HTML5, CSS3 (Flexbox/Grid), JavaScript (Vanilla).
- Icons: Lucide Icons.
- Charts: Chart.js (untuk riwayat 30 detik).
- Communication: Web Bluetooth API.
🔧 5. Pemecahan Masalah Umum (Troubleshooting)
- Alat Bootloop / Layar Stuck (Terjebak di Splash Screen):
* Ini terjadi jika memori ESP32 bentrok. Gunakan SAFE MODE: Cabut alat / matikan motor -> Tekan dan tahan terus tombol fisik -> Colok alat / nyalakan motor sambil tombol tetap ditahan sampai muncul tulisan SAFE MODE: BLE OFF.
- Compile Error saat Upload Kode:
* Wajib ubah pengaturan di Arduino IDE: Menu Tools -> Partition Scheme -> Pilih "Huge APP (3MB No OTA / 1MB SPIFFS)".
- Perangkat BLE tidak muncul di Google Chrome HP:
* Pastikan GPS/Lokasi HP sudah diaktifkan. Chrome Android menolak melakukan *scan* Bluetooth murni jika hak akses lokasi dimatikan.
- Data Sensor Menunjukkan Angka "0":
* Cek kabel CAN H dan CAN L. Putar kunci kontak OFF, tukar posisinya di modul MCP2515, lalu ON-kan lagi. Pastikan *Jumper Resistor* 120 Ohm terpasang.
🛜 6. Cara Setting SSID dan Password (Tanpa Coding)
Untuk mengganti SSID dan Password WiFi (untuk keperluan *Sync NTP*), Anda tidak perlu mengutak-atik kodingan atau melakukan flash ulang. Fitur pengaturan pintar akan menyimpannya langsung ke memori permanen (EEPROM/Preferences) ESP32.
Langkah 1: Persiapan
- Colokkan alat ESP32 Anda ke laptop menggunakan kabel USB Type-C.
- Buka aplikasi Arduino IDE.
- Pastikan port (COM) ESP32 Anda sudah terbaca di Arduino IDE.
Langkah 2: Menggunakan Serial Monitor
- Buka Serial Monitor (ikon kaca pembesar di pojok kanan atas Arduino IDE, atau tekan
Ctrl + Shift + M). - Perhatikan bagian pojok kanan bawah jendela Serial Monitor, pastikan *Baudrate* diatur pada 115200 baud.
Langkah 3: Memasukkan Perintah Baru Di kolom teks Serial Monitor, ketikkan perintah dengan format berikut (tanpa spasi setelah koma): WIFI,NamaSSIDBaru,PasswordBaru
*(Contoh: Jika nama hotspot HP Anda adalah Poco X3 dan passwordnya rahasia1234, ketik: WIFI,Poco X3,rahasia1234)*
Langkah 4: Eksekusi
- Tekan tombol Enter di keyboard Anda.
- Alat ESP32 Anda akan langsung merespons, menyimpan data tersebut, dan melakukan Restart otomatis.
- Cek di Halaman 5 (System Info) pada layar OLED untuk memastikan data sudah terganti.
Anda juga bisa mengganti tulisan Splash Screen
dengan perintah: SPLASH,NamaAnda maksimal 10 huruf).*
*TUTORIAL FLASH KODE ke ESP32-C3 MINI*
1. Persiapan Software (Arduino IDE)
Jika belum, instal Board Manager untuk ESP32:
- Buka Arduino IDE, pergi ke File > Preferences.
- Pada bagian Additional Boards Manager URLs, masukkan:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
- Pergi ke Tools > Board > Boards Manager, cari ESP32C3 Dev Module.
2. Instalasi Library yang Dibutuhkan
Berdasarkan file .ino kamu, berikut adalah library yang wajib diinstal melalui Tools > Manage Libraries:
| Nama Library | Kegunaan |
|---|---|
| mcp_can | Komunikasi CAN Bus via MCP2515. |
| Adafruit SSD1306 | Driver layar OLED 128x32. |
| Adafruit GFX Library | Library grafis dasar untuk OLED. |
| RTClib | Komunikasi dengan modul jam RTC DS3231. |
Catatan: Library BLE (BLEDevice.h, dll) sudah termasuk dalam paket Board ESP32, jadi tidak perlu instal manual.3. Konfigurasi Board & Partition Scheme (Huge APP)
Ini adalah bagian terpenting agar flash berhasil:
- Hubungkan ESP32-C3 ke komputer.
- Pilih Board: Tools > Board > ESP32 > ESP32C3 Dev Module.
- Pilih Port: Tools > Port > (Pilih port USB kamu).
- Flash Mode: Pilih DIO.
- Partition Scheme: Pilih Huge APP (3MB No OTA/1MB SPIFFS).
- *Mengapa?* Karena library BLE memakan banyak memori flash. Jika menggunakan "Default", program kamu kemungkinan besar akan gagal saat proses *linking* karena ukurannya melebihi batas default.
- Flash Frequency: Pilih 80MHz.
4. Proses Flashing
- Buka file
jamFoxRS_MCP_V15.1_BLE.inodi Arduino IDE. - Klik tombol Verify (Centang) untuk memastikan tidak ada error pada library.
- Klik tombol Upload (Panah kanan).
- Jika muncul tulisan
Connecting..., tekan dan tahan tombol BOOT pada ESP32-C3 sebentar sampai proses penulisan (Writing...) dimulai.
5. Troubleshooting Khusus ESP32-C3
- Safe Mode: Jika setelah flash BLE tidak muncul atau bootloop, kamu bisa masuk ke Safe Mode yang sudah kamu buat di kode dengan menahan
BUTTON_PIN(Pin 3) saat startup untuk mematikan BLE sementara. - Pin I2C: Pastikan OLED terhubung ke Pin 8 (SDA) dan Pin 9 (SCL) sesuai definisi di kodinganmu.
- Baudrate Serial: Pastikan Serial Monitor diatur ke 115200 untuk melihat pesan debug.
### ⚠️ PENTING: Khusus Pengguna ESP32-C3 Super Mini ESP32-C3 Super Mini menggunakan jalur USB langsung (USB CDC) dari dalam chip-nya. Jika Serial Monitor kosong/tidak merespons, lakukan 2 perbaikan ini: 1. Aktifkan "USB CDC" (Wajib Flash Ulang Sekali): * Di Arduino IDE, klik menu Tools. * Cari menu USB CDC On Boot dan ubah menjadi Enabled. * Klik Upload untuk memasukkan ulang kode ke ESP32. 2. Setting Teks Serial Monitor: * Buka Serial Monitor, di sebelah opsi baudrate, ubah opsi *No line ending* menjadi Newline (atau *Both NL & CR*). Jika tidak diset ke Newline, ESP32 tidak akan tahu kalau Anda sudah menekan tombol Enter.
⚠️ DISCLAIMER!
Kami TIDAK bertanggung jawab atas segala kerusakan, malfungsi, atau cedera yang mungkin terjadi pada kendaraan, controller, baterai, atau komponen lainnya.
BIG THANKS TO
- @zexry619 (https://github.com/zexry619)
- @yudhaime (https://github.com/yudhaime)
