4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

スマホでIoTしてみた

Last updated at Posted at 2020-04-23

スマホでIoTしてみた

概要

 Obnizのクラウドサービスを使って、LEDを点灯、モーターの制御をする。
 ミニ四駆を動かしたり、ラジコンをドリフトさせる。

Obnizとは?

obniz(オブナイズ)は、ON/OFFやUART通信などのIO制御をクラウドのAPI経由で行える仕組み。

(引用元: https://obniz.io/ja/how_obniz_works)

ラズベリーパイとどう違うの?

・JavaScriptで電子工作が可能に、面倒な初期設定は不要
・コンセプトは「ハードウェアのAPI化」

(引用元: https://jp.techcrunch.com/2018/11/22/cambrianrobotics-fundraising/)

##手順

その1.Obnizをネットワークに繋げる

Obnizに電源を繋げる
画面に「WiFi Scanning..」が表示され、
接続先の一覧が表示されます。
mojikyo45_640-2.gif

左上の歯車みなものを操作して、接続先の選択とパスワードの入力を行い、
画面にQRコードが表示されればえば接続完了!
mojikyo45_640-2.gif

その2.LEDを発光させる

Pinを挿す位置に注意しながらObnizとLEDを繋げます。
QRコードをスマホで読み込むとエディターが表示されて、
クラウド上で実装することができます。
※QRコード横に表示されているIDを使って、PCからもエディターを開くこともできます。
mojikyo45_640-2.gif

その3.モーターを動かす

使おうと思ったラジコンキット備え付けのモーターだと遅すぎたので、
ミニ四駆のハイパーダッシュモーターとプラズマダッシュモーターを購入。おまけでアバンテも購入。
が、まさかのハイパーダッシュとプラズマダッシュ動かず・・・
アバンテ付属のモーターは動いたので少しもったいないお買い物になった。

実装

<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
    <script src="https://unpkg.com/obniz@2.2.0/obniz.js" crossorigin="anonymous"></script>
  </head>
  <body>
    <div id="obniz-debug"></div>
    <input type="button" id="brake" value="ブレーキ">
    <input type="button" id="accel" value="アクセル">
    <br />
    <input type="range" id="inputPower" value="0" min="0" max="100" step="10">
    速度:<span id="textPower">0</span>
    <br />
    <input type="radio" name="inputFB" id="forward" checked><label for="forward">前進</label>
    <input type="radio" name="inputFB" id="back"><label for="back">後退</label>

    <script>

      $('#inputPower').change(function() {  
        $('#textPower').text($('#inputPower').val());
      });

      var obniz = new Obniz("ほげほげ");

      obniz.onconnect = async function () {
        var motor1 = obniz.wired("DCMotor", {forward:0 , back:1 });
        var motor2 = obniz.wired("DCMotor", {forward:2 , back:3 });
        var motor3 = obniz.wired("DCMotor", {forward:4 , back:5 });
        var motor4 = obniz.wired("LED", { anode:6, cathode:7 } );

        $('#accel').click(function () {
          motor1.power($('#inputPower').val());
          motor2.power($('#inputPower').val());
          motor3.power($('#inputPower').val());
          var booleanFB = $('input[name="inputFB"]:checked').attr('id') == 'forward' ? true : false;
          motor1.move(booleanFB);
          motor2.move(booleanFB);
          motor3.move(booleanFB);
          motor4.on();
        });

        $('#brake').click(function() {
          motor1.stop();
          motor2.stop();
          motor3.stop();
          motor4.off();
        });
      };
    </script>
  </body>
</html><!--<html>

その4.ラジコンを組み立てる

その3のときに買ったアバンテを組み立て。
組み立て後!
mojikyo45_640-2.gif

アバンテを組み立てましたが、
スマートカーをドリフトさせることになりました。

その5.ドリフト!

mojikyo45_640-2.gif アバンテ付属のモーターを4つ集めるのは厳しいので結局ラジコンキット付属のモーターで動かすことにしました。 ドリフトしようとしてるのに4WDでステアリング不可とまったくドリフトに向いていない車体でやることに・・・。 それぞれのタイヤの回転速度を調整することでなんとかドリフトさせることができました。

実装 

<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
    <script src="https://unpkg.com/obniz@2.2.0/obniz.js" crossorigin="anonymous"></script>
  </head>
  <body>
    <div id="obniz-debug"></div>
    <input type="button" id="brake" value="ブレーキ">
    <input type="button" id="accel" value="アクセル">
    <br />
    <input type="range" id="inputPower1" value="0" min="0" max="100" step="10">
    速度:<span id="textPower1">0</span>
    <br />
    <input type="range" id="inputPower2" value="0" min="0" max="100" step="10">
    速度:<span id="textPower2">0</span>
    <br />
    <input type="radio" name="inputFB" id="forward" checked><label for="forward">前進</label>
    <input type="radio" name="inputFB" id="back"><label for="back">後退</label>
    <br />
    <input type="button" id="right" value="右">
    <input type="button" id="left" value="左">
    <br />

    <script>

      $('#inputPower1').change(function() {  
        $('#textPower1').text($('#inputPower1').val());
      });
      
      $('#inputPower2').change(function() {  
        $('#textPower2').text($('#inputPower2').val());
      });

      var obniz = new Obniz("ほげほげ");

      obniz.onconnect = async function () {
        var motor1 = obniz.wired("DCMotor", {forward:0 , back:1 });
        var motor2 = obniz.wired("DCMotor", {forward:2 , back:3 });
        var motor3 = obniz.wired("LED", { anode:4, cathode:5 } );
        var motor4 = obniz.wired("LED", { anode:6, cathode:7 } );
        
        $('#right').click(function () {
          motor1.power(30);
          motor2.power(100);
          motor1.move(true);
          motor2.move(true);
          motor3.on();
          motor4.on();
        });
        
        $('#left').click(function () {
          motor1.power(100);
          motor2.power(30);
          motor1.move(true);
          motor2.move(true);
          motor3.on();
          motor4.on();
        });

        
        $('#accel').click(function () {
          motor1.power($('#inputPower1').val());
          motor2.power($('#inputPower2').val());
          var booleanFB = $('input[name="inputFB"]:checked').attr('id') == 'forward' ? true : false;
          motor1.move(booleanFB);
          motor2.move(booleanFB);
          motor3.on();
          motor4.on();
        });
        

        $('#brake').click(function() {
          motor1.stop();
          motor2.stop();
          motor3.off();
          motor4.off();
        });
      };

    </script>
  </body>
</html>

TIPS

  • WiFiが繋がらないことがあり、ファームフェアを更新することで繋がるようになった。
  • モーターの制御に必要なチャネルがモーター3つ分しかなかった(モーターとして制御できるのは3つまで)が、2つはLEDとして接続することで解消
4
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?