ArduinoとRaspberry Piで作るスマート家電(寝返り扇風機)(3)
前回の記事の続きです。もうちょっとで完成なので頑張りましょう。はやく快適な夏の夜を手に入れようぜ!
Arduinoで扇風機の電源切り替え
Raspberry Piから寝返り通知を受け取ったらサーボモータが動くようにしましょう。下記サンプルコードを新しいスケッチに貼付けてArduinoに書き込みましょう。(通信内容自体は全く見ていない残念なコードです。)※XBeeシールドを接続したままではスケッチの書き込みに失敗するので注意が必要です。
#include <Servo.h> #define RUNTIME 10 // ここで扇風機の稼働時間(秒)調節できます Servo myservo; unsigned long latest_time; // 現座時刻を保存する変数 unsigned long int_time; // 扇風機を稼働し始めた時間を保存する変数 double passed_time; // 経過時間を保存する変数 int mode=0; // 0で大気状態、1で稼働状態を表す // // 初期化関数 // void setup(){ myservo.attach(9); // 9番のアナログ出力ピンを使用してサーボモータを操作する myservo.write(5); // サーボモータのプロペラの初期角度 Serial.begin(9600); // ログをシリアルモニタに表示させる } // // メインループ // void loop(){ // Raspberry Piからシリアルパケットを受け取った場合の処理 if(Serial.available() > 0){ mode = 1; // 稼働状態に切り替え int_time = millis(); // 現在時刻を取得 myservo.write(50); // プロペラの角度を変更(扇風機のスイッチをオンにする) Serial.read(); } // 扇風機が稼働中の場合の処理 if(mode == 1){ latest_time = millis(); // 現在時刻を取得 passed_time = (double)(latest_time - int_time) / 1000.0; // 経過時間を算出 Serial.print(passed_time); Serial.print("\n"); // 一定時間が経過したら扇風機の電源をオフにする if(passed_time >= RUNTIME) { mode = 0; // 待機状態にに切り替える myservo.write(5); // プロペラの角度を変更する(扇風機の電源をオフにする) } } }
下記サイトを参考に接続してください。ジャンパワイヤが3本必要です。
糞の足しにもならないArduino講座:その3
- スイッチ付きコンセントとサーボモータの接着
こんな感じで泥臭く接着しました。AndroidのUSBアダプタを犠牲にして高さを調節しています。
これでArduino側の準備は完了です。
- WEBサーバーを起動
起動したらスマホからWEBサーバ(http://192.168.64.42:11337)に接続して、スマホを振って振動を与えてみましょう。サーボモータのプロペラが回転して扇風機が回り始めるはずです。あと、実際にベッドで使用する際の注意なのですが、スマホのディスプレイ電源の自動オフ機能は切っておいてください。
root@raspberrypi:/var/node/negasen# node app.js info - socket.io started
最初の記事でお見せした感じで動きましたか?
振り返り
2013年度の目標が「電子工作デビュー」だったので、なんとか目標達成のボーダーは超えられたんじゃないかと思います。それにしてもグーグル先生は偉大ですね。Arduinoに関する情報は少ないものの、欲しい情報はほとんど無料で手に入ってしまうなんて。ほんと、すごい時代に生まれてきてしまったなあ、と今更ながら感動しております。
失敗談的なもの
実はサーボモータを使う前に、ソリッドステート・リレーという技術を使って電源のON/OFF機能を実現しようとしていました。(参考:連載(26)Arduinoで何でも制御 いろんなArduinoがある(8))電源ケーブルのカバーを剥いて、はんだ付けなんかにも初挑戦したのですが、結果的に失敗に終わってしまいました。得られたものは ”感電しかけたという経験” のみでした。次に電子工作を挑戦する機械があったらはんだ付けに再チャレンジしてみようと思います。