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

【電子工作 / 自作基板】静電容量方式のタッチキーを搭載しマクロパッドとして使える名刺基板(TouchCard)の製作!

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

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

電子工作で自作基板の製作を始めて2年ほどが経ち、これまでいろいろと作ってきたのですが・・・
基板製作を始めた頃から一度は作ってみたいと考えていた名刺基板を製作してみました。

名刺基板としては、マイコンのブレークアウトボードのように使えるものやLEDを使いカラフルに装飾したもの、またカラーPCBを使ったものなどいくつかアイデアはあったのですが、製作するなら実用でもちゃんと使えるものを作ってみたいという思いがありこれまでアイデア止まりになっていました。

そして最近自作キーボードの製作も始めるようになり、ちょうど同時期にいくつか試作基板を作り試していた静電容量方式のタッチキーと組み合わせたマクロパッドをテスト的に製作したのですが、これがなかなか良くて・・・

これを応用して、カスタム形状のタッチパッドを作り名刺サイズの基板に収めマクロパッドとして実用でも使えるカードタイプの名刺基板として今回製作してみました。

物理スイッチを使わずPCBのみでマクロパッドとして機能する面白い名刺基板として仕上げることが出来たと思います。

【TouchCard】静電容量方式のタッチキーを搭載しマクロパッドとして使える名刺基板の製作!

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

基板(PCB)に作り込んだパッドに触れるだけでスイッチとして動作させることができ、これはアイデア次第で基板製作で面白く使えそうです!

パッド形状やサイズ、レジストの有無など数パターン試作基板を作り試してみてある程度動作確認も出来たので、QMKファームウェアで動作するハードウェア構成(RP2040を使いました)にタッチセンサー用のICと組み合わせて、物理スイッチを使わず触れるだけで動作するタッチキー搭載のミニマクロパッド(PockeTouch)を作ることが出来ました。

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

そして今回はこれを応用し、単純なパッド形状からアレンジしてカスタム形状のパッドを名刺サイズの基板に作り込み、タッチ操作でマクロパッドとして使える名刺基板を製作してみました。

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

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

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

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

タッチセンサーICを使いQMKファームウェアに対応させる

基板に作り込んだパッドやそれに相当するものを使ったタッチ判定だけなら、例えばESP32といったマイコンを使えば標準でタッチセンサー用のGPIOピンが用意されているので比較的簡単に実現することが出来ると思います。

今回製作したタッチキーを搭載した名刺基板ではマクロパッドとして実用で使えることを想定しています。
そのためアプリやブラウザ上でキーマップの変更が出来れば使い勝手が良さそうなので、自作キーボードでよく使われるQMKファームウェアで動くハードウェア構成にタッチセンサー用のICと組み合わせて製作することにしました。

CADで全体イメージを確認

まずCAD上でタッチキーのパッドサイズや形状、主要な電子パーツを配置した全体イメージを作り名刺サイズの基板(55mm×91mm)として設計出来るのか確認していきました。

QMKファームウェアが動くハードウェア構成だけならRP2040やATmega32U4を使った周辺パーツを実装するための面積はかなり余裕があるのですが、実際にはその大部分をタッチキーとして機能するパッドに占有されてしまいます。

これはパッドの形状やサイズ、またいくつパッドを作るかにより変わってくるため、パッドの専有面積と他の空いているスペースに実装できるハードウェア構成との兼ね合いとなり、なかなか難しい部分ではありました。

極力無駄なスペースを作らず大きなタッチキー用のパッドを作り、そして最小限のハードウェア実装スペースだけ確保できるものを考え最終的に上記のようなメディアプレーヤーの操作スイッチをイメージしたパッド形状にしました。

8つのタッチキー用のパッドを作ったので、4チャンネルのタッチセンサーICを2つ使いMCUはATmega32U4という構成にしました。
名刺サイズの基板の大部分をパッドが占有していますが、確保した残りのスペースにUSB端子を含め必要な電子パーツを実装できる計算です。

TTPシリーズのタッチセンサーIC TTP224を使用

静電容量方式のタッチキーで使えるタッチセンサー用のICチップは、試作段階でいくつか試してみました。
その代表的なもの?では、CAP12xxシリーズやTTPシリーズのチップが挙げられ、必要なタッチキーの数(チャンネル数)や通信インターフェース(I2CやSPI、スタンドアロンで使える)、ノイズ耐性などから選択することになります。

QMKに対応させるには出力形式がI2CやSPIタイプのものでも可能だと思いますがQMK側でカスタムマトリクスを作るなどソフトウェア的に面倒になることから、スタンドアロンで使えるタイプのチップとしてTTPシリーズのタッチセンサーICを使うことにしました。

TTPシリーズのタッチセンサーICには、TTP223やTTP224、TTP229などセンサーの数や通信方式によりいくつか種類があります。
前回製作した6つのタッチキーを搭載したマクロパッド「PockeTouch」ではシングルチャンネルのTTP223を6つ使いました。

今回製作する名刺基板では実装スペースが限られ使い勝手からパッド周辺にパーツを配置するのを避けるために、マルチチャンネルのチップを使うことにしました。

TTPシリーズでは8チャンネルのTTP226を使えば1チップで実現出来るのですがチップの入手性が悪そうなので、16チャンネルのTTP229を使う事を考えテストしていました。

しかしTTP229では独自の通信方式が使われているようでQMKへのソフトウェア的な対応が面倒になることから却下し、スタンドアロンで動作しダイレクトにスイッチ判定を出力できる4チャンネルのTTP224を2つ使いMCUはATmega32U4を使うことにしました。

これで想定している実装スペースに収めることが出来そうで、QMKファームウェアの作成も楽に出来そうです!

TTPシリーズのタッチセンサー用のチップについては別記事で詳しく書こうと思いますが、電子工作の実験用モジュールとしても多数販売されていて簡単に静電容量式のタッチスイッチを試すことが出来るので面白いと思います。

回路構成

基板やパッド形状、ハードウェアの構成が決まったので基板の設計に移ります。
全体の回路構成は、ATmega32U4まわりの回路に各パッド(スイッチ)と繋がったタッチセンサーIC TTP224を接続したシンプルな構成で実現することが出来ました。

ちなみにATmega32U4の回路設計に関してはこちらの記事もあわせて見て頂ければと思います。

【電子工作 / PCB】ATmega32U4の全GPIO端子が使えるブレークアウトボードの製作!自作キーボードのテスト環境にも便利に使えます。

QMKファームウェアではキーマトリクス接続によるスイッチ判定の他に個別スイッチを1つのGPIOピンに割り当てるダイレクトピン機能が使えます。

各パッドに接続したTTP224によりスイッチ判定を行い、ATmega32U4に割り当てた各GPIOピンにダイレクトに渡すシンプルな回路構成になっています。

そしてTTP224には起動時(電源投入時)の各モードピンの状態により複数の動作モードが用意されています。

まず[TOG]ピンをオープンにし出力をダイレクトモードにしています。
またQMKファームウェアではLOWレベルになるとスイッチが押されたと判定されるので、TTP224の[AHLB]をHIGH(5V)にしてアクティブローで出力するモードにしています。
詳しくは別記事で書きたいと思います。

以上で指がパッドに触れた時の静電容量の変化をTTP224で読み取り、押された状態ではLOWレベルの信号をATmega32U4にダイレクトに渡すようにしています。
回路構成そしてQMKファームウェアもシンプルに作ることが出来ました。

あとタッチパッドに接続したTTP224の入力ピン(TP0~TP3)に接続したコンデンサの容量により感度調整ができ、33pFの定数としています。
0~50pFくらいの間で調整が出来ます。
容量を小さくすればタッチキーの感度を上げることが出来ます。

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

参考 TTP224 DatasheetSunrom Electronics

基板設計

前回製作したマクロパッドではシンプルな形状のパッドを使ったのですが、今回は形状やサイズを変えたカスタムパッドを作りました。
テスト基板ではこのサイズのパッドでも上手く動作してくれましたが、実基板ではどうなるか・・・?

パッド部分のレジストの有無による感度等のテストもしていたので、文字部分のみレジストを除きパッドのメッキが露出するようにしてみました。
表面仕上にENIGを選択し金メッキ加工されたパッドが見えると仕上がりも綺麗になりそうです。

前回の記事でも書いたのですが、タッチセンサー用のパッドの作成には感度やノイズ対策などでいろんなノウハウがあるようです。
基本的なことですが以下のことに注意しながら基板を設計していきました。

①パッド周辺をGNDシールドで覆う

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

②パッド直下のベタGNDは避ける

タッチスイッチ(パッド)がある基板背面には可能であれば広いGNDプレーンを配置するのが望ましいようで、ただしパッド直下に配置すると感度が低下するためベタパターンは避けています。

