2012年12月2日日曜日

Arduino コンパチマシン (Da Vinci 32u) で遊ぶ

 Strawberry Linuxダ・ヴィンチ32U with Arduino Bootloader を買って遊んでみた。今回はその話を書こう。

 Strawberry Linux 社のDa Vinci 32u は,ArduinoLeonardo と同じ microcontrollerATMEL 社の ATmega32u4)を搭載した小さな小さなコンピューターである。そのため,Arduino 社の提供している IDE (ソフトウェア統合開発環境,Integrated Development Environment)を利用でき,プログラムが簡単に組め,Arduino Leonardo コンパチと言ってもいい極小コンピューターとなっている。(:形状やピンの配置が異なるので,ほんとはコンパチとは呼べないかも…)

Arduino というのはイタリアが発祥の極小コンピューターボードで,当初は Atmel 社の AVR シリーズの 8 bit コンピューター (microcontroller と呼ばれる) を小さな (6cm x 5cm ぐらい) ボードに載せ,その上や下にインターフェース用のボード (シールドと呼ばれる) を重ねられるようにしたものである。その最大の特徴はプログラムの作成とアップロードを容易にするプログラム開発環境 (IDE と呼ばれる)を用意したこと,みたい。それで使いやすいからということで有名になったみたい。最新版では ARM 社の 32 bit のチップを使ったもの(Arduino Due)も売り出されている。

 Strawberry Linux 社のDa Vinci 32u の中心となる microcontrollerATMEL 社の ATmega32u4 が採用されている。そのため Arduino Leonardo 等と同様に,ホストとなるコンピューターとの通信やプログラムのアップロードは UART シリアル通信ではなく,mini USB 経由で可能となっている。そのため,これまでの Arduino 製品で必要とされた書き込み用の USB-to-serial converterFTDI FT232RL等)を搭載したボードが不要となっている(Arduino Uno の新しいバージョンも USB のコネクタがあるが,基板上に USB-to-serial converter チップを搭載しているので,本質的に UART シリアル通信で書き込みがされている。一方,Arduino Leonardomicrocontroller 自体が USB での通信をサポートしている)。回路は基本的に 5 V で動作し,出力は 5 V となっている。Da Vinci 32u は 3.3 V の出力を持っていないので,3.3 V で動作する SD カードなどのユニットでは,電圧の変換が必要となる。

 今回,なぜ Leonardo を買ってみたか,というと,AdafruitUltimate GPS unit という GPS unit をネットで見つけたから,だった。(もともとはバイクのナビの音声をヘルメットで聞くための Bluetooth インターコムの充電池(リチウムポリマー電池)が不調で,リチウムポリマー電池を探していた時に見つけた,のだが…) この GPS unit は,GlobalTop 社の GPS unit である PA6H を使っており,中心部には MediaTek 社の MT3339 チップセットが搭載されている。これは昨年から使っている Transystem 社の TripMate 850 の心臓部よりも新しいチップセットみたいなので, 俄然興味が湧いて,使ってみたくなってしまった。

当初,GPS のログを記録するだけの機能があればいいと思って,OpenLog を使った簡易 GPS ロガー を考えて,実際に作ってみた。そこでは,SparkFunOpenLog というのを使って,GPS unit が吐き出すテキスト形式のログを単純に microSD カードに記録する,というものだった。それなりに小さく作れたし,850 mAh の容量をもつ LiPo 電池(リチウムポリマー電池)を使えば 18 時間程度は持続するので GPS ロガーとしてはいい感じにできたのだが,GPS unit の設定等をいじることができなかった。

そこで,折角なので microcontroller を使って制御したみたい,と考えた。ネットでまず訪れたのが Swich Science という国内の販売会社。実は AdafruitUltimate GPS unit もここから通販で買ったのだが…。そこではいろいろと売っているが,どうも Arduino というやつが簡単に使えていいみたい,ということがわかってきた。ただ,Arduino は主に 8 bit なので,クロックも遅いし,プログラムを記憶する領域も 32 kB 程度しかないので,かなり非力な感じがした。しかし,もっとパワーがあってクロックも速いとなると,32 bit の microcontroller になるのだが,32 bit の microcontroller で小さくてプログラムが容易,という製品がわからなかったし(チップメーカー製の IDE もあるみたいだが,まだちゃんと調べてられていない),まずは簡単なやつからがいいと考えて,とりあえず Arduino を使ってみることにした。

