11月25日発売 書籍『Arduinoと3Dプリンタでロボットを作ろう』を出させて頂きました!

【自作キーボード / 自作基板】小さくて可愛い!手のひらサイズのQMK対応ミニキーボード『TinyTap』の製作

自作キーボードの設計や製作にも少し慣れてきたので、ちょっと変わったコンセプトで作ってみたのが今回ご紹介する『TinyTap』くんです。
手のひらに収まるサイズ感、まるでおもちゃのような見た目のミニキーボードで結構気に入っています!

実はこのキーボード、製作したのは半年ほど前のこと。
電子工作の延長として昨年自作キーボードの製作も始めたのですが、当時は試してみたいことが多くそして製作した物の数も昨年は多かったため、なかなかブログとしてまとめる時間が取れなかったものです。

【自作キーボード】これまで製作した自作キーボード&マクロパッドまとめ!【2024年】

「ATmega32U4をオンボードで組み込んで、どこまでコンパクトに作れるか?」という少しチャレンジ的なことに加えて、当時気になっていたJLCPCBの3Dプリントサービス「JLC3DP」のマテリアルや造形精度を試す目的も兼ねて、ちょっとした遊び心で形にしたプロジェクトです。

その後も他の製作物でいくつか試作を重ねる中でJLC3DPの精度や質感等の傾向もだんだん分かってきて、最近では自作キーボードやPCB用のケース・パネルなどを作る手段として手軽に試せるためとても重宝しています。

JLCPCBで基板を作り、JLC3DPでエンクロージャーやケース、パネルといったものを作る・・・
この組み合わせ、ほんと便利なのでオススメです!

比較的安価に製作出来るうえ見た目にもこだわった綺麗な仕上がりになるので、プロトタイプはもちろん、実用品の製作にもピッタリです。
JLCPCB & JLC3DPのコンボ、最高です!

製作後少し時間が経ってしまったのですが、製作記事として簡単にまとめておきたいと思います!

手のひらサイズのQMK対応ミニキーボード『TinyTap』の製作!

今回製作した『TinyTap』は、ATmega32U4をオンボードで搭載したQMK/Vial対応のミニキーボードです。
手のひらにすっぽり収まるサイズ感に上手くまとめることができ、小さいながらも遊び心のある一台に仕上がったと思います。

基板の製造には、いつものようにJCPCB を利用しています。
そしてケース(パネル)の製作には、当時使い始めたばかりだったJLCPCBの3Dプリントサービス「JLC3DP」 を利用し製造してもらいました。

造形精度やマテリアルの質感、スプレー塗装の色味といったものを実際に試してみることも、本プロジェクトの目的のひとつでした。

この後いくつかのプロジェクトを通して経験を重ね、JLC3DPの特徴や扱い方も徐々に掴めてきました。
今では、自作キーボードや基板用のケース・パネルといったものの製作に欠かせない存在となり、最近ではかなりの頻度で利用&活用するようになり非常に重宝しています!

【JLC3DP】JLC3DPの素材を比較!小さなモデルでマテリアルサンプルを作っておくと発注の際に便利です!

CADのイメージ

それでは今回製作した本題となるミニキーボード『TinyTap』の話に戻します。

こちらは製作時に作成したCADデザインのイメージです。
キースイッチや基板、3Dプリントパネルを含めた全体のレイアウトを検証し、手のひらサイズに収まるよう各パーツの配置を調整していきました。

既存のマイコンボードを使うとこのサイズ感やデザインに収めるのが難しくなることから、MCU(マイコンチップ)を直接オンボードで搭載する構成にしています。

デザイン的にキースイッチ以外の他の電子パーツは全てトッププレートで隠したかったので、そうなると実際に基板に実装出来る面積が限られてしまうため配置や配線が難しくなる部分でした。

RP2040を使って組む事も考えたのですが、必要なパーツ数が多くなってしまうため今回ATmega32U4を使うことにしました。
Pro Microでも使われているマイコンチップですね。

ATmega32U4にはQFP-44とQFN-44と2つのパッケージがあるのですが、実装スペースが限られているので7mm×7mmと小さいQFN-44パッケージのものを使うとこにしました。

製作当時はまだ使ったことがなかったQMK/Vialファームウェアも最近よく使うようになったのですが、Vialファームウェアで使う場合ATmega32U4のフラッシュ容量では少し心もとないので、今製作するならRP2040で組むという選択肢の方が大きかったかな?とは思っています。

