<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 メニューに戻る