お知らせ:この記事はJLCPCBの提供でお送りしています。

みなさんこんにちは。今回は「タッチスライダーを作ってみる(1)」で設計したタッチスライダー基板が到着してから、テストプログラムを書いて動作確認をするまでの流れを紹介します。

今回の基板は7/17にオーダー、7/21に発送通知が来て、土日を挟んで7/25に到着しました。約1週間で設計した基板が届くのは本当に便利です。今回は部品実装まで頼んでいるので、製造に4日程度かかっていますが、基板製造のみであればもう少し早く届くかもしれません。

今回、JLCPCBで実装を依頼していたのはマイコンのATtiny1616とその隣に付いているコンデンサです。右端のコネクタは基板到着後、リフロー用のホットプレートを使って別途実装しました。ATtiny1616は脚が0.4mmピッチと細かいのですが、こういう狭ピッチ・小型部品を気軽に使って作品のサイズを小型化できるのも部品実装サービスを使うメリットだと思います。

そしてお次は動作確認用のプログラムの実装です。メジャーなマイコンベンダーは最近どこもやっているように、MicrochipはMCC(Microchip Code Configurator)というマイコンの周辺機能の初期設定などをGUIベースで行い、C言語のソースコードを自動で生成してくれるツールを提供しています。

今回はMCCでタッチスライダーとUARTの設定を行い、生成されたサンプルコードを見てプログラムを実装しました。といっても、タッチスライダーの検出処理はMicrochipが提供しているライブラリでほぼ完結しているので、別途書かないといけないのはmain()関数からタッチ検出用の関数を呼ぶ部分と、タッチ検出結果を適当に整形してUARTに流す部分だけです。もっとも、MCCの設定でprintf()関数の出力をUARTにリダイレクトするかどうか決められるので、UARTへの出力はprintf()を書くだけなんですが…

ただ、MCCにより自動生成されるソースコードにはサンプルコードだったり、ヘッダファイルに簡単な説明が付いていたりして、とりあえず動かすだけなら何とかなりそうなのですが、絶妙に不親切な部分もあり、いろいろやっていくと結局ソースコードを読むことになりそうだな…とも思いました。

例えば、UARTのドライバーは比較的親切でしたが、初期化関数だけ呼べばそれでUARTが使えるようになるのか、別途TX/RXの有効化関数を呼ばなければいけないのかはソースを読まないと分からない(正解は初期化関数だけ呼べばOK)、というような感じです。

タッチスライダーのドライバーはサンプルコードはあるものの、今度はヘッダファイルの説明がほぼなく、ソースを読んでみるとドライバーは結局のところQTouchという別のライブラリをひたすら呼んでいたりして、QTouchのユーザーガイドを読み込んでいく必要がありそうだと感じました。まあ、それでも何もないよりは遥かに便利だとは思いますが…

MPLAB X IDEでプログラムがビルドできたらプログラムを書き込みます。左下で光っているのは電源供給用のSeeed Studio XIAO RP2040です。現状は電源供給にしか使っていませんが、今後はタッチスライダーをRP2040からI2Cで制御できるようにしたいと考えています。また、今回は書き込みツールとしてMPLAB Snapを使いました。すんなり書き込み成功、と行きたかったのですが、実は最初はうまく書き込めず苦戦しました。

ATtiny1616は書き込みプロトコルとしてUPDIという方式を採用していて、1線で双方向の通信を行うようなプロトコルになっています。このプロトコルでは送信はオープンドレイン出力で行われるため、通信線にプルアップ抵抗が必要なようでした。ATtiny1616の内蔵プルアップだけで大丈夫なのでは?と思っていたのですが、外部に10kΩを追加したところ、すんなり書き込みができるようになりました。基板改版のチャンスがあったらこのプルアップ抵抗も基板上に載せたいと思います。

無事、検出したタッチ位置をUARTに垂れ流すプログラムを書き込めたので、Arduino IDEのSerial Plotterにタッチ位置を表示してみました。世間のタッチスライダー搭載機器では当たり前のようにできていることではあるのですが、実際に作ってみてグラフに表示すると結構楽しいです。

なお、グラフを見ると分かるように、やや階段状にタッチ検出位置が変化しています。この辺の補正だったり、I2Cへの対応、MCCが提供しているチューニング機能の活用は引き続きトライしていきたいと思います。

以上、今回はJLCPCBで製造したタッチスライダー基板にプログラムを書き込み動作確認するまでの流れを紹介しました。皆様もJLCPCBを使って基板を作って、タッチセンサーを活用した工作にトライしてみてください!

公開日:2023/07/30