試行錯誤でゼロからXBeeのAPIモードを解析してみました
自分自身の覚書として書き残しておく。

XBeeには初期バージョンから色々と存在しているようですが、最新バージョンで電波の強い
XBee Pro S2B」を使用しました、このシリーズもアンテナのタイプで4種類あります
最初に使ったのはPCBアンテナでプログラミング可能な「Programmable XBee-PRO ZB / PCBアンテナ型」でしたが
プログラミングはどうすればできるのか全く分からず又、ちょっと距離を開けると電波が届かないので
最終的に外部アンテナを取り付けできる「XBee-PRO ZB / RPSMAコネクタ型」を使いました(左から2つ目)
これは電波がよく飛びます、後日 ULFとワイヤアンテナ式を購入(2機のPCBアンテナのやつを壊したから)
 

基板アンテナ式            外部アンテナ式             U FLアンテナ式           ワイヤアンテナ式

夏になると.......。

電源

動作電圧:2.7V〜3.6V(3.6Vを超えると動作しない、Liionバッテリーが満充電の場合動かない)
動作電流:200mA〜230mA(送信出力MAX時 スリープモード時:3.5μA)

動作モード

ATモードとAPIモードが有る

ATモードは”透過モード”と呼ばれていて有線シリアル通信のケーブルを無線化して使うものらしく
簡単そうなので、APIモードをいじってみる(これが泥沼にはまる事に...)

XBee のAPIモードはアナログ/デジタル コンバーターやPWMなどが使えそうなので
まずは
XBee 単体で自立型12V系と6V系のソーラー発電のバッテリー状態のモニタとして
利用することを目標とする

※ ファームウエア書き換え用の”X-CTU”は変に気難しいソフトだ、もしCOMポートとのコネクトがエラーを起こす場合は
     一度通信速度を9600以外にしてわざとコネクトエラーを起こさせてから9600に戻せばせつぞくされる、
    そんな癖をもったXBeeも二台あった。

※ ファームウエアの書き換えに失敗してから、書き換え不能になった場合は

    1・XBeeを刺さないでエクスプローラだけUSB接続する
    2・Modem Configralion ページを開き、該当するファームウエアを選択する
    3・Always Update Firmware にチェックを入れて Write
    4・エラーのウインドが表示されたら XBee を刺す(あら不思議、書き込みが始まる)
    5・念のため、Always Update Firmware にチェックを外し、Show Dfalts をクリックして書き込んでみる
    6・Read をクリックし自身のシリアル番号が書き込まれているのを確認する。

 

XBee Pro でADCを使う

APIフレームの内容(実験を繰り返して解った情報)
マニュアルには、14番ピンにADC用にV-REF電圧を印加するべしとか書いてあり、当初は印加していましたが、印加しないでも良いようだ
又、F-REF電圧は1.19V〜1.21Vですのでサンプル電圧は0V〜1.2Vまでの変化しか計測できないみたい実測には工夫が要りそう。
 
ADCの受信値から電圧を知る

受信値(10進にする)/1023 * 1.22 (単位V、mVなら1220 [XBeeの個体によって少し変化?当方はこの値で正確に測定できました])

上のI/O 1:0x0383(10進数 899)/1023 × 1.2 = 1.054545  (テスターの実測値は1.01V ほぼ有っています)
上のI/O 2:0x00AE(10進数 174)/1023 × 1.2= 0.204105  (温度用IC LM35の出力 0.205V 20℃ でしたので合っています)
上のI/O 3:0x01E8(10進数 488)/1023 × 1.2 = 0.57243   (可変抵抗器で3.3Vを分圧して0.55Vを掛けていますので合ってます)

I/O 0 はデジタル入力にしてプルアップしていますので値が 0x0001 ですが スイッチでLowにすると 0x0000 になります

★ 送信元のディバイスが複数個あると、上記図の”送信元のXBeeのアドレス”は、受信中のディバイスのアドレスに変化する。

