静電容量タッチ研究
採用事例
マトリクスで静電容量タッチを検出している?
- 13pad
専用IC
専用ICもある
- 12個のPadまで認識できる
- QFNパッケージ
- 手はんだが厳しそう
- 16個のPadまで認識できる
- うまいことやれば16x16のPadを認識できるのでは?
- 8x8の間違いかな?
- 基板パターンに制限はあるか?
- ESP32とかを使うよりバッテリー消費も少なそうで良いかも?
- SSOPパッケージ
- まだはんだ付けできそう
AVR実装
- これがそれっぽい?
- AT90USB1286用
- ADCポートxGPIOポートでマトリクスを構成しているっぽい
- チャージして抜けるまでの時間を測定している
- 原理は単純そう
- キャリブレーションが面倒
ATMega328P
あったはず
- 5*5 = 25とかならできるのか?(10pin)
ESP32
https://cdn.cnx-software.com/wp-content/uploads/2021/09/ESP32-Touch-Matrix-720x517.jpg?lossy=1&ssl=1
- マトリクスで利用している
- 両端でタッチを検出しているか見ている
- これで行けるのか
- タッチ対応ピンは10個あるから5x5で25個検出できるというわけ
- キャリブレーション不要でよさそう
- 良いのだが、かさばる、バッテリーを食うという問題がある
- 一方でパワフル
5x5のマトリクスが出来ればフリック入力できるのでは?
- 気軽に試す方法はあるか?
- 専用ICを2個使うのが楽かも・・
- フリック入力するなら片手持ちできるとうれしい
- 両手フリックもあるにはあるが
- 5x5のフリック入力は日本人には非常にありがたい
- ひらがなが出るだけでよいか、かな漢字変換もしたいか
- かな漢字変換をしたいならESP32 or Raspberry Pi Pico
- ESP32を単4電池2本くらいで動かすのはできるのか?
- 単3電池2本で動かしている、間欠動作だけど
- 昇降圧型DC-DCコンバータを利用
- 販売している
- ハプティックフィードバックしたい
- ブザーでいいか
- DevKitだとタッチのGPIOがつぶれている可能性あり(要確認)
基板設計
ESP32
- 設計ガイド
- 全部守るのは難しそう
- {ないので発注した} 家にDevKit-C余っている?
- 家にあるいくつかのESP32ボード用に端子を出すのもアリかも
- タッチパネルのPinが空いているかな?
- {x} 拡張端子
- {x}電源、GND
- {引き出さない方針}余ったGPIO?
- {x}タッチパッド向けの10ピン
- {x}OLED用のI2Cピン
- GPIO21,22
- {x}SDカード用のピン?
- {家にあった} プルアップ抵抗付きのモジュールを買う
- {x} 液晶のVCCは3.3?
- 問題なさそう
- 構成要素
- ブザー
- 端子だけ出して後は良しなに
- アンプを構成できるくらいのユニバーサル基板エリアが欲しい
- 画面
- カラーTFTでよさそう、SPI
- フットプリントがないかな
- ESPBoyの液晶は違う、o-bakoのものと同じだな
- 5x5のタッチセンサー
- 静電容量タッチパターン
- 露出させるか悩む
- 露出させると錆びそう
- 両パターン試せるようにしたい
- 抵抗が必要?
- いらない
- 上の基板に一緒に搭載できる?
- その場合はESP32は搭載しない、外からI2Cでつなげる
タッチパッドのフットプリント
https://github.com/ESP32DE/esp-iot-solution-1/raw/master/documents/_static/touch_pad/matrix_button.png
viaで橋渡しする感じ
部品の中にviaは作れなかったような・・
- 3つの部品として扱えばこの通りにできそう
- パターンを工夫しないとスライドが検知できない気がする
- 素早く切り替わったら、とかになるか?
- どっちみちそのほうが良さそう
- そんなことない、これは中央までスワイプしないといけなくなるので良くない
- 自動生成のくし形の形状にしよう
1st基板
- I2C液晶のプルアップは不要なんだっけ?
- 他の作例を見ても不要そうなのでこれで良さそう
- 組み立てが簡単で良い
- スイッチがないのも良い
T1が常に0になる
- おそらく開発ボードでプルダウンしている?
- T1はBOOTでスイッチ経由でGNDにつながっている
https://inline.inajob.tk/img/twitter-5643382/%E9%9D%99%E9%9B%BB%E5%AE%B9%E9%87%8F%E3%82%BF%E3%83%83%E3%83%81%E7%A0%94%E7%A9%B6/6fe18569-c23d-11ed-ae67-fe51f6f5a13e#.png
- あー、ここに変なキャパシタがいる!
https://inline.inajob.tk/img/twitter-5643382/%E9%9D%99%E9%9B%BB%E5%AE%B9%E9%87%8F%E3%82%BF%E3%83%83%E3%83%81%E7%A0%94%E7%A9%B6/0581ae58-c23e-11ed-ae67-fe51f6f5a13e#.png
- 書き換え回路も邪魔している・・
- T1は使えないな
- うまいことパターンカットできる?
- 1列殺せば行ける
- T9を使わないようにして、T1とくっつけるのとギリギリ行けそう
- 横5×縦4
- シリアルポートが開いているとT1が意味のある値になるな
- 上の図を見るとDTRかRTSのどちらかが関係しているように見える
パターンカットすべき場所を探す・・(結果しなくても良い方法を発見)
- T1にアクセスできるところが少ない・・
- 楽なのは開発ボードのT1ピンを抜く
- どうせこのピンは使わない
- T9のカットはどこでもできそう
先にファームウェアを書く
- ピンを付け替えるのは後でよい
- ⭐シリアルを有効にして入れば期待した動作をする
状態遷移を設計
キーを複数押さないようにする治具
- 3Dプリンタでフレームみたいなのを作ったが、そうするとフリックがやりづらい、これだけではダメだった
OLEDの描画が遅い→部品故障
- u8g2のハードウェア版が動かない
- 最悪別のOLEDライブラリを使う?
- プルアップ抵抗を入れると良い?
- 別のOLEDをつかったらすんなりうごいた!
記事書いた
https://cdn-ak.f.st-hatena.com/images/fotolife/i/inajob/20230319/20230319134148.jpg
タッチ専用ICを使ってみる
- MPR121 のモジュールを買っている、まだ試していない