Arduino YúnでWiFiラジコンをつくってみました。

投稿者:

YunCar1
もうすぐ子供の日ということで、男の子に楽しんでもらえるような工作をしてみました。
男の子はラジコンとか動くものがきっと好きだと思うので、スマホでコントロールできるおもちゃを作ります。

この工作にはArduino Yúnを使います。ArduinoYúnの使い方は"Arduino Yúnを使ってみよう"をご覧ください。

Yún

部品リスト
使うものは
Arduino Yún x 1
Zumo シャーシキット (モーター無し) x 1
75:1 超小型メタルギアドモーター HP x 2
デュアルモータードライバDRV8835 x 1
Arduino用バニラシールド基板ver.2 x 1
eneloop x 4
配線用ケーブル 数十cm分
両面テープ 少々

シャーシの組み立て
まず最初にZumo シャーシキットを組み立てます。組み立て方はこちら
Zumoの電池ボックスの端子の一部はZumoシールドにはんだ付けして固定するようにできているので、今回は両面テープで接着しました。
yunCar3

Arduino Yúnの固定
ZumoのシャーシにArduino Yúnを固定するためにこんなプレートを作ってみました。すでに穴が開いたアクリル板をレーザーでカットしたので変なところに元の穴が開いてしまっています。この部品は自作品なので部品リストには載せませんでした。Arduino Yúnの基板に金属の部品が接触したりしないように気をつけながらしっかり固定できればなんでもいいので、厚紙とテープでも大丈夫です。
YunCar4yunCar5

モータードライバー搭載、ケーブル配線
次にモータードライバを取り付けて、ケーブルの配線をします。モータードライバの詳細はこちら
本当ならArduino Yún用の電源とモーター駆動用の電源は別々に用意したかったのですが、今回はシンプルな構成になることを優先して共通の電源にしました。
電源はeneloop4本を使用するので電源電圧は1.2V x 4 = 4.8Vです。満充電されているともう少し電圧が上がるので5Vちょっとになります。この電池の+をVin端子に接続しますが、ここで注意点があります。Arduino UnoのVinはDC7~12Vの範囲の電圧をかけられますが、Arduino YúnのVinには5Vしかかけられません。5Vより高い電圧をかけると故障の可能性もあります。eneloopではなくアルカリ乾電池を使うと1.5V x 4 = 6Vになってしまうので、eneloopを使用しました。今回は部品点数を少なくして簡単に作ることを優先させましたが、安定した別の5V電源を用意するのが理想です。
YunCar6
モータードライバーの入力をArduino Yúnのアナログピンに接続しましたが、本当はPWM出力が使えるデジタルピンに接続したかったです。わざわざアナログピン側につけた理由は「シールドを小さくしてArduino Yúnの姿(ラベル)がはっきり見えるようにしたかった」それだけです。Arduino Yúnを使っている所を見せたいのでシールドで覆ってしまうことを避けました。Arduino用バニラシールド基板をわざわざ切ったのもそのためです。しかし、そのせいでちょっとだけプログラムが面倒なことになってしまいました。
YunCar

プログラミング
ハードが完成したので、スマホのブラウザから操作するためのプログラムを作ります。
wwwディレクトリの下に次のようなファイルを作成しました。
・yun_car.html --- ブラウザにボタンを表示するhtmlファイル
・static --- cssファイルとボタンの画像データが入ったディレクトリ
・jquery-1.11.2.min.js --- jQueryファイル
yunCar7
サーバー側ファイルダウンロード
Yun_Car_web.zip

ブラウザから受け取った命令を元にモーターを動かすためのスケッチを作成します。
先ほど書いたようにanalogWrite命令が使えるピンにモータードライバーをつなげば簡単だったのですが、あえて使えないピンに接続したのでモーター制御用のPWM信号を出すためにFlexiTimer2ライブラリでタイマー割り込みを発生させPWM信号を作っています。

スケッチダウンロード
Yun_Car.zip

スケッチを書き込んだら、スマホのブラウザからArduino YúnのIPアドレス/yun_car.htmlに接続します。
例 192.168.204.1/yun_car.html

ブラウザ上に現れたボタンを押すとモーターが回転して車が動きます。
が、ひょっとしたらボタンの矢印通りに動かないかもしれません。それはモーターの配線せいです。意図したように配線を付け替えてもいいですが、簡単なのはスケッチの編集です。
digitalWrite(AOUT1,LOW);
digitalWrite(AOUT2,HIGH);
digitalWrite(BOUT1,HIGH);
digitalWrite(BOUT2,LOW);
AOUT1、2の片方をHIGHにして、もう片方をLOWにするとモーターが回転します。HIGHとLOWを入れ替えるとモーターが逆回転をします。意図した方向に回転するようにHIGH、LOWの組み合わせを編集しましょう。
yunCar2

動いている様子はスイッチサイエンスチャンネルでご確認ください。

Arduino UnoではなかなかできないWiFi通信もArduino Yúnを使えば簡単にできてしまいます。今回のWiFiラジコンは"Arduino Yúnを使ってみよう (2) YúnをPCから操作する"で紹介した技術を主に使っています。ブラウザからの簡単な操作でArduinoのGPIOの制御ができてしまいます。
電子工作レベルは高くなくても、スマホを入れるとちょっとワクワク感が上昇する気がしませんか?
ゴールデンウィークを利用してWiFiラジコンを作ってみてはいかがでしょうか。出来合いのラジコンを買うよりもきっといい経験になると思います。