☆youtube更新中☆
▶Youtubeのチャンネル登録で更新頻度がUPするかも!!

Youtubeで文章にするのが難しい内容について
実際にしゃべって解説しています。
ブログでは紹介していない(しにくい)内容も
じゃんじゃん更新中。

▶Youtubeでhobbyhappyを応援する

RaspberryPiPico【ラズパイピコ】でキーボード操作??

pico-keyboard-ctrlPython
この記事は約9分で読めます。

今回はRaspberryPi Pico通称ラズパイピコでキーボード操作をしてみます。

もともと、ArduinoのLeonardoもしくは互換機のpro microでも

同じことはできるのですが、RaspberryPi Picoでもやってみることにします。

※注意点:microPythonではなく、CircuitPythonを使用します。

CircuitPythonの導入方法についても解説しますのでご安心ください。

自己紹介

東証一部上場企業でサラリーマンしてます。

主に工場(生産現場)で使用する検査装置のアプリケーション開発してます。

ヒトの作業を自動化して簡略化するアプリケーションを日々開発中。

転職に成功して現在は超大手企業でシステム系の開発をしています。

Youtubeチャンネルにさまざまな動画を上げています

↓↓↓こちらからYoutubeチャンネルにアクセス!! ↓↓↓

今回使用するもの【用意するもの】

今回キーボード操作に必要なものは以下のものです。

  • RaspberryPiPico(ラズパイピコ)
  • microB USBケーブル
  • ジャンパーワイヤー
  • スイッチ類
  • ブレッドボード

単純に時間が経ったら自動でキーボード操作を入れるようなプログラムだったら、

ジャンパーワイヤーやスイッチ類、ブレッドボードは不要です。

ただ、人間の入力があったほうがイメージしやすいので今回は使用します。

RaspberryPiPico(ラズパイピコ)

RaspberryPiPicoのLED
RaspberryPiPico

ラズパイピコです。今回はこいつが主役なので必ず入手しておきましょう。

入手する方法ですが、秋月電子や、switchscienceなどで通販で購入可能です。

もし面倒であれば、一応Amazonでも取り扱いはあります。

ただ、ちょっと転売価格なのであまりオススメはできません….

microB USBケーブル

↑のラズパイピコの写真に写っていますが、

PCとの接続にmicroB USBケーブルが必要になります。

手持ちであればそれで大丈夫ですが、もし持っていないよ。

という場合は、Amazonで買いましょう。

家電量販店だと高品質なのは間違いないですが、

そこまでの品質は必要ない場合が多いので、Amazonの中国製で十分です。

安いですし….

ジャンパーワイヤー

ジャンパーワイヤーは今回スイッチを使う関係で必要です。

配線に使うイメージですね。ブレッドボードにさせればなんでもOKです。

ちなみに、ジャンパーワイヤーが自作できるって知ってましたか??

ちょっと特殊な工具が必要になりますが、自由度が格段に上がるのでオススメです。

作り方や必要な材料についてはこちらの記事で紹介していますので、

興味がありましたらご覧ください。

スイッチ類

今回はタクトスイッチで入力していきます。

タクトスイッチじゃないとダメというわけではないので、

手持ちで何か入力に使えそうなものであればなんでも大丈夫です。

ブレッドボード

スイッチとラズパイピコを固定するのに使います。

これがないと配線が結構大変….

スイッチを使わないようにしてテスト的にやる分には必要ないです。

ちなみにブレッドボードを買い足したい場合は、

こちらの記事のように安物ブレッドボードは避けたほうが良いです↓↓↓

配線方法

配線方法はこんな感じです。

pico-keyboard-control
picoとタクトスイッチで、タクトスイッチがキーボードの代わり

タクトスイッチはGNDとGP13につながっています。

タクトスイッチを押すと、GP13がhighになって入力を検知する仕組みです。

RaspberryPiPicoにcircuitPythonを導入する

いきなり注意点です。

  • 今回使用するcircuitPythonですが、最新のCircuitPythonのVer.と
    Thonnyの相性が悪いのか、キーボード操作できませんでした。
    ※正確にはThonny側でエラーになる。
    なので、すこしVer.を落とせばできたのでそのVer.で解説していきます。

手順は以下の通りです。

  • CircuitPythonの.uf2ファイルをダウンロードする
  • HIDライブラリをダウンロードする
  • RaspberryPiPicoに.uf2ファイルを適用する
  • ドライブのLibフォルダにHIDライブラリをコピーする

それでは一つずつ解説していきます。

CircuitPythonの.uf2ファイルをダウンロードする

普段ラズパイピコを使用する場合、

Bootselボタンを押しながらUSB接続

ラズパイの公式で配布されている.uf2ファイルをドライブに投げ込む

使えるようになる。

こんなイメージだと思いますが、

circuitpythonを使用する場合は、

ラズパイの公式で配布されている.uf2ファイルとは別の.uf2ファイルを投げ込みます。

そうすることによってcircuitpythonが使えます。

意外と単純で簡単ですよね??

ではその.uf2ファイルはどこにあるのか?というと

