無線増設ブザー側ソース
無線増設警告側説明
スイッチが押されたときに、呼び出し側からの電波を受信し、警告音の回路を25秒間ONにします。(音楽ではなく、ただのブザーの場合は、5秒間ほどでもよいかもしれません。)
ブザーを複数設置する場合も、同じものを複数配置するだけです。
使用arduino
私は、無線Lanを使って、初めにこのチャイムの増設を始めたので、それ用に用意したWemos D1ボードをそのまま使っています。
Wemos D1ボードは、かなり癖があり使いにくいので、WiFiの必要がない無線の場合は、UNO互換のボードを使う方がよいでしょう。
その場合は、同じピン位置を利用するなら、以下のように変更します。
GPIO16→2 GPIO12→6 GPIO13→7 GPIO15→10
警告音について
チャイムの音色に凝らずに、工作を簡単に済ませたい場合は、5V用のブザーをGPIO16(右の下から3番目)端子につなぎます。
WeMos D1では、出力端子はGPIO03や01(右の下2つ)ではうまく動きませんでした。
電圧は3Vしか流れませんが、一応はブザーが鳴ったのが分かるぐらいの音はします。この場合、12mA程度の電流が流れていました。
もっと好きな音を出そうとするなら、「高音質 TFカード Uディスク Mp3デコーダ モジュール デコーダボード 無損失デコード 増幅器」というやつを使います。
Mp3デコーダ モジュール を使えるようにするのは結構面倒(方法は、リンク参照)でしたが、このボードのお陰で、ともかく、我が家は朝ドラ「あまちゃん」のテーマソングの最初の部分を流すことができるようになりました。
無線の到達距離がそれほどではないので、各部屋に置こうとすると電波が届かないかもしれませんが、結構大きな音がするので、2階は、真ん中の廊下に設置しておけば、2部屋とも来客が分かります。
無線受信モジュールの接続
無線受信モジュールの接続については、先に説明しました。
無線増設ブザー側ソースコード
#include <RH_ASK.h>
#include <SPI.h> // Not actualy used but needed to compile
#define PASS "Chime1" // 識別用パスワード**
int BEEP_SOCKET = 16; // 警告音出力接続ピン
#define BEEPTIME 25000 // 1000分の1秒単位
RH_ASK driver;
void setup(){
Serial.begin(115200); // Debugging only
if (!driver.init()){
Serial.println(F("radio init failed"));
}
pinMode(BEEP_SOCKET, OUTPUT);
digitalWrite(BEEP_SOCKET, LOW);
}
void chackpass(){
uint8_t buf[30];
char buf2[30];
uint8_t buflen = sizeof(buf);
if (driver.recv(buf, &buflen)){ // Non-blocking
// Message with a good checksum received, dump it.
Serial.print(F("buflen="));
Serial.println(buflen);
int i=0;
for(i=0;i<buflen;++i){
buf2[i]=(char)buf[i];
}
buf2[i]=”;
if(strcmp(buf2,PASS)==0){
Serial.print(F("Pass: "));
Serial.println(F("OK"));
on();
}
}
}
void on(){
Serial.println(F("BEEP!!"));
digitalWrite(BEEP_SOCKET, HIGH);
delay(BEEPTIME);
digitalWrite(BEEP_SOCKET, LOW);
}
void loop(){
chackpass();
}
ケース
ケースは、100均の3個108円のタッパーを使いました。セリエで売っているクリアーボックス小を使う方が、きれいな仕上がりにはなると思います。
タッパーは、リレーの高さが入らないので、少々はみ出しますし、見た目は今一歩ですが、何も固定しなくともぴったりしていて、中で部品が全くごそごそしないので、私はこちらを使っています。
スピーカーは、ホットボンドで蓋に固定しました。
