🛠 Clavier USB HID via l'USB-OTG natif (TinyUSB)

ESP32-S3 · avance · Schéma : IMG-esp32-s3-avance-1-esp32-s3-usb-otg-hid-clavier.svg — ESP32-S3 connecté par GPIO19/GPIO20 (USB-OTG) à un ordinateur et se faisant reconnaître comme clavier USB, avec un bouton physique sur GPIO1 déclenchant une frappe.

Objetivos

Transformar el ESP32-S3 en un dispositivo USB HID (teclado) gracias a su controlador USB-OTG nativo en GPIO19 (D-) y GPIO20 (D+), mediante la pila TinyUSB integrada en el core de Arduino. Esta es una de las grandes diferencias con el ESP32 clásico: no se necesita ningún chip adicional. También descubrirás la principal restricción del doble USB del S3: el modo «TinyUSB (OTG)» y el modo «Hardware CDC and JTAG» comparten los mismos pines; no es posible usar ambos simultáneamente sin un segundo conector físico.

Material

Código completo

// Clavier HID sur USB-OTG natif (GPIO19/20) via TinyUSB
// Outils Arduino : USB Mode = "TinyUSB Device" (ou "OTG"), USB CDC = Disabled
#include "Arduino.h"
#include "USB.h"
#include "USBHIDKeyboard.h"

USBHIDKeyboard Keyboard;
const uint8_t BTN = 1;
uint8_t etatPrecedent = HIGH;
unsigned long dernierBord = 0;

void setup {
  pinMode(BTN, INPUT_PULLUP);
  Keyboard.begin;
  if (!USB.begin) {
    // pas de hot-plug possible ici : le host verra le HID au prochain branchement
  }
}

void loop {
  uint8_t etat = digitalRead(BTN);
  if (etat == LOW && etatPrecedent == HIGH && millis - dernierBord > 120) {
    dernierBord = millis;
    Keyboard.begin;                 // s'assure que le HID est pret
    Keyboard.print("ESP32-S3 dit bonjour ");
    Keyboard.write(KEY_RETURN);
    Keyboard.end;
  }
  etatPrecedent = etat;
  delay(10);
}

Verificación esperada

Tras la carga y reconexión del cable, el ordenador detecta un nuevo dispositivo «USB Keyboard» (hidusb) sin necesidad de controladores. Una pulsación del botón escribe la línea «ESP32-S3 dice hola» seguida de Intro en cualquier campo de texto activo. La enumeración USB pasa por los pines GPIO19/20, los únicos conectados al controlador OTG del S3.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales