Top>電子工作 > arduino > 玄関チャイム増設 > 概説

玄関チャイム増設 概説

 私の家は、はるか昔の昭和の時代の家ですから、玄関チャイムと言えば、1階の台所にある装置が一カ所鳴るだけです。ですから、2階にいてテレビなど付けていると、チャイムが鳴っても全く気が付きません。
 宅配便のおじさんなどは、そのためわざわざ電話をかけてくる始末です。
 それで、装置を数カ所に設置できる市販のものを一生懸命探していましたが、なかなか適当なものが見つかりません。
 後から増設となれば、有線で設置するのは面倒くさすぎますし、市販の無線で飛ばす装置は、大概電池を使っているので、メンテナンスフリーで放っておくことができません。チャイムなどいつ鳴るか分からないものなので、電池が無くなっていることにも気づきにくいはずで、電池が無くなったまま気づかないのでは、せっかくのチャイム増設の意味もありません。
 できれば、一つだけ増設などとケチなことは言わないで、必要なところに複数増設したいと考えたりもします。

WiFiにするか

 どうしたものかとずっと思案していましたが、ESP8266を使ったarduinoを使うと、家の無線LANが利用できるようなので、コードを敷設することなくチャイムが何台でも増設できそうなことが分かりました。
 無線LANが届くところならどこでも警告できるようになるため、これは結構強力です。
 ただこの場合、スイッチ側arduinoから増設側arduinoへの一斉送信方法が私にはわからなかったので、増設側へ1台ずつ送信していくことにしたため、台数が増えると後の機器ほど鳴りだすまでに時間がかかります。WiFiで機器間の通信を確立していくのはかなり時間がかかります。
 それと、細かいことを言えば、ESP8266を使ったarduinoは、特定の商品以外は技適には通っていないので、正式に言うとこれを使って日本で無線LANを組むのは、違法行為なのかもしれません。
 そんなものがamazonなどでもどこでも大っぴらに売られていて、簡単に手に入るのは、いかがなものかとは思いますが。

433mhz無線モジュールにするか

 無線LAN以外の方法としては、433mhz無線モジュールというのがありました。これなら、送信機からの電波を、複数の受信機が同時受信するため、何台機器を増設しても、時間差が生じません。それに、送信してから、受信するまでのタイムラグも、WiFiを使うほどはありません。
 arduinoも、ESP8266を使ったarduinoのような特殊なものを使わなくても、普通のuno互換機を使うことができます。
 そういう意味では、433mhz無線モジュールの方がよいような気もしますが、これも問題がないわけではありません。
 一番の問題点は、受信範囲がそれほど広くはないことです。鉄製の扉越しだと電波が届きませんし、ちょっと家が広くなると、部屋の中まででは、送信できないところがでてきます。
 アンテナを付けてこの程度の受信距離ですので、アンテナを付けなければ、飛んでも同一室内だけで、全く実用にはなりません。
 もう一つは、免許の問題もあります。このモジュールにアンテナを付けてしまうと、アマチュア無線の免許を受けていないと、電波法違反になる恐れがあるそうです。
 モジュール自体も技適マークを受けているわけではないので、アマチュア無線の免許を受けていても、本来は使うべきではないのかもしれません。
 私はいまだに一応、毎年600円を払って無線局免許を受けているので、その面で半分は条件をクリアーしているのかもしれませんが。

WiFiならWeMos D1

 ESP8266は、本来プログラム書き込みのためには、配線を別途し直さなければならないわずらわしさがあるようですが、ESP8266を使いながら、arduino IDEを接続するだけで、arduino UNOと同じように手軽にプログラムを書き込み出来るようにした商品がWeMos D1です。
 CH340のUSBシリアル変換チップを使っているので、自動でインストールされなければ、CH340のドライバーをインストールします。
 ドライバーがインストールされているかどうかは、USBでWeMos D1 を接続したときに、ディバイスマネージャーで、「ポート(COMとLPT)」を展開して、「USB-SERIAL CH340(COM3)」のような表示が出ていれば、OKです。「COM」の所は、接続されているポート番号が表示されます。
 ディバイスマネージャーを開くには、Windows10の場合、メニュー画面から、「Windows システムツール>ハードウェアとサウンド」画面に出てくる、「ディバイスとプリンター」の選択項目の一番最後に、ディバイスマネージャーがあるので、それを選択します。
 
 後は、ArduinoIDEを起動して、「ツール>ボード>WeMos D1 R2 & mini」を選んで、シリアルポートを接続したポートに指定してやれば、速度は普通のarduinoよりだいぶ遅いですが、普通に書き込みができます。(ポート番号は、上記、ディバイスマネージャーで確認)
 書き込みの時、時に、「error:espcomm_upload_mem failed」というエラーが出ることがあるのは、ご愛嬌といったところでしょうか。不良品でないなら、数回プログラムを送ってやればきちんと送信出来て、「・・・・・・・・・」という書き込みが始まります。
 ところが、私が最初に手に入れた商品は、これができなくて、「どうしたら書き込みができるのか」と、ずいぶんと苦労しました。
 WeMos D1は、表面にarduino UNOと同じ書き込みがありますが、実際に指定できるのは裏面に書かれているポート番号です。その点は使用上注意しておかなければなりません。

