MicroPython的午睡(108) ESP32版、「自前制作」タッチセンサをセンス

Joseph Halfmoon

前回はESP32独特な「任意波形」を生成できるRMTを使ってみました。どの端子が使えるんだか記述が見当たらないので試行錯誤。今回は同じESP32ユニーク周辺でも使える端子がバッチリ記述されてます。タッチセンサ機能です。しかしターゲットのESP32 DevKitC機にはタッチセンサは不在。どうする?

※「MicroPython的午睡」投稿順 Indexはこちら

タッチセンサ

タッチセンサをMicroPythonから使用する方法については、いつもお世話になっております以下の日本語ページに書かれています。簡単?

ESP32 用クイックリファレンス

MicroPythonからはお手軽に使えるタッチセンサですが、実際にタッチセンサをセンス(静電容量をパルス数に変換して計測)する方法については以下のEspressif社のページにくわしいです。容量センシングは結構奥深いデス。

Touch Sensor

なお、タッチセンサの構造などについては以下のページにいろいろ記述があって大変参考になります。

Touch Sensor Application Note

上記ページにタッチセンサの構造について記述がありますが、多くは基板表面にパターンを形成し、その静電容量変化を調べることを想定しているみたいです。

しかし、静電容量をセンスする電極くらい自前で作れるんじゃね、ということで作ってみました。所要時間1,2分、費用?円。手順は以下のごとし(多分、アルミホイルだけでも大丈夫なのだけれども、直ぐに破けてしまうのでフィルム貼ると、絶縁&誘電体兼用で強度も丈夫になります。)

    1. アルミホイルを適当な長さ(数cm)とりだす。
    2. アルミホイルの片面にセロハンテープを接着。
    3. セロハンテープを接着した部分を切り取る
    4. 切り取ったアルミホイルのセロハンテープを貼っていない面にセロハンテープを接着、そのときワニ口クリップでくわえられる程度の部分をアルミのまま残しておく

後はアルミむき出しの部分をワニ口で咥え、配線の先をタッチセンス可能な端子に接続するだけです。今回は4番端子を使用。こんな感じ。ESP32touchDUT

タッチセンサ実験用の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()じ
実機実行結果

上記コードを使って動かしたところが以下に。ESP32touchResultA

まあタッチセンスできてますな。環境次第だけれども。

MicroPython的午睡(107) ESP32版、RMT、どこの端子使えるの? へ戻る

MicroPython的午睡(109) ESP32版、btreeモジュールで連想配列永続化? へ進む