obniz 電子工作 電気の話

obnizでミニ4駆をラジコン化しよう!【obniz講座第7回】

今回は下の動画のように、タミヤの4輪駆動車工作基本セット(以下、ミニ四駆と呼びます)をobnizでコントロールしてラジコンにする説明をします。

 

obnizを使った電子工作をYoutubeで公開しているので、宜しければチャンネル登録お願いします。

サンダーブログチャンネル

 

前回の記事はこちらです。

第6回
obnizで圧電ブザーを鳴らそう
obnizで圧電ブザーを鳴らそう!【obniz講座第6回】

サンダー今回はobnizで圧電ブザーを鳴らしたいと思います。 ドレミファソラシドのソフトウェアボタンを用意し、圧電ブザーで音階を表現します。 前回の講座はこちらです。   準備するもの 今回 ...

続きを見る

 

また、ミニ4駆はDCブラシ付モーターを使用していますが、その原理/仕組みについて説明した記事も合わせてご覧ください。

合わせて読みたい
DC(直流)ブラシ付 モーターの 原理/仕組みについてアイキャッチ
DC(直流)ブラシ付モーターの原理/仕組みについて

サンダー今回はDC(直流)ブラシ付モーターの原理/仕組みについて説明します。モーターがどこに使われているか分かりますか? ミニ四駆とかロボットとか! ちなみに僕はロボットじゃないよかみなりん &nbs ...

続きを見る

 




準備するもの

準備するもの

  • obniz本体 ×1個
  • マイクロUSBケーブル(obniz付属品) ×1本
  • タミヤ4輪駆動車工作基本セット ×1セット
  • モバイルバッテリー ×1個
  • モーター接続延長用ビニール線 ×2個
  • 半田ごて ×1個
  • 半田ごて台 ×1個
  • 半田 少々
  • 端子保護用チューブ(熱収縮チューブなど、あると良い)
  • ノイズ対策用コンデンサ ×1個(あると良い)
タミヤ 4輪駆動車工作基本セット

 

created by Rinker
ELPA
¥227 (2024/11/30 02:18:26時点 Amazon調べ-詳細)
半田ゴテセット温度調節機能 200〜450℃ 15秒で使える! はんだごて台&交換コテ先&収納ケース&携帯修理ツール付き PSE認証済み

 

完成イメージ

ラジコン完成イメージ

 

完成イメージは上記のようになります。

ミニ四駆に、モバイルバッテリーと「obniz」を搭載し、obnizとDCモーターを接続して、前進・後退と速度の変更を行います。

元々このミニ四駆は乾電池2本の直列接続で動きます。

筒状の乾電池の電圧は1.5Vなので、直列では3V駆動です。

直列回路に関してはこちらも合わせてお読みください。

直列回路のキホン
回路のキホン~直列回路~【中学生におすすめ】

回路は好き?嫌い? みなさんは回路にどのようなイメージがありますか? 回路は苦手意識を持つ人が多いと思います。 今回は基本となる直列回路に関して、分かりやすく説明します。 こんな方におすすめ 回路が苦 ...

続きを見る

 

今回はobnizの供給電源と合わせて、モバイルバッテリーを搭載します。

モーターへの電源供給はobnizから供給します。

ArduinoやAVRなどの通常のマイコンの場合、出力電流は数十mA程度なので、DCモーターのような電流をたくさん流す部品は動かせません。

その場合、外部にモーターを制御するためのモータードライバーや、電流を増幅する回路などが必要になります。

それに対して、obnizでは内部にモータードライバーが組み込まれており、最大で1Aまで出力する事が可能です。

 

各IOはすべて以下のユニット構成になっています。

obniz ioout

1つのIOに対し、A/D・モータードライバー・バススイッチが接続されています。

A/Dは他の2つとは別に独立して動作可能です。

モータードライバーとバススイッチはどちらか一方のみ動作するように設計されています。

【引用】obniz公式サイト

 

外部にモーター駆動用の回路を設けずに手軽にモーターを動かせるのはobnizの大きなメリットです。

という事で、ミニ四駆のDCモーターはobnizから直接制御する事にします。

 

ミニ4駆を組み立てる

ミニ4駆をobnizから制御するためにミニ四駆を組み立てます。

組み立てる途中で乾電池BOXの組み立てが入りますが、今回は使用しないので乾電池BOXの組み立ては行いません。

 

モーターにビニール線を半田付け(半田付けのコツ)

半田付けのコツ

 

通常であれば乾電池BOXとモーターを付属ケーブルで接続しますが、長さが足りないので、100均などで購入した電子工作用ビニール線を使用します。

 

ミニ四駆付属のDCモーターの端子と半田付けを行います。

半田付けのコツは先に端子を半田ごてで温めておき、そこへ半田を溶かして流し込むイメージです。