どうやっても書き込みができない

 上述の通り、最初に手に入れた商品は、どこをどうやっても書き込みができませんでした。最初は何かやっている拍子に1度くらいは書き込みができたような気がしていたので、それでもあきらめずにいろいろやっていました。
 後から買った商品は普通に動くので、最初のものはどうしても動かなくて、諦めて、捨てようかと思っていた矢先、今回ようやっと何とか使えるようになったようです。
  (以下、ESP8266 搭載の WeMos D1 コピーボードを調べてみました)より引用

<途中からコードの書き込みができない時>
 最初はコードの書き込みが出来ていても、書き込む内容によって、次から書き込みができない事が有りました。その場合は、Webからの情報による次の処理で対応できました。
 1.UNO互換でD8(ESP8266のGPIO0)ピンをGNDに接続
 2.その状態でボード(CPU)のリセットを行う
 3.書き込みの障害が出ていないコードを書き込む
 4.以後は以前の通りの方法が可能となる

 2.はリセットボタンを押すということです。

 書き込みができないときに、arduinoの電源をつなぎ直したり、arduinoIDEを再起動させたりすると、偶にうまく書き込める時もあります。

 これで大体は使えているようですが、ブレットボード上で検査している分には普通に書き込みできたのに、433mhz無線の受信モジュールをシールドの形にして組み込んでしまうと、ごくたまに書き込みが出来ても、ほとんどなぜかシリアルポートが書き込めないというエラーが出てしまうようになりました。私の設定で、シリアルポートとピンが競合しているのかもしれません。
 この場合、シールドを取り外すと書き込みはできますが、根本的な理由はまだ不明です。ちょっと、気持ちが悪いです。

回路の概略

増設チャイム
 元々あるチャイムをそのまま使って増設するのか、arduinoだけでチャイムを構成するのか、どちらでも手間はほぼ同じです。
 元々のチャイムを使う場合無線版はこちら)は、私の使っているチャイムEC730は、スイッチの端子にいつも1Vほどの電流が流れていて、ボタンを押したときだけ一瞬0Vに近くなります。
 それを読み取って、スイッチが押されたときに、増設側の回路をONにします。
 arduinoだけでチャイムを構成する場合無線版はこちら)は、スイッチが押されたかどうかを最初から読み取れば、後の回路は同じです。

WiFiの場合

 スイッチが押されたことを感知する側から送信して、増設側の音源がONになるような仕掛けを作ればいいので、スイッチ側から接続されたすべての増設側のarduinoに一斉送信出来ればいいのですが、スイッチ側をServerにしてそのように発信する方法が、私には分かりませんでした。
 そこでスイッチ側をClientにして増設側にブザーの個数分だけ接続要求を発信し、増設側Serverは、呼び出しを待ち受けて、ブザーの電圧をONにする回路にしました。
 ClientはIPアドレスの自動取得で問題ありませんが、Server側はIPアドレスが変わってしまうと呼び出せないので、固定IPアドレスにします。
 無線LANの接続に数秒かかるようなので、こうすると後に接続されたブザーほどスイッチが押されてから鳴るまでのタイミングがかなり遅れてしまいます。しかし、とりあえず今の私の技術力では、致し方なしという所です。
 相変わらず、無線接続の正確な知識がないまま、サンプルプログラムをちょっと修正してごまかしているだけなので、かゆいところに手が届かない思いをしながら、プログラムをしています。

無線の場合

 無線の場合は、スイッチ側に送信モジュールを配置して、受信側は受信モジュルを配置します。電波は一斉送信なので、受信側に何台あっても設定は1つで済みます。
 送信時間も、WiFiの場合よりも短時間で済んでいるようです。
 これで、到達距離がもう少し遠ければ申し分ないのですが。