目次
Digi International社のXBeeがとても扱いやすい(流通・価格・情報)、便利な無線モジュールです。 しかし、UARTの通信レートがなんだかおかしいとのことだったので、調べてみました。
実験としては、正確さに若干問題がありますが、参考程度にお願いします。
XBeeは、802.15.4対応版とMeshNet用のSeries 2の2種類があります。 本実験では、802.15.4の通常版と電波強度が強いPro版、Seriese 2の通常版の3種類を実験しています。 802.15.4版とSeriese 2を明確に分けるために、シリーズ1 と シリーズ1 Pro、シリーズ2の3種類の名前で記述していますのでご注意ください。
本実験は、通信レートの誤差(エラーレート)を求め、使用する上での参考になればと考えています。 詳細は、下記の実験結果をご参照ください。
シリーズ1は、57600 baud と 115200 baud を通常使用するには、誤差が大きいため注意が必要である。
このことから、シリーズ2のUARTは、高速でも十分に使用できる誤差範囲である。
ターミナル経由で、非標準通信レートが設定できることから、設定可能な通信レートを少し調べてみました。
non-standardの通信レートは、誤差が少ないためマイコンによっては、選択肢として良いと思われる。
また、115200baudを非標準通信レートで設定しても、111111baudになるので注意。(データシートには書かれていない。)
通信速度 [baud] | 誤差 [%] |
---|---|
1200 | 0.08 |
2400 | 0.08 |
4800 | 0.16 |
9600 | 0.03 |
19.2k | 0.01 |
38.4k | 0.16 |
57.6k | 2.18 |
115.2k | 3.55 |
通信速度 [baud] | 誤差 [%] |
---|---|
1200 | 0.04 |
2400 | 0.08 |
4800 | 0.16 |
9600 | 0.16 |
19.2k | 0.16 |
38.4k | 0.16 |
57.6k | 2.12 |
115.2k | 3.55 |
125k | 0.01 |
200k | 0.02 |
250k | 0.07 |
通信速度 [baud] | 誤差 [%] |
---|---|
1200 | 0.04 |
2400 | 0.08 |
4800 | 0.03 |
9600 | 0.03 |
19.2k | 0.03 |
38.4k | 0.03 |
57.6k | 0.12 |
115.2k | 0.14 |
通信実験の結果を、オシロスコープのスクリーンショットとともに掲載します。
111111 baud になることはデータシートに注記されています。(教えてくださった皆さんありがとうございます。)
111111 baud になることはデータシートに注記されています。(教えてくださった皆さんありがとうございます。)
設定方法として、Digi社から提供されているX-CTUを使用している人が多いと思います。 non-standard 通信レートを設定するには、Terminalを使用する必要があります。
Terminalを開いていただいて次のように打つと出来ます。()の中は、XBeeから送られてくる情報です。
+++(OK) ATBD 0x1E848(OK) ATWR(OK) ATCN(OK)
この時点で転送速度が変わるので注意。(ATWRは無くても大丈夫です。詳細は後述参照)
+++(OK) ATBD 0x1E848(OK) ATWR(OK) ATCN(OK)
この時点で転送速度が変わるので注意。125000にX-CTUの速度を変えないと通信ができなくなる。
+++(OK) ATBD 0x30D40(OK) ATWR(OK) ATCN(OK)
この時点で転送速度が変わるので注意。200000にX-CTUの速度を変えないと通信ができなくなる。
+++(OK) ATBD 0x3D090(OK) ATWR(OK) ATCN(OK)
この時点で転送速度が変わるので注意。250000にX-CTUの速度を変えないと通信ができなくなる。
通信速度設定に使用しているATコマンドは、次のようになっています。
上の設定では、ATWRを実行していますが、実験するだけならATWRを飛ばし、ATCNすると設定が変更されます。 ただし、電源を切ると前の設定に戻りますので注意してください。
通信レートの誤差は、オシロスコープの誤差もあるため、0.2%以下の誤差はほぼ無いと考えられます。
誤差の計算は、オシロスコープの設定が10kpointで計測していることや、タイムスケールが適切でないため、正確ではないのが残念です。
115200baudと書くより、115200bpsと書く方が検索には引っかかり良いようです。 こだわりとしてUARTは、変調速度のため115200bpsと書くより1秒間の変調回数115200baudと書いています。 bpsは1秒間の通信ビット数で、baudは1秒間の変調回数の単位となります。
役立つかわかりませんが、実験したので公開しておきます。気になる点があれば、ご意見をいただければと思います。