編集履歴一覧に戻る
nakkyiのアイコン画像

nakkyi が 2023年02月07日19時02分29秒 に編集

初版

タイトルの変更

+

ラズパイPICOで、ショートカットキーボードを作ってみた。

タグの変更

+

PICO

+

Python

+

Thonny

+

ショートカットキーボード

メイン画像の変更

メイン画像が設定されました

記事種類の変更

+

製作品

Lチカの変更

Lチカが設定されました

本文の変更

+

 Pythonの勉強のために、Raspberry Pi Picoを使って、ショートカットキーボードの製作に挑戦しました。 ## 使用したもの |部品名|型式|メーカー|数量| |---|---|---|---| |マイコン|Raspberry Pi Pico|ラズベリーパイ財団|1| |キーボード|ボタンスイッチ|自作加工|1| |ブレッドボード|6cm×4cm|自作加工|1| |USBケーブル|巻取り式|不明|1| ## 製作方法 ### <試作1号> ![キャプションを入力できます](https://camo.elchika.com/bf2b0dfda0c9efd0ced131a66c18909fcf61aca4/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f62333466356663372d613730652d343463362d613263362d6132336663343963626131382f61626266353338382d663933332d343537362d393933652d353164323464386238643164/) 1,ブレッドボードを6cm×4cmにカットして、Raspberry Pi Picoのサイズに加工しました。 2,Raspberry Pi Picoをブレッドボードにセットして、作動表示用LED、動作確認ブザーを付けました。 3、先ずは、KEY_SWを3個にして、 ①コピー:(Ctrl+C) ②ペースト:(Ctrl+V) ③漢字変換:(半角/全角) にしました。 ![キャプションを入力できます](https://camo.elchika.com/fd7594336c2d402256b6727654b71322bf498094/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f62333466356663372d613730652d343463362d613263362d6132336663343963626131382f65303032376339392d326338622d343839312d383639372d396639313333376432346532/) 1,ブレッドボードを6cm×4cmにカットして、Raspberry Pi Picoのサイズに加工しました。 2,Raspberry Pi Picoをブレッドボードにセットして、作動表示用LED、動作確認ブザーを付けました。 にしました。 3,試作1号のソースコード ``` ---<> Code--- import time import board import digitalio import pwmio import usb_hid from adafruit_hid.keyboard import Keyboard from adafruit_hid.keycode import Keycode #キーボードデバイスのセットアップ kbd = Keyboard(usb_hid.devices) #各スイッチの端子設定 sw1 = digitalio.DigitalInOut(board.GP20) sw1.direction = digitalio.Direction.INPUT sw1.pull = digitalio.Pull.UP sw2 = digitalio.DigitalInOut(board.GP26) sw2.direction = digitalio.Direction.INPUT sw2.pull = digitalio.Pull.UP sw3 = digitalio.DigitalInOut(board.GP16) sw3.direction = digitalio.Direction.INPUT sw3.pull = digitalio.Pull.UP #ブザー音の端子設定 buzzer = pwmio.PWMOut(board.GP15, frequency=2300) #LEDの端子設定 led = pwmio.PWMOut(board.GP8, frequency=5000) #LED点灯 led.duty_cycle = 8000 #直前のスイッチ状態 old_sw1_value = True old_sw2_value = True old_sw3_value = True #メインループ while True: #ブザーを鳴らすフラグ初期化 sound_buzzer = False #各スイッチの押下時を検知 if sw1.value == False and old_sw1_value == True: kbd.send(Keycode.CONTROL, Keycode.C) #コピー(Windows) sound_buzzer = True if sw2.value == False and old_sw2_value == True: kbd.send(Keycode.CONTROL, Keycode.V) #ペースト(Windows) sound_buzzer = True if sw3.value == False and old_sw3_value == True: kbd.send(Keycode.CONTROL, Keycode.A) #全体選択(Windows) sound_buzzer = True #ブザーはここで鳴らす if sound_buzzer == True: buzzer.duty_cycle = 2000 time.sleep(0.1) buzzer.duty_cycle = 0 #直前のスイッチ状態の更新 old_sw1_value = sw1.value old_sw2_value = sw2.value old_sw3_value = sw3.value #スイッチ入力待ち time.sleep(0.01) ``` ### <試作2号> ![キャプションを入力できます](https://camo.elchika.com/b5693cd867c749953b771ee80a3aec175d0bd18a/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f62333466356663372d613730652d343463362d613263362d6132336663343963626131382f63326165396662662d643266332d343161382d383934332d393533326537613861326332/) 3,ソースコードは、KEY_SWを4個にして、 ①切り取り:(Ctrl+X) ②コピー:(Ctrl+C) ③ペースト:(Ctrl+V) ④すべてを選択:(Ctrl+A) にしました。 4,巻取り式のYSBケーブルを取り付けて完成です。丁度コネクターも中に納まりました。 にしました。 ## 回路図 配線はこれだけです。 ![キャプションを入力できます](https://camo.elchika.com/feb1caa24eb05c2fb611f615b64442464da20e6a/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f62333466356663372d613730652d343463362d613263362d6132336663343963626131382f38643831326638392d366234322d346237642d616164662d326134383335376565366263/) ## 試作2号のソースコード ```[code] import time import board import digitalio import pwmio import usb_hid from adafruit_hid.keyboard import Keyboard from adafruit_hid.keycode import Keycode #キーボードデバイスのセットアップ kbd = Keyboard(usb_hid.devices) #各スイッチの端子設定 sw1 = digitalio.DigitalInOut(board.GP19) #カット Ctr+X sw1.direction = digitalio.Direction.INPUT sw1.pull = digitalio.Pull.UP sw2 = digitalio.DigitalInOut(board.GP20) #コピー Ctrl+C sw2.direction = digitalio.Direction.INPUT sw2.pull = digitalio.Pull.UP sw3 = digitalio.DigitalInOut(board.GP18) #ペースト Ctrl+V sw3.direction = digitalio.Direction.INPUT sw3.pull = digitalio.Pull.UP sw4 = digitalio.DigitalInOut(board.GP21) #全体指定 Ctrl+A sw4.direction = digitalio.Direction.INPUT sw4.pull = digitalio.Pull.UP #ブザー音の端子設定 buzzer = pwmio.PWMOut(board.GP15, frequency=2300) #LEDの端子設定 led = pwmio.PWMOut(board.GP8, frequency=5000) #LED点灯 led.duty_cycle = 8000 #直前のスイッチ状態 old_sw1_value = True old_sw2_value = True old_sw3_value = True old_sw4_value = True #メインループ while True: #ブザーを鳴らすフラグ初期化 sound_buzzer = False #各スイッチの押下時を検知 if sw1.value == False and old_sw1_value == True: kbd.send(Keycode.CONTROL, Keycode.X) #カット(Windows) sound_buzzer = True if sw2.value == False and old_sw2_value == True: kbd.send(Keycode.CONTROL, Keycode.C) #コピー(Windows) sound_buzzer = True if sw3.value == False and old_sw3_value == True: kbd.send(Keycode.CONTROL, Keycode.V) #ペースト(Windows) sound_buzzer = True if sw4.value == False and old_sw4_value == True: kbd.send(Keycode.CONTROL, Keycode.A) #全体指定(Windows) sound_buzzer = True #ブザーはここで鳴らす if sound_buzzer == True: buzzer.duty_cycle = 2000 time.sleep(0.1) buzzer.duty_cycle = 0 #直前のスイッチ状態の更新 old_sw1_value = sw1.value old_sw2_value = sw2.value old_sw3_value = sw3.value old_sw4_value = sw4.value #スイッチ入力待ち time.sleep(0.01) ``` ## まとめ ワンボタンキーボードのマイコン「Beetle」を使って、3ボタンのショートカットキーボードを作ってみました。ソースコードの1部を書き換えるだけで、自分だけのショートカットキーボードになります。