トランジスタとRaspberry piを使ってオルタネートスイッチをモメンタリースイッチにする
概要
以前RFスイッチとRaspberry piを使って、「ボタンを押したらスマホに通知が来る」日用品管理アプリを作りました。(詳細: Flutter + Raspberry piで「リストに追加することを忘れない」買い物リストアプリを作る)
しかし、このRFスイッチをon/offするボタンがオルタネートスイッチ(onを押したらoffを押すまでずっとon状態)でした。つまり、1度ボタンを押したら、再度使うためにはoffボタンを押さないといけないという若干面倒な仕様になっているのです。
そこで、トランジスタとRaspberry piを使ってこのボタンを疑似的にモメンタリースイッチ(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スイッチが繋がったらスマホに通知を投げていましたが、今回その場合の処理を以下のように変更します。
スマホに通知を投げる
gpio出力を1にする(=3.3Vを出力)
1秒待機
gpio出力を0にする
また、今回の変更でもう一つ嬉しいことがあります。これまでは、gpio入力を監視するループは、ONボタンが押されてからOFFボタンが押されるまでの時間より短くする必要がありました。しかし、今回の変更により、Raspberry piの都合のいいタイミングでOFFできるようになったので、ループの時間も長くできます。
完成版
以下のようになりました。
RFスイッチに電源が入っている間は青いLEDが点灯しています。開始5秒ぐらいの「カチっ」という音が、onボタンを押した音です。その後、1度LEDが消え(RFスイッチの電源が遮断され)、再度立ち上がります。
最後に
最初っからモメンタリスイッチ買えば良かったんですが、適当なのが無かったんです、、、
Comentários