手のひらサイズに収めるためキースイッチはよく使われる6mm×6mmサイズのタクトスイッチを使うことを想定していましたが、KiCadでの基板設計に移った際にこのようなスイッチを使う方向性となりました。

自作基板製作でよく使っている柔らかく押しやすいタイプのタクトスイッチで、トッププレートの高さをこのスイッチの高さに合わせて設計する事により押しやすくなったと思います。

また基板スペースにRGB LED(アンダーグロー)を設置する余裕があったので、背面点灯用に6個搭載することにしました。

JLC3DPでプレートを作ることを前提に、スプレー塗装したトップケースとアンダーグローを活かすために8001透明レジンを使いボトムプレートを作成するイメージで製作を進めていきました。

ちなみに基板設計後、基板データ(STEP)を再度3D CADの方に持ってきて、パネルとのパーツ干渉部分の形状を整えていきました。

KiCadでは電子パーツの物理的サイズや形状が入ったコートヤードレイヤーがありますが、これを3D CAD側にインポートしてプレート切り抜き部分の形状を作ると便利です!

これでキースイッチ以外の全てのパーツをトッププレート直下に収めることが出来ました。

基板設計

3D CAD上でキースイッチの配置や基板形状が作れたので、KiCadでの基板設計に移りました。

全体の回路構成はこのようになりました。

ATmega32U4まわりの基本回路とスイッチマトリクスやLEDの接続といったシンプルな回路構成でパーツ点数も極力少なくしたのですが、デザイン的にキースイッチ以外の電子パーツは全てトッププレート内に収めたかったので、実際に配置出来るスペースが限られてしまいパーツの配置&配線は少し大変でした!

そしてキースイッチ部分の入力文字のシルクは、見やすくそして綺麗に映るようにソルダーマスクを抜き銅層を露出させることにしました。

基板製造時の表面仕上を通常のHASLではなくENIGを選択すれば、金メッキが露出した綺麗な文字表示になるイメージです!

こちらはENIGを選択し実際に製造された基板です。
イメージ通り、綺麗で見やすい金メッキが露出したシルクとなっています。

これで基板の設計は完了です!

JLCPCB / JLC3DPに発注

基板をJLCPCB、トップ&ボトムプレートをJLC3DPに発注しました。
JLC3DPはJLCPCBの関連サービスなので、同梱で発注すれば送料も1回分で済むのでお得です!

今回製作したミニキーボード『TinyTap』の基板データ(ガーバーファイル)とプレートデータ(STL)をダウンロード出来るようにしておきます。
何かの参考になればと思います。

JLCPCBおよびJLC3DPの発注に関しても少し見ておきます。

基板の発注

まず基板の発注です。
基板はJLCPCBに発注しました。

JLCPCBに発注する際の選択項目は特記すべきところはありませんが、余計なシルク文字がプリントされるのを避けるために[PCB上のマーク]は[マーク除去]を指定しておくのがいいと思います。(無料オプションです)

[PCBカラー(基板色)]はお好みで選択して下さい。

今回、[表面仕上げ]には[ENIG(金メッキ加工)]を選択しました。(オプション料金がかかります)
通常の[HASL]を選択しても特に問題ありませんが、ENIGでは金メッキが露出した金色文字、HASLでは通常の銀色文字な仕上がりとなります。(お好みで!)
この部分ですね!

料金は通常のHASLを選択した場合8.6ドル、ENIGを選択した場合はオプション料金が加算され基板製造料金は25ドルほどとなります。

あとパーツの実装方法にもよりますが、私はリフローによる実装を想定していたのでステンシルも一緒に発注しました。
はんだ付けにある程度慣れた方であれば手はんだでの実装も十分可能なパーツ構成となっていますが、ヒートガンやリフローによる実装環境があるならステンシルを使うと作業効率が良く綺麗に実装することが出来ます。

ステンシルも一緒に発注する場合、下にある[PCBと一緒に発注する]を選択します。
JLCPCBのステンシル発注では、サイズを指定しないと結構大きなサイズで届いてしまい実装の際に面倒となるのでサイズを指定しておいた方がいいと思います。

ボードサイズが170mm×70mmなので、200mm×100mmにサイズを指定して発注しました。(サイズ指定は無料で出来ます)

ステンシル料金7ドルが加算されます。

表面処理にHASLを選択した場合のトータルコストは15.6ドル、そしてENIGを選択した場合32.5ドルほどとなりました。

JLCPCBの基本的な基板やステンシルの発注方法に関しては、こちらの記事で詳しくまとめています。
あわせて見て頂ければと思います

