トランジスタとRaspberry piを使ってオルタネートスイッチをモメンタリースイッチにする


概要


以前RFスイッチとRaspberry piを使って、「ボタンを押したらスマホに通知が来る」日用品管理アプリを作りました。(詳細: Flutter + Raspberry piで「リストに追加することを忘れない」買い物リストアプリを作る

しかし、このRFスイッチをon/offするボタンがオルタネートスイッチ(onを押したらoffを押すまでずっとon状態)でした。つまり、1度ボタンを押したら、再度使うためにはoffボタンを押さないといけないという若干面倒な仕様になっているのです。

そこで、トランジスタとRaspberry piを使ってこのボタンを疑似的にモメンタリースイッチ(onを押した手を離したらoffに戻る)に変更しました。



使用しているRFスイッチ ONとOFFの両ボタンがある

方法


概要


このRFスイッチは、ONボタンを押すとOFFボタンが押されるまでON状態を維持するのですが、ON状態でも電源が切れるとOFF状態になります。

そこで、Raspberry piプログラムでONを検出したら、RFスイッチへの電力供給を一旦遮断して、再度立ち上げます。




12VのON/OFF回路


RFスイッチへは12Vの電力を供給していますが、これをON/OFFするためにはトランジスタを用いたNOT回路を使用します。

Raspberry piのgpio出力(3.3V)を入力、12Vを出力とすれば、Raspberry piでRFスイッチへの電力供給を制御できます。



Rasberry piプログラム


これまではgpio入力を監視し、RFスイッチが繋がったらスマホに通知を投げていましたが、今回その場合の処理を以下のように変更します。

  1. スマホに通知を投げる

  2. gpio出力を1にする(=3.3Vを出力)

  3. 1秒待機

  4. gpio出力を0にする

また、今回の変更でもう一つ嬉しいことがあります。これまでは、gpio入力を監視するループは、ONボタンが押されてからOFFボタンが押されるまでの時間より短くする必要がありました。しかし、今回の変更により、Raspberry piの都合のいいタイミングでOFFできるようになったので、ループの時間も長くできます。



完成版


以下のようになりました。

RFスイッチに電源が入っている間は青いLEDが点灯しています。開始5秒ぐらいの「カチっ」という音が、onボタンを押した音です。その後、1度LEDが消え(RFスイッチの電源が遮断され)、再度立ち上がります。




最後に


最初っからモメンタリスイッチ買えば良かったんですが、適当なのが無かったんです、、、

靴を大切にしよう!靴管理アプリ SHOES_KEEP

納品:iPhone6.5①.png

靴の履いた回数、お手入れ回数を管理するアプリです。

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png

テーマ日記:テーマを決めてジャンルごとに記録

訂正①2040×1152.jpg

ジャンルごとにテーマ、サブテーマをつけて投稿、記録できる日記アプリです。

google-play-badge.png