RaspberryPiで作ったカメラ付き戦車ラジコンの続きとなります。
前回公開した戦車は、前進以外はまともに動作させることができませんでした。原因は、モーターの電源でした。単三電池を3本から4本(直列接続)に増やしたところ、スイスイ動くようになりました。
以下、動いている様子の動画
操作画面も改良し、どのボタンを押しているかを分かりやすくしました。また、停止ボタンを取り除き、ボタンを離したら自動的に停止するようにしました。
操作画面やプログラムのソースを貼ります。
・操作画面のHTML部分・操作画面のJavaScript部分TANK
↑←→↓
$(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