③パッドの配線はGNDシールドで覆う

パッドへの配線が長くなる場合、配線両端にGNDシールドを取りノイズ対策をするのが望ましいようです。

静電容量式のタッチ用パッドを作る際には他にも信号の安定性を確保するためにPCBの表面仕上にはENIG(金メッキ加工)が推奨されていたり、三角形といった角が尖った形状のパッドは避ける・・・など、微弱な静電容量の変化を読み取るわけなので多くのノイズ対策や基板設計時のテクニックがあるようです。

これはブレッドボードなどでのテストでは再現しにくく実際に製作する基板で試してみないと分からない部分が多いので、今後いくつか作って試してみようかと考えています。

このようなスライダー形状のパッドなど面白く使えそうなんですよねー!(参考サイト)

名刺サイズの基板に可能な限り取れる大きなパッドを作り込み実装するパーツを極力小さく左上にまとめることが出来たので、実際にマクロパッドとして使う際に押しやすいレイアウトになったと思います。

名刺基板なので背面はSNSアカウントやブログリンクなどのシルクを入れました。

これも金メッキを露出させて作れればさらにカッコ良くなると思うのですが、このサイズの基板にタッチパッドを作ると大きなベタを作ることが出来ないのでシルクにしています。

JLCPCBに基板を発注

基板

JLCPCBに発注し基板を製造してもらいました。
表面処理に通常のHASLを使えば送料を入れても500円程度で製作することが出来ます。

製作した基板データ(ガーバーファイル)をダウンロード出来るようにしておきます。
基板背面のシルクは私のSNSアカウント等が入っていますが・・・
何かの参考になればと思います。

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

私は選択を間違えてしまい意図しない場所に基板発注番号が入ってしまいました。
目立たない位置で良かったのですが、[マーク除去]を選択して不要なシルクプリントが入らないようにしましょう!

また[表面仕上げ]は通常の[HASL]を選択しても特に問題ありませんが(メッキがシルバーになります)、[ENIG]を選択(オプション料金16ドル)するとパッド部分に露出させた文字や記号が金メッキ加工され非常に綺麗な基板になります。

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

【電子工作】はじめての基板製作!JLCPCBさんに基板を発注してみました。ユーザー登録・データ納品・基板到着までの一連の流れをご紹介!

ステンシル(メタルマスク)

パーツの実装方法にもよりますが、今回私はリフローでのパーツ実装を想定していたのでステンシルも一緒に発注しました。

基板と一緒にステンシルも発注する場合、[PCBと一緒に発注する]を選択します。
実装面は表面(トップ)になります。

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

基板単体なら基板製造料金2ドルと送料(OCS NEP)2ドルの合計4ドル、ステンシルも発注するとステンシル料金7ドルと送料(OCS Express)約10ドルの合計19ドルほどとなります。(HASLを選択した場合です)

JLCPCBのステンシルの発注方法はこちらの記事でまとめています。
あわせて見て頂ければと思います。

【JLCPCB】初めてステンシルを使ったリフローを行ってみました。JLCPCBでステンシルを発注する手順などを紹介!

パーツの実装

同梱で発注した他の基板や3Dプリントパーツがあったので配送方法にOCS Expressを選択し発注から12日ほどで基板が手元に届きました。
基板のみの発注(ステンシルを含め)だけならOCS ExpressまたはOCS NEPを利用して発注から8日ほどで届くと思います。

ENIGの表面仕上は非常に綺麗です!
名刺基板としてパッド部分のこの金メッキの露出は良いワンポイントのアクセントになり気に入りました!

そしてパーツの実装です。
ステンシルを使ったリフローももう慣れたものです。

パッドにはんだペーストを綺麗に塗布することが出来ました。
理想的な盛り付けです!

最近便利なヘラを見つけました。
はんだペーストを伸ばしやすいので便利です。

パーツの実装はMHP50を使いました。
自作基板の製作でいつも愛用している便利なミニリフロー装置です。

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

ブリッジすることなく一発OK、綺麗に実装することが出来ました。

最近表面仕上げにENIGを選択して発注することが多いのですが、HASLに比べてパッド表面に凹凸がなく平らなのでブリッジ等のトラブルが起きにくいような気がします。
・・・ある程度リフローによる実装に慣れてきたからかな?

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

パーツの実装が完了したら最後にファームウェアの書き込みです。

