1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

KMK を ItsyBitsy M4 Expressへ導入する

Last updated at Posted at 2022-02-09

KMK を ItsyBitsy M4 Expressへ導入する

今回は持て余しているItsyBitsy M4へ導入するものの、Raspberry Pi picoなどでも同じ手順で可能なはず。

とりあえず動くところまでを試す。

CircuitPythonのインストール

CircuitPython.org からダウンロード。

インストール方法についてはダウンロードページの各マイコン向けページの下の方からTutorialを辿って見られるAdafruitのドキュメントを参照。

ItsyBitsy M4 Expressのダウンロードページ > ItsyBitsy M4 ExpressのTutorialページ > CircuitPythonのインストール方法についてのページ

KMKの入手

Zipファイルを解凍して中にあるKMKフォルダとboot.pyをItsyBitsy M4 Expressへコピー。

  • KMKをLibへ
  • boot.pyをルートディレクトリへ

code.pyの作成

Getting started を参考にcode.pyを書いてボードに保存。

ItsyBitsyで動作させるためにピンの設定は変更。

変更前

keyboard.col_pins = (board.GP0,)
keyboard.row_pins = (board.GP1,)

変更後

keyboard.col_pins = (board.A0,)
keyboard.row_pins = (board.A1,)

配線

A0 → SW → A1

ここまでの作業でボタンを押すと「a」が入力できる1キーキーボードが出来る。

今後

ここまでの手順で1つボタンのキーボードは出来て、普通のPCでならこのまま使うことが可能と思うし、マトリックス配線で複数のキーを扱うのもそんなに難しくはないはず。

利用していると気になるのはドライブやCDC(シリアル)が有効になっているあたり。

CircuitPythonではそのあたりを無効にすることは可能ではあるものの、KMKを利用せずにキーボードエミュレーションをした場合、ドライブやCDCを無効にしてもNintendo Switchなどの特定ハードウェア上ではキーボードとして動作できない。これが困る。

QMKでは動作するのを確認しているのでKMKで同じように動作が可能なのかを探るのが今後の目標


追記

ドライブとCDCを無効にするためのコードをboot.pyに入れる。
GNDとD11が接続されている場合はドライブとCDCが無効になる。

import supervisor
import board
from digitalio import DigitalInOut, Pull
import storage
import usb_cdc

supervisor.set_next_stack_limit(4096 + 4096)

p11 = DigitalInOut(board.D11)
p11.pull = Pull.UP

if p11.value == False:
    storage.disable_usb_drive()
    usb_cdc.disable()

しかし、やはりNintendo Switchではキーボードとして動作しなかった。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?