広告 obniz 電子工作 電気の話

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

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

 

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

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

 

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

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

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

続きを見る

 

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

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

  今後、ロボットが増えていく中で、モーターは欠かせない部品となるので、モーターの仕組みを知っておいて損はないと思います。 なお、「DCブラシ付モーター」のブラシの説明については、順を追って ...

続きを見る

 

[st_af id="2919"]

準備するもの

準備するもの

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

[st_af id="3013"]

タミヤ 4輪駆動車工作基本セット

 

[st_af name="st_af-2770"]

created by Rinker
ELPA
¥227 (2025/05/15 20:21:13時点 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に接続するケーブルはそのまま端子に挿し込んでも良いのですが、ピンヘッダ等に半田付けし、そのピンヘッダを挿すと抜けにくくなります。

 

 

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

モーターに接続したケーブルは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つだけ選択されます。このようなボタンをラジオボタンと呼びます。

 

前進 後退
type radio
name inputFB
id値 forward value
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回】

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

続きを見る

【次回の講座】

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

  これまでのobniz講座はコチラからどうぞ。 記事 内容 obnizでIoT電子工作を始めよう!【obniz講座第1回】 obnizのディスプレイに文字を表示させます obnizでLED ...

続きを見る

 

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

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

  今後、ロボットが増えていく中で、モーターは欠かせない部品となるので、モーターの仕組みを知っておいて損はないと思います。 なお、「DCブラシ付モーター」のブラシの説明については、順を追って ...

続きを見る

 

[st_af id="3013"]

[st_af name="st_af-2770"]

 

【講座のまとめ】

記事内容
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)の違いについて知りたい 直流(DC)の交流(AC)について、それぞれ特徴を知りたい   電気の流れる向き・電流・電圧が変わるの ...

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

    オペアンプの反転増幅回路 オペアンプの反転増幅回路は下図のようになります。 反転増幅回路の入力電圧をVi、出力電圧をVoとすると下記の式で表されます。   オペア ...

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

  LEDのアノードとカソードについてとその見分け方 「アノードコモン」と「カソードコモン」について説明する前に、LEDのアノードとカソードについて説明します。   LEDは正しい ...

4

という問題が起きているようですね。 アフィリエイトが発生しないというのは死活問題ですね。   原因はどうやら、アンカーリンク内のtarget="_blank"が関係しているようだと。でも正確 ...

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

  MyLinkBoxで商品紹介できる広告主一覧 MyLinkBoxで商品紹介できる広告主一覧は下記の通りです。 カテゴリー 広告主一覧 モール(物販) Yahoo!ショッピング/楽天市場/ ...

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

      私もよく情報を整理するためにマインドマップを作成しています。 何か思いついたときにメモ代わりとして使用する事もあり、常に携帯しているスマホでマインドマップを作 ...

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

アメリカのシリコンバレー発のオンライン学習サイトで、日本ではベネッセが運営しています。 私自身もWeb開発やPythonなどのコースを購入しています。プログラミングだけでなく、動画編集や写真撮影など様 ...

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

  こんな方におすすめ ブレッドボードの使い方を知りたい ブレッドボードの使い方:ブレッドボードとは?ブレッドボードの仕組みについて   ブレッドボードは電子部品の足を差し込むだけ ...

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

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

LED抵抗計算機 10

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

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