半田付け後、端子がショートしないように熱収縮チューブを被せて、半田ごての熱でチューブを収縮させます。

熱収縮チューブは文字通り、熱で収縮するチューブで端子や接続部の保護に利用します。

同様に反対側のモーターの端子にもビニール線を半田付けします。

 

熱収縮チューブ 黒 Φ2/3/4/5mm ※販売単位1m

 

モーターに接続したケーブルをobnizと接続する

ピンヘッダに半田付け

 

obnizに接続するケーブルはそのまま端子に挿し込んでも良いのですが、ピンヘッダ等に半田付けし、そのピンヘッダを挿すと抜けにくくなります。

 

created by Rinker
¥44 (2024/11/30 16:48:22時点 楽天市場調べ-詳細)

 

そして、その半田付け部分にも熱収縮チューブを被せておくと、端子がショートする事も回避できます。

モーターに接続したケーブルはobnizの0番と1番に接続します。(プログラムで宣言するので、任意に変更しても構いません。)

 

どのケーブルをどちらの端子に挿すのかはどちらでも大丈夫です。

逆に接続したとしても、プログラムで前進しようとしたら後退するだけです。

 

サンプルプログラム

サンプルプログラムはこちらです。

下記のoniz.jsを読み込む際のバージョンは常に最新バージョンへ書き換えてください

<script src="https://unpkg.com/obniz@【ここの部分】/obniz.js" crossorigin="anonymous"></script>

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="https://code.jquery.com/jquery-3.3.1.js" 
            integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60=" 
            crossorigin="anonymous">
    </script>
  <script src="https://unpkg.com/obniz@2.0.2/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_ID_HERE");

    obniz.onconnect = async function () {

      var motor = obniz.wired("DCMotor", {forward:0 , back:1 });

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

      $('#brake').click(function() {
        motor.stop();
      });
    };

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

 

画面インターフェース

画面インターフェース

 

今回作成するインターフェースはこのようにします。

速度をスライダー形式で0~100の10段階で設定させます。つまり10刻みです。

そのスライダー値を右に表示させます。

進行方向を「前進」もしくは「後退」で選択したら、アクセルボタンとブレーキボタンで動作開始/停止させます。

 

既出部分の概略

<head></head>内の記述については過去の講座で説明していますので、概略を説明し、新たな部分のみ説明致します。

コード説明参照講座
<meta charset="utf-8">文字コード(UTF-8)の設定obnizでLEDを光らせよう!【第2回】
<meta name ~(省略)>横幅を端末に合わせ、表示倍率を1倍に設定obnizでLEDを光らせよう!【第2回】
<script src="https://code.jquery.com~(省略)jQueryをCDNから読み込んで利用obnizのPWM制御でLEDを調光しよう【obniz講座第4回】
<script src="https://unpkg.com/obniz@2.0.0/obniz.js"~(省略)obnizを制御するための関数などを利用obnizでIoT電子工作を始めよう!【obniz講座第1回】
<div id="obniz-debug"></div>obnizのデバッグ表示obnizでIoT電子工作を始めよう!【obniz講座第1回】
<input ~(省略)>HTMLでボタンを作成し、id名を設定ソフトウェアボタンでobnizのLEDをON/OFFしよう!【obniz講座第3回】
var obniz = new Obniz("OBNIZ_ID_HERE");設定したobnizのIDを「obniz」変数として宣言obnizでIoT電子工作を始めよう!【obniz講座第1回】

 

補足説明が必要な所を説明していきます。

<input type="range" id="inputPower" (省略) step="10">について

下記の14行目と15行目のコードについて説明します。

<input type="range" id="inputPower" value="0" min="0" max="100" step="10">
速度:<span id="textPower">0</span>

 

powerインターフェースの説明

 

<input type="range" id="inputPower" value="0" min="0" max="100" step="10">は赤い枠で囲った速度調整を行うスライダーの説明です。

inputのtype属性は"range"にして、スライダーにしています。これはPWM制御でLEDを調光しようでも説明しました。

画面インターフェース項目で説明したように、0~100の範囲で10刻みで設定します。

そのため、初期値(value)と最小値(min)を0、最大値(max)を100に設定し、STEP数(step)を10としています。

そして、「速度:●●」の「●●」部分に現在地を表示させるため、この箇所のみ"textPower"というid名を設定しています。

 

<input type="radio" (省略)>は前進と後退を排他的に選択するInput

下記の17行目と18行目について説明します。

<input type="radio" name="inputFB" id="forward" value=true checked><label for="forward">前進</label>
<input type="radio" name="inputFB" id="back" value=false><label for="back">後退</label>

それぞれ前半のinutタグと後半labelタグに分けて説明します。

 

<input>タグの説明

このinputは進行方向を「前進」と「後退」の二者択一にしています。

