●ドドーンと8台ついつい、物欲に走ってしまいました(ウソ)。レストランなどで、店員を呼び出すボタンがありますが、あれは結構高いものです。受信機だけで何十万円とか、送信機が数万円という具合で、小規模の店舗では余裕がなくてなかなか手が出ない。何とかして安く実現できないか。買った覚えがあります。これを8台並べたら・・・でも音が同じだし、何よりも配線の引き回しが大変で、見た目も悪い。配線が延々と、野をこえ、山こえ、谷こえて〜♪たぶん事務所までつながっていると思いますが、やっぱりワイヤードは見た目が悪いです。ファミレスで見かけるのはみんなそうです。最初は、市販のワイヤレスチャイムを使う事は思いつかなくて、自分で作ろうと考えていました。トラ技の2002年11月号に、マイクレル社の送信、受信ICの記事があり、簡単な回路で無線データ通信ができそう、と思ったのです。実際に、評価基板が頒布されていたので1セット買って実験しましたが・・・・・・あまりにも性能が悪くて使い物になりませんでした。その当時は、別の店にワイヤレスチャイムを入れる話がありました。ところが、よく考えたら、店の運営上、店員が定期的に巡回しているのでワイヤレスチャイムは不要じゃないかという話になったんですね。逆に、ワイヤレスチャイムを設置したら、しょっちゅう呼ばれて、店員が少ないのにバタバタになりそうだと。それでいったんは、ボツになったんです。最近になり、新しい飲食店ができて、そこはテーブルがいくつもあるからワイヤレスチャイムが必要だと、相談がありました。店員を「スミマセーン、注文お願いしま〜す」と呼びに行かなければならない、という不便がありました。一刻も早く、安く作り上げるには、どうしたらよいか?大手メーカーの製品は高い。自分で全て作り上げなくてもいい。安い市販品の改造と組み合わせでどうにかなるんじゃないか。苦手な無線部分はその市販品を利用すれば苦労しない。考えをめぐらせ、ようやく、最適な答えにたどりつきました。今回、近所のホームセンターなどに置いてある何種類かのワイヤレスチャイムを買い集めてきて、片っ端から評価し、この機種に決まったのです。(免責:私が実験した範囲でこれに決めたのであり、この機種を推奨するわけではありません。改造は請け負いません。私はメーカーの関係者ではありません。広告を目的としたものではありません)最初の写真の右上の1台だけパッケージが違いますが、機能や中身も微妙に違います。本当は全部同じものを揃えたかったのですが、在庫が無かったんです。この1台だけは、ピンポ〜ン!だけじゃなくて、7曲の選択ができるようになっています。複数の送信機ごとに曲を違えて設定しておくと、どの送信機からの呼び出しなのかわかるようになっている新製品でしょう。じつは他の7台も、基板のバージョンがそれぞれ違うので、機能的には同じでも、厳密には違います。ところで、なぜ、この機種を選んだのか、その理由は次の通りです。(1)チャンネルが増やせるチャンネルはA/B/Cの3種類切り替えになっていますが、実は内部を改造すればもっと増やす事ができます。そのために基板にはハンダジャンパーのパターンがあるのです。(メーカー保証外)今回はチャンネルを8通りにしました。(後日記:最終的に、4ビットのデータで区別するようにしたから0〜15の16通りとなる。グループ、すなわち送信機と受信機の組み合わせをA、B、Cにする。ABCで足りない場合は、ハンダジャンパーで設定する。)HOLTEK社のエンコーダ・デコーダが使われているのがポイントです(型名はHT12DとかHT12Eなど。他社互換品が使われている事もある)。(2)ある程度の防水が考慮されているケースのフタにゴムパッキンが付いていたり、押しボタンの構造的に水分の侵入をある程度食い止めるような構造になっています。←LEDにゴムリングが付いています。飲食店での使用では、しょうゆをこぼしたり、コップの水などをぶちまけたりする場面がよくあることでしょう。(3)けっこうよく飛ぶあいまいな言い方ですが、電波は環境条件でも飛び方が異なりますので、いちがいに何メートルとは言えません。一般には直線距離を言うようですが、飲食店では壁やドアがありますから、障害物も考慮する必要があります。実験では、鉄骨の建物の1階と2階では確実に到達しました。ちなみに説明書には、15mと書いてありました。金属製の壁などがあれば条件は悪くなると思います。(4)安い2つの店を回って8セット揃えたのですが、安いほうの店では1セット¥1,200ぐらいでした。(後日記:送信機のみの単品売りもありました。)(5)取り付けやすい送信機には、壁面などへの取り付けのための台座が付属しているので、設置に便利です。考えたら、受信機は1台で良いのです。ここでチャンネルと書いているのは、実はアドレスで、個別のIDのようなものです。それと同時に4ビットのデータも送受可能ですから、チャンネルは固定にしておいて、それぞれの送信機から送られるデータを個別に設定してやれば簡単です。1台だけ仕様が異なる物がありました。これにはHOLTEKのICが使われておらず、特殊なIC(電子オルゴールにありがちな、樹脂で固めてあるやつ)なのです。これは簡単に改造ができません。チャンネルもA/B/C以外には設定できそうにありません。それで最初は、送信機と受信機のセットごとにチャンネルを変えて、送信8台に受信8台で使うというあまりにも芸がないけど無難な構成にしようと思いました。送信Aに受信A、BにB、CにC、DにD・・・GにG、HにHです。メロディ付きの1台だけは、改造できないのでスイッチで設定可能な、A/B/Cのいずれかになります。さあ、受信機8台をケースに組み込もうとしたら・・・・・・よく考えればバカバカしいです。8台もです・・・そりゃあ、ないでしょう。近づけて並べたら、お互いに干渉するかもしれません。いや、そういう問題じゃないんです。1対1の8セット、これも一つの方法だけれど、完成度は低い。送信機のエンコーダICの、AD11〜8が空きピンなのですから、この4ビットで送信機を区別すれば良いでしょう。厄介なメロディ付きは、私が個人的に所有している1台と交換する事で送信機は8台とも同じ仕様になります。従って受信機は1個で済みます。AD11〜8は内部プルアップなので、0にしたいピンをGNDにジャンパー線でつないで設定します。受信機のデコーダICは、AD11〜8が同様に空きピンですから、ここからマイコンに入力してやればいいのです。受信機基板の電源電圧は3.3Vとなっています。下記のメイン基板は5Vです。マイコンへの信号入力レベルは3.3Vとなりますが、問題ないようです。何やかんやとゴチャゴチャやって、途中を省略しますが(をいをい)、いろいろとお目にかけましょう。このあと、配線をワイヤラッピングしました。1時間もかかりません。メインCPUはPIC16F877Aで、回路は見た通り、何ら複雑な部分はありません。LED駆動用のトランジスタアレイと、リセット回路と、押しボタンのプルアップの抵抗アレイなどがのっかっているだけです。なんでPIC16F877Aを使うかといえば、単にピン数が多いから、というのがその理由です。数の少ないPIC16F84あたりを使っても、外部にシフトレジスタなどのICを追加すれば作れます。単純に作りたいから16F877Aを使いました。基板の右半分には、白い支柱(スタッド)が立っていますが、ここに受信の基板が搭載されます。次に、その基板の写真を示します。入っていたケースから基板のみを取り出し、電源、スピーカ、それと、デコーダICからデータ4本、データ確定信号1本を引き出してコネクタを付けました。受信機のケース(正面)、そして右の写真は内部です。オムロンのバラ線用コネクタがあったので、活用してみました。右の写真で、ケース左側にへばりついているのは電源部です。その写真を次に示します。ACアダプタのジャック、ヒューズ、ダイオードブリッジ、レギュレータ7805と電解コンデンサの基板です。ACアダプタは同じジャックでも極性が異なるものがありますが、電圧に余裕があるならこのようにダイオードブリッジを通せば、極性を意識する必要がありません。場合によってはブリッジを実装するスペースがないけど、逆接保護をしたいのなら直列にダイオードを入れるか、あるいはヒューズのあとにダイオードを、マイナス側にアノード、プラス側にカソードで接続しておいて、プラスマイナスを逆にしたらダイオードの順方向に大電流が流れてヒューズが飛ぶ、という仕掛けも良いかもしれません。ヒューズのアンペアはダイオードの許容電流を考慮します。ついでに、受信機の基板の回路図を公開します。マネして作る人もいないでしょう。右側が切れていますが、ICSP用のコネクタなので、無くても問題ありません。プログラムを簡単に解説します。数ms〜数10msぐらいごとに(適当に)、以下の内容のメインルーチンが走るように組みます。PAPORTAには、受信機からのデータと、データ確定信号(VT)が入力されます。データ確定信号はPORTAのbit4です。受信時には、200msぐらいのHパルスが入りますので、この立ち上がりを検出してデータを取り込みます。VTは、HOLTEKのICの出力ピンからそのまま取得すると、たまに数msのパルスが出ますので、誤作動の原因になります。単純に立ち上がりを検出するようなソフトにしていると、誤作動します。ここの説明では、そうしていますけど(笑)。ソフトで、Hが連続する時間を計測して判定するか、あるいはハード的に対処するには、VTの信号を抵抗・コンデンサでなまらせてからPICに入力するようにします。下のほうに、もともとの受信機の回路図を掲載していますが、電子音モジュールの入力にそのようなフィルタ回路が入っている事から、このピンからVT信号をとれば良いでしょう。PICの保護のためには、直接つなぐのではなく抵抗(10Kオーム程度)を直列に通してつなぎます。1FHと書いていますが不要ですね。PAOLDbit4を見るだけなのですが、あまりゴチャゴチャ考えないで、単純に処理します。前回のPORTA状態とXORをします。XORは、異なる場合に1でした。今回のPORTA状態とのANDをすると、「前回と異なる、かつ、今回が1」ということは「立ち上がり」になります。PAOLDのbit4が1になれば、立ち上がりです。;データ無はINT_31へ立ち上がりでなければINT_31にジャンプします。PORTD,0INT_321受信データが1ならPORTD(LED)のbit0をセット(点灯)せよ、という事です。2ならbit1を・・・3ならbit2を・・・・・・この調子で、単純に8パターン並べました。頭を使ったほうがいいのかもしれませんが、時間が無いので、安全かつ単純な方法としました。テーブルは、トラブルが起きると面倒なので極力使いません。INT_399PORTCは各LEDに対応する押しボタンの入力です。プルアップされており、通常Hで押すとLになります。処理内容は、データ確定信号の立ち上がりの部分と似たようなものです。押されたボタンに対応するSWOLDのビットが1になるので、それによりLEDを消灯します。PORTD,7こんな簡単なプログラムですから、1時間で作れたわけです。いつもプログラムの「ひな形」を元にして作りますから、これでかなりの時間短縮です。タイマー割り込みが数msごとに入る、確実に動くひな形を作っておいて利用します。この本番プログラムの前に、一番最初はハードウェアの動作確認プログラムを作って走らせました。全てのLEDの指定ビットが点灯するかどうか、押しボタンはどうか、というテストです。MAINシフト命令とか何とかゴチャゴチャ考えないで、単純に、単純に、LEDが順番に点灯していくようにしました。ハードウェアのチェックのためのプログラムでミスをしてはいけません。1ビット分で2行ですが、これを単純にコピー、貼り付け、でビット番号だけ書き直しますからパッパッとできますね。TM1Sは1秒待ちのサブルーチンです。これならLEDの動きを目で見てわかります。飲食店は、すでに開業しています。週末は忙しくなるので、仮設でもいいから一刻も早く入れてくれと、再三の催促がきました。(^_^;)しかしプログラムは1行も書いていません。これは笑うしかありません。日付が変わるまで、発注者の監視付きで、製作をしていました(汗)それでとりあえず、買ってきたままの送信機8個と受信機3個で、グループをA、B、Cに分けて仮設する事になりました。受信機の音が同じですから、左、中、右、という具合に厨房に設置して、どっちから鳴ったかによって、判断してもらうように責任者と話をつけました。トホホ・・・・・・(^_^;)現場の据え付けには、色々と考えたり調べて確認しなければならない事があります。受信機を壁に取り付けるのならば、どういう固定方法をとるのか。壁は木か石膏ボードか。