2014年12月07日

Leonardo機能内蔵のDSmainを開発中(動作確認まで完了)

DSmainは、Arduino nanoを使用しておりましたが、現在開発中のDSmain最新版(R3,仮)ではArduino Leonardoの機能を統合したものとしています。

半田付けして、なんとか動作確認までは進んだのでご紹介したいと思います。
半田付けが終わった後、ブートローダーにハマッてしまったことと、スケッチの書き込みでもLeonardo自体の問題点にぶつかり、コツがいくつか必要であることを思い知りました。

概観:
DSmainR3_1.jpg

DSmainR3_2.jpg

1枚の基板に統合されたので、すっきりしたようで、あまりすっきりしていない基板に仕上がっております。チップ部品を採用せずに、DIP部品でがんばったせいでございます。USB関係で必要な、抵抗等の部品が邪魔になっているかと思います。

ATMEGA32U4の半田付けはそれほど難しくなく、今回初めて0.3mmΦの鉛フリーのはんだ(日本スペリア SN100C(31))を使いましたが、温調はんだごても新規に導入したせいか、スムーズに対応できました。まあ、ちょっと濡れ性が悪いかなとは思いましたが、どうしようもないときのためにフラックスも用意しておきましたが、無くともどうにでもなりました。今後は、全面的に鉛フリーはんだへ移行を進めていきたいと思います。

基板は以下のような状況です。実は大ポカをしまして、1つの電源ベタパターンの優先度設定を間違えており、GNDパターンに埋没してしまう状況になりました。仕方ないので、カッターで自分で削ってパターンを復活させて対応してます。MBEはベタパターンのチェックは一切しないので、ツールの支援が受けられなかったのが敗因でした。

DSmainR3_3.jpg

・ブートローダーの変更

ブートローダーの書き込みですが、ATMEGA32U4には、DFUという機能があり、USB経由でファームウェアを書き換えられます。ただし、ブートローダーはATMEL純正のものがDFU機能のために最初から書き込まれており、Arduinoとして動かすことが出来ません。使い勝手を考えると、ブートローダーを書き換える必要があります。

LeonardoのブートローダーのHEXファイルは、「ArduinoIDEフォルダ\hardware\arduino\bootloaders\caterina\Caterina-Leonardo.hex」となります。また、ヒューズ設定は、HIGH: D8, LOW: FF, EX: CB となります。AVRISP mk2等で、直接書き換えすることでブートローダを書き込めます。ブートローダーを書き込み終われば、後はArduino IDEで自分の好きなスケッチをいくらでもUSB経由で書き込めるようになります。

・スケッチの書き込み

Leonardoは、CDCクラス(仮想シリアル)を使ってスケッチ書き込みや、PCとの通信を行う関係上、マイコン立ち上がりの際にスケッチ書き込みモードへ遷移するか、スケッチ動作モードへ遷移するかを決める条件として、リセットが発生してから数秒以内としているという変な制約があります。
スケッチを書き込みする場合は、Arduino IDEのスケッチアップロードボタンを押した後にすぐにボード上のRESETボタンを押してやり、コンパイルが終わりそうなタイミングを見計らってRESETボタンを離すと、書き込みモードへ遷移してスケッチを正常に書き込めるようになるという仕様になっているようです。RESETボタンを押してあげないと、スケッチをいくら書き込んでも、書き込まれないという状況に陥ります。私も陥りました。

さすがにこんな仕様だと、お客さんに出せる代物にはならないのでどうにかしないといけないかなと思っております。

・その他

統合した割に部品コストが高い。BAITEのArduino nano互換ボードの方がATMEGA32U4より安い。まったく金銭的メリット無し。
USB電源と内部電源の切り替えをダイオードORで行うが、部品選定を適当にやったせい(秋葉原の秋月で目的の低Vfのダイオードが見つからなかった・・・)で、電圧降下が思ったより大きくLCDの表示が薄くなるというポカをしました。回路電圧の3.3V化は2015年では必須条件になりそうです。

■結論

統合したことによる恩恵よりも弊害の方が増えてしまって、ちょっと困っております。UNO相当を統合するか、もしくはArduinoではなくmbedを採用すべきなのか、悩ましい状況になっています。

しかしながらArduinoベースの方が、部品も開発環境も実績も使い勝手は良いですが、総じて性能が悪いという状況で、折衷案として今後登場予定のArduino zero(SAM D21)をベースにしたいところですが、物がなかなか出てこないので評価も出来ないです。

3.3V対応のDCC/MM2シールドは年内にめど付けをしておきたいと思います。DCCパルスの調整と、電源配線の修正を行えば、たぶん問題なくすぐに対応できると思われます。DCC/MM2シールドで調整が終われば、DSmainの3.3V化と、SAM D21対応を同時に行っていければと思います。
posted by yaasan at 06:51 | Comment(0) | ガジェッド
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。