ファームウェアは以下からダウンロードして下さい。
ダウンロードしたzipファイルには、QMKファームウェア本体[touchcard_via.hex]とjsonファイル[TouchCard.json]も含まれているのでREMAPを使いキーマップの変更も出来ます。

上記ダウンロードしたzipファイルを解答してファームウェア本体[touchcard_via.hex]を書き込みます。
CLIコマンドで書き込むことも出来ますが、こちらではQMK Toolboxを使って書き込みを行ってみます。

参考 QMK Toolbox ダウンロードQMK Toolbox

QMK Toolboxを開き[MCU]に[ATmega32U4]、そして上記ダウンロードしたファームウェアファイルを選択します。

本基板をPCと接続し基板の[RESET]スイッチを押すとDFUモードに入り[Flash]ボタンを押せる状態になるのでクリックして書き込みます。

MEMO
ATmega32U4チップは工場出荷時にDFUブートローダーが書き込まれています。(書き込まれていないものもあるようですが!)

ファームウェアの書き込みが完了したらこのように表示されると思います。
以上で完了です!

初期状態ではYouTubeのショートカットキーを割り当てています。

タッチキーの動作に問題がないかテストして完了です!

キーマップを変更したい場合は、上記ダウンロードしたファイルに含まれるjsonファイルを使いREMAPで行って下さい。

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

ATmega32U4チップには工場出荷時にDFUブートローダーが書き込まれているとデータシートに記述があるのですが・・・

これまでATmega32U4は結構な数使っているのですが、ブートローダーが書き込まれていないチップもあるようです。
そのためリセットスイッチを押してもファームウェアを書き込むことが出来ないことが稀に起こります。

ATmega32U4で使われるブートローダーはSparkFun Pro microやArduino Leonardoに対応したものなど4種類ほどあるのですが、それぞれリセットの挙動が少し異なります。

基本的にDFUブートローダーではリセットスイッチを1回押すとブートローダーが立ち上がるのですが、本基板で1回または2回リセットスイッチを押してもブートローダーが立ち上がらずファームウェアの書き込みが出来ない場合は、基板背面のICSP端子を使いブートローダーを書き込む必要があります。

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

Arduino Leonardo用のブートローダーを書き込んでおけば問題ありません。

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

今回使用したパーツ一覧

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

パーツ定数入手先
コンデンサ
(0603)
C1/C2 22pF
C3/C4 15pF
C5/C8/C17/C18 100nF
C6 1μF
C7 4.7μF
C9/C10/C11/C12/C13/C14/C15/C16 ※33pF
AliExpress
ダイオードD1 1N5819WS(SOD-323)AliExpress
端子J1 Type-C端子AliExpress / 秋月電子
LED
(0603)
LED1(電源ランプ)AliExpress
抵抗
(0603)
R1/R7 10kΩ
R2/R3 5.1kΩ
R4/R5 22Ω
R6 4.7kΩ
AliExpress
タクトスイッチ
(SMD)
SW1 3mm×4mm×2.5mm(4P)AliExpress
MCUU1 ATmega32U4(QFN)AliExpress
タッチセンサーICU2/U3 TTP224N-BSB(SSOP-16)AliExpress
クリスタル
(3225)
Y1 16MHzAliExpress
MEMO
コンデンサ(C9~C16)は感度を調整するためのコンデンサとなります。
さらに感度を上げたい(または下げたい)場合は0~50pFの範囲で定数を変えてみて下さい!
容量が大きくなるほど感度は下がります。

最後に!

名刺基板1号機として満足出来るものが出来ました!(2号があるか分かりませんが)
物理スイッチを使わず基板に作ったパッドに触れるだけでタッチキーのような操作が出来るのは面白いですね。

これまでの自作基板の製作でこのようなタッチキーが使えたら便利なのに、と思うことが何度かあったことからテスト基板をいくつか経て実用で使えるものを製作してみました。
今後の基板製作で活かせそうです!

そして感度調整は難しく、今回製作した名刺基板で言うと感度を上げるとタッチした時の反応は良くなりますがパッド部分の基板背面に指を触れると反応してしまう・・・
逆に感度を下げすぎるとスイッチ動作が鈍くなり・・・
このあたりの調整は基板厚を大きくしたり、パッド背面に数mm程度のプレートを使ったりとまだまだ検証する余地がありそうです。

基板製作でパッドを作るスペースを確保することが出来れば、ちょっとしたスペースにタッチスイッチを実装することが可能なのでアイデア次第では面白くそして便利に使えそうだと思います。

コメントを残す