kuriharaのブログ

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

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

オープンソースのキーボード 『Pica40 v2』を組立てました。

はじめに

オープンソースのキーボードPica40 v2を組立てました。
Pica40 v2はzzeneg (Evgenii Vilkov) · GitHubさん設計の40キーの分割キーボードです。
コントロールボードはXIAOを使っていて、有線と無線に対応しています。

ビルドガイドはTODOになっていますので注意ください。

github.com

Reddit - Dive into anything

紹介記事

kbd.news

データのダウンロード

データはのライセンスで公開されています。
ありがたい。
pica40/LICENSE at main · zzeneg/pica40 · GitHub

github.com

基板の発注

基板はいつものJLCPCBへ注文しました。

発注方法はサリチル酸さんの記事を参考にしています。
salicylic-acid3.hatenablog.com

基板の金額

Topの金額が高めになっています。

READMEによるとchoc V2を使う場合は、topはいらないようなので、お安くしたい方はどうでしょう。
ただし、有線の場合choc V2を使うとUSB-Cコネクタと干渉して1.5Uのキーキャップは使えないようです。

到着

11月10日に注文して、11月21日に届きました。
最近は、Aliの部品も2週間かからなくなっていますので、部品の在庫を積む必要がなくなってきました。

組立

佐賀県民は、基板のシルクに親しみを感じます。*1

ハンダ付け

Pica40 v2の難関はUSB-Cコネクタのハンダ付けです。

zzeneg (Evgenii Vilkov) · GitHubさんがUSB-Cを選んだ理由は、ホットスワップ(電源を入れてコネクタを挿抜する)できるからだそうです。
開発中のV2.1ではTRRSを併用できるようにするそうです。

上手くいったと思ったら、左側のXIAOがブートできません。
テスタで調べると3.3VがGNDとショートしています。
回路から考えるとショート箇所は、USB-Cコネクタの下しか考えられません。

やってしまいました。

気を取り直して、別の基板で再度ハンダ付けしました。
フラックスをたっぷり塗って、ハンダがパターンから流すように付けました。*2

ネジ止め

README Bill of materialsのようにスタンドオフを使います。
日本で入手性が良いM2スペーサは、外径が大きくて基板穴に入りません。


ファームウエア

有線で使う場合のコントローラは、XIAO RP2040です。
XIAO RP2040のファームウエアはQMK firmwareで、コンパイル済みも公開されています。

B(Boot)ボタンを押しながらXIAOの電源を入れて、pica40_rev2.uf2をドラッグ&ドロップするだけで動きます。左右のXIAO2個とも同じuf2を入れます。 

アルバム

キーキャップなし

裏面の Pica Pica


KEEB_PD

KEEB_PDという、毎週日曜19:00~21:00にいい感じのキーボードの写真をツイートするイベントに参加しています。



バージョンアップ (2023/07/16 追記)

V2.1になって3Dプリントのケースが追加されています。

kurihara.hatenadiary.jp

JLCPCBのお得な情報

新規ユーザの特典

現在、JLCPCBは新規ユーザは$54クーポンの特典があります。
加えてTwitterアカウントをフォロー+DM=$10クーポンの特典もあります。

20230220184842

X(旧Twitter)アカウントフォローの特典

加えてX(旧Twitter)アカウントをフォロー+DM=$10クーポンの特典もあります。