【電子工作 / 基板製作】これから始める自作基板。JLCPCBでの基板発注ガイド(2025年版)
【JLCPCB】初めてステンシルを使ったリフローを行ってみました。JLCPCBでステンシルを発注する手順などを紹介!

プレートの発注

次に3Dプリントするプレートの発注です。
こちらはJLC3DPに発注しました。

トッププレートはレジンを使ったスプレー塗装を選択しました。

スプレー塗装は[9600 Resin]をベースに、[表面仕上げ]に[スプレー塗装]オプションを付けてカラーを選択します。

トップケースはスプレー塗装で、[Sky Blue]と[Ultramarine]の2パターン作ってみました。

JLC3DPのスプレー塗装オプションで選択できるカラーが製作当時より減ってしまったようです!
2025.06現在、スプレー塗装で選択できるカラーは以下5色になっているようです。

ボトムプレートは、アンダーグローLEDを活かすために透明な[8001 Resin]を選択しました。

トッププレート(スプレー塗装を選択した場合)が2.44ドル、ボトムプレート(8001 Resinを選択した場合)が10.88ドルとなりトータル13ドルほどとなりました。

基板と一緒に発注する場合は、それぞれをカートに入れて決済すれば送料も1回分で済むのでお得です!

JLC3DPの基本的な発注方法はこちらの記事でまとめています。
あわせて見て頂ければと思います。

【JLCPCB / JLC3DP】JLCPCBの3Dプリントサービス(JLC3DP)を利用してみました。発注手順などをご紹介!

またJLC3DPで扱われている材料(マテリアル)に関しては、こちらの記事が参考になると思います。

【JLC3DP】JLC3DPの素材を比較!小さなモデルでマテリアルサンプルを作っておくと発注の際に便利です!

基板 & プレートの到着

今回、基板と3Dプリントしたプレートを一緒に発注しました。

基板の製造は基本的に1~2日ほどで完了しますが、3Dプリントパーツの製造は時間がかかります。
選択するマテリアルによっても製造時間は大きく変わってきます。

今回の発注では配送方法にOCS Expressを選択し、発注から2週間ほどで手元に届きました。

スプレー塗装したトッププレートは、[Sky Blue]と[Ultramarine]の2パターン作りました。
綺麗な仕上がりです!

MEMO
JLC3DPのスプレー塗装ラインナップが少し変更されたようで、2025.06現在、「Ultramarine」は選べなくなっているようです!
本記事写真で装着しているプレートは「Ultramarine」でスプレー塗装したものです。

JLC3DPでのスプレー塗装では、基本的に表面に塗装が適応されます。
背面は隠れてしまうので問題ありませんが、このような仕上がりとなります。(背面はコーティング未処理)

パーツの実装

0603サイズのパーツをメインで使っていてステンシルも一緒に発注していたので、リフローで比較的簡単にパーツの実装は行えました。

ステンシルを使いはんだペーストを塗布します。

ATmega32U4(QFN-44)はリード線のピッチが0.5mmと小さいので少し難しいかもしれませんが、ブリッジ等が起こっても他のパーツとのクリアランスをある程度開けて設計しているので修正はしやすいと思います。

ちなみに、ステンシルを使ったはんだペーストの塗布ではいつもこれを使っています。

パーツの実装はMHP50というミニリフロー装置を使いました。
PD電源が使えるコンパクトなホットプレートとなり、自作基板の製作ではいつも愛用している非常に便利なリフロー装置です。

自作キーボードを製作されている方は、RP2040-Zeroといった端面スルーホールタイプのマイコンボードの取り付けや取り外しをやる機会が多いと思います。
1台持っていると便利で重宝するかと思います!

【電子工作 / PCB】ミニリフロー装置『Miniware MHP50』を使ってみる!加熱性能や安全設計はMHP30から全て引き継がれ使い勝手がさらに向上した便利なリフロー装置です

今回製作した基板はMHP50のホットプレートサイズ(50mm×50mm)を超えるサイズだったため、このような専用スタンドを使い実装を行いました。

MHP50を使ったリフローで、大きな基板にも対応することが出来るので便利です!

【電子工作 / PCB】Miniware MHP50で使えるスタンドの製作。大きな基板やいろんなリフロー方法に対応出来るので便利ですよ!

ファームウェアの書き込み

パーツの実装が出来たらファームウェアを書き込み動作テストを行います。

QMK/Vial対応ファームウェアは以下からダウンロードして下さい。

