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

【電子工作 / 自作基板】静電容量式タッチキー搭載の自作マクロパッド『PockeTouch』の製作!

こちらの記事の追記となります。

【電子工作 / PCB】静電容量タッチ式スイッチを使ったミニマクロパッドや名刺基板の製作を考えています!

昨年から電子工作の延長線として自作キーボードやマクロパッドを製作するようになりました。
自分で設計し製作するということは自身の手のサイズや使う環境などに合わせて設計でき使いやすいものが作れるということで、自作キーボード製作において一番楽しい部分だと感じています。

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

いくつか自分で設計したものを製作してみてQMKファームウェアのことなど自作キーボード製作における初歩的なことが理解出来てきたので、少し電子工作的な要素を取り入れ静電容量方式のタッチキーを搭載したマクロパッドを製作してみました。

物理スイッチを使わず基板(PCB)にスイッチの役割を果たすパッドを作り込み、手で触れた(または近づけた)際の静電容量の変化を検出しスイッチとして動作させるというものです。

物理スイッチを使わないので基本的に基板の厚みのみで動作する薄いキーボードやマクロパッドなどを製作することが出来ます。
触れるだけでスイッチ操作が出来る・・・使ってみるとちょっと不思議な感覚になるのも面白いと感じました!

自作基板の製作で静電容量方式のタッチスイッチは以前から興味を持っておりいくつか試作基板を作ってテストしていたので、今回QMKファームウェアで動作するハードウェア構成でシンプルなマクロパッドをテスト的に製作してみました。

静電容量式タッチキー搭載の自作マクロパッド『PockeTouch』の製作!

自作基板製作の試みとして静電容量方式のタッチキーを搭載した基板製作には前々から興味をもっており、いくつか試作基板を製作しテストしていました。

触れるだけでスイッチとして動作させることが出来る・・・アイデア次第ではPCB製作で面白く使えそうです!
任意のパッド形状を作ることも出来れば製作の自由度はさらに上がります。

こちらは今回製作したマクロパッドが上手く機能してくれたので、パッド形状をアレンジして製作したタッチ操作でマクロパッドとして使える名刺基板です。

カスタム形状の大きなパッドを使ったものでも上手く動作するものを製作することが出来ました。

詳細は別記事で詳しくご紹介したいと思いますが、このような任意のカスタム形状のパッドで動作させることが出来ればこれも今後PCB製作で面白く使えそうです!

静電容量方式のタッチキーとは?

静電容量方式のタッチキー(スイッチ)とは、指とスイッチ(パッド)間に発生する微弱な静電容量の変化からスイッチが押されたか否かの判定を行うといったものです。

基板にスイッチの役割をする電極(パッド)を作り、人の指がパッドに触れる(近づく)と指先とパッド間がコンデンサのように働き静電容量が発生することから、この静電容量の変化を検知してスイッチをON/OFFさせるといったものです。(参考:Microchip Technology)

そのため基板に物理スイッチを設置することなくタッチスイッチのように動作させることが出来ます。

タッチセンサーICを使うとQMKファームウェアにも簡単に対応が可能

基板に作り込んだパッドに指を触れた際に発生する微弱な静電容量の変化を読み取るわけですが、タッチキーの判定だけならESP32といったマイコンを使えば標準でタッチセンサー用のGPIOピンが用意されているので比較的簡単に実現出来るのですが・・・

今回製作したマクロパッドではQMKファームウェアに対応したハードウェア構成にしたかったので、タッチセンサー専用のICチップとRP2040という構成にしました。

タッチセンサー用のICチップは静電容量方式や抵抗膜方式など様々な種類のものが存在するようです。
その代表的?なものでは、CAP12xxシリーズやTTPシリーズがあり、必要なタッチキーの数(チャンネル数)や通信インターフェース(I2CやSPI、スタンドアロンで使える)、ノイズ耐性などから選択します。

いくつかチップを試してみて、シンプルに使えるTTPシリーズのタッチセンサーICを今回使うことにしました。

TTPシリーズのタッチセンサーIC TTP223

TTPシリーズのタッチセンサーICは、TTP223やTTP224、TTP229などセンサーの数や通信方式によりいくつか種類があります。
電子工作の実験用モジュールとしても多数販売されているので、試してみるのも面白いと思います。

ハード&ソフト(QMK)の組み合わせでいくつか試していたのですが、チャンネル数(センサーの数)が多いチップを使えば基板の実装スペースは少なくて済むのですが・・・

