電電高専生日記

高専生活・電子工作・プログラミングの活動記録。とっくに高専生ではない
2015-02-13 (Fri)

RaspberryPiで扇風機の制御

RaspberryPi扇風機の制御をするシステムを作りました。
以前にラジコンまで作っておいて(【改良版】 RaspberryPiで作ったカメラ付き戦車ラジコン)、今さら扇風機の制御とは地味な感じもしますが、作った理由があります。
私はRaspberryPiにWi-Fiドングルを付けて無線で弄っているのですが、このWi-Fiドングル、何故かすぐ熱くなってしまうんですね。その熱が原因でPiが落ちてしまうことがあります。
そこで、RaspberryPi自動冷却システムを作ろうと思いました。冷却用装置として小型USB扇風機を使うわけです。
自動冷却システム自体はまだ出来ていないんですが、とりあえず扇風機の制御の部分は完成しました。

制御の様子

とりあえずまず実際に動いている様子を掲載します。

パソコンとRasPi・扇風機・制御回路はつながっていません。

スマホからなどでも制御できます。スマホで動画撮影するから、スマホで動かすところを動画撮れなかった。

使用機器

  • RaspberryPi Type B+
  • USB扇風機 Mini Fan(定格:電力2.5[W] 電圧5.0[V] 電流500[mA])

制御回路

トランジスタと抵抗だけで構成しました。とりあえず回路図を示します。

この回路は、Vrasp(RaspberryPiのGPIO信号)が5[V]入力されているときに扇風機はONとなります。
RaspberryPiのGPIOピンは数mA~10数mAまでしか出力しないようなので、2段階に増幅しています(しかしよく考えてみると、hfe=100と仮定しても、5[mA]あればいいのだから普通に1段階で済んだ)。
普段学校で使っていたトランジスタ2SC1815は最大コレクタ電流が150[mA]なので、今回は扇風機部分には不適です。扇風機部分には、2SC2120(最大コレクタ電流800[mA])を使いました。
RaspberryPiと電源のGNDをつなぎ忘れていて回路が動作しなかったので、それに数分ほど悩んだりしました。

プログラム

ラジコンのときと同じように、JavaScriptとPHPで作りました。以下、ソース。

JavaScript

$(function(){
	var state=; //読み込み時の扇風機の状態 0/1
	var states=["OFF", "ON"];
	
	$("#switch").click(function(){ //ボタンクリック時
		$.post("switch.php", {}, function(ret){
			if (ret=="SUCCESS"){
				if (state)	state=0;
				else		state=1;
				$("#state").html(states[state]);
			} else {
				alert("エラー");
			}
		});
	});
});	

PHP(JavaScriptよりajaxで呼び出されるswitch.php)

exec("gpio -g mode 21 out");
$state=exec("gpio -g read 21");
if ($state)	$state=0;
else		$state=1;
exec("gpio -g write 21 ".$state);

if ($state == exec("gpio -g read 21"))
	exit("SUCCESS");
else 
	exit("ERROR");

自動冷却システムにするには

とりあえずこうして扇風機の制御は可能になりました。あとは温度に応じて扇風機をONにさせるだけです。
「RaspberryPiの温度を取得してそれを基準値と比較して高かったら扇風機ON」ってプログラムを書き、これをcron設定すればいいだけです。しかしそこは色々調べなきゃいけないので、また今度ということにします。
終わり。

[Tag] * RaspberryPi * JavaScript
Last Modified : 2015-02-14

Comment






非公開コメント