ファームウェアの書き込みはQMK Tookboxを使いました。

QMK Toolboxを立ち上げ[Open]から上記ダウンロードしたTinyTap用ファームウェア[tinytap_vial.hex]を選択し、MCUは[ATmega32U4]を選択しておきます。

本基板をPCと接続し基板表面にあるリセットスイッチを押すとQMK Tookboxで[Flash]ボタンが押せる状態になるので、これをクリックしてファームウェアを書き込みます。

ファームウェアの書き込みに成功するとこのような表示になると思います。

ファームウェアの書き込みが完了したら、ブラウザ板またはアプリ版のVialを開き、[Matrix tester]でキースイッチ動作が正しく行われるか?

またLEDの点灯に問題がないかの確認を行って下さい!
問題がなければ完了です。

DFUモード(ブートローダー)に入れない場合

ATmega32U4チップには工場出荷時にDFUブートローダーが書き込まれているとデータシートに記述があるのですが・・・
チップ出荷時の形態の違いなのかな?ブートローダーが書き込まれていない場合もあるようです。

本ボードではATmega32U4生チップを使用するのでブートローダーが書き込まれていない場合、USB経由でデバイスとして認識されないためファームウェアの書き込みモード(DFU)に入れず書き込みが行えない場合があります。
そのような場合は最初にISP経由でブートローダーを書き込んでおく必要があります!

ATmega32U4で使われるブートローダーはいくつか種類がありますが(基本どれを書き込んでも問題ありません)、QMKで使う場合Caterinaブートローダー(SparkFun Pro Micro用Caterinaブートローダー)を選ぶのが一般的ですが、Arduino Leonardo用などを使用しても特に問題ありません。

ArduinoやUSBaspなどのISP書き込み装置を用意し、本基板のICSP端子(パッド)に接続してブートローダーを書き込みます。

ブートローダーの書き込み方法に関して詳しくはこちらでは割愛しますが、以下記事の[ブートローダーの書き込み]が参考になるかと思います。

【電子工作 / PCB】ファミコンのコントローラーをUSBゲームパッド化する基板を作ってみました!

組み立て

動作確認が出来たらプレートを取り付けます。
プレートの固定は、M2×8mmビスM2 六角ナットを使います。(各4個)

以上で完成です。
お疲れ様でした!

背面は透明プレートで作っているので、LEDの点灯が綺麗に映えます!

なかなか可愛いミニキーボードに仕上がったと思います!

使用パーツ一覧

今回使用したパーツの一覧です。

パーツ定数入手先
コンデンサ
(0603)
C1/C2 22pF
C3/C6 100nF
C4 1μF
C5 4.7μF
C7/C8 15pF
AliExpress
ダイオード
(SOD-323)
D1~D57 1N4148AliExpress
ショットキーバリアダイオード
(SOD-123)
D58 1N5819WAliExpress
ヒューズ
(0805)
F1 500mAAliExpress
USB端子J1 Type-C(16P)AliExpress / 秋月電子
RGB LEDLED1~LED6 SK6812 MINI-EAliExpress / 秋月電子
抵抗
(0603)
R1/R6 10kΩ
R2/R2 5.1kΩ
R4/R5 22Ω
AliExpress
タクトスイッチSW1~SW57 6mm×6mm×5mm(SMD 2P)AliExpress
SW58 3mm×4mm×2.5mm(SMD 4P)AliExpress
MCUU1 ATmega32U4-MU(QFN-44)AliExpress
クリスタル
(3225)
Y1 16MHzAliExpress / 秋月電子
その他M2×8mmビス ×4
M2 六角ナット ×4
ーーー

最後に!

製作後少し時間が経ってしまったのですが、こうして振り返ってみると今回製作したTinyTapはコンパクトさや遊び心だけでなく、自分の中で試してみたかったことをたくさん詰め込んだ、思い入れのある製作となりました。

ATmega32U4を使ってどこまで小型化出来るかという挑戦や、当時使い始めたばかりだったJLC3DPを使ったケースの試作など、ひとつひとつの工程がちょっとした実験のようでとても楽しかったのを覚えています。

特に今回のように、基板はJLCPCB、ケースはJLC3DPという組み合わせでまとめるスタイルは、その後のプロジェクトでも重宝するようになり今ではすっかり定番の製作フローになっているような気がします

今後もこんなふうにちょっと変わったアイデアや、作ってみたくなった“ひらめき”を、気負わず気軽にカタチにしていけたらと思っています。
楽しい製作でした!

コメントを残す