ON THE HAND

引っ越しました http://tech.andhandworks.com

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

このエントリーをはてなブックマークに追加

  1. --/--/--(--) --:--:--|
  2. スポンサー広告

Raspberry Pi の Scratch GPIO を iPad から操作する

Twitter で軽く触れたところ数人の方が
ふぁぼってくださったので取り上げてみます。

子どもにプログラミングを試してもらおうと思い、
iPad から Raspberry Pi の Scratch GPIO を使えるようにしてみました。

・・・が、結論から言うと駄目です。全然ダメ。
重い。操作性が悪い。文字が読みにくい。

せっかく作ったので一応方法だけご紹介します。

Scratch とは?


プログラミング言語を覚えなくてもプログラミングの考え方を
身に付けられることを目的として MIT メディアラボで
開発された学習環境です。

最近では Scratch で Romo 用アプリを
開発できるようになることが発表されて
微妙に話題になりました。

ちょうど先ほど、我が家にも Romo が
1台届きました。
開発用アプリが公開されたらレポートします。

ただ、開発用 iPhone アプリに対して Apple の
承認が下りなくて公開が延期されているんですけども。。。


これ、永久に承認されなくてもおかしくありません。
そもそもAppleのガイドラインに抵触している可能性が高いですし、
Scratch 本体の iPhone アプリについても Apple と色々あって
現在では AppStore から削除されているので。。。

※不正確な情報でした。追記をご参照ください。

話を戻します。
Scratch のおかげで子どもでも手軽にプログラミングに触れられるようになりました。
Raspberry Pi の GPIO ピンを扱えるように機能拡張されたものが Scratch GPIO です。

子ども用アカウントを作成する


pi 以外のユーザアカウントを作ります。
USER_NAME の部分は適当に。

pi@raspberrypi ~ $ sudo useradd -d /home/USER_NAME USER_NAME
pi@raspberrypi ~ $ sudo passwd USER_NAME


Raspberry Pi をリモートデスクトップサーバにする


通常、Linux でリモートデスクトップ的なことをする場合は、
手元の端末に X-Window 端末を入れるか、
VNC Server を使いますが、今回はどちらも NG です(でした)。

と言うのも、我が家にあるのは初代 iPad なので
X-Window のアプリが動きませんでした。
新しい iPad だと使えるのかもしれませんがよくわかりません。

一方、VNC は使えるのですが、どういう訳か VNC 接続した画面上で
Scratch が起動しません。

いまのところ、リモートから GUI に接続して Scratch を起動するには
リモートデスクトップを使うしかないようです。

リモートデスクトップサーバとして XRDP をインストールします。

pi@raspberrypi ~ $ sudo apt-get install xrdp
pi@raspberrypi ~ $ sudo vi /etc/xrdp/startwm.sh
pi@raspberrypi ~ $ cat /etc/xrdp/startwm.sh
#!/bin/sh

export LANG=ja_JP.UTF-8
. /etc/X11/Xsession


自動起動するように設定します。

pi@raspberrypi ~ $ sudo update-rc.d xrdp defaults
update-rc.d: using dependency based boot sequencing
sudo /etc/init.d/xrdp restart


これで一旦 Raspberry Pi の設定は終わって、
iPad でリモートデスクトップを使えるようにします。

我が家の iPad は iOS5.x までしか動作しない初期モデルです。
RDP Remote Desktop Connection というアプリが iOS5.x でも動作して操作も比較的マシでした。

こんな感じで設定します。
IPアドレス(192.168.~)の部分はご自身の環境に合わせて適当に。
RDP1.png

この状態で接続すると、なぜかデフォルトが VNC になります。
ものすごく操作しにくいですが、頑張って "seesman-X11rdp" を選択してください。
タッチ操作よりもソフトウェアキーボードの上下キーで選択した方が簡単です。

また、パスワードを毎回入力するようにするとこの操作も毎回やらないといけなくて
ほとんど使い物にならないのでパスワードは記憶させておいてあげます。
家庭内の iPad でもセキュリティが気になる人はご自由に。

RDP2.png

繋がるとこうなります。
まだ Scratch GPIO は入っていませんが。
RDP3.png

フォントの入れ替え


日本語フォントを読みやすくするためさざなみを入れます。

pi@raspberrypi ~ $ sudo apt-get install ttf-sazanami-gothic
pi@raspberrypi ~ $ sudo vi /usr/share/scratch/locale/ja.po
:
# Font to use on a Linux system
msgid "Linux-Font"
msgstr "Sazanami Gothic"
:


Scratch GPIO


上のキャプチャ画像に映っている Scratch GPIO をインストールするため、
再び Raspberry Pi 上の操作に戻ります。

現状の最新版はScratchGPIO7です。
http://simplesi.net/scratchgpio/scratch-raspberrypi-gpio/

今回は pi ではないユーザアカウントで使いますので、
そのアカウントにもサンプル等をインストールしておきます。

pi@raspberrypi ~ $ wget http://bit.ly/1wxrqdp -O isgh7.sh
pi@raspberrypi ~ $ sudo bash isgh7.sh
pi@raspberrypi ~ $ sudo bash isgh7.sh USER_NAME


で、これでインストール完了かと思いきや、
pi ユーザなら動作するにも関わらず、
作成したユーザだと Scratch GPIO が起動しません。

Scratch だけを管理者権限で起動する


Scratch GPIO を起動するには管理者権限が必要なようです。
そこで、作成したユーザで Scratch GPIO を管理者権限で起動できるようにします。


pi@raspberrypi ~ $ sudo vigr
:
users:x:100:pi,USER_NAME
:
pi@raspberrypi ~ $ sudo visudo
%users ALL=(ALL) NOPASSWD: /usr/bin/scratch,/scratchgpio7/scratchgpio7plus.sh,/scratchgpio7/scratchgpio7.sh
※末尾に追記


デスクトップの Scratch アイコンを sudo 実行するように変更します。

pi@raspberrypi ~ $ vi /home/USER_NAME/bin/scratchgpio7plus.sh
pi@raspberrypi ~ $ chmod 755 /home/USER_NAME/bin/scratchgpio7plus.sh
pi@raspberrypi ~ $ cat /home/USER_NAME/bin/scratchgpio7plus.sh
#!/bin/sh

/usr/bin/sudo /scratchgpio7/scratchgpio7plus.sh $@

pi@raspberrypi ~ $ vi /home/USER_NAME/bin/scratchgpio7.sh
pi@raspberrypi ~ $ chmod 755 /home/USER_NAME/bin/scratchgpio7.sh
pi@raspberrypi ~ $ cat /home/USER_NAME/bin/scratchgpio7.sh
#!/bin/sh

