Download Project : https://github.com/bonardalfin/ESP32S3-USBHOSTMINI
Beli part :
ESP32 S3 DevkitC-1 : https://s.shopee.co.id/3qLgRq4bym
USB Host Shield Mini 2.0 : https://s.shopee.co.id/111V4fJbnD
Bread Board : https://s.shopee.co.id/9pctawtQlR
Sistem ini dirancang untuk menjalankan dua mode USB sekaligus secara bersamaan (concurrent):
- USB Host Mode: Memanfaatkan modul USB Host Mini 2.0 (MAX3421E) buat langsung menyambungkan perangkat MIDI USB eksternal (seperti Keyboard Controller, Launchpad, dll.).
- USB Device Mode: Menggunakan port USB OTG bawaan (native) dari ESP32-S3 lewat stack TinyUSB. Hasilnya, ESP32-S3 langsung terbaca sebagai perangkat USB MIDI Class-Compliant standar di PC, Mac, iOS, maupun Android tanpa perlu *install* driver tambahan.
Skema Pinout & Koneksi Hardware
Berikut adalah konfigurasi pemetaan pin SPI dan jalur kontrol antara ESP32-S3 dengan modul USB Host Shield Mini 2.0 (MAX3421E):
| Nama Pin Modul | Tipe / Fungsi | Pin GPIO ESP32-S3 | Keterangan |
|---|---|---|---|
| MISO | SPI Master In Slave Out | GPIO 13 | Jalur data masuk ke ESP32-S3 |
| MOSI | SPI Master Out Slave In | GPIO 11 | Jalur data keluar dari ESP32-S3 |
| CLK / SCK | SPI Serial Clock | GPIO 12 | Jalur clock sinkronisasi SPI |
| CS / SS | Chip Select (Active Low) | GPIO 10 | Memilih chip MAX3421E yang aktif |
| INT | Interrupt Input | GPIO 9 | Deteksi event/interupsi dari MAX3421E |
| RST | Hardware Reset | GPIO 14 | Pin kontrol reset hardware MAX3421E |
| 3.3V | VCC Logic | 3.3V | Tegangan operasional IC MAX3421E |
| GND | Ground | GND | Ground bersama |
| 5V / VBUS | VBUS Power | 5V | Catu daya VBUS untuk port USB Host |
Catatan Penting Soal Tegangan & Solder Jumper:
- IC MAX3421E ini bekerja di level logika 3.3V. Pastikan modul mendapat suplai 3.3V pada pin VCC logikanya supaya tidak merusak pin GPIO ESP32-S3.
- Port USB female (VBUS) tetap butuh pasokan daya 5V penuh agar perangkat MIDI eksternal yang dicolokkan bisa menyala.
- Atur/potong solder jumper pemisah daya pada modul USB Host Mini 2.0. Pastikan jalur VCC logic berjalan di 3.3V, sedangkan jalur VBUS USB terhubung langsung ke pin 5V ESP32-S3.
Prasyarat & Dependensi
Proyek ini dibangun menggunakan framework ESP-IDF v5.x. Untuk dependensinya, kamu bisa langsung atur di berkas main/idf_component.yml seperti ini:
- espressif/arduino-esp32: Versi
^3.0.0 - espressif/esp_tinyusb: Versi
^2.2.1 - usb_host_shield: Library USB Host Shield 2.0 yang sudah di-porting untuk ESP-IDF.
Bagaimana Firmware Bekerja?
Biar ada gambaran alurnya, program utama pada berkas main/main.cpp bekerja dengan urutan seperti berikut:
- Inisialisasi API Arduino: Mengaktifkan fungsi SPI dan I/O standar Arduino.
- Reset Hardware MAX3421E: Menarik pin RST (GPIO 14) ke posisi
LOWselama 150ms lalu mengembalikannya keHIGH(dengan jeda 300ms) untuk menstabilkan osilator internal chip MAX3421E. - Self-Test SPI: Membaca register
rREVISIONdan melakukan tes tulis/baca berkala pada registerrGPINPOLuntuk memastikan komunikasi SPI benar-benar stabil. - Inisialisasi USB Device: Mengaktifkan driver TinyUSB agar ESP32-S3 langsung terdeteksi di PC/laptop sebagai perangkat USB MIDI dengan nama
"ESP32-S3 MIDI Device". - Loop Pemrosesan MIDI: Menjalankan mesin status USB Host (
UsbHost.Task()) secara terus-menerus di loop utama, sekaligus mengirimkan pesan uji Control Change (CC#1) dengan nilai 1–10 secara bergantian ke perangkat USB Host MIDI eksternal maupun ke PC (USB Device) setiap 1 detik.
Kompilasi & Flashing
Untuk melakukan *build* dan *flash* firmware ke board, tinggal jalankan perintah berikut di terminal ESP-IDF pada direktori proyekmu:
1. Konfigurasi Proyek:
idf.py menuconfig
2. Kompilasi Proyek:
idf.py build
3. Unggah Firmware & Monitor Log:
idf.py -p <PORT> flash monitor
(Ganti <PORT> sesuai port serial Anda, contoh: /dev/ttyACM0 atau COM3)
Sewa Lensa dan Kamera
No comments:
Post a Comment