追01(2012/0414):判明した部分が有ったので上図を訂正。(少し解ってくるとマニュアルが読めて理解できるようになるから不思議です)

オプションビット=コーディネータに任せる 0x41 ブロードキャスト 0x42
(ブロードキャストで送信したら、親機はスキャンして見つけたらデーターを受け取るようなので遅い、アドレスをコーディネーターに任せた方が
数倍早いようだ)

(2012/4/15)オプション値の変化が判明(2012/05/11 修正)

                         からの送信
    0x01=ルーター経由・またはネットワーク内にENDディバイス不在でルーターのみ(複数のルーターでの調査はつぎに)
    下の 0x4X はエンドデバイスからの送信と判明
    0x40=ルーター経由でENDデバイスがブロードキャストしている
    0x41=ルーター不在でENDデバイスがネットアドレスを、コーディネータに任せる(0000 0000)に設定している
    0x42=ルーター不在でENDデバイスがブロードキャスト(0000 FFFF)に設定している

   実験しているうちに色々と解ってくるが、送信元のデバイス種類は上記オプション値で判別可能なようだ。
    (ルーターがエンドデバイスよりも先に起動していればエンドデバイスからの送信でも 0x01 でルーター経由になった、なのでデバイスの判別は
     やはり固有のアドレスを調べたほうが正確。) 2012/05/12 更新

   データー収集とか実験であれば、フリーのプログラミングツール HSP で十分可能だ、仲間同士で解析作業をするのなら、後述のインターネット
   経由でシリアル通信をする、を利用すれば研究者が何名だろうが同じシリアル通信データーを共有可能だ。

 

反省・XBeeを初めて買ったのが2011年7月だから、ここまで来るのに9か月も掛かってしまった、毎日趣味でやる事が多いとはいえ、掛かりすぎ
         その間にお釈迦になった”ミツバチ”は三匹、解ってしまえば何と言うこはないのだが......。
         またわかり次第に忘れないように順次HPにアップしておこう。

追記02:デジタルマスクとアナログマスクの2進ビットで使用しているポートがわかる (マニュアルをよく読むと書いていた)

■ 次は、APIパケットをエンドセンサーに送信してデジタルポートをコントロールしてみようっと....。
    と思ったがデータ表示ソフトを早く完成させるためにやるべきことが......。
 
 
これらの値を、2進に直して1が立っている個数と場所(使用ポート)を調べておかないと続くデーターの長さが不明確になる、上図の場合
デジマスクは0x0001なので”0 0 0 0 0 0 0 1”だから上の”追記2”の図から”AD0/DIO 0”のポートを1個使っているのでデジタルのデーターバイトは
2バイトひとつだけ、アナマスクは 0x0E なので”1 1 1 0” AD1〜AD3 を使用しバイト数は6バイトだとわかるので容易に値を取り出せる。

HSPでの場合、デジマスクは strmid(フレーム格納変数,16,2)、デジタルデータは strmid(フレーム格納変数,19,2)でポートは”H”レベル
AD1のアナログ値は strf("%d", ("$" + strmid(フレーム格納変数 ,21,2))) = 1.053V

こうしてプログラムを組んでおけば、XBee を取り替えてしようが、ポート設定を変更しようが正確にデータ取得が可能になる

※ 実際には HSPでCOMポートから取り出したものは文字列なので XBee からの1バイトはHSPで2バイトになる。
 

今はこんな感じで表示している(画面キャプチャ)、表示種類とか方法はいくらでも細工可能。


 

