WiFi増設ブザー側ソース

WiFi増設側Server説明

増設チャイム

 スイッチが押されたときに、Clientから増設側のServerを呼び出して、警告音の回路を25秒間ONにします。(音楽ではなく、ただのブザーの場合は、5秒間ほどでもよいかもしれません。)
 ブザーを複数設置する場合は、サーバーの固定IPアドレスを、それぞれ違うものに指定します。

 チャイムの音色に凝らずに、工作を簡単に済ませたい場合は、5V用のブザーをGPIO16(右の下から3番目)端子につなぎます。
 出力端子は、GPIO03や01(右の下2つ)ではうまく動きませんでした。
 電圧は3Vしか流れませんが、一応はブザーが鳴ったのが分かるぐらいの音はします。この場合、12mA程度の電流が流れていました。

 もっと好きな音を出そうとするなら、「高音質 TFカード Uディスク  Mp3デコーダ  モジュール  デコーダボード 無損失デコード 増幅器」というやつを使います。
 ただこのボードの場合、5V電源でなければ使えないので、3V用のリレーをかまして、音声を流す間だけ、WeMos D1ボード上に出ている5V端子から取った電流を流してやります。
 ところがGPIO16端子から出てくる信号電流だけでは、ブザーは鳴らせても、3V用のリレーを動かすだけの力がないようですので、トランジスタを使って、リレーを動かせるように、GPIO16からの電流を増幅してやらなければなりません。

 それをするのは結構面倒でしたが、このボードのお陰で、ともかく、我が家は朝ドラ「あまちゃん」のテーマソングの最初の部分を流すことができるようになりました。
 無線LANで飛ばせて、結構大きな音がするので、2階は、真ん中の廊下に設置しておけば、2部屋とも来客が分かります。

 プログラムの注意点は、サーバー側は、IPアドレスを固定にしておかないと、クライアントからの呼び出しアドレスが一定しないことです。他の機器で、絶対に使っていないアドレスを指定しておきましょう。

 なお、このプログラムの改造ベースは、「スケッチ例>ESP8286WebServeri>HelloServer」です。

WiFi増設ブザー側ソースコード

#include  <ESP8266WiFi.h>
#include  <ESP8266WebServer.h>
#include  <ESP8266mDNS.h>
//**************************************************
const  char*  ssid  =  "Your ID";  
const  char*  password  =  "Your Password";
ESP8266WebServer  server(80);

//警告音出力接続ピン
int  BEEP_SOCKET  =  16;
#define  IPADDRESS  IPAddress(192,  168,  ***,  ***)
#define BEEPTIME 25000  //1000分の1秒単位
//**************************************************

const  int  led  =  13;

void  handleRoot()  {
  //  クライアントから呼び出しを受けた時の処理
  //  digitalWrite(led,  1);
  server.send(200,  "text/plain",  "Beep  on  from  Beep-server1");
  //  digitalWrite(led,  0);
  on();
}

void  handleNotFound(){
//  digitalWrite(led,  1);
  String  message  =  "File  Not  Foundnn";
  message  +=  "URI:  ";
  message  +=  server.uri();
  message  +=  "nMethod:  ";
  message  +=  (server.method()  ==  HTTP_GET)?"GET":"POST";
  message  +=  "nArguments:  ";
  message  +=  server.args();
  message  +=  "n";
  for  (uint8_t  i=0;  i<server.args();  i++){
    message  +=  "  "  +  server.argName(i)  +  ":  "  +  server.arg(i)  +  "n";  }
  server.send(404,  "text/plain",  message);
//  digitalWrite(led,  0);
}

void  setup(void){
  pinMode(led,  OUTPUT);
  digitalWrite(led,  0);
  pinMode(BEEP_SOCKET,  OUTPUT);
  digitalWrite(BEEP_SOCKET,  LOW);

  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid,  password);
  
  Serial.println(F(""));

  //  Wait  for  connection
  while  (WiFi.status()  !=  WL_CONNECTED)  {
    delay(500);
    Serial.print(F("."));
  }
  WiFi.config(IPADDRESS,  WiFi.gatewayIP(),  WiFi.subnetMask());
  Serial.println(F(""));
  Serial.print(F("Connected  to  "));
  Serial.println(ssid);
  Serial.print(F("IP  address:  "));
  Serial.println(WiFi.localIP());

  if  (MDNS.begin("esp8266"))  {
    Serial.println(F("MDNS  responder  started"));
  }
  server.on("/",  handleRoot);
  server.on("/inline",  [](){
    server.send(200,  "text/plain",  "this  works  as  well");
  });
  server.onNotFound(handleNotFound);
  server.begin();
  Serial.println(F("HTTP  server  started"));
}

void  on(){
  Serial.println(F("BEEP!!"));
  digitalWrite(BEEP_SOCKET,  HIGH);
  delay(BEEPTIME);
  digitalWrite(BEEP_SOCKET,  LOW);
}

void  loop(void){
  server.handleClient();
}

ケース

 ケースは、100均の3個108円のタッパーを使いました。セリエで売っているクリアーボックス小を使う方が、きれいな仕上がりにはなると思います。
 タッパーは、リレーの高さが入らないので、少々はみ出しますし、見た目は今一歩ですが、何も固定しなくともぴったりしていて、中で部品が全くごそごそしないので、私はこちらを使っています。
 スピーカーは、ホットボンドで蓋に固定しました。

タイトルとURLをコピーしました