2018年11月25日

静電容量式キーボードめも

そういえば、つなげたいものとして i2c keyboad があったのだった。実際に作ってみたのだがタクトスイッチを多数ハンダ付けしなければならず、そうやって作ってみたものが押しやすいかというと、そうでもない。そのうえ、刻印も見えずブラインドタッチになる。

どうせ使いにくいのであれば、もう少し作りやすいものはないか?と思い、静電容量式を検討してみることにした。

いろいろ考えたのだが、どうやら タッチパッドコントローラを使うのが良さそうという結論になった。どの型番が良いか? 探したのだが、Azoteq 社のチップだけが見つかった。やはりキーボードであるから、マルチタッチの機能は欲しい。かつ 入手性が良さそうなものということで IQS525 はどうだろうか? 5点マルチタッチができるから、キーの同時押しが可能である。

IQS525 は マルツでも入手でき 415円 。mouser だと 220 円。思ったよりは安価である。パッケージは QFN-28 で、それ自体のはんだ付けに難があるものの、それさえ付ければ他に必要な部品は少ない。タクトスイッチを綺麗に付けることよりは難易度が低い。

    最初の候補は IQS226 だった。2x3 で 128 x 256 の解像度。これで良いかと思ったが mouser など以外で買えない。国内で買えるものをと思って探したら IQS525 が見つかったのであった。

iqs525-pattern.png

これをどう使うかというと、6 x 4 のマトリックスパターンを作る。で、1024 x 768 の解像度で出力されるので、普通にタッチパッドのパターンを作り、シルクだけキーボードにするのである。

なんのことはない。印刷しただけのタッチパッドである。すべりが良い不透明のシートを張れば全くのタッチパッド。だったら、普通にタッチパッドとして使えるようにもしておきたい。

    GPIO が 7 本ある。10mA 流せるようだから LED も点灯できる。裏面にタクトスイッチを 2 個付けて マウスボタンとして使えるようにもしたい。

    ・・・とは書いたが、使い方が見つからない。ダメかも。このチップもファームウェアがあって、書き換え方法の情報がある。対応したファームウェアでないと使えないとかの可能性がある。


キーボードのデザインは以前 2種類作った。これを踏襲する。



capkbd-d7.png

最初のデザインベース。3 x 6 を置いて、上に2つ分おまけ。(おまけは置いてみただけ、あとで削ってその分小さくする) 。ホストとの接続は I2C + RDY(割り込みライン)。 上の面にはできるだけ フラットにしたいので、LED をいくつかだけ置く予定。コネクタは表面実装のピンヘッダ・ピンソケットで espzero (Raspi) に直接付けられるようなデザインにしようと思う。

espzero と一体にすれば、BT キーボードが作れるはず。あるいは、Raspi zero と一体にして デスクトップPC とか。別にケーブルを引き出しても良い。

取り付けは、上部だけである。ガチガチに取り付けなければ、下のマウスボタンも使える。
・・・というのは、言い訳でパターンを部品化した都合もある。下の角丸も無理。

    いまさら、EAGLE で発見があった。PAD とか SMD は ハンダ面を出さないといけないと思っていたがそうでもなかった。また、TOP で描いた図形は、PAD と接触させれば 信号線として認識される。違う部品のパターンを重ねても 信号が同じなら問題ない。

    要するに、今回は、小さな SMD の上に、図形を描けば良かった。


それはそうと、無慈悲にシルクと VIA がぶつかっている。ちょっと対応するのが厳しいかも。

あと小さい方のキーボードパターンに未練があるのである。ちょっと悩ましい。

IQS572 EVALUATION KIT 2
iqs572ev2.jpg

マルツで 1,794円 とか結構安い。arduino UNO で使うことができる評価キットで、PDF みるとソースコードも公開されている。

それはともかく、デザイン。実物のギャップは、最初のイメージと同じぐらいあるから、直しておこう。あと明らかに2層基板。

TPS65 -- 65MM RECTANGLE TRACKPAD
なんかモジュール売ってるし。898 円だし、65mm 幅で Raspberry zero と同じ幅だし。わざわざ作る必要などないんじゃないか?

https://patchwork.kernel.org/patch/10667387/
input: touchscreen: Add support for Azoteq IQS550/572/525

Linux ドライバも投稿されてたり。11/5 だから最近だが。
そのドライバを眺めてみれば・・・ファームウェアが必要!だとか。

http://www.azoteq.com/proximity-switches-design/capacitance-sensor-software-and-tools.html
設定ツールがあった。これで設定したものを hex ファイルに書き出せる。

この Linux ドライバはポインティングディバイスとして使うだけのもののように見える。自力で設定する機能もなく、少々期待はずれかも。

    チップ単体で購入すると、bootloader だけが入っている状態で、I2C 経由で ファームウェアを書き込まなければならない。bootloader も書き換えることが出来て nRST, PGM ピンも 使うらしい。割り込みが使いたければ RDY ピンも使う。普通は I2C だけで良いのだが、これらのピンも使えるようにしたほうが良さそう。

    ついでに書くと、センス用のピンは、入れ替えたりすることが出来る。QFN-28 だが、パッケージがちょっと違う。角が狭いので、ハンダ付けが厳しい。角の 2 ピンがブリッジしても使えるように配慮したほうが良いかも。



espzero_kbd_top.png

espzero_kbd_btm.png

やっぱり作ってみたいということで、ここまで設計が進んだ。
上の小さい方は、IQS266 にしてみた。2x3 で 128x256 解像度。ボタンと LED 共用の GPIO が2つ必要になった。IQS266 は、マルチタッチできないので、モディファイアキーはモードになる。そうなると やはり LED は必要だろう。スペース的に苦しいが無理やり付けた。LED が指に引っかかったりしそうで、嫌なんだがしょうがない。GPIO もできれば使いたくない。確実に空いているのは SDA/SCL だけなのだ。一応切り離すことができるようにしておいた。サイズは 90mm x 34mm 。