/usr/bin/sudo /scratchgpio7/scratchgpio7.sh $@

pi@raspberrypi ~ $ sudo -u USER_NAME vi /home/USER_NAME/Desktop/scratchgpio7plus.desktop
pi@raspberrypi ~ $ cat /home/USER_NAME/Desktop/scratchgpio7plus.desktop
:
Exec=/home/USER_NAME/bin/scratchgpio7plus.sh
:

pi@raspberrypi ~ $ sudo -u USER_NAME vi /home/USER_NAME/Desktop/scratchgpio7.desktop
pi@raspberrypi ~ $ cat /home/USER_NAME/Desktop/scratchgpio7.desktop
:
Exec=/home/USER_NAME/bin/scratchgpio7.sh
:


この状態で一旦 iPad の XRDP からログアウトします。
再ログインしてから Scratch GPIO のアイコンをダブルタップすると Scratch が起動します。

RDP4.png

そうです。ダブルタップです。iPad なのに。
冷静に考えれば当たり前ですが、パソコンを使えない子どもに
そんなことを説明しても理解できる訳がありません。

また、ドラッグ操作は iPad 上ではプレス後にドラッグです。
プレス&ドラッグって。

もちろん、子どもでも使い方を教えればその通りやるんですが、
プログラミングに興味を持ってもらうのが目的なのに、
関係ないところでやる気を削がれるような操作があるようでは駄目です。

という訳で、私の中で iPad & リモートデスクトップ & Scratch の案は却下しました。

このエントリーをはてなブックマークに追加 続きを読む

スポンサーサイト
  1. 2015/03/31(火) 02:05:43|
  2. Raspberry Pi
  3. | コメント:0

Raspberry Pi をファイルサーバにする

前回までで Arduino と Wiiリモコンでのラジコンが完成しました。
Arduino ラジコンの発展もいくつかネタがあるのですが、
しばらくは Arduino から離れて Raspberry Pi の話を書いていこうと思います。

現在、Raspberry Pi は5機種出ています。
用途に合わせて、、、と言いたいところですが、
Arduino に比べると結構高いこともあり、
そんなに何台も買わないとなると、汎用性を考えて
第二世代 Model B 一択という気もします。

今回は Raspberry Pi2 Model B を NAS (ファイルサーバ)に仕立て上げます。

Raspberry Pi2 のセットアップ

通常は NOOBS (BIOS) を入れてモニタとキーボードを繋いで、、、とやるのですが、
それだけのために HDMI ケーブルや USB キーボードを用意するのも面倒です。
モニタもキーボードも無しでいきなり Raspbian を入れる手順を紹介します。

この手順を使うためにはあらかじめ次の条件を満たしておく必要があります。
  • Windows か Mac のパソコンがある。
  • DHCPが使えるネットワーク環境がある。
    (LANケーブルでPCと直接接続して IP アドレスを
    ごにょごにょすることでDHCP無しにすることも可能です。)
  • 有線ケーブルでネットワークに接続できる。
まず、Raspberry Pi のサイトから Raspbiean の圧縮ファイルをダウンロードします。
ダウンロードした ZIP ファイルを解凍するとディスクイメージが出来上がります。

Windows パソコンにWin32 Disk Imagerをインストールし、
解凍したディスクイメージを micro SD カードに書き込みます。

micro SD カードを Raspberry Pi2 に挿入し、LAN ケーブルを挿した状態で
Raspberry Pi2 を起動します。
起動が完了すると DHCP で IP アドレスが振られているはずです。
DHCP サーバ(無線ルータなど)の管理ページを見ると
Raspberry Pi という名前でアドレスが表示されているのではないでしょうか。

Tera Termなどの SSH クライアントソフトで Raspberry Pi2 の IP アドレスに対して SSH 接続します。
ユーザ ID は「pi」、パスワードは「raspberry」です。

必要なパッケージのインストール

次のコマンドを実行して OS を最新版にアップデートして再起動します。
pi@raspberrypi ~ $ sudo -s
root@raspberrypi:~# rpi-update
root@raspberrypi:~# apt-get update
root@raspberrypi:~# apt-get upgrade
root@raspberrypi:~# reboot
さらにWindowsファイル共有サーバである samba をインストール。
# apt-get install samba

外付け HDD の接続

SD カードだけではNAS として使うには容量が足りませんので
USB で外付けの HDD または SSD を接続する必要があります。

HDD/SSD はACアダプタで給電するタイプをお奨めします。
特に Raspberry Pi2 を使う場合は本体の電源が micro USB 給電になるため、
USB 給電の HDD を使うと電源の負担が大きくなり問題が出る可能性があります。

接続できたら「fdisk -l」でデバイスパスを調べます。
root@raspberrypi:~# fdisk -l

Disk /dev/mmcblk0: 15.6 GB, 15577645056 bytes
4 heads, 16 sectors/track, 475392 cylinders, total 30425088 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0009bf4f

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            8192      122879       57344    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          122880    30425087    15151104   83  Linux

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000130cd

   Device Boot      Start         End      Blocks   Id  System

この場合、「Disk /dev/sda: 1000.2 GB」から 1TB の HDD が /dev/sda として
認識されていることが分ります。

早速初期化してしまいます。
細かいオプションは「fdisk」で検索すると様々なサイトに書いてありますので省略。
root@raspberrypi ~ # fdisk /dev/sda
Command (m for help): n
※色々と質問されますが Enter キーを連打して新規パーティションを作成
Command (m for help): w
※パーティションテーブルを書き込んで終了。
root@raspberrypi ~ # mkfs.ext4 /dev/sda1

UUID を調べてディスクをマウントします。
「>>」を間違えて「>」にしてしまうと厄介なことになるので注意。
root@raspberrypi ~ # mkdir /mnt/hdd
root@raspberrypi ~ # mount -t ext4 /dev/sda1 /mnt/hdd
※マウントできることを確認
root@raspberrypi ~ # blkid /dev/sda1
root@raspberrypi ~ # cp -p /etc/fstab /etc/fstab.org
root@raspberrypi ~ # echo 'UUID="さきほど調べたUUID" /mnt/hdd ext4    0 2' >> /etc/fstab

samba の設定

ファイルサーバを仕立て上げます。
samba についても検索すると素晴らしい説明がたくさんみつかるので
ここでは詳細を端折ります。
次のように設定すればとりあえずファイルサーバにはなります。

