コメを噛め

コメを噛め

rerofumi の電子工作メモ

hatena bookmark

STBee には DFU (USB Device Firmware Upgrade) という USB 標準規格なファームウェア書き換えのブートローダが乗っており、Windows PC と USB 接続するだけでユーザーが作成したプログラムのダウンロードと実行ができるようになっている。
このマイコンボードを買うだけでマイコン開発ができるということでもあり、とてもお手軽なマイコン工作環境を提供してくれている。

通常ならばその恩恵に預かっていれば良いのだけれども、ちと深いことをやろうとするとやっぱり JTAG ケーブルが欲しくなってくるところ。
DFU だけだと不満な点というのはだいたい次の様なところ。

  • USB DFU のドライバーインストールが必要になる (ST社製)
  • ドライバーと転送ソフトが Windows でしかない
  • ダウンロードのみでデバッグまではできない(スタブを乗せれば手はあるけど)
  • ブートローダをつぶしちゃうと利用できなくなる
  • 自分でチップ買って作成した時はJTAGでなんとかしないとならない

そういった将来的な所も考えて JTAG ケーブルによる開発環境も用意しておいた方がよさそう、と思った。

ARM 開発での安価な JTAG ケーブルというと、OLIMEX の ARM-USB-OCD が鉄板な感じ。
中身は FT2232 なので互換機の製作もできなくないし、OpenOCD を使うなら JTAG ケーブルはシンプルにできるというもの。
7000円とか 9800円とか開発機材としては安いんだけれども、今回はなんとなく OLIMEX のこいつを使わないでできる方法を探してみた。ARM-USB-OCD を回避しているのには特に深い意味は無いですが。

■ ST-LINK

ST純正のデバッガ&プログラムケーブル。
2700円ほどと大変お安い。STBee を買った時に、ブートローダの保存&復活のために買っておいたもの。
これがあれば十分じゃんという意見もあるけれどもね。
基本的にデバッグには IAR, Keil, Atollic といった商用開発環境(hobby用は存在しない)が必要でドライバーもオープンじゃないので OpenOCD が使えない。Atollic lite が無料で使えるのでその上で開発を完結させるつもりならばそんなに問題は無い。
詳細についてはあとで書く。

■ arm_blaster

iruka さん製作の STBEE MINI を使った JTAGアダプター
HID なのでドライバ要らずなのがステキ。
OpenOCD は独自のパッチをあてて利用する形だけれども、Windows版のソース&バイナリもあるのでそれを利用すれば容易。

■ USB-Blaster もどき

以前作ってあった PIC18F2550 使用の USB-Blaster もどき。ALTERA のダウンロードケーブルとして使えている。
OpenOCD 0.4.0 では多少微妙なれど USB-Blaster をサポートするオプションが付いている。これを利用すると、この USB-Blaster もどきも OK なはず。

■ つづく
取り急ぎで上にある 3種類の JTAGケーブルを使ってのフラッシュ書き込みと GDB からの接続を確認済み。
もうちょっと環境の広がりを検討するので、ちょびちょびと報告していく予定。

基本的にコマンドラインと手書き Makefile で扱えるように検討していくのが目的。
必要なときに gdb をコマンドラインから叩いて扱ったりするような人向け。


hatena bookmark

toolchain 製作の rake スクリプトに gdb を加えた。
OpenOCD と JTAG ケーブルなどを使ってダウンロードやデバッグをリモートで行う用。

Download: fumi2_cortexM3_toolchain-0.0.2.tar.gz

メモ、GDBサーバーとの繋げ方例(ポートが3333のとき)

$ arm-none-eabi-gdb example.elf
(gdb) target remote localhost:3333
(gdb) monitor reset halt
(gdb) load
(gdb) continue


hatena bookmark

IOが沢山あってそれなりにパワフルでお安いマイコンが使いたくなり、STM32 に手を出してみることにした。てなわけでまずは Strawberry LinuxSTBeemini を入手。