センサー出力をQMKに対応させるためのソフトウェア作成が面倒となり今回製作したマクロパッドは6キーのみの構成だったので、シンプルに各スイッチに1チャンネルのセンサーICを使うことにしました。(名刺基板の方では4チャンネルICを2つ使い8キー構成にしています)

スタンドアロンで動作しダイレクトにスイッチ判定を出力できる、また出力モードにアクティブLOW(またはHIGH)の選択やトグル/モーメンタリ動作を選択出来るチップとしてTTP223を使うことにしました。

TTPシリーズのタッチセンサーICに関しては別記事で詳しく書こうと思います。

CADのイメージ

QMKファームウェアで動作するようにMCU(マイコンチップ)はRP2040を使った構成で進めていきました。
RP2040を使った回路設計ではフラッシュやクリスタル、またLDOやバイパスコンデンサなど比較的多くのパーツが必要になります。

そしてタッチキー用のパッドを基板に作り込むのに大きく基板面積を取られてしまうため、基板サイズに対して実際にパーツを実装出来る面積はかなり少なくなってしまいます。
コンパクトなサイズ感で作りたかったので、まず3D CADで主要な電子パーツを配置しパッドサイズを考慮してボード形状やサイズを決めました。

また基板単体だとパーツの突起でマクロパッドとしては使いにくくなることから、USB端子の高さに合わせ最薄で作れるボトムプレートも取り付けることにしました。

基板 & 回路設計

回路設計

回路構成はRP2040まわりの回路に各スイッチ(タッチパッド)と繋がったタッチセンサーIC(TTP223)を接続したシンプルな構成で実現出来ました。

QMKファームウェアはキーマトリクスの接続以外に個別キーを1つのGPIOピンに割り当てるダイレクトピン機能が使えます。
各パッドに接続したTTP223のキー判定の出力をRP2040に割り当てた各GPIOピンにダイレクトに渡すようにしています。

その際にQMKファームウェアではLOWレベルでスイッチが押されたと判定されるので、TTP223の[AHLB]ピンを起動時にHIGHレベル(3.3V)にプルアップして(プルアップ抵抗は不要)タッチセンサーが反応したら出力端子(Qピン)をLOWで出力するアクティブロー動作にしています。

またタッチパッドに接続した入力ピン(Iピン)に接続するコンデンサの容量により感度調整が出来るのですが、感度があまり高すぎると近接するキーと誤判定されることがあるので33PFのコンデンサを接続し感度を少し調整(下げる)しています。

詳しくはTTP223データシートを参照して下さい!

参考 TTP223 DatasheetSeed Studio

基板設計

後に製作した名刺基板の方ではカスタム形状のタッチパッドを作ったのですが、今回製作したマクロパッドではシンプルな正方形の形状で作っています。

タッチセンサー用のパッド作成には感度やノイズ対策などでいろんなノウハウがあるようです。

基本的な事で言うと、感度を向上させノイズを低減させるためにパッド周辺に適切なクリアランスを取りGNDシールドを配置します。(ハッチングパターンが推奨されているようです)

タッチセンサーが搭載されたPCBの裏面には可能であれば広いGNDプレーンを配置、ただしパッド直下に配置すると感度が低下するため配置は避ける。
またパッドへの配線が長くなる場合、配線両端にGNDシールドを取りるなどノイズ対策や感度に関しての設計項目が多く定められているようです。

信号の安定性を確保するためにPCBの表面仕上にはENIG(金メッキ加工)が推奨されていたり、パッドのソルダーレジストを入れるか否か?など・・・
これは実際に製作するハード構成やパーツの配置、またパッド形状やサイズなどで変わってくるので実際に製作してみないと分かりにくい部分ではあります。

いくつかテスト基板を作りGNDベタの配置やレジストの有無、パッドサイズや形状などテストしていたので問題ないだろう・・・ということでこのような基板アートワークになりました。

ボトムプレートの設計

静電容量式のタッチキーを使った基板製作では感度調整が難しくなります。
例えば感度が高すぎると近接するキーの誤判定やタッチパッド背面に手が触れただけで反応してしまいます。
また感度を下げすぎるとタッチした時の反応が当然悪くなってしまいます。

今回製作した基板はマクロパッドとして使うものなので感度を保ちつつ背面(パーツ実装面)はフラットに使いたかったのでPCBに密着させて取り付けるボトムプレートも作りました。
ボトムプレートを取り付けてもこの薄さで背面からの誤動作を防げ感度を上げることが出来ます。

