<Raspberry Pi-36> 以前、PICを使って前後左右コントロールする戦車を製作しましたが今回はRaspberry pi zeroを 使って製作しましたので紹介します。 無線LAN子機とwebカメラを搭載していて、タブレットからwifiで戦車の走行をコントロールが出来 (自宅外からもインターネットで操作可)、webカメラで取り込んだ映像をタブレットの画面に表示します。 製作した戦車画像 タブレットの操作画面、クリックして見てください。 (戦車搭載のwebカメラが無線機を撮影しています) <主要部品> Raspberry Pi Zero webカメラ:ロジテックC270 無線LAN子機:ELECOM WDC-150SU2MBK USB HUB:100円ショップ ツインモーターギヤーボックス:タミヤ 楽しい工作シリーズNO.97 トラック&ホイールセット:タミヤ 楽しい工作シリーズNO.100 ユニバーサルプレートセット:タミヤ 楽しい工作シリーズNO.98 リチウム電池:3.7v9800mAh×3(ヤフオク) 5v定電圧(組立て) 単4エネループ×3 電池ボックス、基板など 回路図(主要部分) <走行制御> ・GPIO5がHでモータが回転して前進 ・GPIO6がHで上モータが逆回転するので右折(GPIO5はH) ・GPIO12がHで下モータが逆回転するので左折(GPIO5はH) ・GPIO6,GPIO12両方がHで後進(GPIO5はH) ・GPIO20がHで2オームが短絡してモータが回転が速くなる(GPIO5はH) <index.html> 同一フォルダにRaspberry Piで遊ぼう!で紹介しているwebiopi_proxy.js jquery.js、style.cssを置く (注) <と>は半角の<と>にして下さい(ページが文字化けするので<と>にしています) ---------------------------------------------------------------------------------------------- <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>Raspberry Pi ZERO タンク</title> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <link rel="stylesheet" href="style.css" media="screen"> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="webiopi_proxy.js"></script> <script type="text/javascript"> <!--時刻表示の関数 ここから--> function disp(){ var now = new Date(); // (不要な行を削除する) var watch1 = now.toLocaleString(); // ローカル時 //使用しないのでコメントアウト //var watch2 = now.toGMTString(); // グリニッジ標準時 //var watch3 = now.toUTCString(); // 世界標準時 // テキストフィールドにデータを渡す処理(不要な行を削除する) document.form1.field1.value = watch1; // ローカル時 //使用しないのでコメントアウト //document.form1.field2.value = watch2; // グリニッジ標準時 //document.form1.field3.value = watch3; // 世界標準時 setTimeout("disp()", 1000); } <!--時刻表示の関数 ここまで--> //初期設定 var push12 = 0; var push16 = 0; var push20 = 0; var push5 = 0; //set_gpio_function(4,'out');//gpio4をoutモードに設定 //set_gpio_value(4,0); //gpio4を0(L)に設定 // 1行での記述 ポート 入出力 関数(outを0 or 1にする) //set_gpio_function( port,"out",function(){set_gpio_value(port,val)} ); set_gpio_function( 12,"out",function(){set_gpio_value(12,0)} );//gpio4をoutモードで0(L)に設定 set_gpio_function( 16,"out",function(){set_gpio_value(16,0)} ); set_gpio_function( 20,"out",function(){set_gpio_value(20,0)} ); set_gpio_function( 5,"out",function(){set_gpio_value(5,0)} ); function ontimer12() { set_gpio_value(12,0); color = "#ffff99"; $('#btn1').css('background',color); } function ontimer16() { set_gpio_value(16,0); color = "#ffff99"; $('#btn3').css('background',color); } function ontimer20() { set_gpio_value(20,0); color = "#ffff99"; $('#btn5').css('background',color); } function ontimer5() { set_gpio_value(5,0); color = "#ffff99"; $('#btn7').css('background',color); } $(function() { //btn1が押されたらボタン色を橙色にしてLED ON前進 $('#btn1').click( function() { set_gpio_value(16,0); set_gpio_value(20,0); set_gpio_value(12,1); color = "#ffa500"; $('#btn1').css('background',color); color = "#ffff99"; $('#btn3').css('background',color); $('#btn5').css('background',color); $('#btn7').css('background',color); push12 = 1; //gpio12=setTimeout("ontimer12()",3000); }); //btn2が押されたらbtn1の色を薄い黄色にしてLED OFF停止 $('#btn2').click( function() { if (push12==1){ set_gpio_value(12,0); set_gpio_value(16,0); set_gpio_value(20,0); color = "#ffff99"; $('#btn1').css('background',color); $('#btn3').css('background',color); $('#btn5').css('background',color); $('#btn7').css('background',color); clearTimeout(gpio12); } }); //btn3が押されたらボタン色を橙色にしてLED ON後退 $('#btn3').click( function() { set_gpio_value(16,1); set_gpio_value(20,1); set_gpio_value(12,1); color = "#ffa500"; $('#btn3').css('background',color); color = "#ffff99"; $('#btn1').css('background',color); $('#btn5').css('background',color); $('#btn7').css('background',color); push16 = 1; //gpio16=setTimeout("ontimer16()",3000); }); //btn4が押されたらbtn3の色を薄い黄色にしてLED OFF $('#btn4').click( function() { if (push16==1){ set_gpio_value(16,0); color = "#ffff99"; $('#btn3').css('background',color); clearTimeout(gpio16); } }); //btn5が押されたらボタン色を橙色にしてLED ON右廻り $('#btn5').click( function() { set_gpio_value(16,0); set_gpio_value(20,1); set_gpio_value(12,1); color = "#ffa500"; $('#btn5').css('background',color); color = "#ffff99"; $('#btn1').css('background',color); $('#btn3').css('background',color); $('#btn7').css('background',color); push20 = 1; //gpio20=setTimeout("ontimer20()",3000); }); //btn6が押されたらbtn5の色を薄い黄色にしてLED OFF $('#btn6').click( function() { if (push20==1){ set_gpio_value(20,0); color = "#ffff99"; $('#btn5').css('background',color); clearTimeout(gpio20); } }); //btn7が押されたらボタン色を橙色にしてLED ON左廻り $('#btn7').click( function() { set_gpio_value(20,0); set_gpio_value(16,1); set_gpio_value(12,1); color = "#ffa500"; $('#btn7').css('background',color); color = "#ffff99"; $('#btn1').css('background',color); $('#btn3').css('background',color); $('#btn5').css('background',color); push5 = 1; //gpio5=setTimeout("ontimer5()",3000); }); //btn8が押されたらbtn7の色を薄い黄色にしてLED OFF $('#btn8').click( function() { if (push5==1){ set_gpio_value(5,0); color = "#ffff99"; $('#btn7').css('background',color); clearTimeout(gpio5); } }); }); </script> </head> <body onLoad="disp()"> <--- リアルタイム映像 試験運用 JA3RUA(cameragpio) ---><br> <form action="#" name="form1"> <!--size=11は時刻表示の枠の横サイズ--> 現在時刻 <input type="text" name="field1" size="12"> </form> <!-- 下記の記述でmjpg-stremerの動画配信する(家庭内LAN)--> <img src="http://192.168.0.31:8080/?action=stream" /> <br><br> <div style="position:absolute; top:360px; left:85px;"><< 走行制御ボタン >></div> <div style="position:absolute; top:390px; left:30px;">....G12........G16........G20........G5....</d$ <div style="position:absolute; top:400px; left:-18px;"> <div class="nav-zero"> <ul> <li id="btn1" class="ledon">走行</li> <li id="btn3" class="ledon">後退</li> <li id="btn5" class="ledon">右折</li> <li id="btn7" class="ledon">左折</li> </ul> <ul> <li id="btn2" class="ledoff">停止 </li> <li id="btn4" class="ledoff">予備</li> <li id="btn6" class="ledoff">予備</li> <li id="btn8" class="ledoff">予備</li> </ul> </div> <div class="clear"></div> </nav> </div> </body> </html> ---------------------------------------------------------------------------------------------------- Raspberry Pi-37に続く・・・ Raspberry メニューに戻る