さて、ボードも買ったことだし開発環境を作るかと LEDチカチカもさせずにいきなり GCC toolchain をビルドし始めたというのが今回のお話。
toolchain バイナリは DevKitPro がスタンダードかと思っていたら、今時だと CodeSourcery G++ なのだそうで。知らなかった。(追記: YAGARTO ってのもあるらしい)
しかし、CodeSourcery G++ は GNU GCC toolchain だといっても一応商用のライト版だしなー、とか。他の環境はなんやか制限があるしなー、とか。Cygwin ネイテブはないしなー、とか。色々思うところあって、久しぶりに自分でビルドすることにした次第。

以前 SDL の時にやったように、ぽちぽち手作業でビルドしてその時の手順や configure 引数を rake 形式でメモしていくもの。
rake(make の ruby 実装) 一発でソースをダウンロードしてきて自動的にビルドできるのだけれども、どっちかというとドキュメントを rake というフォーマットで書きましたという意味合いの方が大きいのでできればスクリプトを読んでいただけるとありがたく。

Download: fumi2_cortexM3_toolchain-0.0.1.tar (4KB)

上記スクリプトでインストールされるのは

  • binutils-2.21
  • newlib-1.19.0
  • gcc-4.5.2

といった一応現時点で最新のもの。
言語は C と C++ の二つ。
まあ、STM32 で C++ が使い物になるかどうかは知らないけど。

ターゲットは Cygwin, MacOSX(10.6), Linux でそれぞれでビルドできることを確認している。
ただし、Wow64(Windows 64bit)上の Cygwin では、この規模のビルドは fork エラーが出たりして完了できないと思う。実のところ、4日前後この問題と取っ組み合いしていたのだけれどもお手上げした。Cygwin で使いたいひとは Win32 環境でビルドしてバイナリだけ持ってくるのがオススメ。
MacOSX や Linux は何の問題も無し。

参考程度に Cygwin 版のバイナリを置いておく
Download: cortexM3_gcc_toolchain.tgz (76.5MB)

この toolchain で、Strawberry Linux の STBee ページに置いてある LEDチカチカサンプルをビルドし無事実行できることを確認している。


hatena bookmark

CNCフライスでけがいてプリント基板を作成する手順を動画でまとめたもの。
実際に動いて削っていくところをみれるのです。

↓スマートホンとかでどうしてもYoutubeじゃないととゆ人はこちら
http://www.youtube.com/watch?v=Ho7_jFzH0kY


hatena bookmark

「いるみさん」のプリント基板配線で半田ブリッジしまくって悩まされたというのは以前から書いていたこと。
それを確認したり、パターンを見ながらはんだ付けするのにルーペ付きのヘルパー(鰐口ばさみ)を使っていた。が、それにも限界を感じたので、最近安価で手に入る USB顕微鏡を導入することにした。

これで、基板をけがいたあとのバリを確認することができる。


左がバリが出てしまったパターンで、右が綺麗にできたもの。
このバリがショートしているものがたまにあったりするので、それを拡大で確認していく。
もしショートしていたらカッターで溝をなぞって再度確認する感じ。


顕微鏡を見ながらはんだ付けすれば細かいパターンも大丈夫だぜ。
と、思ったけれどもこれはうまくいかなかった。
案外はんだ付けの際に小手先や部品高さといった深度をみて作業するものらしく、単眼ではちょっとやりにくくイライラしてしまった。
結局肉眼ではんだ付けして、結果を顕微鏡で確認するといったフローがスムーズだった。


顕微鏡で無いと確認できないブリッジの例。
あとバリのショートもわかりにくい。

これまではルーペでなんとかなるだろうと思っていたけれども、実際にUSB顕微鏡を使ってみるとやっぱりこれは必要だなーと思うツールでした。


hatena bookmark

さて、里子に出された「いるみさん」だが、LED基板の配線が外れるというアクシデントがあったらしい。
外れたものはまたはんだ付けすればよいのだけれども、これがまたうまくいかないのですな。私でも四苦八苦したくらいだもの。
難しい要因ははんだ付けしようとすると隣接パターンに半田ブリッジしやすいというあたり。
ついでに、トランジスタが寄りすぎていてはんだ付けしづらいという不具合もあったりして。


アフターサポートとして、問題点をいくらか軽減できるように改良した LED基板を作ることにした。