このようなPCBに密着させて取り付けるプレートやケースをこれまで何度か作ったことがあるのですが、パーツ干渉部分の切り抜きの作成はCADで結構手間がかかっていました・・・が、凄く便利な方法を見つけました!

KiCadにはコートヤードレイヤーというパーツ占有領域を定義するレイヤーがあります。
パーツ間の干渉確認で役立つレイヤーですね!

適切なクリアランスも取られているので、このコートヤードレイヤーを3D CADにインポートすればパーツ干渉部分の切り抜きは非常に楽に出来ました。(高さ方向は各パーツのCADモデルを確認して調整する必要がありますが)

3Dプリンタでの試作を経て、完成プレートはJLC3DPのスプレー塗装レジンで作りました。

JLCPCB / JLC3DPに基板と3Dプリントパーツを発注

基板をJLCPCB、ボトムプレートはJLC3DPに発注しました。

製作した基板データ(ガーバーファイル)とボトムプレート(STL)をダウンロード出来るようにしておきます。
興味ある方は製作してみて下さい。

基板の発注

基板の発注はJLCPCBを使いました。
このサイズの基板であれば送料を入れてもワンコイン程度で製造してもらうことが出来ます。

JLCPCBに発注する際の発注項目の選択は特記すべきところはありませんが、[PCB上のマーク]は[マーク除去]を選択しておくと余計なシルクプリントが入らないのでいいと思います。(無料です)
PCBカラーはお好みで!

MEMO
私は間違って項目を選択してしまい、想定外の位置に基板製造番号が入ってしまいました。
任意の位置に入ってしまうので[マーク除去]を選択しておきましょうね!

MEMO
今回発注した基板は表面処理にENIG(金メッキ加工)を選択しました。(オプション料金がかかります)
通常のHASLで発注しても問題ありません。

リフローによる実装を想定していたのでステンシルも一緒に発注しました。(オプション料金がかかります)
実装面は裏面(ボトム側)になります。

JLCPCBではステンシルサイズを指定しないと結構大きなサイズで届いてしまいます。
基板サイズが86.8mm×45.1mmなのでステンシルサイズを100mm×100mmに指定して発注しました。(サイズ指定は無料で出来ます)

トータルコストは、基板2ドル・ステンシル7ドル・送料8.16ドル(OCS Express)の約17ドルとなりました。

ステンシルが必要なければ、基板2ドルと送料2ドル(OCS NEPを選択出来ます)の約4ドルほどで製作することが出来ます。

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

【電子工作】はじめての基板製作!JLCPCBさんに基板を発注してみました。ユーザー登録・データ納品・基板到着までの一連の流れをご紹介!
【JLCPCB】初めてステンシルを使ったリフローを行ってみました。JLCPCBでステンシルを発注する手順などを紹介!

3Dプリントパーツの発注

ボトムプレートはJLCPCBの3DプリントサービスとなるJLC3DPに発注しました。
ボトムプレートは2種類作ってみました。

まずスプレー塗装したプレートです。
[素材]に[LEDO 6060レジン]を選択し表面仕上に[スプレー塗装]オプションを付け、あとはお好みのカラーを選択するだけです。
今回[光沢][シルバー]で仕上げてもらいました。
料金は3.77ドルでした。

非常に綺麗なプレートができ、これだけで完成度がグッと上がった気がします!

また透明プレートも作ってみました。
[8001 レジン]を選択し[表面仕上げ]を選択するとアクリルのようなクリアなプレートが作れます。
ちなみにこちらは4.42ドルでした。

メカ部分が透けて見える透明レジンで作ったプレートもいいですね!
気分によって着せ替えて使っていこうと思います。

ちなみにJLC3DPのスプレー塗装サービスは2025年1月現在、以下カラーが利用できます。
JLC3DPはJLCPCBの基板と同梱で発注&発送が出来るので、まとめて発注すると送料も1回分で発注することが出来ます。

JLC3DPの基本的な発注方法やスプレー塗装サービスの利用方法などはこちらの記事を参考にして下さい。

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

パーツの実装

発注から12日ほどで手元に基板とプレートが届きました。
基板単体なら一週間前後で届くのですが、3Dプリントパーツは製造に時間がかかります。

慣れていれば手はんだでも十分実装可能なパーツ選定となっていますが、今回はステンシルも発注していたのでリフローによる実装で行いました。

MHP50を使って実装しました。
自作基板の製作では毎回愛用しているオススメのミニリフロー装置です。