Arduino という新しいキーワードがわかったので,今度は Arduino で調べてみた。まずは wikipedia で Arduino について調べてみた(いきなり wikipedia を見に行くのは良くない,と情報を扱う友人が書いていたが…)。それから,オリジナルの Arduino プロジェクトのサイトも見に行った。 そこで上記の性能を知ったのだが,Arduino と言ってもいろいろなバージョンがあるということがわかってきた。メインの microcontroller チップが違うとか,作動電圧が違うとか,プログラムの転送方法が違うとか,などで,幾つかの種類があった。主なものは,まずは Arduino Uno。オリジナルの Arduino の正当な後継機種,っぽい感じのもの。また,microcontroller を 32 bit のチップに変更した Arduino Due が今後のメインとなりそうな気がしている。他には,USB 通信可能な microcontroller を載せた Arduino Leonardo や,バッテリー駆動ができる Arduino Pro,基板を大きくしてピンの数を増やした Arduino MEGA などがある。しかし,私が気になったのは,どちらかと言うと小さく作ってある Arduino NanoArduino MiniArduino Fio だった。折角なので小さい方がいいなぁ,と感じたのだった。しかし,機能的には USB nativeArduino Leonardo が気になった。Arduino Leonardo が Arduino Nano とかみたいに小さくなっているといいのに,と思っていたが,それがラインアップにはなかった(現在は Arduino Micro が発売されたが,調べていたのは発売の2ヶ月ほど前だった)。

 とりあえずは Arduino LeonardoArduino Fio かなぁ?と思いながら,通販サイトで値段などを調べてみた。国内のサイトだと,Swich Science 以外にも,共立エレショップストロベリーLinux という通販サイトが見つかった。海外だと,SparkFunや,Adafruit という所も見つかった(もっとあったけど省略)。特に,SparkFunAdafruit はオリジナルのボード等を作っていて, 売っているものを見てると結構楽しくなってしまった。 国内のサイトでもストロベリーLinux は結構オリジナルの製品を作っているみたいだった。その Strawberry Linuxの製品を見ていると,ダ・ヴィンチ32U with Arduino Bootloader が目に止まった。チップは ATMEL 社の ATmega32u4 で,構成が Arduino Leonardo っぽいのに,大きさは Arduino Nano 程度に小さそう。それになんと言っても値段が安い。通販で 1,260 円だった(配送料は別途必要だが…)。Arduino Leonardo でも 2,500 円程度するので,ほぼ半額という安さ。おまけにとっても小さくて場所を取らなさそう。また,最新バージョンだと,ArduinoIDE でプログラムしたものを Arduino Leonardo のように書き込める。1個気になった Arduino との違いは,5 V 駆動なのだが,3.3 V の出力がない,という点。まぁ,それはおいおい考えればいい,として,早速一つ注文してみた。

買ってみた第一印象は,小さい,ということだった。右の写真の一枚目の右上に写っているものが Da Vinci 32u なのだが,すぐ下にある SparkFun 社の microSD カードシールドと比べるととても小さい。実は,この SparkFun 社の microSD カードシールドは Arduino Uno とほぼ同じ大きさの基板となっている。従って,Arduino Uno よりもずっと小さいことがわかる。届いた時にはピンはハンダ付けされていないので,そのハンダ付けの手間は必要。でも,やっぱり安くて小さくてなかなか良い感じの製品だと思う。