name属性を同じ名前にすると、その中から選んだ項目が1つだけ選択されます。このようなボタンをラジオボタンと呼びます。

 

前進後退
typeradio
nameinputFB
id値forwardvalue
checked最初チェック有り最初チェック無し

 

id値は前進が"forward"、後退を"back"としていますが、後半部分の<label>タグで使用するために宣言しています。

最初は「前進」にチェックを付けたいので、前進にのみ"checked"と記載しています。こうする事で、チェックされた状態を指定する事ができます。

 

<label (省略)>はlabel内の文字を押したときにチェックが付くように指定

<label>タグのなかで、<label for="●●">△△</label>としています。

これは△△と文字をクリックしたときに、id名が"●●"と設定したinputがクリックされるように指定しています。

つまり「前進」という文字をクリックしたら、id名が"forward"のラジオボタンにチェックを付けます。

この対応をしないと、ラジオボタンを直接クリックしないとチェックした事にならないので、ユーザーに不親切です。

 

$('#inputPower').change(function() { (省略) } はスライダーの値が変更された時の処理

下記の22行~24行のコードについて説明します。

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

 

これはid名「inputPower」つまり、速度を設定するスライダーの値が変更したときの処理を表しています。

速度変更のスライダーの値が変わったら、速度:●●の「●●(=textPower)」部分にその値を書き換えるという処理です。

 

var motor = obniz.wired("DCMotor", ,{forward:0 , back:1});はDCモーターを動かすための関数(ポート0が前進、ポート1が後退)

30行目の下記のコードについて説明します。

var motor = obniz.wired("DCMotor", {forward:0 , back:1 });

 

これはobnizを制御するために用意されたライブラリ(obniz.js)内の関数で、最初の引数に"DCMotor"と記載する事で、DCモーター制御用のポート設定を行います。

前進方向にforward、後退方向がbackとなりますが、モーターに接続したときのケーブルが意図した方向と逆に進む場合、これらの番号を入れ替えるか、配線を入れ替えれば、正常になります。

 

$('#accel').click( (省略))はアクセルボタンを押したときに速度と進行方向を決めて動作

32行~35行の下記のコードについて説明します。

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

 

アクセルボタン(id名が"accel")がクリックされた時の処理です。

motor.power(***);はobniz.jsで定義された関数で、引数にはモーターのパワーを0~100の範囲で指定します。

データ型は小数点が扱えるfloat型なので、0~100の範囲であれば、小数点を代入する事も可能です。

 

motor.move(***);には真(=true)もしくは偽(=false)のboolean型を代入します。

trueの場合には前進(モーター正転)、falseの場合には後退(モーター逆転)します。

 

下記の1行は、進みたい方向が前進なのか、後退なのかを判別するため、「booleanFB」という変数を宣言し、

var booleanFB = $('input[name="inputFB"]:checked').attr('id') == 'forward' ? true : false;

また、これは条件(三項)演算子という演算子を使用しています。

条件(三項)演算子は下記の通りです。

条件(三項)演算子

(条件式)? 条件が真の場合の値 : 条件が偽の場合の値 ;

 

条件式は、$('input[name="inputFB"]:checked').attr('id') == 'forward'

です。

中身を順に分解してみます。

まず、$('input[name="inputFB"]:checked")ですが、これはjQueryで、name属性が"inputFB"と名付けられたinputタグに関して、チェックが付いた状態のものを指します。

そして、その後の「attr("id")」は、上記に該当するinputタグのid値を取得するというコマンドです。

つまり、"inputFB"というname属性のうち、チェックが付いている方のid名を取得し、それが「true」だったら、booleanFBを「true」、そうでなければbooleanFBに「false」を代入します。

motor.move(boolean);

はobniz.jsで用意されている関数で、引数がtrueの場合は前進、falseの場合は後退する関数となります。

 

$('#brake').click(function() { motor.stop(); });はモーター停止

最後に37行~39行の下記について説明します。

$('#brake').click(function() {
    motor.stop();
});

 

これは直感的に分かりますね。

ブレーキボタン(id名が"brake)を押したら、モーターを停止させます。(=motor.stop() )

 

動作確認

下記の動画のように前進、後退ができて、速度を変更したら速度が変われば成功です。

 

obnizを使った電子工作をYoutubeで公開しているので、宜しければチャンネル登録お願いします。

サンダーブログチャンネル

 

【前回の講座】

第6回
obnizで圧電ブザーを鳴らそう
obnizで圧電ブザーを鳴らそう!【obniz講座第6回】

サンダー今回はobnizで圧電ブザーを鳴らしたいと思います。 ドレミファソラシドのソフトウェアボタンを用意し、圧電ブザーで音階を表現します。 前回の講座はこちらです。   準備するもの 今回 ...

続きを見る

【次回の講座】

第8回
obnizで サーボモータを 動かそう!
obnizでサーボモータを動かそう!【obniz講座第8回】

サンダー今回はobnizでサーボモータを動かします。 サーボモータって何?どこで使われるの?かみなりん サンダーサーボモータは角度を指定出来るモータで、ロボットの関節などに使用されています。 &nbs ...

続きを見る

 

【使用したブラシ付DCモーターの原理・仕組み】

DC(直流)ブラシ付 モーターの 原理/仕組みについてアイキャッチ
DC(直流)ブラシ付モーターの原理/仕組みについて

サンダー今回はDC(直流)ブラシ付モーターの原理/仕組みについて説明します。モーターがどこに使われているか分かりますか? ミニ四駆とかロボットとか! ちなみに僕はロボットじゃないよかみなりん &nbs ...

続きを見る

 

 

【講座のまとめ】

記事内容
obnizでIoT電子工作を始めよう!【obnizでIoT電子工作を始めよう!【obniz講座第1回】obnizのディスプレイに文字を表示させます
obnizでLEDを光らせよう!【obniz講座第2回】obnizにLEDと抵抗を接続してLEDを光らせます
ソフトウェアボタンでLEDをON/OFFしよう!【obniz講座第3回】HTMLで作成したボタンを押して、LEDをON/OFFさせます
obnizのPWM制御でLEDを調光しよう【obniz講座第4回】obnizのPWM機能を使ってLEDを調光させます
obnizでフルカラーLEDをグラデーション点灯しよう【obniz講座第5回】obnizでフルカラーLEDをグラデーション点灯させます
obnizで圧電ブザーを鳴らそう!【obniz講座第6回】obnizで圧電ブザーを鳴らします
obnizでミニ4駆をラジコン化しよう!【obniz講座第7回】obnizでタミヤのミニ四駆をコントロールします
obnizでサーボモータを動かそう!【obniz講座第8回】obnizでサーボモータを動かします







人気の記事

1

サンダー直流(DC)と交流(AC)の違いって分かりますか? かみなりん家庭用のコンセントは交流(AC)だよね。乾電池はなんとなくDC(直流)というイメージです。 サンダー改めて聞かれると、交流と直流の ...

【オペアンプ】 反転増幅回路の回路図アイキャッチ 2

かみなりんオペアンプの反転増幅回路ってどういう特徴があるの? サンダー反転増幅回路は文字通り、入力電圧の符号を反転、増幅する回路になります。 かみなりん反転して、増幅するから反転増幅回路なんだね。じゃ ...

アノードコモンとカソードコモン 3

サンダー「アノードコモン」と「カソードコモン」の違い分かりますか? かみなりんえーっと、アノードがプラス側、カソードがマイナス側で・・・コモンってなんだっけ? サンダー改めて聞かれると、どっちがどうだ ...

4

かみなりんアフィリエイトで成果が発生しない!? という問題が起きているようですね。 アフィリエイトが発生しないというのは死活問題ですね。   原因はどうやら、アンカーリンク内のtarget= ...

旅行やアルバイト等の 紹介にバリューコマースの『MyLinkBox』が超便利!! 5

サンダーバリューコマースから2019年6月5日に『MyLinkBox』がリリースされました! かみなりんその『MyLinkBox』ってなに? サンダー『カエレバ』や『Rinker』はご存知でしょうか? ...

miMind使いかたアイキャッチ 6

サンダーマインドマップはご存知ですか?   放射状に枝が伸びていくアレですよね?   頭の整理をするのに良く使います   私もよく情報を整理するためにマインドマップを作成 ...

Web(ウェブ)開発の学習にオススメなUdemyコース3選 7

サンダー世界最大級のオンライン学習プラットフォームの【Udemy】はご存知ですか? アメリカのシリコンバレー発のオンライン学習サイトで、日本ではベネッセが運営しています。 私自身もWeb開発やPyth ...

ブレッドボード の使い方のアイキャッチ 8

サンダーブレッドボードって知ってる? かみなりん電子工作でハンダ付けせずに、手軽に電子回路が組めるボードだよね? サンダーそう、今回はそのブレッドボードの使い方を紹介します。ブレッドボードを使ってLE ...

箇条書きタグ自動追加ツール 9

【このツールの目的】 箇条書きタグ(ulタグもしくはolタグ)を自動で追加するツールです。 listタグも自動で追加します。 【箇条書きの種類選択】 数字無し箇条書き(ul) ・箇条書き数字有り箇条書 ...

LED抵抗計算機 10

LED抵抗自動計算機 下図のように、LED1個をつなぐとき、LEDに流したい電流から抵抗値を求める計算機です。   LED抵抗計算機 ↓電源電圧【例】5(V) ↓LEDの電圧降下【例】2(V ...

-obniz, 電子工作, 電気の話
-, , , , , ,