実装は一発OK、綺麗にパーツ実装出来ました!

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

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

パーツの実装が完了したらファームウェアの書き込みです。
ファームウェアは以下からダウンロードして下さい。
ダウンロードファイルにはjsonファイルも含まれているので、REMAPを使いキーマップの変更も出来ます。

上記ダウンロードしたzipファイルを解凍してファームウェア本体[pocketouch_via.uf2]を書き込みます。
書き込み手順は通常の書き込み方法と同じです。

本ボードをPCと接続し[BOOT]スイッチを押した状態で[RESET]スイッチを押しRP2040をDFUモードで立ち上げます。

PC上にUSBマスストレージドライブとして表示されるので、ファームウェア[pocketouch_via.uf2]をドラッグ&ドロップして書き込めば完了です。

初期状態のキーマップは1‐6までの数字を割り当てています。
テキストエディタ等を開きパッド部分に指を触れて数字が入力されればOKです。

あとはREMAPを使いお好みのキーマップに変更して下さい。

jsonファイルのインポートを要求されるので、ダウンロードしたファイルに含まれる[PokeTouch.json]ファイルをドラッグ&ドロップして下さい。

お好みでキーマップを配置してお使い下さい!

ボトムケースの取り付け

ファームウェアを書き込み動作に問題がなければ、ボトムプレートを取り付けて完成です!
プレートにM2×3mm(OD3.5mm)のインサートナットを取り付けます。

はんだゴテに取り付けるインサートナット専用チップがあると便利です。(下記リンクはFX600用です)

基板との取り付けはM2×4mmビスを使って下さい。

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

使用パーツ一覧

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

パーツ定数入手先
コンデンサ(6003)C1/C2/C3/C9/C10/C11 ※33pF
C4/C5/C6 100nF
C12/C13/C14/C15 100nF
C18/C19/C20/C21/C22/C23/C24/C25/C26 100nF
C7/C8 1μF
C16/C17 15pF
AliExpress
端子J1 Type-CコネクタAliExpress / 秋月電子
抵抗(0603)R1/R2 5.1kΩ
R4/R6 1kΩ
R5/R9 10kΩ
R7/R8 27Ω
AliExpress
スイッチSW1/SW2 タクトスイッチ(4P)3×4mm(SMD)AliExpress
LDOU1 ME6211A33PG-NAliExpress
タッチセンサICU2/U3/U4/U5/U6/U7 TTP223-BA6AliExpress
フラッシュU8 W25Q128JVSAliExpress
ESDU9 USBLC6-2SC6AliExpress
MCURP2040AliExpress / 秋月電子
クリスタル(3225)Y1 12MHzAliExpress
ビス&インサートナットインサートナット M2×3mm(OD3.5mm) 4個
ビス M2×4mm 4本
AliExpress
MEMO
コンデンサ(C1/C2/C3/C9/C10/C11)はタッチ感度を調整するためのコンデンサとなります。
動作テストで定数を決めましたが、さらに感度を上げたい(または下げたい)場合は0~50pFくらいの範囲で定数を変えてみて下さい。
容量が大きくなるほど感度は下がります!

マクロパッドとして使える名刺基板の製作

PCBに作り込むタッチキー用のパッドは一般的に円形や四角形のものがよく使われますが、スライダー形状といったカスタム形状のパッドが作れるとさらに便利に使えそうです。

カスタムパッドを作る場合、パッドサイズや形状により感度が変わり隣接するパッドとの誤検知も増えたりと実際に作ってテストしてみないと分からない部分も多いのですが・・・

設計時パッドサイズが大きくなることから実際の挙動がどうなるか心配だったのですが、こちらの名刺基板はうまく動作してくれました。

後日、別記事で詳しくご紹介出来ればと思います。

最後に!

自作基板の製作で静電容量式のタッチスイッチは面白そうで興味があったことからテスト基板をいくつか作り検証していたのですが、ちょうど自作キーボードの世界にも足を踏み入れたので物理スイッチを使わないタッチキータイプのマクロパッドを製作してみました。

自作キーボードとしては今後LEDの点灯をONにしたりレイヤーを切り替えたり、そのようなちょっとした動作で基板の特定の部分に指を触れると操作することが出来る・・・そのような使い方も面白く便利に使えそうだと思います。

また自作基板の製作ではパッドのスペースを確保できれば物理スイッチを使う必要がなく、これもまたアイデア次第では便利に使えるかなと思ったりもしています。

1 COMMENT

コメントを残す