У меня есть ESP32-S3 и я хочу подключить к ней USB-мышку

помогите пожалуйста. у меня есть плата esp32s3 и я хочу подключить туда свою юсб мышку, чтобы плата считывала все движения. возможно ли это сделать?

я новичок в этой теме, мало чего понимаю, объясните пожалуйста простым языком

тоись, гугал тебе простым языком объяснить не смог…

да я много чего пробовал, но когда я подключаю мышку в плату, то ничего не происходит, мышка не загорается, сама плата тоже походу не видит. вот и сомнения мучают, а возможно ли это

Судя по тому, что в тексте отмечено, что мышка именно юсб - то и подключать ты, наверно, хочешь по юсб? А разве на плате есть esp32s3 разъем юсб мама?

вот тут подробнее - как тебе это удается?

в твоем случае нет, выхода два

  • читать книжки и учится
  • пить пиво, так дед всем советует))

на плате разъем тайп си, подключаю через отг переходник(переходник рабочий, пробовал мышку в телефон вставлять)

А с чего ты взял, что в этом порту есть режим OTG?

Хотя поправлюсь, действительно есть ОТГ…

ESP32-S3 имеет встроенный USB OTG, что позволяет работать в режиме USB Host.

Написано, что порт может быть либо в USB-mode либо в USB-OTG. Переключается например в настройках Ардуино перед прошивкой платы:

спасибо, поправился

да, я пока писал, не увидел, сорян…

не за что извиняться, правильно поправил

а подробнее?

разные прошивки, настройки все перепробовал, несколько мышек подключал, в разные юсб разъемы плату подключал(юсб 2.0/3.0), но все неудачно. поэтому и пришел за советом

Раз ты всё перепробовал, что мы тебе посоветовать можем? Вариантов не осталось.

Aleksey314 вы хотите сломать мышку, и подключить энкодер от мышки к esp или камеру ?

если есть плата ESP32-S3-DevKitC-1 ломать не придется нечего… но это не интересно, но вот код может пригодится тогда…

#include "USB.h"
#include "USBHIDMouse.h"

USBHIDMouse Mouse;

void setup() {
  Serial.begin(115200);
  USB.begin();
  Mouse.begin();
  delay(2000);
  Serial.println("USB Mouse Reader Ready");
}

void loop() {
  if (Mouse.available()) {
    // Чтение данных от мыши
    mouse_data_t data = Mouse.mouseData();
    
    Serial.print("X: ");
    Serial.print(data.x);
    Serial.print(" | Y: ");
    Serial.print(data.y);
    Serial.print(" | Wheel: ");
    Serial.print(data.wheel);
    Serial.print(" | Buttons: ");
    Serial.println(data.buttons, BIN);
  }
  delay(10);
}

или так

#include "USBHID.h"
#include "HIDMouse.h"

USBHID HID;
HIDMouse Mouse(HID);

// Функция для обработки событий мыши
void handleMouseEvent(uint8_t buttons, int8_t x, int8_t y, int8_t wheel) {
  Serial.print("Mouse Event: ");
  Serial.print("Buttons: 0x");
  Serial.print(buttons, HEX);
  Serial.print(" | X: ");
  Serial.print(x);
  Serial.print(" | Y: ");
  Serial.print(y);
  Serial.print(" | Wheel: ");
  Serial.println(wheel);
  
  // Анализ кнопок
  if (buttons & 0x01) Serial.println("Left button pressed");
  if (buttons & 0x02) Serial.println("Right button pressed");
  if (buttons & 0x04) Serial.println("Middle button pressed");
}

void setup() {
  Serial.begin(115200);
  Serial.println("Starting USB HID Mouse...");
  
  HID.begin();
  Mouse.begin();
  
  // Устанавливаем callback функцию
  Mouse.setMouseEventCallback(handleMouseEvent);
  
  Serial.println("Mouse ready! Move your mouse or click buttons");
}

void loop() {
  // Все обработка происходит в callback-функции
  // Можно добавить дополнительную логику здесь
  delay(10);
}

но я бы все таки посоветовал разломать, и изучить каждый компонент!

Да, возможно. Кури TinyUSB , которая входит в состав ESP-IDF.
Наверняка в интернете полно примеров.

Аппаратно поддерживается лишь CDC режим, если я ничего не путаю. Т.е. консоль. Кажется, но могу наврать, накопитель-флешка еще может быть с аппаратной. Остальное - TinyUSB.

Ты бы свой код на компилябельность проверил. Генереное не всегда компилируется. В частности, в первый фрагмент не компилируется, нет метода available() :person_shrugging: