構想〜パーツ組み立て
タミヤさんといえば、プラモデルのメーカーとして有名ですよね。作ったことがある、という方も多いのではないでしょうか。そんなタミヤのプラモデル、実はマイコンを組み込んでさらに複雑な動きができるロボットにパワーアップできることはご存知ですか?
今回は、昨年12月に発売された、タミヤの「チェーンプログラムロボット」をArduino Nanoで制御してみたいと思います。前編(当記事)では、今回の電子工作の構想部分と、土台〜頭の組み立てまでを行なっていきます。
■今回の電子工作レシピ
完成までの時間目安:300分(前後編合わせて)
名前 | 購入元 | 値段 |
---|---|---|
Arduino Nano | Amazonなど | 純正品は2,800円前後 互換品で代用可能(400円程度) |
チェーンプログラムロボット工作セット | Amazonなど | 定価3,400円 |
サーボモータSG90 | Amazonなど | 秋月電子通商で1個400円 Amazonで10個組が2,100円程度 |
BD65496MUV搭載モータドライバ(2個) | スイッチサイエンス | 1個637円 |
WS2812B(2個) | akiba LED ピカリ館 | 10個380円 |
PP-006NH(006P電池ボックス) | ヨドバシカメラなど | 200円程度 |
電池ボックス 単3電池3本 Bスナップ | 秋月電子通商 | 50円 |
ジャンパーワイヤ付バッテリースナップ(2個) | 秋月電子通商 | 1個40円 |
ユニバーサルプレートセット | タミヤショップオンラインなど | 388円 |
006P乾電池 | 電気店・100均ショップなど | 1個100~300円程度 |
※上記のほかにジャンプワイヤが必要。
■目次
●タミヤから「チェーンプログラムロボット」が新発売
●全体の構想を決める(制御方法・パーツの組み立て等)
●サーボモータの位置合わせ
●チェーンプログラムロボットの組み立てと加工
タミヤから「チェーンプログラムロボット」が新発売
今回使う「チェーンプログラムロボット工作セット」は、その名前の通り、チェーンで動きを決められるロボットです。チェーンには前進/右折/左折の3種類があり、それらをプログラムのようにつないで動きを決めることができます。
チェーンプログラムロボットの製品紹介ページには、「市販のマイコンボードや基板を組み込むことで、機械的なプログラムからコンピュータによるプログラムへ発展させることもできます」と記載がありました。
そう言われると、やはり「電子工作で制御してみたい」という気持ちになってきます…!ただ、「市販のマイコンボードや基板を組み込む」ことについて、具体的な手順は説明書には何も書かれていません。そのためどう工夫するか、頭を悩ませるのもまた醍醐味です。ということで、実際に筆者がチャレンジしてみた内容をお届けします。
以下は今回の完成版となるロボットの動画です。もともとのチェーンプログラムロボットに対して、以下の改造を行いました。
・モータの回転方向や速度の制御をArduino Nanoで行います。
・頭の部分をサーボモータで制御します。
・目の部分にフルカラーLEDを取り付け、自由な色で点灯させます。
今回の電子工作を通して、DCモータとサーボモータの制御もおさらいしてみましょう。また、プラモデルがベースなので、お子様がいる方は一緒に楽しむのも良いと思います。
また、他社の同様なロボットと比較すると、タミヤの「楽しい工作シリーズ」の他のパーツを使ったり、マイコンを他の物に変えたりして、さらに改造しやすいというメリットがあります。ちなみに、筆者は2号機も作っています。マイコンをESP32に変えて、WiFiで制御するようにしました。また、前輪をスポーツタイヤ、後輪をボールキャスターに変えて、よりスムーズに方向転換するようにしました。
全体の構想を決める(制御方法・パーツの組み立て等)
チェーンプログラムロボットはプラモデルなので、買ってきたばかりの状態では、一般的なプラモデルと同様に、パーツに分かれた状態になっています(写真1)。この時点で、いきなりArduinoを組み込む方法を考えるのは、なかなか難しいです。
そこで、一度本来の手順で作ってみて、どこをどう改造するかを考えました。いろいろと試行錯誤した結果、最終的に以下の形に行き着きました。
●制御はArduino Nanoで行う
チェーンプログラムロボットの胴体の部分には空きスペースがあり、そこにマイコンボードを入れることができます。ただ、一般的によく使われているArduino Unoだと、それだけでスペースを占有してしまい、改造するのが難しくなります。
そこで今回は、より小さなArduinoである「Arduino Nano」を使うことにしました(写真2)。
Arduino Nanoは、仕様的にはArduino Unoとほぼ同じでありながら、4.5cm×1.8cmと非常に小さい製品です。しかも、ブレッドボードに直接に刺すことができ、ブレッドボート上でコンパクトに配線することができます。
なお、Arduino NanoのUSBポートはminiBタイプになっています。そのため、パソコンと接続する際には、A→miniBのUSBケーブルを使います。
●左折/右折はモータの速度調節で対応
チェーンプログラムロボットは、本来はチェーンの組み合わせ方で前進/右折/左折を切り替えるようになっています。右折/左折のチェーンがロボットの中を通ると、内部のレバーを左右に押して後輪の向きを変えるという仕組みです。
今回はこの部分をArduinoで制御できるようにするのは、残念ながらあきらめました。レバーをサーボモータやステッピングモータで動かすことが考えられますが、限られたスペースにそれらのモータを取り付けてレバーを動かせるようにするのは難しいという判断です。
ただ、左右の前輪は別々のモータで動かすようになっています。そこで、曲がるときには左右のモータの回転速度を変えるという方法を取ることにしました(左折するときは右のモータを速く回し、右折するときには左のモータを速く回す)。これなら、モータにかける電圧を制御すれば良いので、Arduinoで比較的簡単に行うことができます。
モータの制御には、スイッチサイエンスで販売されている「BD65496MUV搭載モータドライバ」を使いました。ブレッドボードに刺して使うことができます。
●目をLEDで光らせる
ロボットの顔の部分を見てみると、目の位置に穴があいており、直径5mmのLEDをはめ込むのにちょうど良い大きさになっています。そこで、LEDを取り付けて、目を光らせることにします。
一般的なLEDでも良いですが、それだといわゆる「Lチカ」と同じでいまいち面白みに欠けます。そこで、目の色を自由に変えられるようにしてみました。フルカラーのLEDはいろいろありますが、その中でもよく使われている「WS2812B」を使うことにします(写真4)。
WS2812Bは、電源(5VとGND)とデータ線の3本をマイコンに接続して制御することで、フルカラーで光らせることができるLEDです。第50回「フルカラーLEDテープを使ったちょっとお洒落な電子工作」で使用しているLEDと同じです。
LEDテープのように、複数のWS2812Bを数珠繋ぎに接続することもでき、その場合も電源とデータ線だけでArduino Nanoと接続することができるので、少ないピンでも制御しやすいメリットがあります。
●首振りをサーボモータで調節
チェーンプログラムロボットでは、動いている間は頭を左右に振るような仕組みになっています。とはいえ、摩擦を生かしたシンプルな仕組みで、首の振り方を細かく制御するようにはなっていません。
首の後ろのあたりを見てみると、23mm×12mmの四角い穴と、その両端にネジ穴が開いています(写真5)。
この穴をよくよく見ると、小型のサーボモータを取り付けるのにぴったりです。これは、「サーボモータで首振りを制御せよ」という、タミヤからの「お告げ」なのではないでしょうか…?!(実際のところはわかりませんが、)それに従ってみることにしました。
サーボモータにもいろいろありますが、今回はプラスチックのごく軽い首を振るだけなので、トルクは小さくても大丈夫です。安いサーボモータの中でよく見かける「SG90」を使います(写真6)。
サーボモータの位置合わせ
サーボモータで首を振るようにするために、あらかじめサーボモータ(SG90)の位置合わせを行っておきます。SG90は、0度〜180度の範囲で回転するようになっています。そこで、中央の90度まで回した状態にし、それを正面とすることにして、後で頭を取り付ける際に位置合わせしやすいようにします。
Arduino NanoとSG90を図1のように接続し、リスト1のプログラムを書き込んで動作させれば、90度まで回ります。そのままArduino NanoからUSBケーブルを抜いて電源を切り、90度まで回ったままにします。なお、Arduino Nanoにプログラムを書き込む際には、以下の手順を取ります。
①パソコンとArduino NanoをUSBケーブルで接続します。
②「ツール」→「ボード」メニューで「Arduino Nano」を選びます。
③「ツール」→「シリアルポート」メニューで、Arduino Nanoを接続したシリアルポートを選びます。
④「ツール」→「プロセッサ」メニューに「ATMega328P(Old Bootloader)」という項目がある場合は、それを選びます。
⑤「スケッチ」→「マイコンボードに書き込む」メニューを選びます。
リスト1 サーボモータを90度まで回す
チェーンプログラムロボットの組み立てと加工
改造の方針が決まったところで、それに適した形になるようにチェーンプログラムロボットを組み立て、改造するための加工も行っていきましょう。
●モータとスイッチのリード線の加工
部品の中に、モータ(2個)とスイッチがあります。モータは前輪を回すのに使われます。また、スイッチは電源のON/OFFに使われます。
モータとスイッチには電線がはんだ付けされていますが、先端部分はリード線がむき出しの状態になっています。改造の際にはこれらの線をArduinoに接続しますが、リード線のままだとブレッドボードに差し込みにくく、しかも抜けやすいです。
そこで、リード線にジャンプワイヤをつないで、ブレッドボードに接続しやすいように加工しておきます。ジャンプワイヤの片方の端を切り落とし、被覆を1.5cmほど剥きます(写真7)。また、モータ/スイッチからの電線も、被覆を若干剥いて、リード線が1.5cmほど出ている状態にします。そして、モータ/スイッチからのリード線と、ジャンプワイヤのリード線とを、より合わせてつなぎます。最後に、より合わせた部分をビニールテープなどで覆って、リード線が外に出ていないようにします。なお、筆者はより合わせた部分を熱収縮チューブで覆って、熱をかけて締めるようにしました。
●LEDの加工
ロボットの目をLEDで光らせるために、WS2812BのLEDを使います。
WS2812Bには4本のピンがあります。最も長いピンが右から2番目になるようにすると、右から順にDATA OUT/VDD/GND/DATA INのピン配置になります(図2)。
また、図2の向きにすると、LEDの右側面はほぼ平らになっている一方、左側面はでっぱりがありますので、それでLEDの左右を判別することもできます。
VDD/GNDは、Arduino Nanoの5V/GNDのピンに接続します。そして、DATA INをArduino Nanoのデジタルピン(2〜13番のどれか)に接続して、制御用の信号を送ります。さらに、VDDとGNDの間には0.1μFのセラミックコンデンサも入れます。
また、複数のWS2812Bを制御する場合、隣り合ったWS2812BのDATA OUT/DATA INを数珠繋ぎに接続します(図3)。
今回の例では、左右の目の両方をWS2812Bにしますので、WS2812Bを2つ接続します。2つのWS2812Bのそれぞれで、ピンを幾分切って長さをそろえます。VDDとGNDの足には、セラミックコンデンサの足をまきつけます。そして、それぞれのVDD/GNDのピンと、片方のDATA INに、片側の被膜を剥いたジャンプワイヤをまきつけ、絶縁テープなどで覆います。また、DATA INに線を接続した方のWS2812BのDATA OUTと、もう片方のWS2812BのDATA INの間も、両端の被膜を剥いたジャンプワイヤで接続します。
そして、チェーンプログラムロボットの目の部分のパーツ(「A7」のパーツ)に、WS2812Bを接着します(写真8)。
なお、VDD/GNDにつなぐジャンプワイヤは、長さを最小限(10cm弱程度)にする必要があります。そうしないと、LEDが正しく点灯しない現象が起こります。筆者は最初は長い(20cm程度)ジャンプワイヤを使ったため、作業をやり直す羽目にあい苦労しました。
また、カシメ用の工具を持っている方は、太目の電線(AWG20程度)を使ってジャンプワイヤを自作し、それをLEDのVDD/GNDに接続すると良いです。
●チェーンプログラムロボットの土台部分の組み立て
チェーンプログラムロボットの説明書では、組み立ての手順を1〜19に分けて説明しています。その中で、1〜9と、11〜13の手順を行って、ロボットの土台部分を組み立てておきます。
手順の10と19は頭の部分を取り付ける手順ですが、今回の改造では頭を最後に取り付けますので、今の段階では行いません。また、14〜18は電池やモータの配線に関係する部分ですが、これらの線はArduino Nanoに配線しますので、これも行いません。
組み立てを終えると、写真9のようになります。この時点で、左右の車輪に繋がっているモータに乾電池をつないでみて、左右それぞれの車輪が回ることを確認しておきます。
●頭の部分の組み立て
A8のパーツを加工したら、頭の部分を組み立てます。手順は以下の通りです。
①首の部分にあたるパーツ(「A9」のパーツ)の裏側に、サーボモータ付属の横長のサーボホーンをネジ止め(または接着)します(写真10、写真11)。ネジ止めする場合、A9のパーツの穴と、サーボホーンの穴とは位置があっていないので、両者の位置を合わせて、サーボホーンにキリなどで穴をあけます。
②目の部分を、頭の部分にあたるパーツ(「A6」のパーツ)にはめ込みます。
③3×8mmタッピングビスで、頭の部分を首の部分にネジ止めします(説明書の手順19を参照)。
④2×6mmタッピングビスで、スイッチをA8のパーツにネジ止めします。白い電線が「ON」の方になるように、スイッチの向きに注意します(説明書の手順15を参照)。
⑤SG90(サーボモータ)上の面を、A8のパーツの穴に裏側から通し、SG90付属のネジで固定します。
⑥SG90に頭の部分を取り付けます(写真12)。
今回は、
・電子工作の構想(Arduino Nanoでどのようにロボットを制御するか)
・土台・頭の組み立て
までをお届けしました。「早く動かしてみたい!」というところかと思いますが、残りの工作については後編でお届けします、次回をお楽しみにお待ちください。
今回の連載の流れ
前編:構想〜パーツ組み立て(今回)
後編:モータドライバの使い方〜完成