PR

Raspberry pi zeroをUSBキーボード化する

スマートホーム

こんにちは、はな夫(@logicalifer)です。

USB OTGに対応しているRaspberry pi zeroをUSBキーボード化します。

これにより、プログラマブルなキーボードとして動作させて、Alexaと連携したキーボード入力の実現を目指します。

参考にしたのは下記の記事です。

Raspberry pi zeroの初期設定

Raspberry pi zeroの初期設定は下記の記事で記載した方法を使用します。RJ45コネクタは未実装のため、最初から無線LANに接続するようにセットアップします。

ソフトのインストール

sshでログイン後、参考記事に記載の通りにセットアップを行っていきます。

まずは各種アップデートを実施します。Raspberry pi zeroだとかなり時間が掛かるので、他のRaspberry piがあれば、ここまでは実施した上でSDカードを差し替えた方が良いかもしれません。

sudo apt-get upgrade
sudo apt-get update

自分はviが使いこなせないので、emacsをインストールします。

sudo apt-get install emacs

次からはRaspberry pi zero固有のようなので、Raspberry pi zeroにSDカードを差し替えて実施します。ソースコードをダウンロードします。

git clone https://github.com/aidantwoods/RPi0w-keyboard

参照元に記載の通り、セットアップのスクリプトを実行します。

cd RPi0w-keyboard/src/install
sh ./setupOTG.sh

ソースコードのスクリプトを実行し、USBデバイスとなるか確認します。なお、この操作はrootで実施する必要があります。

su
cd RPi0w-keyboard/src/home/pi/
sh ./hid.sh
ls /dev/hidg0

自動起動時は、/etc/rc.localに記載の必要あり。サンプルはRPi0w-keyboard/src/etc/rc.localとなります。環境に合わせてパスを修正する必要があります。サンプルは、RPi0w-keyboard/src/home/piが/home/pi下にある状況向けに記述されています。

文字の送信

hid.shを実行するor自動起動をした後で、下記のようなコマンドを実行することで、USBで接続したデバイスにキーボード入力が送信されます。

sudo echo -ne "\0\0\x4\0\0\0\0\0" > /dev/hidg0
sudo echo -ne "\0\0\0\0\0\0\0\0" > /dev/hidg0

1行目の3つ目でx4となっているのがHIDのキーコードを押したこと、2行目がキーを離したことを意味します。1行目だけだと、文字をずっと押していることになるので注意です。

HIDのキーコードは下記のページの表を参考にできます。

キーボード デバイス  |  Android Open Source Project

ひとまず、任意のキーコードを相手先に送信する準備ができました。あとは、状況に合わせてキーコードを決定、送信する部分を作る必要がありますが、今回はここまでとして、また検証後に記事を作成しようと思います。

コメント