「192.168.1.」は Raspberry Pi が所属しているネットワークを指定します。
vim /etc/samba/smb.conf
[global]
            :
   interfaces = 192.168.1. 127.0.0.0/8 eth0
            :
[public]
   comment = Public
   path = /mnt/hdd/
   public = yes
   read only = no
   browsable = yes

vim コマンドはキーボード入力だけで操作するテキストエディタです。
k, j, h, l キーがそれぞれ上下左右に移動。
i キーが入力モードに移行、ESC で入力モードから離脱。
「:wq」で書き込んで終了。

終わったら samba を再起動します。
root@raspberrypi ~ # service samba restart

これで Windows から「\\RaspberyPiのアドレス\pi」にアクセスすると
ディスクアクセスできるのではないでしょうか。


これでファイルサーバになりました。
ここからさらに VNC サーバにしたり、Scratch や Arduino IDE の
開発環境を使えるようにしますがその説明はまた後日。

このエントリーをはてなブックマークに追加

  1. 2015/03/29(日) 19:02:31|
  2. Raspberry Pi
  3. | コメント:0

【完成】Wiiリモコン+Arduino+LEGO でラジコンを作る(4):WiiリモコンでDCモーターを操作する

もくじ

  1. Wiiリモコン+Arduino+LEGO でラジコンを作る(1):材料選定
  2. Wiiリモコン+Arduino+LEGO でラジコンを作る(2):DCモーターを動かす
  3. Wiiリモコン+Arduino+LEGO でラジコンを作る(3):USB Host Shield で Bluetooth ドングルを使えるようにする
  4. 【完成】Wiiリモコン+Arduino+LEGO でラジコンを作る(4):WiiリモコンでDCモーターを操作する

ついにラジコン制作も最終回です。たぶん。

完成した回路はこのようになります。

ArduinoWiiRemoteRC_fig3.jpg

複雑に見えますがこれまでに扱ってきたものを組み合わせただけです。
念のため1つずつ見ていきましょう。

モータードライバ TA7291P

左右のモーターを別々に制御する必要がありますので
線対称にモータードライバを2つ配置します。

その他に、以前はコードを簡単にするために固定抵抗器を使っていましたが、
今回は固定抵抗器無しでドライバ1つあたり3ピンをArduinoに接続しています。

ただ単に気まぐれで変更したわけではなく、これには深い理由があります。
(と言うことに組み上げてから気づきました。)

USB Host Shield

モータードライバを固定抵抗器無しで制御している理由は
USB Host Shield, Arduino UNO, TA7291P のそれぞれの仕様にあります。

Arduino での出力電圧の調整は PWM で行うのですが、
全てのピンで PWM が使えるわけではありません。
ピン番号に「~」がプリントされているピンだけが PWM に対応しています。
具体的には D3, D5, D6, D9, D10, D11 です。

USB Host Shield を Arduino UNO に載せると、
D7~D13 は USB Host Shield が使ってしまうため
モーター制御には使えなくなります。

となると、残る D0~D6 のうちでモーター制御用に
PWM が使えるのは D3, D5, D6 の3つだけということになります。

固定抵抗器有りで TA7291P を使う場合、
TA7291P の5番ピンの電圧で正転のスピードを調整します。
また、反転の場合は6番ピンです。
つまり、TA7291P 1つあたり2本のピンについて電圧を
調整できる必要があります。

今回、TA7291P を2つ使いたいわけですから、
固定抵抗器有りの回路だとArduino UNO に PWM 対応ピンが
4つ必要になってしまい D3, D5, D6 の3つでは回路が組めません。

そこで、固定抵抗器を使わずに TA7291P の4, 5, 6番ピンの
3本で制御することを考えます。
TA7291P を3本のピンで制御する場合、4 番ピンの電圧だけで
スピード調整が可能です。
5 番、6番ピンはそれぞれ HIGH or LOW の組み合わせで
正転/反転を指定するだけです。
つまり、TA7291P を2つ制御するために Arduino UNO 側で必要な
ピンはPWM が2本、デジタルピンが4本ということが分ります。

USB Host Shield を使用している状態で Arduino UNO で使用可能なピンは
PWM が D3, D5, D6 の3本、デジタルピンが D0, D1, D2, D4 の4本ありますので
この構成であればギリギリ制御可能です。

なお、スピード調整せずに単に前進/後退/その場回転だけで良ければ
PWM は不要なのでこんなややこしいことを考える必要はありません。

モーター回転方向とキャタピラの動作

今回、制作を簡単にするためにキャタピラを使っていますが、
キャタピラには通常のタイヤにはない「その場回転」という動作があります。
モーターの動作とキャタピラの動作の関係をまとめると次のようになります。
  • 直進
    左モーター:正転
    右モーター:正転
  • 後進
    左モーター:反転
    右モーター:反転
  • 左折
    左モーター:減速正転
    右モーター:正転
  • 右折
    左モーター:正転
    右モーター:減速正転
  • バック左折
    左モーター:減速反転
    右モーター:反転
  • バック右折
    左モーター:反転
    右モーター:減速反転
  • 左回転
    左モーター:反転
    右モーター:正転
  • 右回転
    左モーター:正転
    右モーター:反転

プログラム

Wii リモコンの十字ボタンをキャタピラの動作方向に割り当てて、
Wii リモコン自体を横持ちした場合の左右傾きを右左折角度として使います。

それらの挙動を2個のモーターの制御で実現するプログラムは次のようになります。
Arduino IDE から Arduino UNO に書き込んでおきましょう。

実は、ビデオ撮影時のプログラムをうっかり保管し忘れていたので、
下記のコードはいま書きました。
実機でデバッグしていないため不具合ありましたらご指摘ください。
#include <Wii.h>
#include <usbhub.h>

#define  R_INR  3
#define  R_IN1  1
#define  R_IN2  2
#define  L_INR  6
#define  L_IN1  4
#define  L_IN2  5

USB Usb;
USBHub Hub1(&Usb);
BTD Btd(&Usb);
WII Wii(&Btd,PAIR);

void setup() {
  Serial.begin(115200);
  
  // Wii リモコンとの接続待ち
  if (Usb.Init() == -1) {
    Serial.print(F("\r\nOSC did not start"));
    while(1); //halt
  }
  Serial.print(F("\r\nWiimote Bluetooth Library Started"));
  
  // Arduino UNO の出力ピンを設定
  pinMode(R_INR, OUTPUT);
  pinMode(R_IN1, OUTPUT);
  pinMode(R_IN2, OUTPUT);
  pinMode(L_INR, OUTPUT);
  pinMode(L_IN1, OUTPUT);
  pinMode(L_IN2, OUTPUT);
}

void loop() {
  Usb.Task();
  
  // Wii リモコンとの接続が切れたら終了
  if(!Wii.wiimoteConnected) { return; }
  if(Wii.getButtonClick(HOME)) {
    Serial.println("CLOSE");
    Wii.disconnect();
    return;
  }
  
  // Wii リモコン横持ちでの左右回転を 0~360 で取得
  int pitch = Wii.getPitch();
  int right = 0;
  int left = 0;
  if( 0 <= pitch && pitch <= 90 ){
    right = constrain( map(pitch, 0, 45, 0, 255), 0, 255 );
  }else if( -90 <= pitch && pitch <= 0 ){
    left = constrain( map(pitch, 0,-45, 0, 255), 0, 255 );
  }else if( 270 <= pitch ){
    left = constrain( map(pitch, 360, 315, 0, 255), 0, 255 );
  }
  
  if(Wii.getButtonPress(UP)){
    // Wii リモコンの上ボタンが押されたら両方のモーターを正転
    digitalWrite(R_IN1, HIGH);
    digitalWrite(R_IN2, LOW);
    digitalWrite(L_IN1, HIGH);
    digitalWrite(L_IN2, LOW);

    // Wii リモコンが右に傾いている時は右を減速
    // 左に傾いている時は左を減速
    analogWrite(R_INR,255 - right);
    analogWrite(L_INR,255 - left);
  }else if(Wii.getButtonPress(DOWN)){
    // Wii リモコンの下ボタンが押されたら両方のモーターを反転
    digitalWrite(R_IN1, LOW);
    digitalWrite(R_IN2, HIGH);
    digitalWrite(L_IN1, LOW);
    digitalWrite(L_IN2, HIGH);

    // Wii リモコンが右に傾いている時は右を減速
    // 左に傾いている時は左を減速
    analogWrite(R_INR,255 - right);
    analogWrite(L_INR,255 - left);
  }else if(Wii.getButtonPress(RIGHT)){
    // Wii リモコンの右ボタンが押されたら右モーターだけを反転
    digitalWrite(R_IN1, LOW);
    digitalWrite(R_IN2, HIGH);
    digitalWrite(L_IN1, HIGH);
    digitalWrite(L_IN2, LOW);
    analogWrite(R_INR,255);
    analogWrite(L_INR,255);
  }else if(Wii.getButtonPress(LEFT)){
    // Wii リモコンの左ボタンが押されたら左モーターだけを反転
    digitalWrite(R_IN1, HIGH);
    digitalWrite(R_IN2, LOW);
    digitalWrite(L_IN1, LOW);
    digitalWrite(L_IN2, HIGH);
    analogWrite(R_INR, 255);
    analogWrite(L_INR, 255);
  } else {
    // ボタンから手を放したら停止
    digitalWrite(R_IN1, LOW);
    digitalWrite(R_IN2, LOW);
    digitalWrite(L_IN1, LOW);
    digitalWrite(L_IN2, LOW);
    analogWrite(R_INR, 0);
    analogWrite(L_INR, 0);
  }
}

レゴ

レゴはお好きなように組み立ててください。
問題はギヤボックスから出ているシャフトの太さが
レゴのキャタピラ用ギヤの軸の太さと全く合わない点です。

ホットボンドで穴を埋めるか、ミニ四駆等のピニオンギヤを
削り出すのが簡単です。

以上でラジコン完成です。
100行程度のプログラムで無線通信ラジコンが作れてしまう Arduino の素晴らしさが伝わりましたでしょうか。

携帯を載せて撮影しても楽しいです。


子どもと一緒に遊ぶために作ったのに、
子どもから全力シカトされている点には突っ込み禁止です。

このエントリーをはてなブックマークに追加 続きを読む

  1. 2015/03/29(日) 00:40:33|
  2. Arduino
  3. | コメント:29

Wiiリモコン+Arduino+LEGO でラジコンを作る(3):USB Host Shield で Bluetooth ドングルを使えるようにする

もくじ

  1. Wiiリモコン+Arduino+LEGO でラジコンを作る(1):材料選定
  2. Wiiリモコン+Arduino+LEGO でラジコンを作る(2):DCモーターを動かす
  3. Wiiリモコン+Arduino+LEGO でラジコンを作る(3):USB Host Shield で Bluetooth ドングルを使えるようにする
  4. 【完成】Wiiリモコン+Arduino+LEGO でラジコンを作る(4):WiiリモコンでDCモーターを操作する


前回、せっかくArduinoでDCモーターを動かせるようにしましたが一旦モーターから離れます。

今回は USB を使えるようにして Bluetooth ドングルを接続し、
さらに Wii リモコンと通信できるようにします。

一見、ものすごく大変そうですが実は簡単に終わります。
このあたりが Arduino の素晴らしいところですね。

USB Host Shield本体


Circuits@Home の USB Host Shield が手に入った場合は
Arduino UNO のピンソケットに差し込んで2階建てにすればOKです。

一応、Amazon で Circuits@Home 互換のシールドが売っているようです。


一方、秋葉原などで比較的手に入りやすいのは SparkFun のシールドです。
スイッチサイエンスさんで取り扱っているのも SparkFun です。

この後で USB Host Shield を動かすために Circuits@Home のライブラリを使うのですが
SparkFun のシールドは Circuits@Home のライブラリと互換性がありません。

そこで、SparkFun の USB Host Shield を改造したいと思います。
ADK 勉強会さんのサイトで凄まじく詳しく説明されているので一緒にご覧ください。


  • STEP 1 : Vin のラインをカット
    Vin から延びるラインの途中をカットします。
    かなり固いですが小さなマイナスドライバーでガリガリするとカットできます。
    USBHost_VIN_cut.jpg

  • STEP 2 : 7, 8ピンからのラインをカット
    7番ピンと8番ピンから延びるラインをドライバーでガリガリします。
    ラインは裏面から回り込んでいたりしてかなり分りにくいので注意してください。
    表側から見ると、2番と3番の間、および、7番と8番の間から出ているのがそれです。
    USBHost_78_cut.jpg
    どうでも良いですが、背景に映っているのはラジコンではなく Quadcopter です。

  • STEP 3 : 5V とレギュレータをバイパス
    レギュレータの真ん中のピンと5Vピンをリード線で繋ぎます。

    ピンソケットがはんだ付けされている場合、表側から5Vに繋ぐのは少々難しいです。
    レギュレータからユニバーサル基盤部分に繋ぎ、ユニバーサル基盤の裏側から5Vピンに繋ぐと簡単です。
    USBHost_5V.jpg

  • STEP 4 : 74HC4050 と RST を接続


    チップの足のうち、もっとも USB コネクタに近いところからリード線を延ばします。
    はんだ付けに手間取るとチップが壊れますが、焦ると隣の足とブリッジしてしまいます。
    迅速かつ丁寧に頑張りましょう。

    本来は RST ピンに繋ぐのですが、やはり表側からはんだ付けするのは面倒なので、
    リセットスイッチの最も RST ピン側の足にはんだ付けするのが簡単です。

    正直言って、表面実装の手はんだはクリップがないと苦行です。


USB Host Shield ライブラリ


Circuits@Home の USB Host Library 2.0 を使います。
GitHubからソースをダウンロードしてください。

GitHub から ZIP をダウンロードしたら、Windows のマイドキュメントにある
「Arduino\libraries」フォルダの中に放り込んで Arduino IDE を再起動します。

Arduino IDE の「ファイル>スケッチの例>USB_Host_Shield_20>Bluetooth」にWiiが表示されればOKです。
そう、これだけで Wii と通信する準備が完了です。
Arduino 恐るべし。

ソースコード


今回は Wii リモコンとの接続確認だけですので USB Host Library のサンプルコードを使います。

Arduino UNO のピンソケットに USB Host Shield を差し込んで2階建てにし、
USB Host Shield の USB コネクタに Bluetooth ドングルを取り付けます。

準備ができたら、Arduino IDE の「ファイル>スケッチの例>USB_Host_Shield_20>Bluetooth>Wii」を開いてください。
Arduino UNO にスケッチを書き込んだあと、「ツール>シリアルモニタ」を開きます。

Wii リモコンからの操作


Arduino UNO 動作中に Wii リモコンの 1 ボタンと 2 ボタンを同時押しします。
しばらくすると Bluetooth ドングルの LED が点滅して Wii リモコンとの接続が完了します。
この状態で Wii リモコンのボタンを適当に押すとシリアルモニタに認識結果が表示されます。

そう、Bluetooth のプロトコルや Wii リモコンの通信内容の解析などという面倒な作業は一切必要ありません。
これだけで Wii リモコンの操作内容を取得できます。

また、単なるボタン操作だけでなく加速度センサの値を取得したり、
ヌンチャクの操作を取得することも可能です。
USB Host Library のソースを見て色々試してみてください。

なお、Arduino とペアリングした後でも電源を入れなおせば普通に Wii で使えますのでご安心ください。

余談:Wiiモーションプラス


蛇足ですが、応用編で Wii モーションプラス(リモコンの踵の部分)だけを取り外し、
Arduino に直結してジャイロセンサーにするという応用も可能です。
Wii リモコンが1台あれば Arduino と組み合わせるて色々と遊べるのでお勧めです。

さらに発展すると Wii モーションプラスを分解して加速度センサを取り出し、
Arduino の基板上に組み込んでマルチコプター(複数プロペラのヘリコプター)の
フライトコントローラーにしてしまう猛者が現れました。

それが MultiWii という Arduino ベースのフライトコントローラーです。
先ほど写真に映りこんでいた Quadcopter は MultiWii で作ってあり、
さらに Arduino を繋いで Wii リモコンで操縦できるようになっています。
その話もまたいずれご紹介できればと思います。


今回は Arduino で USB ホスト機能を使えるようにし、
Bluetooth ドングル経由で Wii リモコンと接続できました。
次回はこの仕組みと前回のDCモーター制御を組み合わせて、
ラジコンを完成させます。

このエントリーをはてなブックマークに追加

  1. 2015/03/28(土) 02:25:15|
  2. Arduino
  3. | コメント:3

DragonBoard 410c を基板配置から Raspberry Pi2, BeagleBone black と比較してみる

Qualcomm が SnapDragon の ARM 評価ボード DragonBoard 410c を発表しました。


オンボードで WiFi, Bluetooth だけでなく GPS まで積んでいたり、
64bit CPU の ARMv8 だったりと面白いスペックな上、
Microsoft が Windows10 を公式に対応させることを発表しているなど
嫌でも期待してしまう1枚になっています。

スペックについてはニュースサイトで詳しく説明されいるので割愛し、
基板写真を眺めていて思ったことを書きなぐってみます。

コネクタの配置


DragonBoard 410c と同じくらいのサイズで
Linux が動作する ARM ベースの評価ボードと言えば、
Raspberry Pi と BeagleBone Black があります。

この3種類の製品の最新モデルをそれぞれ見比べてみます。
画像は公式サイトからお借りしました。

まず注目したいのは外部接続用コネクタ類の配置です。
よく見ると、三者三様でそれぞれターゲットユーザ層の違いや
想定する用途がコネクタ配置に如実に表れています。

  • DragonBoard 410c
    dragonboard410c.png
    DragonBoard 410c は長方形の長辺片側にコネクタが集められています。
    このくらいの基板サイズになると、USBやHDMIのコネクタの長さが無視できなくなってきます。
    片側にコネクタを寄せることで複数の外部装置を接続した場合でも
    コンパクトに設置できるように考えられています。

    また、USB2つの配置もポイントです。
    基板に余白が多いようですので、USBコネクタを二階建てのタイプにすると
    もっと小型化できたはずなのですが、あえて2個を横並びで配置しています。
    二階建てにするとどうしても高さがでてしまうので、狭い隙間に入らなかったり、
    シールドがうまく載らなくなってしまうため敢えて小型化よりも薄さを
    選んでいるように見受けられます。

    おそらく、他の機材の隙間やラックの柱に貼り付けるなどといった
    実運用時の状況を考慮して基板設計がされているのではないでしょうか。
    単なる評価ボードではなく、業務適用に対する本気度が伺えます。

  • Raspbery Pi2 B
    raspberrypi2b.jpg
    DragonBoard とは対照的にコネクタやSDカードがバラバラに配置されています。
    また、2階建てUSBが横並びで4口という豪華仕様です。
    この配置ですと、全部のコネクタにケーブルを挿すとかなりかさばる上、
    USB2階建ての影響で厚さも出てしまいます。

    給電が AC アダプタではなく micro USB になったところからも考えて、
    完全にターゲットを個人のホビーユースに絞り込んでいるように見えます。
    結構売れているようですのでこの戦略はそれなりに成功しているのかもしれませんね。

    その反面、実運用で USB 給電はちょっと考えにくいですし、
    USB給電でUSB出力4個ってどう考えても最大電流に問題が出るため、
    フル装備で24時間稼働なんて恐ろしくてできません。
    IoT!IoT!とか言いながら Raspberry Pi2 を適用しようとしている人がいたら
    生暖かい目を向けてあげると良いかもしれません。

  • BeagleBone black
    beagleboneblack.jpg
    私は BeagleBone black を持っていないのですが、この形状が結構好きです。
    長方形の片側の短辺に電源とLAN、反対側にUSB1口とHDMIです。

    全部のコネクタに接続すると全体が細長い形状になることが
    想定されているようです。
    コネクタが表裏に配置されていたり、ヘッダピンの配置もシールド基板の
    2階建てでの機能拡張が想定されていたりと、全体的に厚さを犠牲にしてでも
    幅を狭くすることを狙っています。

    その結果、今回比較している3機種の中で基板サイズが最も長く、
    最も幅が狭い形状になっています。
    もしかしたらラックの柱など細長い場所に貼り付けることを考えて
    この形状にしているのかもしれません。

    また、ただ細長いだけでなく、電源とLANが同じ側にあるのもポイントです。
    通常、実運用の際は電源とLANは引き抜くことがありませんが、
    HDMI と USB は取り外す可能性があり、また、その先に何らかの箱が付くため
    箱を置く台などが設けられる可能性が高いです。
    となると、ラックの上部から電源とLANのケーブルを下ろしてきて
    途中にBeagleBone black を貼り、状況に応じて下側に外部装置を
    取り付けるような使い方が想像できます。

    基板設計時点でそこまでイメージできているBeagleBone black の
    開発者おそるべし。



ピンソケット


若干蛇足っぽいですが、ニュースサイトであまり触れられていない
ピンソケットについても少し見ておきたいと思います。
  • DragonBoard 410c
    公式サイトに記載されているスペックを見ると、
    60pin のコネクタは高速インターフェイスになっていて内蔵用USBが使えるようです。
    これはRaspberry Pi, BeagoleBone blackにはないインターフェイスです。

    センサ情報等をネットワークで送る場合、バッファリングを考えると
    SDカードでは心もとないケースもあるかと思います。
    パソコン用のSSDを内蔵USBコネクタで接続できれば
    小型でファンレスの大容量ストレージが使えるかもしれません。

    その他に、メザニンコネクタ(写真の白いコネクタ)が付いています。
    どうやらここに拡張ボードを付けるとArduino互換になるようです。
    何がどうArduino互換なのか謎です。Arduino用シールドが使えるんですかね?

  • Raspberry Pi2 B
    3機種の中で唯一のオスピン採用です。
    実運用時に引っかかって曲がったりホコリでショートするリスクは
    全く考えていないんでしょうね。

    オスピンだとクリップが使えるので便利だと考えたのかもしれません。
    どこまでもホビーユースまっしぐらで潔さすら感じます。

  • BeagleBone black
    Arduinoのようにシールドを載せられる設計になっています。
    シールドって見た目がすっきりするのですが、
    どうしてもその製品専用になってしまうので
    選択肢が少ない上、使わなくなったらゴミ同然。
    世の中的にはシールドと言えばArduino互換しか
    生き残れないのかもしれません。
    お可哀想に。



という訳で、基板の設計からそれぞれ次のような特徴が分りました。

  • DragonBoard 410c → 実運用を想定したハイスペック多機能ボード

  • Raspberry Pi2 B → どこまでもホビーユース。業務適用?何それ?美味しいの?

  • BeagleBone black → 細長く。どこまでも細長く。シールドあるよ。買う?買わない?あっそ。



いやぁ、基板って本当に面白いですね。
さよなら、さよなら。

このエントリーをはてなブックマークに追加

  1. 2015/03/26(木) 00:37:49|
  2. 製品レビュー
  3. | コメント:0

Wiiリモコン+Arduino+LEGO でラジコンを作る(2):DCモーターを動かす

もくじ

  1. Wiiリモコン+Arduino+LEGO でラジコンを作る(1):材料選定
  2. Wiiリモコン+Arduino+LEGO でラジコンを作る(2):DCモーターを動かす
  3. Wiiリモコン+Arduino+LEGO でラジコンを作る(3):USB Host Shield で Bluetooth ドングルを使えるようにする
  4. 【完成】Wiiリモコン+Arduino+LEGO でラジコンを作る(4):WiiリモコンでDCモーターを操作する
前回で材料がそろいました。
まずはDCモーターを動かします。

いきなり左右キャタピラのモーターを制御するのは面倒ですので、1個で試してみましょう。
出来上がるとこんな感じになります。



これの回路図は次のようになります。

ArduinoWiiRemoteRC_fig2.jpg

前回書かなかった可変抵抗器と固定抵抗器が含まれていますが、
これらはArduinoでソフトウェア的に代替させることも可能です。
固定抵抗器なしの接続方法については「建築発明工作ゼミ2008」さんが参考になります。

モータードライバ TA7291P

