Tuesday, July 21, 2026

ESP32-S3 Dual USB MIDI Bridge (Host & Device) Menggunakan USB Host Mini 2.0



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):

  1. USB Host Mode: Memanfaatkan modul USB Host Mini 2.0 (MAX3421E) buat langsung menyambungkan perangkat MIDI USB eksternal (seperti Keyboard Controller, Launchpad, dll.).
  2. 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:

  1. Inisialisasi API Arduino: Mengaktifkan fungsi SPI dan I/O standar Arduino.
  2. Reset Hardware MAX3421E: Menarik pin RST (GPIO 14) ke posisi LOW selama 150ms lalu mengembalikannya ke HIGH (dengan jeda 300ms) untuk menstabilkan osilator internal chip MAX3421E.
  3. Self-Test SPI: Membaca register rREVISION dan melakukan tes tulis/baca berkala pada register rGPINPOL untuk memastikan komunikasi SPI benar-benar stabil.
  4. Inisialisasi USB Device: Mengaktifkan driver TinyUSB agar ESP32-S3 langsung terdeteksi di PC/laptop sebagai perangkat USB MIDI dengan nama "ESP32-S3 MIDI Device".
  5. 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)

No comments:

Post a Comment

 
Copyright 2024 BONARD ALFIN PROJECT. All rights reserved.