▲ 所で、結局は XBee でセンス等したら表示なりデーターベス化をしないと意味がない、監視目的で表示だけなら Arduino など使うより
     無料でBASICに近いプログラミング言語の HSP を使い、PCで表示させれば費用も少なくて結構極まりない、もしもセンスしたデータを
    データーベースにして活用するなら、MS Access でCOMポートを使用するモジュールをインポートすれば可能、とりあえずはPCを使用するのが
    安上がりで高機能なものができる。(木下 隆 様作 VBA COMポートモジュールのリンク   フリーでPCアプリが作れるプログラミングソフトへリンク

    電子工作を XBee だけに留めて、気軽に実験実用するには、お奨めかと思うが?
    (現在HSPと並行してAccessでのDB化も進行中、その後は MySql でWEB上で表示と監視をしてみようと計画中)

■ 困ったことが発生(2012/04/23) 1対3ネットで問題が
   
     ネットワーク上に、コーディネーター+ルーター×1+エンドデバイス×2 の構成にしたらCOMポートからデーターの取りこぼしが発生!
     データ量が多くなったせいか?COMからの取得法を改良しないと....

   ・ちょっと解決策が見えた(2012/04/24)
    COMポートからの取りこぼしだと思っていたが間違っていた、どうもAPIフレーム中にデミリタと同じ値(0x7E)エスケープコードが現れているらし い
    そこでAPIのモードを”ATAP 2”にする 「X-CTUで Selial Interfacing → AP - API Enable の値を”2”にする」エスケープモードというらしい、
     もしもフレームデータ中に0x7E やESC が現れたら 0x7Dを挿入し後ろに (0x7E xor 0x20) を挿入して2バイトに置き換える、やってみると
    3台のフレームが全部きれいに取れた

   ・しかし又頭を抱えそうな問題が....。
    HSPアプリでの表示がでたらめに表示される??...... 調べてみると通信相手のデバイス固有アドレスが下32bitしか見えずアドレスの前に
    「00 7d 33 a2 00」の意味不明なデータが?これは何?、また調べることが増えたようだ。(この時はまだ上の事が理解できていなかった)

    今日1日調べて解ったこと、00 7d 33 a2 00 の赤色部分は 7d が挿入されたフラッグキャラクタなので次の2バイト目の 33 0x20 との xor で
   13 となり単に 7d 33 は 13 ですから、送信元の上位32bitアドレス部分であると判明しました、結果 00 13 a2 00 でした、やれやれ....ふー です。
    念のため ASCII コード表から 0x13 を調べると確かに制御用のコードでした。

※ よく読むとマニュアルに書いていた(2012/04/26 追加更新)
     Data bytes that need to be escaped:(直訳:逃げる必要があるデータバイト)

     •0x7E – Frame Delimiter
     •0x7D – Escape
     •0x11 – XON
     •0x13 – XOFF
※ 尚 0x7D をフレーム中に挿入しても Lengs は変わらないそうだ、0x7D はカウントしないのね。

(2012/04/25)-1

 

(2012/04/25)-2 
何時間もマニュアルと”にらめっこ”してやっとAPIでリモートフレームの作成法が理解できたので
今日は、エンドデバイスのデジタルポートに接続した圧電ブザーを鳴らしてみる事にしよう。

途中経過: 変更するポートや、その値で特定のXBeeに送信するAPIフレームを LengsとChecksumを自動計算し送信するまではこぎつけたけど
               送信方法が違っているらしく”うん”とも”すん”とも言わない、明日は特定のメモリバッファに1バイトずつ数値にして格納してから
               1バイトずつ読み出して XBeeのネットに投げてみる事にする。(で、Windows 7 に付属の電卓がこれほど使えるとは...すごい!です)
                                                                                                                                                                     ↓
← 今まで愛用 →Win7 付属品

 

(2012/04/26)-1
チェックサムの計算の方法を間違えていた、XBee の32bitアドレスや16bitのネットワークアドレスも全部1バイトに分けて計算するのね、今まで
塊で計算していた、0xFF - 通信モードのバイト〜チェックサムの前までを計算して結果の下位1バイトが付加するチェックサムの値だった。

 ・HSPのRS232C通信はバイナリ送信できないので、上で書いておいたように1バイトの16進値を直接メモリにPokeしておいて送信時に1バイトずつ
  Peek して送信する方法にプログラムを書き換えてみる事にした。(今日は Loto 6 の抽せん日、予想は当たるのか?)

(2012/04/26)-2
今日一日中色々と試してみたが、ブザーは”ピッ”とも”プッ”とも言いませんでした、マニュアルの”例”はよく見るとコーディネーターに送信と
書いてあるようです、エンドデバイスにAPIモードでコマンドを送るのは無理なんかなあ.....。だれかお教えーて!

■ とりあえず書いておこう「AD4 を Hレベルにするリモートコマンド」?見やすく表にした
 
送信DATA 説明
0x7E デミリタ
0x00 Lengs上位
0x00 Lengs下位
0x17 リモートコマンドのAPIフレームタイプ
0x01 フレームID 常に01みたい
0x00000000 送信先64bit上位アドレス XBeeの本体に刻印の
0x00000000 送信先64bit下位アドレス XBeeの本体に刻印の
0x0000 送信先のネットワークアドレス
0x02 設定命令
0x4434 設定するポート番号(ASCIIコードで 44=D 34=4) D4ポート
0x01 セットする値 Hレベル
0x00 チェックサム

     これを上手く送出すればリモート設定可能(しかし再設定ができない.....)

(2012/04/27)
ブザーが反応!、ピー と言った しかしおかしい、ポートは”L”レベルに設定してあるから電源ON時には鳴らない、当然”0x01”を送れば”H”になり
音が出るはずなのに”0x00”の”L”を送出すると鳴る? 変だ 負論理なんかな?

偶然の産物かと思い何度もやってみたりしたけど同じだ、それと受信情報も変化していないし、止めようと逆の信号を送っても止まらない、
まだ先は長そうだが、フレームパケットは送出できて受信もできているようだ、一歩前進!

違うデバイスでも試してみたが、結果は同じだ 個体に設定した Config で Digital Outが”L”でも”H”でも、送信値”0x00”で反転するが、元には
戻せない、又 64bit のアドレスを指定すれば上記ネットワークアドレスは違っていてもOKみたいだ。(これはもう泥沼に首まではまってるぞ)

(2012/04/28)
あっちこっちにリモートコマンドは送信できるようになったが、まだ元に戻せない.....。ちょっと置いといてエスケープ処理のプロフラムを作成に掛かる
XBeeの64ビットアドレスの上位32ビットは今後とも変わらずに”00 13 a2 00”なんだろうか?そうなら楽なんだけどね、HSPでは
16進(文字列)→10進数値への変換は簡単だがその逆で16進数値への変換がめんどうだ、変換モジュールなどを使わないとできない、まあ直接
バッファに Poke すれば関係はないけど.....。またしばらくは海外のXBee関連ページをググる事になりそう。

(2012/04/28)-2
ATAP=2モードは解りにくいので見かけ上ATAP=1に見えるように0x7dが現れたら元の値に処理して表示APIフレームを組みなおすプログラムが
完成しました、まだバグが有りそうなので、コンパクトに書き直したら、ここに保存しよう。(相変わらずブザーは鳴りっぱなし、LEDは消えたまま)

(2012/04/29)
今日は 0x7d エスケープ処理をサブルーチン化してプログラムの書き直しに一日暮れた、プログラムは念のためすべてのアドレス部とデーター部に
0x7d が存在するかをチェックしたので、せっかくサブルーチン化したのにまたダラダラと長くなった、もう一度見直して纏められるところは纏めよう。
やっているうちに気が付いたところが有った、ルーターのデジタル入力は”L”にしたらレスポンスも 0x0000 になるのにエンドデバイスは 0x0010 に
なる、試しに”H”にしたら、ルーターは気もちよく 0x0001 を返すのにエンドデバイスは 0x0011 が返ってくる、なぜじゃ?

勘違いしていた部分もあった、XBee でデジタル出力に設定しているポートの値情報はAPIフレームには現れないのだ、てっきり現れると思っていた。
でも デジタルマスクには、デジタルI/Oとして使ってますよと言っている、全部理解しているユーザーははたして居るのか?

(2012/05/02)
エンドデバイスの1個から変なデーターが送られていると思ったら16ビットのネットワークアドレスの中に 0x7d が現れていた、このアドレスは毎回
デバイスを起動する度に違ったアドレスになるそうだ、このアドレスはエスケープ対策のルーチンを通していなかったからだった、サブルーチンを通る
ようにプログラムを追加したら、 受信フレームは”87 7d 5d”の3バイト、7d の次の1バイト 5d を修正、2バイトの修正値が”87 7d”やはりアドレス中に
エスケープポイントを表す ”7d” 自身が入っていた、予期しない事が起きるもんだ。

完全ではないが実用できそうなまで解析する事ができたようなので、そろそろ中継用のルーターを1台、専用ソーラー発電で自立させよう
追:ADCはマニュアルでは1024と書いてあるが、実際は 0x3FF で‾オーバーフローするので ADCの値/1023 だ。

(2012/05/04)
とりあえずとして屋外に中継ルーターを設置する方向でパーツと回路図を描いた、筐体をジャンク箱から探すが良いのが無い

(2012/05/04)-2
フリーのプログラミング言語のHSPはゲームソフトを作成するもの、と思っている輩が多いが、実用ソフトも大抵は作成できる、しかしセンスがないので
今は XBee コーディネーターで拾ったデーターを下図のように淡々と表示させているに過ぎない、もっと描画センスがあればなあ.....
                                                                   ↓             このエスケープ処理ルーチンは、鯖に置いとこ(HDD飛び対策で)
シリアルポートから数値で受信するようにして、配列変数にデーターを入れとくとエスケープ処理が非常に簡潔にできるようになったので新しい
処理法とシリアル受信ルーチンをアップした。

 

(2012/05/05)
昨日からプロトタイプ(聞こえは良いがバラック組)の屋外ルーターはソーラーバッテリーの電圧を順調に送信している、消費電流は40mA〜50mA
ぐらいだから少々曇って発電量が落ちても大丈夫だろう。....しかし雨除けをどうしよう、密閉にはできないし

そろそろ蓄積した事を別ページにまとめておこう。

(2012/05/08)
屋外用の設置ケースを模索している間ちょっと横道にそれて、 PCに接続しているコーディネーターのUART情報をローカルPCで表示させながら
インターネット経由で、遠隔地のPCのCOMポートで監視する方法を考えてみた、以下のような課題が
 
1 シリアルポートはアプリケーションが使用中では他にデーターを流せない
2 インターネットにシリアルポートのデーターは直接流せるのか?
遠隔地のシリアルポートにあたかもコーディネーターが接続されているように見えるのか?
3 遠隔地のPCからはリモートコマンドを送信できるのか?

 1に関しては以前に使用したことが有るアプリで可能、VSPEといFreeのアプリでCOMポートを分配できるので複数のアプリで1個のシリアルポート
   を共有可能だ
 2にかんしてはVSPEを良く見てみると、なんと!TCPサーバーやTCPクライアントを作成できるみたいだ、それもCOMポートをスプリットしながら、

で!さっそく実験開始!インターネット回線が二本あるので二台のPCを並べて異なるISP接続で遠隔地に見立てる事に
まずは二台のPCにVSPEをインストールする(最新バージョンv938が有った)、HSPはすでにインストール済みだから同じプログラムをコピー

あっけなく接続できてリモートコマンドも送信できてブザーが”ピー”といっている、成功成功!、これは超長いシリアルケーブルが出来たという事か
XBee以外にも利用価値が有りそう、忘れないうちに設定事項を置いておこう  →  VSPE(Virtual Serial Ports Emulator)の設定

道草にならなかった....。

(2012/05/13)
考えすぎだった.......、前に書いたようにリモートコマンドで値のセットするがポートの値が ”H”の場合"0x00"を送れば ”L”になるのはOKだけど
ポートの値が ”L”の時でも”0x00"を送らないと”H”にならず、又セットした値がリモートで戻せない現象で、もしかしてAPIモード2にしているから
リモートコマンドを作成する時もエスケープ処理をしないといけないと思い込みせっせと処理ルーチンを作成して送信してみたが、
デバイスは”うん”とも”すん”とも言わない、元に戻してエスケープキャラが入っていてもお構いなしに送信すると反応した、

結果・リモートコマンド送信の時はエスケープキャラが入っていても良いの か?....。考えすぎて時間を浪費した
マニュアルにはこう書いてあるが、
UARTデータフレーム〔体格〕を送るかあるいは受け取る時、特定のデータ値は逃げれ(旗を立てられなけれ)ばなりません、それで、それらはデータフレーム配列を邪魔しません。 (機械翻訳)

(2012/05/13)-02
やっとマニュアルから見つけた、APIリモートコマンドで各ポートデーターを設定すると勘違いしていたけど、X-CTUでデバイス設定する項目をリモートで設定し直す動作でした、仮にテストしたら見事に成功、整理ができたらまたUPしておこう 。

(2012/05/13)-03
早速整理した↓

やれやれ、これで監視ソフトから各デバイスに警告ランプとか警告音や一部の機能のシャットダウンがリモートで可能になった....。
もう一度上記表で、ひつこく
送信DATA 説明
0x7E デミリタ
0x00 Lengs上位
0x00 Lengs下位
0x17 リモートコマンドのAPIフレームタイプ
0x01 フレームID 常に 0x01
0x00000000 送信先64bit上位アドレス XBeeの本体に刻印の
0x00000000 送信先64bit下位アドレス XBeeの本体に刻印の
0x0000 送信先のネットワークアドレス
0x02 設定しろの命令
0x4434 設定するポート番号(ASCIIコードで 44=D 34=4) D4ポート
0x05 セットする値 D Out Hレベル  ←ここD4の設定値が上表の値で変化
0x00 チェックサム

これで、自由にデバイスが操れる。

(2012/05/12)
上記リモートコマンドで変更した値は、覚えないようだ、一度電源を切ると X-CTU で設定した値に戻るみたいだ、一時的な変更なのね。

(2012/05/17)
リモート設定で色々と遊んでいたら、デジタルデーターレスポンスの内容が分かった、結局この部分もマスクになっていてポートが”H”になると
データーフレーム最初の2バイトの内容は 例→ ”0x0001” は2進でも ”0000 0001”で”1”が立っているポートは最下位なので”D0”ポートが
H”になっている、極端にリモートで P1P2(D11とD12)ポートをデジタル出力”High”に設定してみたらデジタルマスクのレスポンスは ”0x1811
これは ”1100000010001”で D0,D4,P1,P2DIOに設定されていることに、因みに全部Hレベルにしたら、デジタルデーターのレスポンスも同じく”0x1811” になった、” 1100000010001 ”← ”1”が立っているポートが”H”レベルに....4月29日の疑問が晴れた

今使っているHSPで仮作成したアプリは、リモート設定もボタンで出来るし、設定してすぐにAPIフレームが全部見えるので解りやすい、
ボタンやコンボボックスなどを綺麗に再配置すれば監視ソフトが完成するのだがセンスがない。

(2012/05/24)
ほぼ実験も終わったので、U FLアンテナのXBeeエンドデバイスを、サイクルスリープモードにして車のソーラーシステムに組み込んだ
今は車から降ろしてソーラーパネルなども接続しないで稼働させている、バッテリーの電圧と周囲温度を定期的に報告している。

妊婦の猫ちゃんが覗きにきた、


このケースの中に12VのバッテリーやUSB用の5V電源、また夜間出力機能などをいれている、このケースは見る人がみれば解ると思うが、赤色の”アルゴ号”のマークが右の画像に有る、これは一日遅れで日本初のパーソナルコンピューターという栄誉を逃した、シャープ”MZ-80”のインターフェースボックスの名残だ。

次は暴風や灼熱に耐える筐体を考えて、屋外ルーターを設置するぞー。

(2012/05/24)-2
モビルソーラーを載せた車を定位置の駐車場に移動した、まだルーターは地べたでテスト中なので電波が受信できるか不安だったが、車のボデー
も、ものともせず電波は届いている、とりあえずは成功!

(2012/05/26)
大気圧センサーの出力を作動アンプで10倍にしてオフセット調整するボート゛を作成してXBeeのADCに接続した、うまくいっているように思えたが
表示データーが周期的にコロコロ変わるのは、なぜだ?......、温度の表示は安定しているのに

(2012/05/27)
温度センサは3.3Vから気圧センサは5V電源から取っているがオシロで見たら5V電源はノイズで酷かった、とりあえず1000μFを取り付けたら安定。
ADCに接続する場合ノイズに気を付ける。

車のソーラーシステムは順調に作動している、XBeeでモニターするまでは多少不安だったが大丈夫なようだ、車中に10インチのアンドロイド
タブレットとブルーツゥースSP及びUQ WiMAXルーターを作動させながらでも日中は充電している、       
                                                                                                             これが駐車場の車のモニタ

                 気圧センサも安定している                                                                                ↓

 

(2012/05/30)
ソーラーパワー自体は晴れ or 薄曇り程度なら日中すぐに満充電されるので問題無、しかしここ数日アナログ気圧センサで手こずっている、
OPアンプで 定電流回路+作動増幅10倍+オフセットADj 回路を基板に乗せたが温度ドリフトに悩ませられている、風速計のパルスカウントも
XBeeのみではままならず、困ったもんだ、

しかし XBee に関しては総集編のようなページを作成中、これが出来たらこのページは削除だな。

(2012/06/01)
近頃晴れの日が続き車内温度は40度を超えているが、真夏の車内で”ミツバチ”ちゃんは大丈夫だろうか?ひと夏の経験をさせてみる
気圧センサも朝方と日中で気温差が10度以上もある、相変わらず温度ドリフトがすごい、嫌になって今日から”I2C”の気圧センサを実験中だが
結局は”Arduino”の出番になってしまった。

(2012/06/02)
エンドデバイス1を、試しに”ATコマンドモード”にしてみたが、コーディネーターが受け取るレスポンスやセンサー類のデーター、及びコーディネーターからのリモートコマンド送信など、全くなんの変化もなしに動いている??、XBeeのネットワーク内にAPIモードとATコマンドモードのデバイスが混在してもなんら問題ないのか?。不思議だ

(2012/06/02)-2
風速センサのパルスカウントとI2Cでの温度気圧センサの値を Arduino経由で取り出すことができた、こうなると屋外ルーターはXBee+Arduinoで構成し直すしかないみたい、”スイッチサイエンス”さんで販売している”
Arduino Fio”が第一候補に挙がったが....又使い方で又一苦労しそうだ、

要望みたいですが”スイッチサイエンス”さんも、販売だけでなく、使用法の例とかちょっとしたアドバイス的な情報ページを作成してくれたら、もっと
もっと”買ってみようか”という初心者も増えるのではないかと思いますが、”はんだ付けカフェ”でのイベントをやっているので、無理かな?しかし首都圏の人は良いけど、私のような地方住まいでは、イベントにも出向けない、パーツを買っても理解出来ず、何年もお蔵入りになるのが多い現状だ。

(2012/06/04)
Arduino Fio 注文しちゃった、で後でよくよく調べたら普通のArduinoのようには”簡単にはいかないわよ!”らしい、あっちゃっ!またっ泥沼?
せっかくArduinoで苦労してI2Cデバイスから温度と気圧を、3風杯式の風速センサから風速を全部一度に取得できるようにスケッチを考えて
今試運転中なのに!

合間をみてXBee 総集編みたいなページを作成中だが、実験やプログラミング、日曜大工などに忙しいので直ぐには完成しないので
執筆中だがサーバーに置いてみた → < XBee Pro S2B 自己総集編 > 一応初期の目的は果たせたし、車のソーラー情報は完ぺきに送信している

(2012/06/06)
注文していた Arduino Fio がポストに入っていた、今日から Arduino Fio で泥沼か?、奮闘記はしばらく更新していない ニュートンボーイ に置くつもり、昨日1日かけて I2C の MPL115A2 気圧センサモジュールに内臓されている温度センサの特性解析をした、このモジュールのマニュアルには
温度センサは気圧の校正に使うので、温度データーに関する情報が無い、せっかく一緒に内臓されているんだから使わない手はない、

四苦八苦したかいが有って温度のADC値は逆特製で値が上がれば温度は低いと解った、一次関数で温度校正する値を調べた、これで
Arduino と 風速センサ+ MPL115A2 気圧センサモジュール で 温度、気圧、風速が同時に計測可能になった、精度は良くないがまま合っている、

さ、Fio をいじろう。

(2012/06/09)
Ardoino Fio と XBee の連携は難しく考えてファンネルのユーティリティなどで道草を食ったけど、ファンネルユーティリティは必要なかった、
ちょいと悩んだが結構簡単に設定できた、もったいないので 屋外設置ルーターはArdoino Fio と XBee で 中継ルーター謙、ウエザー情報収集機
に変更する。(XBee を Ardoino Fio 用に設定する情報は”ニュートンボーイに置いた”)

★ APIフレームに現れたArdoino Fio と XBeeの解説入り画像

(2012/06/10)
APIフレームを他の部屋でモニターするのに、コーディネーターを接続しているPCに Cor i7 マシンもいらないし消費電力も大きいので
拾ってきた古いノートPC(モニタなし)に Win2000 Server をインストールして、コーディネーター専用マシンにした、XBee もPCに固定した
コンピューター付き XBeeコーディネータが出来上がり、モニターはネット経由でどこからでもできるし、サーバーだからリモートも簡単だから
液晶モニターもいらない、これで電源入れっぱなしにできる。
 


バッテリー監視ポテンショと湿度センサを組み込んで中継ルーターとして機能しているArduino Fio
親機コーディネーターと接続したら左側のLEDが点灯する、右の赤色LEDはXBeeの電源が入った印。

2000mAのLi-ionバッテリ1個だけでも2日くらいは大丈夫なようだ、充電端子がオンボードは良いですね。

(2012/06/18)
ここ数日自動充電プログラムの出来栄えを監視してきましたが、眠らない XBee は腹が減るのか結構大飯食いだと解った、ルーターはお役目がら
眠ることを許されていませんから、無制限にエネルギーを供給できる”AC”電源以外では大いに注意が必要、2000mAHもある食器を持っていても
24時間で2回ほど予備バッテリーから勝手に食って(充電を) います、

眠らせることができるエンドデバイスをバッテリー駆動するのなら、可能な限り眠らせて起きている時間を短縮する設定が必要、
サイクルモードでは
1・起きている時間の設定はX-CTUで”Sleep Modes”の ST値を 1ms〜約1分 に設定できる
2・眠っている時間は同じく SP値を 320ms〜28秒 まで設定できる

車載のエンドデバイスは最大の28秒眠らせて、10秒だけ起きるようにした、

スリープピンで直接の制御も可能みたい。
 

工作室に戻る