基本的にパッドから線を引き出すことを考えているが、espzero や Raspi に直接マウントできる。・・・そうしたところでどうやって使うのか?という問題があるが、ひとまずおいておく。

下は、IQS525 で 2x5 だけ使う。計算では解像度 384x853。サイズは 93mm x 45mm 。ボタンと LED を IQS266 の GPIO に付けられるようにはしたが、今のところ GPIO の操作が分かっていない。

    一応ジャンパして、ホスト側の GPIO に割り振ることも可能なようにしておいた。

ところで何故マルチポイントは出来ない IQS266 を採用したか?・・・というと、小さいし安いのだ。なにか、ちょっとしたところに入れてみるとか出来そうなので、使ってみたいのだ。

ところで、ひし形のパターンがいくつかあるだけで、下に配線もあるし。こんなものが期待どおりに動くのかどうか?相当に不安である。でもまぁスマホなんかも結構正確だし、動くのかも知れない。ただ、動くとすれば、最近の技術はすごいんだなと思わざるを得ない。

まずは、どんな風に検出されるのか見てみたい。

espressif Touch Sensor Application Note
https://github.com/espressif/esp-iot-solution/blob/master/documents/touch_pad_solution/touch_sensor_design_en.md#46-matrix-touch-button-firmware-design

ところで、これは ESP32 のタッチセンサーについてのアプリケーション・ノート

 ・The trace width (W) should not be larger than 0.18 mm (7 mil)
 ・The trace-to-ground gap (S) should be in the range of 0.5 mm to 1 mm

あまり理解できていないのだが、これだけ気になってる。センサーのライン trace は細くせよ。GND との間にギャップを設けよ。ということで、 基板の設計に取り入れた。Hatched GND も なんか出てきたから選択してみた。これは多分意味ない。

 ・espzero-kbd-v1.4b.zip

とりあえず、発注した。クリスマスセール使って、送料 のみ。問題はチップの入手だが、久しぶりに mouser 使おうかと。 IQS266 と IQS525 は、Digikey より mouser が安いようだ。

基板が来てから、発注すれば良いから慌てないが、6000 円分とか何を買おうか物色中。IQS266 と IQS525 以外に、ちょっとロジック用のチップ 74LVC1G86 とか。インバータとバッファにつかえるし、ちょっとストックしようかと。あと 74LV4052 とか。4 入力アナログスイッチ x2 。AMP 基板改修して これに変えれば、1 つで 4 + 1 のゲイン調整が出来る。オーディオの 入力切替えに使えるかどうか?わからないが。

    -- 結局 espzero_amp 基板改修して、ゲイン調整と 入力切替え に使ってみることに。

    ピン互換のものがいくつかあって、MAX4618 なら問題なく使えそう。74VHC4052A ならまだ使えそうだが、ちょっと怪しい品種もあるので要注意。

74VHC4052A を選択したのだが、-3db の周波数が 200MHz 超。USB1.1 の切り替えは問題なく出来そうだが、USB2.0 も行けたりするのだろうか? だとすると面白いのだが・・・

他にないか探していたら、74LVC1G18 というのが見つかった。3ステート・バスバッファだが、出力が 2 つある。コントロールで出力を切り替えられるが、選択していない方は HiZ 。使い勝手が良さそうだが、ひとつ思いついた。PDM の 適当デコーダである。CLK が L の期間 ほとんど Lch のデータが出ている。H になった後 Rch のデータに切り替わる。音が混じるとは思うが、これ1つで ステレオがデコードできそうな。

基板の余ったところに、ちょっと回路を入れてみる。




キーボードを設計してみたわけだが、基本かざりと思っている。そのため、幅広の形にどうしてもしたかった。

で、もうひとつ考えてみた。指では押せないかも知れないが、幅を狭くして 70mm 以下にする。縦方向は少し伸ばす。ちょうど昔の black berry のような -- もちろん全然違うが。

最大幅を 69mm にすると espzero も面付けできる!そこからスタートして LCD も載せてみようか。で、出来つつあるデザインが、これ。

kbdlcd-d1.png

4.76 mm ピッチ。これは押せないかも。押せなかったらタッチペン使うということで割り切る。LCD は 60mm 長の 2.2 インチ SPI LCD 。全体のサイズは 69mm x 80mm で espzero を含めるときっちり 80mm x 100mm 。

どうやって使うかというと、espzero または Raspi zero の上に付ける。白でマークした仮穴のところが、espzero の位置。バッテリー駆動にすれば、一応携帯端末である。

裏面に付加機能をいろいろ付けたいと思って見たのだが・・・意外に使えるピンが少ない。SD/SDIO と UART を除くと、全部で 14 ピン + 入力専用 2 ピン。

あまりたいしたものにはならない見込み。というか、LCD 以外部品の使いまわしをする。なので、LCD ボードと同様。しょぼいサウンドのみになるだろう。
posted by すz at 13:25| Comment(1) | TrackBack(0) | espzero
この記事へのコメント
仕事でAzoteq社製品にかかわったことがある者です。
マルチタッチのを使う場合に気を付けなくてはいけないことがあり、それは「複数点を区別するのに必要な最低距離」という制限です。
例えば2つのタッチ点をどんどん近づけていくと、ある距離未満で1点に集約されてしまいます。これはダイヤモンドパタンのピッチ×2.5です。なので、1点座標はご設計のピッチでも取得できますが、2点だともっと細かなダイヤモンドピッチが必要です。
Posted by ayc at 2019年10月03日 16:17
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/185068554
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック