LoginSignup
8
4

More than 1 year has passed since last update.

Maker Pi RP2040 をキーボードとして認識させてキー入力(Raspberry Pi Pico と同じ RP2040 を搭載したデバイス)

Last updated at Posted at 2022-01-17

このツイートに書いている流れから、今回の内容を試しました。

今回使ったデバイスについて

今回使ったデバイスの「Maker Pi RP2040」は、Raspberry Pi Pico と「RP2040 を搭載」という点が共通しているデバイスです。
そして、大きさは Raspberry Pi Pico よりかなり大きくなりますが、一方で複数の LED やボタン、各種コネクタ等を標準搭載していたりします。
それぞれのデバイス.jpeg

自分は、以下のスイッチサイエンスさんのオンラインサイトで購入をしていました。

●Maker Pi RP2040 - スイッチサイエンス
 https://www.switch-science.com/catalog/7285/

今回の内容の実行手順

利用する言語

今回、開発に利用できる言語がいくつかある中で「CircuitPython」を使いました。
選定理由は、いろいろ下調べをした中で参考にしようと思った以下の記事で、CircuitPython が使われていたためです。

●Raspberry Pi Picoをカスタムキーボード化して「くぁwせdrftgyふじこlp」キーボード爆誕! - uepon日々の備忘録
 https://uepon.hatenadiary.com/entry/2021/06/10/225800
●RaspberryPiPico【ラズパイピコ】でキーボード操作?? | ホビーハッピーブログ
 https://www.hobbyhappyblog.jp/raspberrypipico-keyboard

それと、MicroPython も軽く試したりなどしてみたのですが、CircuitPython のほうがプログラムを書きかえて動作させる部分の手順がシンプルになりそう、というのも理由の 1つでした。

利用する開発環境

開発環境には以下の「Thonny」を使います。

●Thonny, Python IDE for beginners
 https://thonny.org/

セットアップ

それでは、以下のページの手順を参考にしながら、開発に使うアプリの Thonny で CircuitPython によるプログラミングが行えるような準備をしていきます。

●Raspberry Pi Pico で MicroPython その6 CircuitPythonの書き込みと動作確認 – 砂町技研
 https://krr910183393.wordpress.com/2021/02/24/raspberry-pi-pico-%E3%81%A7-micropython-%E3%81%9D%E3%81%AE6-circuitpython%E3%81%AE%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%81%BF%E3%81%A8%E5%8B%95%E4%BD%9C%E7%A2%BA%E8%AA%8D/

プログラムの書き込みができる状態まで進められたら、あとはプログラムを書くだけです。

お試し1:「ABC」という連続したキー入力

最初に試してみたプログラムを以下に示します。

import board
import digitalio
import time
import usb_hid
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.keycode import Keycode

led = digitalio.DigitalInOut(board.GP26)
led.direction = digitalio.Direction.OUTPUT
button = digitalio.DigitalInOut(board.GP20)
button.switch_to_input(pull=digitalio.Pull.DOWN)

keyboard = Keyboard(usb_hid.devices)

while True:
    if button.value==0:
        led.value = True
        keyboard.send(Keycode.A)
        keyboard.send(Keycode.B)
        keyboard.send(Keycode.C)
        time.sleep(0.2)
    else:       
        led.value = False
    time.sleep(0.1)

上記のプログラムでは、参考にした記事でも登場していた、以下の「Adafruit_CircuitPython_HID」をライブラリとして用いています。
 ●adafruit/Adafruit_CircuitPython_HID: USB Human Interface Device drivers.
  https://github.com/adafruit/Adafruit_CircuitPython_HID

実装した内容を動かしてみた時の様子を、動画にしていますので掲載します。

これは普通の HIDデバイスとして認識されるので、iPad につないぐとそのままキー入力が実行できたりもします。

お試し2: Zoomアプリのショートカットキー操作を実行

次に試したのは、以下のツイートにのせている内容です。
Zoom のカメラの ON/OFF操作を、Maker Pi RP2040 のボード上にあるボタンを押した際に実行させています。

内容はキー操作の部分を書きかえただけ、という感じになるので、プログラムと簡単な補足のみを掲載するのみにします。

import board
import digitalio
import time

import usb_hid
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.keycode import Keycode

led0 = digitalio.DigitalInOut(board.GP0)
led0.direction = digitalio.Direction.OUTPUT
led1 = digitalio.DigitalInOut(board.GP1)
led1.direction = digitalio.Direction.OUTPUT

button0 = digitalio.DigitalInOut(board.GP20)
button0.switch_to_input(pull=digitalio.Pull.DOWN)
button1 = digitalio.DigitalInOut(board.GP21)
button1.switch_to_input(pull=digitalio.Pull.DOWN)

keyboard = Keyboard(usb_hid.devices)

while True:
    if button0.value==0:
        led0.value = True
        keyboard.send(Keycode.ALT, Keycode.V)
        time.sleep(0.2)
    else:       
        led0.value = False
    if button1.value==0:
        led1.value = True
        keyboard.send(Keycode.COMMAND, Keycode.SHIFT, Keycode.V)
        time.sleep(0.2)
    else:       
        led1.value = False
    time.sleep(0.1)

上記で設定したキーの組み合わせや、そのキーのプログラムでの記載方法に関する参照情報は、以下のツイートにあるとおりです。

その他

以下は、Maker Pi RP2040 を用いた開発に関する話題のメモです。

USBドライブとして認識されないようにする

以下は、動作用のプログラムを書き込んだ後でも、デバイスが USBドライブとしても認識される、という機能を止めるための話です。

●CircuitPythonで作ったデバイスの普段使いに邪魔なUSBドライブを無効化する(ただし7.0.0から) - あっきぃ日誌
 https://akkiesoft.hatenablog.jp/entry/20210816/1629108171

Androidアプリで CircuitPython

以下は Maker Pi RP2040 を使った開発を、Androidアプリで行った話になるようです。

今回の内容をビジュアルプログラミングで実現

今回の内容を、ビジュアルプログラミングを用いて実現できるかもしれない、という話です。

以下、自分のツイートや記事へのリンクです。

●ビジュアルプログラミングで Raspberry Pi Pico が扱える「Piper Make」を軽く試した時のメモ(Maker Pi RP2040 でも試す) - Qiita
 https://qiita.com/youtoy/items/974e7004e20806d0aef5

8
4
0

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
8
4