私はコタツで寒さを凌いでいます
コタツいいですよね
エアコンやファンヒーターと比べて温もりを感じられます
しかしながら、手動でスイッチを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の接続については、後日記事にします
コメント