Elektronik
14 dakika okuma
ESP32-S3 ile USB HID Cihaz Tasarımı: Özel Klavye Firmware
ESP32-S3 native USB özelliğini kullanarak sıfırdan bir HID klavye cihazı nasıl yapılır? TinyUSB ile adım adım.
E
Emre Cihan
## ESP32-S3 ve Native USB
ESP32-S3, seleflerinden farklı olarak **native USB** desteğine sahip. Harici USB-Serial bridge e gerek kalmadan doğrudan USB HID, CDC veya MSC cihazı olarak davranabiliyor.
## Donanım Bağlantısı
ESP32-S3 DevKit üzerinde GPIO19 USB D- hattına, GPIO20 USB D+ hattına bağlanır. GND ortak toprak hattına bağlanır.
## TinyUSB Konfigürasyonu
idf_component.yml dosyasına espressif/esp_tinyusb bağımlılığı eklenir. idf versiyonu 5.0 veya üstü gereklidir.
## HID Descriptor
HID report descriptor, TUD_HID_REPORT_DESC_KEYBOARD makrosu kullanılarak tanımlanır. Bu descriptor USB host a cihazın standart bir HID klavye olduğunu bildirir.
## Tuş Gönderme Mantığı
tud_hid_ready() kontrolü yapılır. Hazırsa 6 elemanlı keycode dizisi oluşturulur, tud_hid_keyboard_report() ile gönderilir. Ardından kısa bir gecikme sonrası NULL raporu gönderilerek tuş bırakma sinyali verilir.
## Makro Tuş Uygulaması
GPIO0 butonuna basıldığında önceden tanımlı bir metin dizisi USB klavye olarak gönderilir. Örneğin git commit -m metni otomatik yazılabilir.
## Sonuç
ESP32-S3 ile 10 dolar altında tam özellikli bir USB HID cihazı geliştirebilirsiniz. Mekanik klavye, macro pad veya özel input cihazları için mükemmel bir platform.
ESP32-S3, seleflerinden farklı olarak **native USB** desteğine sahip. Harici USB-Serial bridge e gerek kalmadan doğrudan USB HID, CDC veya MSC cihazı olarak davranabiliyor.
## Donanım Bağlantısı
ESP32-S3 DevKit üzerinde GPIO19 USB D- hattına, GPIO20 USB D+ hattına bağlanır. GND ortak toprak hattına bağlanır.
## TinyUSB Konfigürasyonu
idf_component.yml dosyasına espressif/esp_tinyusb bağımlılığı eklenir. idf versiyonu 5.0 veya üstü gereklidir.
## HID Descriptor
HID report descriptor, TUD_HID_REPORT_DESC_KEYBOARD makrosu kullanılarak tanımlanır. Bu descriptor USB host a cihazın standart bir HID klavye olduğunu bildirir.
## Tuş Gönderme Mantığı
tud_hid_ready() kontrolü yapılır. Hazırsa 6 elemanlı keycode dizisi oluşturulur, tud_hid_keyboard_report() ile gönderilir. Ardından kısa bir gecikme sonrası NULL raporu gönderilerek tuş bırakma sinyali verilir.
## Makro Tuş Uygulaması
GPIO0 butonuna basıldığında önceden tanımlı bir metin dizisi USB klavye olarak gönderilir. Örneğin git commit -m metni otomatik yazılabilir.
## Sonuç
ESP32-S3 ile 10 dolar altında tam özellikli bir USB HID cihazı geliştirebilirsiniz. Mekanik klavye, macro pad veya özel input cihazları için mükemmel bir platform.
Paylaş:
Twitter / X
E
Emre Cihan
Hardware & Software Engineer