こちらにあります。↓↓↓

CircuitPython - Pico Download
The Raspberry Pi foundation changed single-board computing when they released the Raspberry Pi computer, now they’re ready to do the same for microcontrollers w...

リンク先に、

circuituf2file
.uf2ファイルをダウンロードする

こんな感じでダウンロードできるので、ダウンロードしましょう。

ただし!!!

これは最新Ver.で、今回使用するのは少し古いVer.になります。

冒頭でお話したとおり、Thonnyとの相性問題なのか、

私の環境では少なくともこのVer.7.0.0ではマウス・キーボード操作ができませんでした

試してみてできたのは、Ver.6.2.0beta3でした。

uf2file-passed
古いuf2ファイルをダウンロードするところ

HIDライブラリをダウンロードする

続きまして、circuitpythonを使えるようにした後は、

マウス・キーボード操作ができるようにライブラリをダウンロードしましょう。

ライブラリとは、簡単に言うと便利ソフトです。

このライブラリを使用することで、

本来複雑な処理を入れないと動かせないところを、

関数化して簡単に動かすことができます。

作ってくれたかたに感謝です….

今回必要になるライブラリは、circuitpythonのVer.6.に対応するものです。

こちらにありますのでまずはダウンロードしておきましょう。

GitHub - adafruit/Adafruit_CircuitPython_HID: USB Human Interface Device drivers.
USB Human Interface Device drivers. Contribute to adafruit/Adafruit_CircuitPython_HID development by creating an account on GitHub.

格納されている場所ですが、

まず右のほうのReleasesを探してください。

さらに、+がついているreleasesをクリックしましょう。

circuitpythonhid_v6
リンク先

すると、このような感じで今までReleaseされたものが一覧で表示されます。

ここから、今回使用するVer.6に対応したライブラリをダウンロードします。

ちょうど矢印を付けておきました。

circuitpythonhid
今回使用するライブリ

RaspberryPiPicoに.uf2ファイルを適用する

さて準備ができたので、

まずはラズパイピコのBootselボタンを押しながら、

PCとUSBを接続しましょう。

その後、出てきたドライブに、先ほどダウンロードした.uf2ファイルを

ドラッグ&ドロップします。

picodrive-dragdrop
uf2ファイルをドラッグ&ドロップ

ドライブのLibフォルダにHIDライブラリをコピーする

次に、circuitpythonが使えるようになったラズパイピコのドライブを確認します。

このように、最初から入っている標準のライブラリがフォルダになっています。

こちらの中に、先ほどダウンロードしたライブラリを入れてあげます。

ここまででほとんど終わったようなものです。あと少しで動かせます!!

RaspberryPiPicoにPythonでコーディングする

仕上げにPythonでこちらのソースをコピー&ペーストしてみてください。

import board
import time
import usb_hid
from digitalio import DigitalInOut, Pull,Direction
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.keycode import Keycode

# キーボードの設定を行う
kbd = Keyboard(usb_hid.devices)

# タクトスイッチのつながっているところを設定。
tact=DigitalInOut(GP13)
tact.direction=Direction.INPUT
# 今回は抵抗を使用しないのでプルアップしておきましょう。
tact.pull=Pull.UP

# タクトスイッチが押されているか視覚的にわかりやすいようにledも使う。
ledpin = DigitalInOut(GP25)
ledpin.direction = Direction.OUTPUT

# ここから無限ループ
while True:
    # タクトスイッチが押されているか確認する。
    if tact.value==0:
        # 押されていなければledを光らせる。
        ledpin.value = True        
    else:       
        # タクトスイッチが押されていたらキーボード操作する。
        # 今回はAと打つ。
        kbd.send(Keycode.A)
        ledpin.value = False
        time.sleep(0.2)
    time.sleep(0.1)

ポイントは、今回は抵抗を使用していないので、

タクトスイッチがつながっているピンはpullupしておきましょう。

あとは、キーボード設定した変数で.sendしてあげればキーボード操作可能です。

while文の中をやりたいように変更することによって、

好きなマクロのようなものも作成可能です。

まとめ

今回はRaspberryPiPicoでキーボード操作してみました。

Arduino pro microでも同様のことはできましたが、

どっちがいいでしょうかね….

Arduino pro microで似たようなことをした記事はこちら↓↓↓

コスト的なことを考えると、RaspberryPiPicoのほうが2/3の値段なので、

RaspberryPiPicoのほうがいいですね。

サイズを考えると、Arduino Pro microのほうが小さいので、

コンパクトに収めようと思ったらArduino Pro microのほうがいいですね。

あとは、安定的に供給されるかについては、

間違いなくRaspberryPiPicoのほうが確実ですね。

Arduino Pro micro自体互換品であって、

Arduinoの純正品ではありません。

もちろん今後Arduino pro microに載っている

Atmegaの32U4と同じチップが搭載された

マイコンボードが安定供給されれば問題はありませんが….

結論としては、どちらでもできるようにしたほうが良いのではないでしょうかね…

コメント

タイトルとURLをコピーしました