kuriharaのブログ

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

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

1%オープンソースキーボードwonkyを Kailh Sun SwitchとRP2040 zero でLチカ

はじめに

今週も1キーだけのキーボードwonkyをいじっています。

wonkyは、40%keyboardさん設計の1キーのキーボードです。
オリジナルの設計はマイコンボードにSeeeduino XIAOを使っています。

前回、私はSeeed Studio XIAO SAMD21(Seeeduino XIAO)とピン配置に互換性があるSeeed Studio XIAO RP2040を使いました。

今回は、Waveshare RP2040-Zeroを使っていきます。

RP2040-Zeroは、小型、IOピンいっぱい、特に価格が安く、入手性がいいのが魅力です。
もう一つ重要なのは、PRK Firmwareが使えることですね。

Waveshare RP2040-Zerowww.switch-science.com

wonkeyデータの入手方法

wonkey基板のガーバーデータは、gitに公開されています。CC BY-SA 4.0ライセンスで公開されています。
www.40percent.club
git.40percent.club

基板の発注

基板の発注先や価格情報は下を見てください。

kurihara.hatenadiary.jp

組立

基板のカスタマイズ

今回RP2040-Zeroに加えて、Kailh Sun Switchを使っていきます。
Kailh Sun Switchは、軸の下から砲弾型のLEDで光らせる構造になっています。

砲弾型LEDの主流Φ5では、スイッチが浮いてしまって使えません。
高さが低く円筒型LEDΦ5でも縁の部分がスイッチに当たります。
游舎工房のKailh Sunスイッチ用LEDはΦ4ですが、カソードコモンのRGBなので回路、配線が難しくなります。

ちょうどwonky基板の中心にMXスイッチ用の穴がありますので、ここにNeoPixelのSK6812MINI-Eを組込みました。

できるだけ基板上の配線を使って、SK6812MINI-EとSun Switch用に配線します。



RP2040-Zeroの配置

RP2040-ZeroとXIAOシリーズは電源配置が違います。
wonkyの基板はベタGNDが効いているので配線を切るのが難しくなっています。
RP2040-Zeroの電源ピンが浮くように180度回転させて取付けました。

ピンヘッダーのハンダはハンダを取ることを考えて、配線に必要な部分と4隅ぐらいに絞っています。

基板から浮かせた3.3V電源とGNDは、WS2812B用のフットバターンに配線します。


ファームウエア

ファームウエアはいつものPRK Firmwareを使いました。

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

github.com

keymap.rb

# Initialize a Keyboard
kbd = Keyboard.new

# wonky  waveshare RP2040_zero

# RP2040_zero上のRGB LEDは、GPIOの16番につながっている
# SUN_SWのRGB LEDのDINは、GPIOの6番につなげた
# SUN_SWは、7番につなげた

NEOPIX = 6

kbd.init_pins(
  [ 24 ],   # Dummy RP2040_zero GPIO24 NC_PAD
  [ 7 ]    # wonky RP2040_zero
)

# 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(
  NEOPIX ,   # pin number XIAO RP2040のWS2812Bは16番
  1,    # 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は101回目になりました。


失敗作

砲弾型LEDその1

LEDを削って入れ込んだが。。。。

スイッチストロークできない。

砲弾型LEDその2

裏から入れたが、3.3Vでは光らない。

余り基板の処分

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

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