10本のピンが生えていて、上部の鉄板が欠けている側が1番ピンです。
それぞれのピンの役割は次のようになります。
  • 1番ピン:GND
    グランドピンです。
    Arduino の GND に接続します。
  • 2番ピン:OUT1
    モーターへの出力です。
    モーターの片方の端子につなぎます。
    動かしたときにモーターが思ったのと逆向きに回ってしまう場合は、
    2番ピンと10番ピンを入れ替えればOKです。
  • 3番ピン:NC
    使いません。
    誤って逆に挿した場合、ちょうどこの位置にVs(8番ピン)が来ます。
    Vs はモーター電源なので、万が一逆に挿してしまっても
    回路が壊れないように3番ピンをアースしてあるんだと思います。
    これを考えた人って賢いですね。
  • 4番ピン:Vref
    モーター制御ピンです。

    普通はここには抵抗器ではなくArduinoのPWM出力を繋いでモーターの回転速度を制御します。
    その場合は5番6番ピンをデジタル出力するようにArduinoのプログラムを書きます。

    今回はその代わりに4番を固定抵抗にして5番6番をPWM出力にすることで回転速度を制御しています。
    どちらでもモーター制御は可能です。

    「ところでPWMって何?」
    という方は前掲の「建築発明工作ゼミ2008」さんで詳しく説明されていますのでご参照ください。
  • 5番ピン:IN1
    モーター制御用の入力です。
    今回は Arduino の6番ピンにつなぎます。

    IN1をHIGH、IN2をLOWにするとモーターが正転します。
    IN1をLOW、IN2をHIGHにするとモーターが反転します。
    Vrefの電圧で回転速度を制御します。
    というのが普通の使い方です。

    今回の場合、Vrefの電圧を固定にする代わり、
    IN1とIN2の電圧を変化させることで回転速度と方向を一気に制御します。

    つまり、TA7291Pの内部では IN1 - Vref と IN2 - Vref の値を元に
    モーター電源からモーターに流す電圧を変化させているようですね。
  • 6番ピン:IN2
    モーター制御用の入力です。
    5番ピンと組み合わせて使います。
    今回はArduinoの5番ピンにつなぎます。

    IN1, IN2 の両方が LOW だったらモーターは停止します。
  • 7番ピン:Vcc
    Arduino の 5V ピンにつなぎます。
  • 8番ピン:Vs
    モーター用電源です。
    最大20Vまで入力できます。
    Arduinoに20Vを繋ぐと壊れてしまうのでArduino用とモーター用の電源を分ける必要があります。

    Vs の電圧がVrefの電圧より低くなるとTA7291Pが壊れるそうです。
    モーター用電源をエネループ4本(1.2V x 4)にするとUSBの5Vより
    下がってしまう可能性があるので注意してください。

    その場合は USB 電源をやめて Arduino の 5V ピンにモーター用電源も繋ぐと動く可能性がありますが、
    うっかり Arduino の許容電圧以上を掛けてしまうと今度は Arduino が壊れるため、
    それはそれで注意が必要です。

    余談ついでに言うと
    「モーターをパワフルに動かしたいがバッテリーも1つにまとめたいぜ!」
    という欲張りな方は20Vを分圧して5Vに落として繋ぐ方法もあります。

    QuadcopterにArduinoを載せる場合などにはこの方法で軽量化することもありますが
    電圧が不安定になるのであまりお奨めしません。
  • 9番ピン:NC
    使いません。
    万が一、左右反転して挿してしまっても、OUT1(2番ピン)の位置になってモーター回路がカットされます。
  • 10番ピン:OUT2
    モーターへの出力です。

Arduino UNO

やっと Arduino の登場です。
Arduino へのスケッチ(プログラム)書き込み方法については様々なサイトで紹介されていますので、
簡単な説明だけに留めておきます。
  1. Arduino公式サイトから Arduino IDE をダウンロードしてインストールします。
  2. Arduino UNO を USB ケーブルでPCにつなぎます。
  3. Arduino IDE を起動すると既に認識されているはずです。

今回使用した Arduino IDE のスケッチは次の通りです。
このスケッチは「hiramine.com」さんを参考にさせていただきました。
というか、ピン番号以外ほとんどそのままです。すみません。

このプログラムを Arduino に流し込んで可変抵抗器を動かすと動画のように動くはずです。
レゴはお好みで適当に。

#define IN1PIN  5
#define IN2PIN  6
#define VOLUMEPIN  0

void setup()
{
  pinMode(IN1PIN, OUTPUT);
  pinMode(IN2PIN, OUTPUT);
}

void loop(){
  int iValue = analogRead(VOLUMEPIN);
  int iMotor = Map(iValue, 0, 1023, -255, 255, true);
    
  MotorDrive( IN1PIN, IN2PIN, iMotor );
  delay(15);
}

int Map(int iIn, int iIn1, int iIn2, int iOut1, int iOut2, boolean bConstrain = false) {
  double dValue = (double)(iIn - iIn1) * (iOut2 - iOut1) / (iIn2 - iIn1) + iOut1;
  int iValue = (0 < dValue) ? (int)(dValue + 0.5) : (int)(dValue - 0.5);
  if( bConstrain ) {
    int iOutMin, iOutMax;
    if( iOut1 < iOut2 ){
      iOutMin = iOut1;
      iOutMax = iOut2;
    } else {
      iOutMin = iOut2;
      iOutMax = iOut1;
    }
    if( iOutMin > iValue ){
      return iOutMin;
    }
    if( iOutMax < iValue )
    {
      return iOutMax;
    }
    return iValue;
  }
}
  
void MotorDrive( int iIn1Pin, int iIn2Pin, int iMotor ){
  if( -5 < iMotor && iMotor < 5 ){
    digitalWrite(iIn1Pin, LOW);
    digitalWrite(iIn2Pin, LOW);
  } else if( 0 < iMotor ) {
    analogWrite(iIn1Pin, iMotor);
    analogWrite(iIn2Pin, 0);
  } else {
    analogWrite(iIn1Pin, 0);
    analogWrite(iIn2Pin, -iMotor);
  }
}

スケッチの説明

  • void setup()
    Arduino起動時に実行されます。
    Arduinoのスケッチを作る際は必ず必要な関数です。
    pinMode(PIN,MODE) は第一引数に指定したピンを第二引数のモードに設定する関数です。
  • void loop()
    setup() で初期化された後、繰り返し実行されます。
    これも必ず必要な関数です。
    analogRead(PIN) は引数に指定したアナログピンからアナログ値を読む関数で、0~1023の値が返ります。
    何もしないとものすごい勢いでループが回ってしまうので delay(N) で適当にスリープを入れています。
  • int Map
    第一引数で与えた二、三引数の範囲内の値を四、五引数の範囲に丸めています。
    Arduino 自体にも map という関数があるので見比べると参考になるかもしれません。

    Arduino map
  • void MotorDrive
    可変抵抗の値がプラス側だったらモーターを正転させ、マイナス側だったら逆転させています。
    digitalWrite(PIN,VALUE) は VALUE=HIGH だと PIN が 5V になります。
    LOW だと 0V になります。

    analogWrite(PIN,VALUE) は PWM ピンの場合、PWM で電圧が VALUE 相当になります。
    アナログピンでも PWM ピンでもないデジタルピンの場合は正しく動作しません。

以上でモーター1個の制御は出来るようになりましたので、
次回からはいよいよキャタピラ部分を作っていきます。

このエントリーをはてなブックマークに追加

  1. 2015/03/25(水) 00:57:29|
  2. Arduino
  3. | コメント:0

Wiiリモコン+Arduino+LEGO でラジコンを作る(1):材料選定

もくじ

  1. Wiiリモコン+Arduino+LEGO でラジコンを作る(1):材料選定
  2. Wiiリモコン+Arduino+LEGO でラジコンを作る(2):DCモーターを動かす
  3. Wiiリモコン+Arduino+LEGO でラジコンを作る(3):USB Host Shield で Bluetooth ドングルを使えるようにする
  4. 【完成】Wiiリモコン+Arduino+LEGO でラジコンを作る(4):WiiリモコンでDCモーターを操作する