パターン面に半田ごてで手を入れるとブリッジしやすいというのが問題だったので、ジャンパーアーチを表につけてここから延長する形にしてみる。
パッドの方はしょうがないのでそのままとして、配線の半分はパターンでない面に持って行けた事になる。
まあ、このジャンパーにはんだ付けしようとするとパターン側の半田が溶けるので割と難しいのだけれども、それでもましになったほうかと。

新しい基板のガーバーデーターを置いておく。
Downloadl: garber_ledboard2.zip


hatena bookmark

こうして完成した「いるみさん」はminiとともに依頼主であるごえもんPのところへ納品されていくのでした。たっしゃでなー。

さて、実際はこのブログで書いているよりもちょいと前に完成していて、終わったときに Thingivers投稿済みであった。

ちょうど投稿したその日に 1日限りのデザインコンテストが Makerbot で行われていたのだが、なんだかよくわからなかったためほおって置いた。

そしたら半自動でエントリーされてて、いつのまにやら優勝していたよ。
上はそのときの Makerbot Blog の記事

Thingivers の方でも割と好評で、Blog の方でも設計、電気、ケースと全て一人で行っている包括的プロジェクトであるとお褒めの言葉をいただいている。
まさに、DIY/HomeFab プロジェクトとしてそういったことを提示するためにやってきたのでそれが評価された形となる。ありがたい。

工業製品が身の回りに溢れるようになって、買うことはできるけれども作ることができないものが大多数となってきた。そんななかでも、工作機械のアシストやそれを扱う技量を手に入れることで作れる物の範囲をいくらか広げることができる。
必要なのは作りたいと思う気持ちなのではないだろうか。


hatena bookmark

3Dプリンターでケースも出力したし、これと基板を組み立てていく。


基板の穴に合わせて 2mm のドリルで穴を開け、2.6mm のタップネジで固定します。
上側も同じようにタップネジで固定するのだけれども、基板と上部と底の 3つをネジで固定する形となる。


本体部分は固定完了したので、上の口からワイヤーを引き出し、そこにLED基板を接続していく。


二枚目以降のLED基板もポリウレタン線を使って筒を通しながら接続していく。


筒をはめ込んで完成。
合成はあまくて隙間が空いちゃっているけれども、そこは手作りの味ということでひとつ。


これでいるみさんは完成。プロジェクトのゴールとなる。


以前ケミカルライトを計測したのと同条件で明るさ測定。
まずまずの成績。


hatena bookmark


モデルができたので、それを CupcakeCNC で出力して実在する物体に仕上げる。
言葉にすると 1行だけれども、CupcakeCNC を扱って出力するだけでも相当な技術と経験が必要なエンジニアリングだったりするのであっさり出力されるわけでもない。
特に今回はボディ底面のパーツが 135mm と CupcakeCNC が出力できる高さ限界ぎりぎりの物があり、これを出力するのが本当に大変だった。



一見むちゃな形状に見えるけれども、実は全部積層型3Dプリンターでサポート材無しで作れる様に設計されている。飛び出している所は下側に 45度以下のスロープをつけてすこしずつ飛び出すようにしたりね。
このへん、どんな形だったら出力できるのかという経験の塊だったりするのだ。

そういう意味では押しボタンのパーツは失敗した。
形状的には無理はないんだけれども、これだけ小さいと樹脂が固まる前にひとつ上の層が積み重なってしまうので熱が逃げないで形成されずにぐにゃぐにゃになってしまうのだ。
分かってはいたんだけれども、これ以上大きく設計することもできなかったしなあ。
結局ぶにゃぶにゃに出力されたものを後で削って形を整えなんとかした。

Download: irumi_model_stl-20101229.zip
STL形式モデルデータ


hatena bookmark


モデルの作成。

手間がかかるわりにあまり語ることも無い作業なので成果だけ置いておく。
モデルに穴が空いていたり、ポリゴンが重なっていたりするとすぐに Skeinforge がクラッシュするのでそういった要素は全部修正しなくてはいけない。その作業が挟まるととてもめんどい。

Download: irumi_model_obj_20101228.zip
3Dモデルデータ。wavefront obj 形式。
obj はスケールを厳密に持てないので読み込むと10のべき乗段階でサイズが異なっている可能性がある。