Da Vinci 32uArduinoIDE を使うには,ボードの定義ファイルを Arduino IDE の適当な場所に置かないといけない。windows の場合には,デバイスドライバーの INF ファイルがさらに必要。その辺りは ダ・ヴィンチ32U with Arduino Bootloader のページにある。使う際の注意点は,
 ・board name には Da Vinci 32U を指定(現れなければ,boards.txt の置き換えが必要)
 ・書き込み装置は,この場合は無関係(初期設定のままでよい)
 ・USB でホストコンピューターのシリアルモニターに表示させたい時は,「Serial」に書き出す。
 ・Tx, Rx (Pin 7, Pin 6) を使ったシリアル通信は,「Serial1」を使う。
 ・私の環境では COM7 のデバイスとして認識されたのだが,
  Arduino IDE のツールのシリアルポートから COM7 が消えたら Da Vinci 32u をリセットすると現れる時があった。
 ・Mac OS-X の場合,/dev/tty.usb.... というポートだった。
 ・スケッチの書込みに失敗したら,Da Vinci 32u のリセットボタンを押してすぐにスケッチを書き込んでみるとよい。
  スケッチの書込み時に Da Vinci 32u の赤い LED が明滅したら書き込めてるはず。
  スケッチの書込み時に,USB 接続を一度切り離して繋ぎ直すので,ピロン,ポロン,ピロン,みたいに音がする。
 ・最大容量 28,672 バイトだが,22,000 バイト程度を越えるか,
  あるいは,ずっと処理を続けるスケッチが書き込まれている状況だと,
  新たなスケッチの書き込みに失敗することがあった。
  → そんな時は,IDE で書き込みを選んだ後,進捗バーが 80% ぐらいになった時に
    Da Vinci 32u のリセットスイッチを押すと書き込めた。
などがある。今後さらに気づいたら追加しておこう。

Da Vinci 32uArduino Leonardo とのピン配置の比較表を載せておこう。
  ・Da Vinci 32u と Arduino Leonardo のピン配置

 もう少し写真を見たい人はこちらのサイトを見て欲しい。 文章はこことほとんど同じだが,写真が数枚多い。 また,OLED display と TFT LCD display のデモ動画が置いてある。

ちょこちょことテストをしているが,それぞれについては別の機会に書こうと思っている。

4 件のコメント:

Unknown さんのコメント...

自分もダ・ヴィンチ32U with Arduino Bootloaderを購入したのですがドライバーをインストールすることができません。
症状そしてはINFをインストールしてもサポートしていないと言われる

なのでINFのIDをWHにあわせました。
ですがそれでもサポートしていないの一点張りです。

そこでお聞きしたいのですがどのような手段でドライバーをインストールなされたのですか?
是非ご教授ねがいたい。

matsup さんのコメント...

3174yuki さん,コメントありがとうございます。
Da Vinci 32U with Arduino Bootloader のドライバーですが,私がインストールしたのは,windows 7です。
ストロベリー・リナックス・ダ・ヴィンチ32UのQ&Aにあるように windows 8 には対応してないようですが,OS は何を使われていますか?
私も最近あまり Da Vinci 32U を触っていないので,これ以上あまりいい情報をお伝えできないかもしれません。

Unknown さんのコメント...

返信ありがとうございます!
OSはwindows7をしようしています!
今朝ほど自分の不手際でインストールできていないことに気がつき実行してみたところできました!

そこでひとつ、つかぬ事を尋ねたいのですが・・・

ストロベリーリナックス社が提供していDa Vinci 32U with Arduino BootloaderのINFファイルってのはDa Vinci 32U with Arduino BootloaderのATmega32U4のデバイスにインストールしたということなのでしょうか?

それともATmega32U4これはまた別にデバイスインストール必要があるのでしょうか・・・

実はこんなことを聞くのにはちょっとした好奇心からはじまったことなのですが
http://hobby-notes.blogspot.jp/2014/05/ps4gimx3.html?showComment=1412425137010
ここでやっていることのようなことがしたのです。

本来はDa Vinci 32U with Arduino BootloaderでなくDa Vinci 32Uを購入したかったのですがあやまってArduinoの方を購入してしまい手順がわからずお助けください!

matsup さんのコメント...

3174yuki様,
すいません,コメントが入力されているのに気づいていませんでした。

ご質問の件ですが,da-vinci-32u.inf は Windows 側のファイルだったはずです…。
で,da-vinci-32u-master.hex は…,忘れてしまいました。
でも,windows に言われるがままにやったような気がします。
すいません,あまりいい情報がなくて…。