XBeeモジュールの使い方(MicroPython Terminalで使用可能なモジュール)


 今回はMicroPython Terminalで使用可能なモジュールについて解説します。

 MicroPythonで利用可能なビルトインモジュールは、基本的に全ファームウェアで共通です。ただし、一部の機能やI/Oポートへのアクセスは、ファームウェアの設定やスリープモードによって制限される場合があるため、動作に差が出ることがあります。

 XBee3でMicroPython Terminalにhelp(‘modules’)入力すれば、以下の図のように組み込みモジュール一覧を確認することができます。

 XBee3 の MicroPython Terminal(REPL)で `help(‘modules’)` を使っても、実際には全ての内蔵モジュールが表示されないことがあります。これは、XBee3 の MicroPython 実装が制限された MicroPython 環境であるためです。例えばtimeモジュールは、ファームウェアに組み込まれている標準モジュールは、help(‘modules’)では表示されません。

 以下にMicroPython Terminal(REPL)で利用可能なモジュール一覧を示します。

モジュール名機能備考
xbeeXBee専用の通信/制御Zigbee/DigiMeshでの送信、スリープ制御など
machineピン、ADC、I2Cなどの制御ピンマップはXBee3に最適化済み
utime軽量なタイマー・スリープ制御ticks系やsleep\_msなど高精度ウェイト対応
timeRTC対応の時間処理localtime, time(), sleepなど
gcガベージコレクション制御メモリ解放等(手動管理も可)
sysシステム情報ファームウェアバージョンなど取得可
osファイルシステム操作ファイル保存、一覧取得など(A: 仮想ストレージ)
ubinasciibase64, hex 変換などZigbeeのデータ処理で有用
ujsonJSONの読み書きセンサデータの構造化などに便利
ustructバイナリ構造体処理ADC値・センサデータ送信に重要
errnoエラー番号定数I/Oや通信エラー処理で利用可能
hashlibSHA-1/MD5など(限定的)軽量暗号用途に限定(やや古い)
ubinasciiバイナリ⇄ASCII変換16進表現、base64処理など

以下に特に重要なモジュールを用途別に示します。

目的モジュール用途例
ZigbeeやDigiMesh送受信xbeexbee.transmit()、 xbee.receive()
センサやGPIO制御machinePin`, `ADC`, `I2C`
時間制御(精密)utimeticks_ms()`、`sleep_ms()`
現在時刻・RTC制御time`time.localtime()` 
JSONデータ構造化ujsonセンサデータの辞書構造化
バイナリ構造体ustruct`pack()`/`unpack()`で通信整形
ファイル保存osopen()`, `listdir()` など

 モジュール動作がファームウェアによる影響を受ける場合を説明します。例えばxbee.receive()の動作はファームウェアによるプロトコルの違い(Zigbee/DigiMesh/802.15.4)を考慮する必要があります。また、スリープ関連ではSM`モードによりxbee.sleep_now()やMicroPythonの動作継続が変化します。I2CやADCの使用に関してはピン設定の違いやファームウェアに依存するピン機能マッピングによる差異に注意が必要です、                      |