*1:`私が住んでいる佐賀県の県鳥はカチガラスです。高校時代に通ったうどん屋さんの名前でもあります。 www.pref.saga.lg.jp

*2:動画を撮る余裕はありません

オープンソースのマイクロパッド『Video-ManuForm』を組立てました。

はじめに

オープンソースの マイクロパッドVideo-ManuForm を組立てました。

Video-ManuFormGibeさん設計のマイクロパッドでケースの3Dプリントデータが公開されています。

Φ60ノブとdactyl manuform系キー配列の組合せが美しいマイクロパッドです。


リミックス

少し手を加えたところ

  • ハンドワイヤーからdactyl manuform flexible pcbを使う
  • NeoPixel LEDを追加する(dactyl manuform flexible pcb にSK6812MINI-Eのパターン有)
  • Pro MicroをSparkFun Pro Micro RP2040に置き換える

関係記事

www.reddit.com

Video-ManuFormデータのダウンロード

データはPrintablesで公開されています。

https://media.printables.com/media/prints/70808/images/770675_a826cf76-6ff7-4c4d-8eda-8a427f9b6365/thumbs/cover/640x480/jpg/large_display_imgonline-com-ua-compresstosize-fuz.webp

https://www.printables.com/model/70808-video-manuform

3Dプリントの発注

3Dプリントは、JLCPCBSLA Black Resinで発注しました。
最近、私はPCB、3Dプリントともに殆どJLCPCBを使っています。
安くて速いんです。

データのレビューで薄い箇所があるとメールが入りましたが、「変形のリスクを受け入れます」とメールをいれて、支払いに進みました。

価格


トータル

現在、OCSが使えるようになっているので、送料はもっと安くなっていると思います。


到着

10月18日にデータをアップロードして10月30日に届きました。

組立

配線

オリジナルのオリジナルはVMs-macro-keyboardでハンドワイヤーです。
GitHub - mensikv/VMs-macro-keyboard: Macro keyboard with 8x cherry mx and a rotary encoder using Arduino Micro

私は、先日入手したdactyl manuform flexible pcb を使ってLチカします。

kurihara.hatenadiary.jp



オリジナルのコントローラボードはPro Micro です。

最初は安いRaspberry Pi Picoを使うつもりでしたが、幅が広いのを忘れていました。

ケースのリミックスが難しいので、Pro Micro 互換のSparkFun Pro Micro RP2040を使うことにしました。ちょっと高い。。。。(^^;

ボトムケースはPro Microを裏向きに入れるので、SparkFun Pro Micro RP2040を使うとスイッチとコネクタハウジングが当たってしまいます。

ノミと彫刻刀を使って削ります。

ノブの穴に合わせてロータリーエンコーダを買いました。
ロータリーエンコーダの凸に合わせて、ケースに穴を開けます。

3Dプリントだと皿ネジ加工もできますね。

ファームウエア

ファームウエアは、いつものPRK Firmwareを使いました。
理由は、インストールとkeymap.rbの書込みを2回のドラッグ&ドロップのみでできるからです。


PRK Firmware

github.com


SparkFun Pro Micro RP2040のGPIOピンを定義していきます。


引用: Pro Micro RP2040 Hookup Guide - SparkFun Learn

keymap.rb

動作確認用のkeymap.rbです。
GPIO7はロータリーエンコーダのプッシュスイッチをダイレクトに接続しています。

# Initialize a Keyboard
kbd = Keyboard.new

# Video-ManuForm with dactyl manuform flexible pcb
# SparkFun Pro Micro RP2040

# Initialize GPIO assign
kbd.init_pins(
  [ 2, 3, 4  ],     # row0, row1,... respectively
  [ 7 ,22, 26, 27, 28  ]    # col0, col1,... respectively
)

# CrowBoard YD-RP2040
# Video-ManuForm TEST 
kbd.add_layer :default, %i[
  KC_NO KC_Q    KC_W    KC_E    KC_R     
  KC_NO KC_A    KC_S    KC_D    KC_F  
  KC_1  KC_Z    KC_X    KC_C    KC_V  
]

encoder_1 = RotaryEncoder.new(5, 6)
encoder_1.clockwise do
  kbd.send_key :KC_UP
end
encoder_1.counterclockwise do
  kbd.send_key :KC_DOWN
end
kbd.append encoder_1

NEOPIX = 29

# Initialize RGB class with pin, underglow_size, backlight_size and is_rgbw.
rgb = RGB.new(
  NEOPIX ,   # pin number
  12,    # 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チカ動画

最初にRaspberry Pi PicoでSK6812MINI-Eのハンダ付けを確かめたときの動画です。*1

光らなくても


KEEB_PD

KEEB_PDという、毎週日曜19:00~21:00にいい感じのキーボードの写真をツイートするイベントに参加しています。

初めて一番ふぁぼをいただきました。



JLCPCBのお得な情報

新規ユーザの特典

現在、JLCPCBは新規ユーザは$54クーポンの特典があります。
加えてTwitterアカウントをフォロー+DM=$10クーポンの特典もあります。

20230220184842

twitter.com

*1:Twitterは動画置き場になっています

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