![]()
52.コンパクト警報器 (2024.1.28-2024.2.1)
BOUHAN-TECで導入した警報装置は、サイズを無視して市販の部品を組み合わせたものでしたが、3号機は小型化を主目的に考えたいと思います。まずはパトライトに代わる装置を考えます。何か流用できないかと探していたところ、フラッシュ機能を搭載した自転車用のリアライト(DAISO)が目に留まりました。この製品は3種類の点灯モードを持っていて、本体のボタンを1回押すごとに、1.点灯、2.等間隔(短)のフラッシュ、3.等間隔(長)のフラッシュと切り替わり、最後に消灯します。ON/OFFするだけでは制御できないのでやや面倒ですが、せっかく3種類の点灯モードがあるので、パルス的に規定回数のパルスを送って選択制御しようと思います。Lチカ同様にRasPiを使えば簡単に実現できます。
入手したライトは下の左側の写真のようなものです。また、分解した状態が右側です。自転車用なのでフレームに固定する部品が付いていて、パイプ等にも固定することができます。本体だけでもクッション付きの両面テープで平面に固定できるので、流用するのに都合が良いものです。ボタン部分がどうなっているか見たところ、TVのリモコン等と同じように、接点となるプリントパターンをボタンに付いた導電ゴムを押し当てて通電させるタイプでした。この部分の接触電気抵抗は数十キロオーム程度です。そこで10キロオームの抵抗を間に入れて、トランジスタスイッチでショートさせることで、ボタンを押した時と同様の環境にします。後はRasPiからパルス状の信号を規定回数送れば、3種類の点灯モードを選択して光らせることができます。
本体の改造は次のようにします。まずは本体からリード線(3本)を取り出すための穴を開けます。背面側(黒)の部品の電池が入る部分で、シールが貼られている反対側が手頃だと思います。両面テープで本体を固定することも考え、なるべく端の方が良いでしょう。次に電池用の接点金具(+と-)にリード線をハンダ付けします。判別しやすい用に+は赤、-は黒のリード線にしました。LED基板に接触する接点部分と金具を固定するプラスチックに干渉しない場所にハンダ付けするのがポイントです。後は制御用として、ボタン部分の接点パターン中央の先にあるランド(下図参照)にリード線をハンダ付けして、開けた穴からリード線を取り出せば改造は完成です。リード線が引っ張られて断線しないように、穴の内側にエポキシ接着剤を塗って固めています。
参考までに、実際に改造したものが次の写真です。本体背面部品に開けた穴からリード線を外に取り出しています。このリード線をマイナス(黒リード線/GND側)に接触してやるとボタンを押したのと同じ働きをします。後述しますが、念のため10キロオーム程度の抵抗を間に入れると良いでしょう。リード線が電池を入れるのを邪魔しないよううまく細工すれば、電池駆動で色々と応用が利きます。 例えばON/OFFするための押ボタンスイッチを自転車のハンドルグリップに付けて、離れた場所から点灯をコントロールすること等が可能になります。
これだけではRasPiで制御はできないので、中間に下図の制御回路を入れます。更にRasPiの5V電源が使えるように、降圧レギュレーターを組み込みます。最近は超小型の可変DC-DCコンバーターが安価に入手できるので、今回はそれを使って5Vから3V(要調整)を作り出して、警報ライトに供給しています。左の小さな基板上の右側のモジュールがDC-DCコンバーターで、とてもコンパクトにできています。電圧調整用のボリュームが結構シビアですが、供給電圧はさほど厳密である必要は無いので、アバウトでも問題無いでしょう。改造済みの全体像をご覧下さい。制御回路から出ている3本のリード線を、5Vの電源とRasPiのGPIO(出力)に接続します。今回はGPIO26(37ピン)としました。なお、電源を供給してやれば、本体ボタンを押しても点灯させることができます。
早速簡単な点灯テスト用のプログラムで確かめてみましょう。次のプログラムでは、ボタンを1回押すごとに1ステップずつ点灯状態が進みます。
実用を考えると、点灯モードを選択した上で自由に点灯/消灯できた方が便利です。次のプログラムでは、点灯モードをラジオボタンで選択し、SWボタンを押せばそのモードで光るようにします。また、5秒間点灯した後に自動消灯します。そのために、各々規定回数パルスを送ってコントロールを行っています。ただ、ごく短時間ですが点灯開始と点灯終了時に他のモードを通過するため、一瞬不自然な発光を感じるかもしれません。実際に機器に組み込む場合には、電源供給そのもののON/OFFを併用するため、ほとんど違和感を感じることは無いと思います。この併用は、万一モードがずれた場合でも強制的にリセットする効果があり、実用レベルでは必須になります。
プログラムについて補足すると、発光途中で更にSWを押しても無効なように、SWの状態判定を行っています。それを行うのがenableSwで、最初の操作待ちではTrueにして受付け、SWを押した時点でFalseにして操作不可にし、点灯→消灯後にTrueにして最初の状態に戻します。注意すべきはSWの右の表示です。5秒間の点灯/点滅はスリープ関数によって実現していますが、そのままだとSWの右の表示が正しいタイミングで実行されません(一連の処理の最後で実行される)。そこで、表示切替後にタイマースレッドを使って別スレッドとして5秒後の処理を実行しています。時間待ちで度々問題になるケースで、頭に入れておく必要があります。
続いて警報音を鳴らすためのサウンドモジュールの製作です。実現にはなるべく小型のスピーカーとアンプが必要で、以前に使用した100均(SERIA)のマルチメディアスピーカーに、超小型アンプを組み込む方法が適当と考えていました。ところが、この製品は既に廃盤になってしまったようで、代用品を探さねばならなくなりました。BOUHAN-TECの2号機に採用したDAISOのUSBスピーカーのアンプが入った側だけを使うのも手ですが、これだと中途半端であまり小型化できそうにありません。そこで、部品レベルのスピーカーを入手して、電源等の外部回路を全てを組み込んだボックスも合わせて製作することにします。
警報器の全部品をまとめたのが次の写真です。ステレオアンプなのでLチャンネルだけを使い、Rチャンネル(今回は使用せず)はコネクタだけ付けておきました。アンプユニットの中に電源とフラッシュライト制御回路を組み込んでいます。電源は5Vで良いのでRasPiに接続します。
リアライトとしての商品を考えると、点灯モードを選択できるのは1つのメリットではありますが、今回のように流用して使う場合にはプログラムの複雑化を招き、逆にデメリットにもなります。RasPiに負荷をかけないためにも、将来的にはPICで点灯モードをコントロールして、RasPiからは点灯/消灯指示だけで済むようにしたいと考えています。現時点ではPICを始めたばかりなので、実際の改良は宿題として残しておきます。
![]()