前回はESP32独特な「任意波形」を生成できるRMTを使ってみました。どの端子が使えるんだか記述が見当たらないので試行錯誤。今回は同じESP32ユニーク周辺でも使える端子がバッチリ記述されてます。タッチセンサ機能です。しかしターゲットのESP32 DevKitC機にはタッチセンサは不在。どうする?
※「MicroPython的午睡」投稿順 Indexはこちら
タッチセンサ
タッチセンサをMicroPythonから使用する方法については、いつもお世話になっております以下の日本語ページに書かれています。簡単?
MicroPythonからはお手軽に使えるタッチセンサですが、実際にタッチセンサをセンス(静電容量をパルス数に変換して計測)する方法については以下のEspressif社のページにくわしいです。容量センシングは結構奥深いデス。
なお、タッチセンサの構造などについては以下のページにいろいろ記述があって大変参考になります。
上記ページにタッチセンサの構造について記述がありますが、多くは基板表面にパターンを形成し、その静電容量変化を調べることを想定しているみたいです。
しかし、静電容量をセンスする電極くらい自前で作れるんじゃね、ということで作ってみました。所要時間1,2分、費用?円。手順は以下のごとし(多分、アルミホイルだけでも大丈夫なのだけれども、直ぐに破けてしまうのでフィルム貼ると、絶縁&誘電体兼用で強度も丈夫になります。)
-
- アルミホイルを適当な長さ(数cm)とりだす。
- アルミホイルの片面にセロハンテープを接着。
- セロハンテープを接着した部分を切り取る
- 切り取ったアルミホイルのセロハンテープを貼っていない面にセロハンテープを接着、そのときワニ口クリップでくわえられる程度の部分をアルミのまま残しておく
後はアルミむき出しの部分をワニ口で咥え、配線の先をタッチセンス可能な端子に接続するだけです。今回は4番端子を使用。こんな感じ。
タッチセンサ実験用のMicroPythonコード
ほぼほぼクイックリファレンス通りです。超簡単。
import machine, time def main(): print("ESP32, TouchPad test") tpad = machine.TouchPad(machine.Pin(4)) while True: print("Touch:", tpad.read()) time.sleep(2) if __name__ == "__main__": main()じ
実機実行結果
まあタッチセンスできてますな。環境次第だけれども。