電電高専生日記

高専生活・電子工作・プログラミングの活動記録。とっくに高専生ではない
2014-11-23 (Sun)

【改良版】 RaspberryPiで作ったカメラ付き戦車ラジコン

RaspberryPiで作ったカメラ付き戦車ラジコンの続きとなります。

前回公開した戦車は、前進以外はまともに動作させることができませんでした。原因は、モーターの電源でした。単三電池を3本から4本(直列接続)に増やしたところ、スイスイ動くようになりました。

RaspberryPiで作った戦車

以下、動いている様子の動画

操作画面も改良し、どのボタンを押しているかを分かりやすくしました。また、停止ボタンを取り除き、ボタンを離したら自動的に停止するようにしました。

操作画面やプログラムのソースを貼ります。

・操作画面のHTML部分

TANK

・操作画面のJavaScript部分
$(function(){
	var phpsrc="caterpillar.php";
	$(".ctrlBtn").mousedown(function(){
		var comm = this.id;
		if (comm=="advance"){
			$.post(phpsrc, {mortor:"left", act:1});
			$.post(phpsrc, {mortor:"right", act:1});
		} else
		if (comm=="turningLeft"){
			$.post(phpsrc, {mortor:"left", act:-1});
			$.post(phpsrc, {mortor:"right", act:1});
		} else
		if (comm=="turningRight"){
			$.post(phpsrc, {mortor:"left", act:1});
			$.post(phpsrc, {mortor:"right", act:-1});
		} else
		if (comm=="back"){
			$.post(phpsrc, {mortor:"left", act:-1});
			$.post(phpsrc, {mortor:"right", act:-1});
		}
		$(this).css({"background":"#FFCC66"});
	});
	$(".ctrlBtn").mouseup(function(){
		$.post(phpsrc, {mortor:"left", act:0});
		$.post(phpsrc, {mortor:"right", act:0});
		$(this).css({"background":"#FFFFFF"});
	});
});
・Apache2からのGPIOピン操作(caterpiller.php)
/*
    mortor ... "left":左のモーター "right":右のモーター
    act    ... 1:前回転 0:停止 -1:後回転
*/
$pin1 = $pin2 = -1;
if ($_POST["mortor"] == "right"){
	$pin1=26;
	$pin2=19;
}
if ($_POST["mortor"] == "left"){
	$pin1=13;
	$pin2=6;
}

if ($_POST["mortor"]=="right" || $_POST["mortor"]=="left"){
	if ($_POST["act"] == 1){
		exec("gpio -g mode ".$pin1." out");
		exec("gpio -g write ".$pin1." 0");
		exec("gpio -g mode ".$pin2." out");
		exec("gpio -g write ".$pin2." 1");
	} else
	if ($_POST["act"] == 0){
		exec("gpio -g mode ".$pin1." out");
		exec("gpio -g write ".$pin1." 0");
		exec("gpio -g mode ".$pin2." out");
		exec("gpio -g write ".$pin2." 0");
	} else
	if ($_POST["act"] == -1){
		exec("gpio -g mode ".$pin1." out");
		exec("gpio -g write ".$pin1." 1");
		exec("gpio -g mode ".$pin2." out");
		exec("gpio -g write ".$pin2." 0");
	}
}

プログラムに関してはもっと上手い書き方があったと思うんですが、面倒なのでここは直さずそのままにしときました。

ということで、戦車ラジコンの動作が快適になりました。これで残りの欠点は、RaspberryPi用電源が長く持たないことと、戦車の各部品が固定されていない為に脆いこととなりました。しかしRaspberryPiは戦車ラジコン以外にも色々と使いたいので、これ以上の改良はしないかもしれません。

追記(2015/01/02)
このページが何故か非常に重かったのですが、原因が分かりました。
どういうわけかプライベートアドレスをソースとしたimgタグを貼っており、十数秒も接続が試行されていました。
このimgタグを除去したので、今はページが軽くなっております。

[Tag] * JavaScript * RaspberryPi
Last Modified : 2015-01-11

Comment






非公開コメント