DTMFといえば、今ではすっかり使う事が少なくなった固定電話プッシュホンでダイヤルした時に出ていた、ピポパという信号音のことです。今でも、フリーダイヤルなどに電話した時に「オペレータにつなぐ場合は1を押してください」などといわれるときに使いますね。
DTMFとは、Dual Tone Multi Frequencyの略で、二つの周波数を組み合わせで0~9, A~D, * と # の16種類の数字記号を表すものです。プッシュホン等では、A~Dは対応していないものが多いですが…
先日、ローカルさんから、このDTMFをつかって遠隔にある装置の電源をON/OFFしたいという依頼を受け、久しぶりに電子工作をしました。
遠隔制御には色々な方法がありますが、古のDTMFもアナログで風情があってよいのではないでしょうか?
また、新しめのアマチュア無線機であればDTMFは標準でついてますから、受信機を用意すれば簡単に遠隔制御もできそうですね。
市販品として、DTMFデコーダーIC MT8870を使い、リレーも一枚の基板にしたDTMFコントローラが販売されていますが、細かい制御やパスワードの設定ができないので、ちょっと手間とお金はかかりますが自前で製作することにしました。
仕様
- 2つのAC 100V, 1つのDC 13.8V のON/OFFが可能
オープンコレクター出力も可能 - 4chを独立して制御可能
- 4ch個別に制御用パスワードを設定可能(まぁ、聞かれてデコードされたらバレますが)
パスワードはユーザーで変更可能 - ON時間、OFF時間を分単位で設定可能
例えば、8時間OFFしその後自動的にONすることができる - 動作モードをモールスで報知
回路図
主な部品
- マイコン STM32F103C8T6 モジュール いわゆるBlue Pill
最近はちょっと高くなりましたが、それでも安く使いやすいマイコンです。 - DTMFデコーダ
AliExpress で購入したMT8870デコーダモジュール
時期によってピン配置(VCCとGND)が違うものがあるようなので注意が必要です。 - SPアンプ
AliExpressで購入したLM386モジュール (DTMFをモニターしなくてよければ不要) - リレー 回路図には含まれていませんが、AC100Vなどの電源を制御するためにつかいます。
秋月電子で購入(型番 AE-RELAY953B-5V)
リレードライブ用のトランジスタが乗った基板もついているのですが、リレー端子と固定用ねじの距離が近いですね。付属品として、わざわざプラスチックビスとナットが同梱されていることから、販売側も認識しているのでしょう。プラスチックでは機械的な強度が心配なので、ドライブ側は金属製のものに交換し、リレー側だけプラスチックのものを使いました。もう少し基板が大きくても良かったんですけどね。 - 汎用NPNトランジスタ 回路図には 2SC1740 と書いていますが、デジットで500個かったからです。普通の2SC1815、2SC2603 などでOK。
- EEPROM 24LC128 制御用パスワード等の保存用
手持ちの部品を使ったため大きな容量のものを使いましたが、もっと小容量で良いです。
プログラムの修正は必要ですが… - 圧電ブザー 適当なものでOK
- 回路動作用5V電源
今回は実装していないが、3端子レギュレータを実装すれば12Vや9Vから5Vに降圧することも可能です。
基板
基板はKiCadで設計してJLCPCBで作りました。特別価格の 100mm x 100mmサイズにしましたので、送料込みで1000円以下でした。製作期間もガーバーアウトから基板到着まで1週間から10日ほどでしたので、最近ではユニバーサル基板で作るよりKiCadで回路図とパターンを引いてオーダーすることが多いです。結局、この装置はユーザーさんにお渡しするものと、手元に動作確認用として残すものの2台を作りましたので、基板化して正解でした。
使い方
DTMF-IN入力端子に、DTMF信号を入力します。受信機のSP/イヤホン出力でも良いですし、ワイヤーでDTMF信号を引っ張って直接入力しても良いです。(でも、直接つなぐのであればDTMFでなくても他にもたくさん手段はありますよねぇ) 受信レベルを調整するのにインジケータを付けようかとも考えましたが、実際に使ってみるとデコードできる幅が結構広かったので、ボリュームで適当に合わせることにしました。
操作コマンドは、あまり公開したくないのでここには書かない事にしますが、もし、ご興味があるようでしたらメールください(笑)
ON,OFF制御はもちろん、一定時間だけON(or OFF)する(指定時間経過後は反転する)ことができます。
誤動作を確認するために、しばらくアマチュア無線を傍受したり、FM放送の音声をDTMF-INに突っ込んでエージングしてみましたが、DTMF以外と間違ってデコードしてしまうことはありませんでした。
たまに無変調とかいたずらする人がDTMFを流すことがありましたが、当然それはきちんとデコードしていました(笑)
また、中華UV-K5にもDTMFをデコードして表示する機能があるので、UV-K5で受信しそのSP出力を本機に入力してデコード率を比較してみましたが、本機の方がデコードの性能は良さそうでした。
本当はコマンドを受けたら応答を返したいのですが、有線で応答するのは問題ないとしても、無線で応答するには免許を受ける必要があるので、今回はみおくりました。