0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

71歳の... ESP32-S3のUsbHost機能を使い、ワイアレスキーボードから文字入力できました

Last updated at Posted at 2025-06-21

 ESP32-S3ボードに、ASCII文字を直接入力する方法がないかとネット上を探し、見つけました。作者に感謝いたします。

最初はコンパイルエラーなどあり、困りましたが結果できました。
 環境・構成・留意点は以下です。

1.Windows 11 Pro
2.Arduino IDE 2.3.6
3.ボードは、FREENOVE ESP32-S3 WROOM N8R8 (8MB Flash)
     Arduino IDE上では「ESP32S3 Dev Module」
4.ライブラリマネージャーで「EspUsbHost」をインストール
    コンパイルエラーが出るので、スケッチフォルダー内に
    "EspUsbHost.h"と"EspUsbHost.cpp"を配置
5.USB Type-A メスコネクタを外付けし、それにUSBレシーバーを接続

USB_HOST.jpg
 ボードとメスコネクタ間の接続は次のようにしました。

ESP32-S3 USB Type-A メスコネクタ
19(D-) D- 逆では動かない
20(D+) D+  同上
5V VBUS
GND GND

 最初はD-D+を逆にしており、反応しませんでした。私がネット上で見つけた「FREENOVE」のピン配図が間違っていたようです。ちなみに、「ESP32-S3-DevKitC-1」のピン配図は正しく、この接続で動作しました。余ってたELECOM製ワイアレスキーボード(2.4GHz)が使えラッキーです。
 スケッチ自体はとてもシンプルですが、裏で動いているライブラリが凄いですね、私にはまったく理解できないです。Exampleのままですが、載せさせていただきます。

EspUsbHostKeybord.ino
#include "EspUsbHost.h"

class MyEspUsbHost : public EspUsbHost {
  void onKeyboardKey(uint8_t ascii, uint8_t keycode, uint8_t modifier) {
    if (' ' <= ascii && ascii <= '~') {
      Serial.printf("%c", ascii);
    } else if (ascii == '\r') {
      Serial.println();
    }
  };
};

MyEspUsbHost usbHost;

void setup() {
  Serial.begin(115200);
  delay(500);

  usbHost.begin();
  usbHost.setHIDLocal(HID_LOCAL_Japan_Katakana);
}

void loop() {
  usbHost.task();
}

 これで、新たに何かできそうです。最後まで見ていただきありがとうございました。

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?