Make

コタツをスマートフォンで操作する

Make
この記事は約7分で読めます。
スポンサーリンク
寒い季節となりました

私はコタツで寒さを凌いでいます
コタツいいですよね
エアコンやファンヒーターと比べて温もりを感じられます

しかしながら、手動でスイッチをON/OFFしなければなりません
さらに、電源を付けっぱなしで外出することもありとても危険です

コタツの電源をスマートフォンで操作できるようになれば、わざわざスイッチまで行かなくて済みます
スマートフォンでコタツを操作できるものを作ってみたので掲載しておきます

準備するもの
・お手持ちのスマートフォン

・Arduino

・サーボモーター
購入先: Amazon

・タクトスイッチ
購入先: 秋月電子

・Bluetoothアダプタ
購入先: ヨドバシカメラ

・SBDBT
購入先: RT ROBOT SHOP

準備するものを見た通り、ArduinoとスマートフォンをBluetoothで接続して操作を行っています
そのため、スマートフォン以外でもBluetoothが内蔵しているパソコンでも操作をすることが可能です

上記のモノを接続し、プログラムを書き込みます
書き込むプログラム↓

/*
Create date: 2014/11/09
implementafor: Momiji Miyakawa
HP: http://miyakawamomiji.blogspot.jp/
*/

#include <Servo.h>
#include <MsTimer2.h>
Servo servo;        //Servoオブジェクト作成
int i  = 0;
int flg = 0;

void setup()
{
  Serial.begin(9600);
  static boolean output = HIGH; 
  output = !output;
  servo.attach(9);  //サーボ接続ピン
}

//データ読み込み関数
char Serialread(){
  while(!Serial.available());
  return Serial.read();
}

//割り込みタイマー
void flash() {
  static boolean output = HIGH;
  Serial.println("switch off");
  output = !output;
  stpkota();
}

//ON スタートこたつ
void sttkota(){
      MsTimer2::set(i * 100000, flash); // ミリ秒に変換し、タイマー割り込みを実行する
      //MsTimer2::set(10000, flash);     //debag
      MsTimer2::start();
      servo.write(0); // サーボの角度を90°に設定
}

//OFF ストップこたつ
void stpkota(){
      servo.write(90); // サーボの角度を90°に設定
      MsTimer2::stop();
      flg = 0;
}

//main文
void loop()
{

  if(flg == 0){
    Serial.println("How time?");
    Serial.println("1 : 1 hour");
    Serial.println("2 : 2 hour");
    Serial.println("3 : 3 hour");
    Serial.println("4 : 4 hour");
    //Serial.println("e : 30 minutes");
    delay(1000);
    char w1 = Serialread();
  
    switch(w1){
      //1時間
      case '1':
      i = 36; //Arduinoのintegerは-2^15から(2^15)-1の範囲であるため、1/100000をする
      flg = 1;
      Serial.println("ok. 1 hour");
      sttkota();
    
      Serial.println("Encyou = e, OFF = o");
      break;
    
      //2時間
      case '2':
      i = 72; //Arduinoのintegerは-2^15から(2^15)-1の範囲であるため、1/100000をする
      flg = 1;
      Serial.println("ok. 2 hour");
      sttkota();
    
      Serial.println("Encyou = e, OFF = o");
      break;
    
      //3時間
      case '3':
      i = 108; //Arduinoのintegerは-2^15から(2^15)-1の範囲であるため、1/100000をする
      flg = 1;
      Serial.println("ok. 3 hour");
      sttkota();
    
      Serial.println("Encyou = e, OFF = o");
      break;

      //4時間   
      case '4':
      i = 144; //Arduinoのintegerは-2^15から(2^15)-1の範囲であるため、1/100000をする
      flg = 1;
      Serial.println("ok. 4 hour");
      sttkota();
    
      Serial.println("Encyou = e, OFF = o");
      break;
    
      //30分
      case 'q':
      i = 18; //Arduinoのintegerは-2^15から(2^15)-1の範囲であるため、1/100000をする
      flg = 1;
      //Serial.println("ok. 30 minutes");
      sttkota();
      Serial.println("Encyou = e, OFF = o");
      break;

    //エラーメッセージ
     default:
      Serial.println("error");
      stpkota();
      //Serial.println("chouse a - d");
      break;
    }
    delay(1000);
  }
  
while(flg == 1){
   char w2 = Serialread();

   switch(w2){
     //延長
     case 'e':
     i = 108; //3時間の延長
     //Serial.println("1"); //debag
     sttkota();
     break;
    
     //OFF
     case 'o':
     stpkota();
     break;
   }
  
 }
}

サーボモータを9pinに接続します
SBDBTの接続については下記の動画を参照してください
(参考) mはげ様 【ゆっくり解説】 Bluetoothの使い方 【電子工作】

このプログラムをざっくり説明すると、「スマホから”1~4”までの数値をArduinoが読み込み、それに対応したタイマーが開始し、コタツがONになる」ようにしました
“1”は1時間タイマー、”2”は2時間タイマー、”3”は3時間タイマー、”4”は4時間タイマーです
止めたい場合は、”o”を送信すれば止まります
延長するときは”e”を送信してください

文字だけでは分かりにくいので動画を作成しました
よろしければ視聴してみてください↓↓

動画でもありましたが、起床した時にコタツが温かいといいですよね
RaspberryPiと接続してcronにて指定した時刻にコタツの電源がONになるようにしています

ArduinoとRaspberryPiの接続については、後日記事にします

コメント

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