kuriharaのブログ

ゴルフと電子工作と山での暮らし。ありもの使い、ないもの作り。

このブログは【広告/PR】を含む場合があります。

1%オープンソースキーボード『wonky』をXIAO RP2040を使ってLチカ

はじめに

最近、1キーのキーボード(?)が気になっています。

先々週のisopad に続いて、今週末はwonkyを組立てました。

wonkyは40%keyboardさん設計の1キーのキーボードで、マイコンボードはSeeed Studio XIAO SAMD21(Seeeduino XIAO)を使っています。

Seeed XIAOシリーズは、Seeed Studio XIAO RP2040に加えて、Seeed Studio XIAO nRF52840(XIAO BLE) が技適を取得、先日Seeed Studio XIAO ESP32C3が発表されました。Bluetoothに加えてWifiまで使えるようになります。

そして、電源ピン配置と形状互換があるため、同じ基板でマイコンボードを差替えて使えるのが何より嬉しいですね。

といっても私は、有線を優先します。

www.40percent.club

データの入手方法

基板のガーバーデータは、gitにからダウンロードできます。

git.40percent.club

ライセンス

CC BY-SA 4.0 Deed | Attribution-ShareAlike 4.0 International | Creative Commonsで公開されています。感謝します。

基板の発注

基板は(いつもの)JLCPCBへ発注しました。

JLCPCBは、PCB(プリント基板)を5枚2ドルから作れるのに加えて、日本の新規ユーザーは30ドルのクーポンがもらえます。

それ以外に現在7ドルクーポンが使えます。


送料は、Standard Global Direct Line敷居値3.9ドルを有効に使った結果、基板は1mm厚30枚で6.3ドルでした。

最近標準の1.6mmだけでなく1mmも同じ値段で作れるようになっています。
小さい基板を作るときに便利になっています。
基板の色で変わりますので、注意してください。(黄色が高くなった記憶あり)

一番送料が安いStandard Global Direct Lineを指定5月16日に発注して、28日に受取りました。
基板データレビューは、ダウンロードしたデータそのままですんなりと終わりました。

組立

wonkyは黒で仕立てようと部品を集め、マイコンボードはXIAO RP2040を使いました。


ピン配置

XIAO RP2040を使ったので、40%clubの下の記述から、どのGPIOピンを使うか確かめます。
念のためにテスタを使って、配線を確かめます。

It uses only 3 of the pins on the XIAO. D1- switch, D2-LED, D3-WS2812B.

同じシリーズ名、電源ピンが同じなので、特に注意するピンはありません。

ハンダ付け

オリジナルの設計では、WS2812Bの電源を5Vから取っていますが、RP2040の出力電圧を考慮して3.3Vに繋ぎ変えました。WS2812Bの仕様外となりますが、今後3.3Vを使う工作が増えると考えて実績を積んでいきます。

基板上で5Vと3.3Vを繋ぎます。

基板にXIAO RP2040を載せるとき、5Vにピンヘッダを入れない(接続しない)ようにして、元々5Vが流れていたWS2812BのVDD配線に3.3Vを供給しました。

WS2812Bの▽マークは3番ピン、基板の白丸は1番ピンの印です。
WS2812Bはハンダ付けが難しい上にwonkyはベタグランド(格子状)が効いているので、特に3番ピンにハンダが載りにくくなっています。
3番以外のピンをハンダ付けして、固定した後に3番ピンをハンダ付けしたほうが位置ずれし難いのでお勧めです。

ファームウエア

ファームウエアは(今回も)PRK Firmwareを使いました。

PRK_Firmwareは、uf2のインストールに1回とkeymap.rbに1回のドラッグ&ドロップで簡単に動かすことができます。
ファイルのダウンロードとドラッグ&ドロップ、必要なのはテキストエディタだけです。

github.com


オリジナルのSeeeduinoとRP2040を下の表のように読み替えます。

Seeeduino XIAO XIAO RP2040
switch D1 P27
switch_LED D2 P28
WS2812B D3 P29



keymap.rb

コメントは、ボードのLEDを試したものを残しています。

# Initialize a Keyboard
kbd = Keyboard.new

# wonky XIAO-RP2040
GPIO_OUT = 1
HI = 1
LO = 0

# XIAO-RP2040は、GPIOの25番が
# ボード上のUSE_LEDのカソードにつながっている
# XIAO RP2040のWS2812Bは12番
# NEO_PWR = 11  XIAO-RP2040
USE_LED = 25
WS2812B_DIN = 29
SW_LED = 28

# そのピンを初期化
# gpio_init(NEOPIX)
# gpio_init(NEO_PWR)
gpio_init(SW_LED)
gpio_init(USER_LED)

# そのピンを出力ピンとして設定
# gpio_set_dir(NEOPIX, GPIO_OUT)
# gpio_set_dir(NEO_PWR, GPIO_OUT)
gpio_set_dir(SW_LED , GPIO_OUT)
gpio_set_dir(USER_LED , GPIO_OUT)

# gpio_put(NEOPIX, HI)
# gpio_put(NEO_PWR, LO )
gpio_put(SW_LED , HI )    #ON
gpio_put(USER_LED , HI )  #OFF

# Initialize GPIO assign
kbd.init_pins(
  [ 24 ],   # Dummy XIAO-RP2040 GPIO24 NC_PIN
  [ 27 ]    # wonky XIAO-RP2040
)

# default layer should be added at first
kbd.add_layer :default, %i[  
  KC_A 
]

# Initialize RGB class with pin, underglow_size, backlight_size and is_rgbw.
rgb = RGB.new(
  WS2812B_DIN ,   # pin number XIAO RP2040のWS2812Bは12番
  4,    # size of underglow pixel
  0,    # size of backlight pixel
  false # 32bit data will be sent to a pixel if true while 24bit if false
)

sleep 1
rgb.effect     = :swirl
rgb.speed = 28

kbd.append rgb # `kbd` is an instance of Keyboard class that should be newed in advance

kbd.start!

Lチカ

Lチカ動画は、ツイッターを利用しています。



記念撮影


週末KEEB_PDにツイートすること目標に動いている。


お得なキャンペーン情報

最近は、コントローラボードの作例にキーボードが増えて嬉しいですね。

Seeed XIAO RP2040

https://blog.fusionpcb.jp/wp-content/uploads/2022/04/1-2-768x402.png

お一人様1デザインにつきPCBAボード2枚まで100%無料とさせていただきます。
カスタムデザインには、Seeed XIAO RP2040が含まれている必要があります。

https://blog.fusionpcb.jp/blog/?p=2679blog.fusionpcb.jp
www.seeedstudio.com

XIAOメカニカルキーボードコンテスト

入賞すると$1000クーポン!!
youtu.be
www.fusionpcb.jp

余り基板の処分

wonkyの余り基板を捨てるのはもったいないので、匿名で処理が簡単なメルカリを使って配布します。
2枚組で逐次出品して行きますので「自作キーボード」「wonky」で探してください。

誤字、脱字や間違いはコメント欄で教えてください。m(_ _)m