いまさらの。。
uniclock!
楽しい。。
主にcooca,C,マイコンのことなどを気ままにエントリー
terminalのscreen <-> usb-terminal変換 <-> xbee 通信を開くときのチップス。
screenにおいて。
まず
$ls /dev/tty.*使用するポートを確認後、
$screen /dev/tty.usbserial-A4004VVV 19200これで新しいポートのセッション開始。
windowsにはxbeeのコンフィギュレーションを変更したり、ファームをアップデートしたり、通信テストしたりするのに、X-CTUなる便利なGUIのソフトがあるのです。がしかし、macではX-CTUが使えないので、基本的にterminalからコマンドラインで通信するしかない。
しかし!
そこへこの,
7 in Seven
mac版のX-CTUとまではいかないものの、
アドレスや通信レートの変更、スリープモードの選択などなど、最低限のことに限られますが、GUIでできます。
その名も
GUI_serial_xbee3
なんともありがたい!!
と早速ダウンロードしたのはいいものの、これを実際に使うまでに一晩つぶしてもうた。
後続の方のために(いるのかはわからないけれども)、また覚え書きとして、実際に使うまでにたどった道順をショートカットで簡単に書き留めておこうかなと。
僕の環境は、Mac OSX 10.3.9のパンサーで、X Codeとかデベロッパーツール等は既にインストール済み。
1
まずはGUI_serial_xbee3を上記のリンクからインストール。そして、デスクトップで解凍すると、そこに実行可能なアプリケーションが出現。即、ダブルクリック
2
そしたら、まぁそうでしょう。なんやらエラーが。
2008-09-12 06:57:13.118 GUI_serial_xbee3[476] A Python runtime could be located. You may need to install a framework build of Python, or edit the PyRuntimeLocations array in this application's Info.plist file.
和訳するとこんな感じかな?
Python.frameworkインストールして!もしくは、Info.plist中のPyRuntimeLocationを変更して
くださいとな。
3
なので、とりあえず、Python2.5.1をダウンロード。普通に解凍してインストーラ実行。その後、(念のためだったけか?)パソ再起動。
4
それから、
GUI_serial_xbee3を右クリック。Show Package Contentsで開き、Info.plist中のPyRuntimeLocationのパスをこんな感じに↓
System/Library/Frameworks/Python.framework/Versions/2.5/Python
これはもしかすると、インストールするときの権限によってとか、OSによってとかで微妙にちがうのかもしんないので、ハードディスク検索かけて微調整(要は実行可能ファイルUnix Executable Fileを参照するようにしてランタイムを走らせる!)
*ちなみにこの時 Info.plistは、デフォルトでProperty List Editorで編集するようになってた。
text editorだと
ここの部分。
5
それから、またエラーが。。今度はこんな感じ
ImportError: dlcompat: dyld: /Users/MITO/Desktop/GUI_serial_xbee3.app/Contents/MacOS/GUI_serial_xbee3 can't open library: /Library/Frameworks/Tk.framework/Versions/8.4/Tk (No such file or directory, errno = 2)
6
だからここでTclTkAqua-8.4.1-Jaguar.dmgをダウンロード。インストール後、また再起動。
7
再びGUI_serial_xbee3をダブルクリック!!そしたら起動してGUIがお目見え!!(するはず)
8
そしたら、terminalのscreenプログラムでシリアル通信ポートを開く(前のポストを参照)。具体的には、
#ls /dev/tty.*
(これで現在の通信ポートを表示)
こんな感じでいくつか出る↓
>> found 4 ports:
[0]: /dev/tty.modem
[1]: /dev/tty.Bluetooth-PDA-Sync
[2]: /dev/tty.Bluetooth-Modem
[3]: /dev/tty.usbserial-A4004VVV (←これがusbシリアルポート,秋月のFTDIのやつ)
そんだら次は
#screen /dev/tty.usbserial-A4004VVV 19200 (←最後はボーレート。xbeeにあわせる。僕は19200)
10
で、ようやくGUI_serial_xbee3を起動、上から順に押してくかんじで。。
open押すと、右にポート名が表示される。次にsend ping押すと ATモード突入コマンド +++
が送られる。次にget押すと、現在のxbeeのコンフィギュレーション”パッ”と表示される。
書き換えるときは、普通に書き換えて、putを押す。
すべての手順でconsoleをみながらやるとよい。
コレクタ=ソース(N)
ベース=ゲート(P)
エミッタ=ドレイン(N)
>Nはネガティブ、Pはポジティブ
>エミッタはグランド
>ベースでコレクターエミッタ間の電位を操作
>ベースが0の時、コレクターエミッタ間はオープン(電位差あり)
>逆にベースが1のとき、コレクターエミッタ間はショート(電位差なし)
ふむふむ。。
p.s. STM32F103のDFUブートローダの移植の際の注意点としては、discピン(USB disconnectピ
ン)に要注意!!これを設定しなくてはPC側にディスクリプタがいきません。あしからず。。
新しく作るつもりの音用デバイスのために、Arduinoをワイヤレスで書き込めた方がいいよなぁということで、
Arduinoをxbee経由でワイヤレスにプログラム(Rob Faludiさんのページ)をみてなんでワイヤレスで書き込みができるのかちょっと調べてたのですが。
1割くらいわかた。
多分ですけど、Arduinoに書き込まれているブートローダのおかげによるところが大きい!!
流れとしては、
PC側のArduinoIDEで書き込みボタンを押すとソフトウェア的にブートモードに突入してくれて、一定のwaitタイム中(Faludiさんのサンプルの場合は5秒になってる)に新しいプログラムを書き込んであげれば、あとはこのサンプルにある通りトランジスタピンがおりてリセットがかかる。それによってブートモードから脱出して通常モード(プログラム開始位置からスタート)にかわる(というものだと思う)。
Faludiさんの回路でトランジスタでリセットの部分が追加されているのは、無線化したから。
無線でなければ、多分USB経由で物理的にリセットかけられてたんだと思う。けど、無線だから物理的にはリセット不可能なのね。
はじめはこの
int transistorPin = 12; ←(ATMega168のpb4)
ってブート突入モードのピンだと思ってたのですが、このサンプルをみる限りリセットでしかあり得なくて、
じっさいブートローダのソース(ATmegaBOOT_168.c)をみてみてもpd6ってなってるから、違う。
という推論。
あってるかどうかは、実際実験してみてからかな。
とにかくこれがあってれば、(ワイヤレス化した)Arduino Diecimilaボードを少し改良したらいけそうな気がするので、わくわくです。
とりあえずは、3v3(電源)の振れ幅で統一しないといけないだろうからまずはFaludiさんの記事通りにやってみます。
ではでは!!
P.S. Olimex のSTM32f103-STK評価ボードへのブートローダ(DFU)の移植めどがたってきた!!
追記@2008 09 11
Rob Faludiさんのページのローカル側のArduinoのリセットピンはnResetである(常識?)
Mitolog © 2008. Template by Dicas Blogger.