子どもと一緒に遊べるものを作っています。
電子工作のおもちゃと言えばやっぱりラジコンですね。

とは言え、子どもが小さいとコントローラーの操作もなかなか難しかったりします。
そこで、Wiiリモコンの加速度センサでラジコンを操作してみました。

Arduino を Bluetooth 経由で Wii リモコンと接続し、駆動系はDCモーターを使います。
Arduino でおもちゃを作る際に使えると便利なポイントが色々と含まれていますので、Arduino の練習としてもちょうど良いのではないでしょうか。
出来るだけ初めての方にも分りやすいように説明していこうと思います。

完成するとこんな感じ。


制作の流れはこんなところでしょうか。

  1. 全体の構成を決めて材料調達

  2. ArduinoでDCモーターを動かす

  3. USB Host Shield で Bluetooth USB ドングルを使えるようにする

  4. WiiリモコンでDCモーターを操作する



早速、全体構成について説明します。
ArduinoWiiRemoteRC_fig1.jpg

ラジコンを自作する場合、タイヤよりもキャタピラの方が断然簡単で安上がりですので、
本体は LEGO のクレーン車についているキャタピラを使います。

というのも、タイヤの場合はサーボモーターでステアリングを作っていく必要があるのですが、
キャタピラだとDCモーター2個で左右転回を作れるので部材が安く済みますし、
フレームも結構イイカゲンで大丈夫です。

Wiiリモコンとの通信は Bluetooth です。
Bluetooth で繋ぐだけであればArduino用のBluetoothモジュールを使うという手もあるのですが、
今回はあえてUSB Host ShiledとPC 用 Bluetooth ドングルを組み合わせて Bluetooth 接続しています。

この構成にしておくと、うっかり飽きてしまってもドングルを Raspberry Pi に挿して転用したり、
USB Host Shield にデジカメを繋いで MTP (Media Transfer Protocol) で制御したりという逃げ道があって安心!
・・・という言い訳が可能です。

ここからは構成する材料について順番に説明していきます。


Wiiリモコン


どこのご家庭にでも1つや2つは余っているであろう(?)アレです。
お持ちでない方は今回の制作は見送りましょう。
わざわざ買ってまで作るほどのものではないです。



レゴ テクニック クローラー・クレーン 9391



何でも良いのですが、このクレーン車が一番安くキャタピラとフレームが手に入ります。
・・・だったはずなのですが、なぜかいまは9千円近くする場合があります。
1年前は2千円程度でした。
円高恐るべし。
安い時に買いましょう。




Arduino UNO


初めて Arduino を購入される場合は Arduino UNO がお勧めです。
どのサイトでも UNO をベースに説明が書かれていますし、Shield も比較的手に入りやすいです。
また将来、Arduino互換機を自作する際にも Arduino UNO が1台あるだけでかなり捗ります。

私の最初の Arduino は Phisical Computing Lab さんのエントリーキットでした。
ブレッドボードやUSBケーブルなどといった Arduino 開発に必須のパーツのほか、
抵抗やLED、スピーカーが入っていてこのセットだけで一通りの練習ができるようになっています。




USB Host Shield


これがなかなか曲者です。
Circuits@Home 互換のものを購入するのが無難かもしれません。

私は Sparkfun のものを購入したところ、Circuits@Home のライブラリと互換性がなくて
基板上のラインを改造する羽目になりました。
それはそれで若干テンションが上がるので、はんだ付けで表面実装基板と戦いたい方にはお勧めです。

どうしても Sparkfun しか手に入らなかった場合はこのサイトに詳しい改造方法が載っています。




Bluetooh USB ドングル


あえて USB ドングルで Bluetooth 接続を実現します。
メーカーは Planex 一択。
安いです。それだけの理由です。
すでにドングルをお持ちであればそれを流用すれば良いと思います。




スマホ用バッテリー


Arduino UNO を PC から切り離して動作させるために使います。
機種は何でも良いのですが、次の条件を満たしたものを探すと良いかと思います。

  • 電源コードを外せる。もしくはバッテリー部分に電源プラグを収納できる。

  • Arduino UNO より小さい。出来るだけ薄い。

  • USBケーブルを交換できる。
    (Arduino Nano などの小型モデルや Raspberry Pi2 では micro USB なので)



モータードライバ


DC モーターを制御するためのドライバICチップです。
2個必要です。

秋月電子通商で買えます。


電池ホルダー


DCモーターに給電するために使います。
Arduino の駆動と DC モーターの駆動は別系統で Arduino に入力する必要があります。

Arduino に USB 給電されているからと言って、Arduinoの出力端子でモーターを直接駆動してはいけません。
消費電力オーバーでArduinoが壊れてしまいます。

このあたりについては次回以降で詳しく説明します。

電池ホルダーは何でも良いのですが、お勧めは単3電池4本が横並びに入るものです。
エネループ(1.2V)を4本直列すると4.8Vになるので、実はUSB給電の代わりにArduino のピンソケットから給電して動かすとバッテリーを1つにまとめられます。
・・・が、この方法は全体がコンパクトになる一方、電圧が不安定になるためそのまま使い続けるのはあまりお勧めしません。

Amazonでも購入できますが、秋月電子通商で買った方が圧倒的に安いです。


タミヤツインモーターギヤボックス


当然ながら、なくてもモーターは回せるのですがキャタピラを動かすほどのトルクが出ないです。




という訳で、締めて1万円程度で材料が揃いました。

「普通にラジコンを買った方が安くて簡単じゃねーか」
なんて言ってはいけません。

ラジコンを手に入れるのが目的なのではなく、作って遊ぶことが目的なのですから。

それに、今回使う材料はどれもバラせば別の用途に使えるので飽きても安心です。
という言い訳で自分を説得します。

次回から実際にラジコンを作っていきます。

このエントリーをはてなブックマークに追加

  1. 2015/03/24(火) 01:17:31|
  2. Arduino
  3. | コメント:0

ぼちぼちと

Raspberry Pi で宅内IP電話サーバを作って電話ごっこしたり。
テレビに近づき過ぎの子どもにATmega328Pで作ったなんちゃって arduino 互換機で注意したり。
そんな感じで子どもと遊んでいます。
色々とネタがたまってきたので製作方法やソースコードを小出しにしていこうかと。

このエントリーをはてなブックマークに追加

  1. 2015/03/23(月) 00:00:21|
  2. その他
  3. | コメント:0
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。