(2)M5Stack BasicとM5Stamp Pico 、UIFlowでダイソー「ピンポンブザー」を早押し対応にする - 内部構造の調査
前回はこちら
さて、「ピンポンブザー」にM5Stamp Picoを仕込もうという見当をつけたところですが、肝心の内部構造の調査をしていません。果たして、M5Stamp Picoを仕込むスペースがあるのか、ボタンの押下はM5Stamp Picoから検出できるのか……。
経験上、「外観や重量から、このくらいのスペースはあるだろうな」とか、「ボタンの押下の信号を横取りできるだろうな」などは思っていますが機能を実現するには実際の構造や動作を検証していかなければなりません。
分解
まずは分解するところからなのですが、大抵の製品はネジ止め、または嵌めこみで部品を固定しています。ざっと見たところ、裏面の黒い滑り止めの部分にネジを隠しているのだろうと予想されます(いわゆる隠しネジ)。
そこで、その部分をピンセットで剥いでみるとネジが現れました。
ネジを全て外します。これで開くのですが、製品によっては全てのネジを外したつもりでも開かないときがあります。その場合は、どこかに隠しネジが残っていないか、嵌めこみが併用されてないか、を確かめてみます。開かないようならあきらめて、また次の機会にチャレンジすると、そのときには気づかなかったところに気づき、開く時があります。決して無理やり開けようとしないようにしてください(壊れてもよい、元に戻す意思がないなら別ですが)。
また、開く時にはゆっくり、細心の注意を払いながら開きましょう。
フレキケーブルのような、薄いケーブルが張り巡らされていて、勢いよく開けた瞬間にフレキケーブルが断線する場合もありますし、バネが仕込まれていて、開けた瞬間にどこかに飛んでいく場合、完全には固定されていない部品が外れて、組み方や、元の位置が分からなくなる場合などがあります。ゆっくり、慎重に、そーっと開けていきましょう。
内部構造の解析
結果として、バネと「〇」の表示をロックする機構、スピーカーと小さな基板で構成されていることが分かりました。赤い大きなプラスチックボタンを押すと、ボタンについた突起が基板上の押しボタンスイッチを(機械的に/物理的に)押す仕組みです。また、M5Stamp Picoを仕込むスペースは、十分あることが確認できました。
M5Stamp Picoの電源は、ピンポンブザーの電源から並列に取れば良さそうです。問題は、ボタン押下をどこで検出するか、ですが、まずはデジタルテスターを使って、ICのどこがどこと繋がっているのかを1つ1つ確認していきます。これにより、ボタンを押したときに、どこが導通するかを確かめます。(とはいえ、片面基盤だったので、基板上のパターンを見れば、ほぼ分かるのですが)
基板上の押しボタンスイッチを押すと電源と6番ピンが導通して6番ピンに3Vが印加され、ブザーが鳴るようです。
電源は3番ピンに入っていますので、試しに、3番ピンと6番ピンを直接つなげてやると、スイッチを押したのと同じ状況になり、ブザーが鳴りました。(ちなみに、他に6番と直結で鳴るのは8番のみでした)
また、調べていて分かったのですが、不正解のブー音もこのICで生成できるようです。この製品には使われていないようですが、おそらく他製品とICを共用にしてコストダウンをはかっているのでしょう。
8番ピンも簡単なプログラムを書いて、調べたのですが、8番ピンからは常時1が出力されていて、ボタン押下時(ピンポン音の出力時)に0になるようです。(書いたプログラムだと2回点滅するような動作になる)
このへん、ちゃんとやるならオシロスコープとかで信号を拾う必要があると思いますが、まぁ、「使えればいいや」ということでこれでよしとします。
※2023/9/2追記
オシロスコープで8番ピンの出力を確認してみました。
8番ピンには常時3Vが出力され、ボタンを押した瞬間にGNDレベル(0V)まで落ちているのが確認できました。その後一度3Vに戻ったあと再び0Vに落ち、3V出力に戻るようです。まぁ、M5Stamp Picoの動作確認プログラムで検出できた通りですね。
原理的には6番ピンに3Vが印加されたのを検知すればよさそうでしたが、いまいちうまく動かなかったので、8番ピンの信号を拾って、M5Stamp Picoで検知することにしました。(もう検知できてるんだし)
M5Stamp Picoでのボタン検出
M5Stamp Picoの持っているピンの詳細は以下のサイトが詳しいです。
画像の一番右側の6つのピンは「USB-TTLシリアル変換器」に使用します。がっちりはんだ付けしてしまってもいいですが、USBでプログラム転送したり、ファームウェアの更新の時にしか使わないので、抜き差しできるようにしておいて、必要な時だけ接続すればよいです。
ピンソケットを取り付けて、はんだづけしておきます。
ピンポンブザーは単4電池2本で3Vを電源としています。
M5Stamp Picoの電源をそこからもらうとすると、「+端子」は「3V3」ピンとつなぎ、「-端子」は3つある「GND」のどこにつないでもよいです。
右端の「GND」が「3V3」ピンと近いのでそこを使おうか、と見当をつけます。
GPIO(入出力端子)は12ピンあります。この12ピンそれぞれに信号を入れたり、それぞれから信号を出したりできます。それぞれのピンは、役割を持っているので他の機能拡張に使う場合は衝突しないように気を付けます(兼用してもいいですが、誤動作するときもある)。
ピンポンブザーのボタン押下の検出には、「3V3」や「GND」に近く、他の何にも使用していない「GPIO0」を使用するのがいいでしょうか。
結果的に、ピン配置は以下のように決めました。
次回は、いよいよ製作です。