こちらの記事について、内容・翻訳・視点・長さなど、皆様のご意見をお送りください。今後の記事製作の参考にしたいと思います。
Thank you! Your feedback has been received.
There was a problem submitting your feedback, please try again later.
こちらの記事の感想をお聞かせください。
プロトタイピングに最適・様々な無線規格に対応・機能豊富なプラットフォームLoPy
PycomのLoPyは、LoRaWANやWiFi、さらにBluetoothにまで対応する小型のモジュールで、プロトタイピングにも使いやすいDIP形状のボードとなっています。それでは十分と言えないかのごとく、ボードには最近人気のEspressif ESP32 SoCが搭載され、512KBのRAM、4MBのフラッシュメモリ、RTC、そして多くのGPIOが利用でき、12bitのADコンバータも8つ備えています。アプリケーション開発には、MicroPythonが対応しています。
I/Oに注目
- 2 x UART、2 x SPI、I2C、I2S、マイクロSDカードインタフェース
- アナログチャンネル: 8 × 12 bit ADコンバータ
- タイマ: 4 × 16 bit (PWM およびインプットキャプチャ対応)
- すべてのペリフェラルに対応のDMA
- GPIO: 最大24
GPIOが足りないということはありませんし、センサアプリケーションで人気ということが証明しているように、8つのアナログ入力を備えているため、外部ADコンバータも必要ありません。ただ、仮にさらに多くの、もしくは高い分解能を持ったアナログ入力が必要な場合でも、I2CとSPIを備えているので、これを使ってデジタルセンサのような他のペリフェラルと同様に、外部ADコンバータを接続できます。
GPIOの中の8つはタッチ入力として構成することもでき、DAC出力できるピンが2つ、PWM対応のGPIOピンが18もあります。LoPyは、そのためセンサアプリケーションだけではなく、モーションコントロールや様々な創作目的、幅広い無線対応によって組み込みアプリケーションにも活用可能です。
超低消費電力コプロセッサにより、LoPyはディープスリープ状態の25uA以下の低電力で、ADコンバータを含めGPIOをモニタリングすることができます。
プロトタイピング向けにモジュールははんだ付けいらずでブレッドボードに取り付けられるようになっています。ただ、低価格のユニバーサル拡張ボードを使えばさらに便利で、USBやLiPoバッテリを通して給電可能であり、USBシリアル変換機能やマイクロSDスロット、ヘッダなどの機能を備えています。
LoRaWAN・WiFi・Bluetooth
- LoRaWAN クラス A および C
- 802.11b/g/n 16Mbps
- Bluetooth Low Energy および Classic
LoPyは唯一のMicroPythonが利用可能なトリプルベアラモジュールであるとしており、LoRaWANやWiFi、そしてBluetooth(LEおよびClassic)のサポートにより、1つをメインにもう1つを予備目的にといったように、様々な可能性を持った接続方法が考えられます。
無線通信範囲と消費電力
規格 |
通信範囲 |
消費電力 |
LoRaWAN |
40km |
アクティブ時:15mA スタンバイ時:1uA |
WiFi |
1km |
アクティブ時:12mA スタンバイ時:5uA |
Bluetooth |
情報なし |
情報なし |
LoPyは、LoRaWANのナノ・ゲートウェイとして構成することも可能で最大で22kmの範囲や100ノードとの通信に対応します。遥かに高価なフル機能のLoRaWANゲートウェイは数千台のノードと接続可能ですが、これがオーバースペックだというような場合に適しているといえます。LoPyは、ローカルでの処理をしながらWiFiを使ってバックホールに接続することも可能です。
ファームウェアアップデート
どんなプラットフォームにも言えることですが、まずは最新のファームウェアにアップデートすることから始めるのが良いです。Pycomでは、LoPyを最新の状態にするよう、ウェブサイトで強く勧めています。WindowsやMac OS X、Linux向けに手順書(英語)を公開しています。Linuxでは、依存関係の都合でまずは、dialogを先にインストールする必要があります。
$ sudo apt-get install dialog
$ tar xvf pycom_update_1.1.1.b1.tar.gz
ダウンロードしたアーカイブを解凍し、アップデートを実行します。
アップデートユーティリティに詳しくどのように拡張ボードのピンをジャンパで接続することで、LoPyをファームウェアアップデートモードにするか説明されています。
デバイスタイプを選択することでアップデートは完了です。シンプルですね。
PymakrでPythonを使う
Pycomのプラットフォームでは、公式の開発環境としてPymakr IDEがMicroPythonに付属しています。Ubuntuでは、次のように適切なパッケージをダウンロードするだけなのでシンプルです。
$ sudo dpkg -i pymakr_1.0.0.b8-1_all.deb
$ sudo apt-get -f install
更なる詳細やWindowsやOS Xへのインストール方法は、ウェブサイトをご覧ください。
MicroPythonは、プログラミング言語Python 3の軽量で効率的な実装であり、Pythonのスタンダードライブラリの小さなサブセットを備え、マイクロコントローラや制約の多い環境で動作させることに最適化していると説明しています。たくさんのライブラリによって、センサや様々なペリフェラルを扱うラピッドプロトタイピングに大変適した言語となっており、Pythonが選ばれたのも納得できます。
Pymakr IDEとクイックスタートガイド(英語)を使って、ボード上のLEDを緑、黄色、赤に周期的に変化させるプログラムをUSBシリアルによって接続し、アップロードする、といった簡単なサンプルを試すのに時間はかかりません。LoPyとPymakrを使うと素晴らしいことは、WiFi接続を通して、アプリケーションをボードにアップロードできるところです。
The Things Networkへの接続テスト
もちろん、この小さなボードの機能の中で一番気になっているのはおそらくLoRaWANのサポートではないでしょうか。これをテストするのにいい方法として、オーバー・ザ・エアー・アクティベーション(OTAA)を使って、The Things Network (TTN)に接続し、アップリンクしてみます。
公式のドキュメンテーションに、たまたまTTNを使うためのモジュールの設定が載っていました。
LoPyのドキュメントなどで書かれているのでここに書く必要はないかもしれませんが、利用前に適切なアンテナをモジュールのリセットボタン隣のU.FLコネクタに接続してください。接続しないと、LoRaの無線機能を壊してしまう危険性があります。
オプションのPycase(ケース)は、モジュールや拡張ボードを保護するだけではなく、アンテナを固定するためのSMAコネクタのマウントがついています。
このノードをTTNに追加するため、まず工場設定のデバイスEUIを確認する必要がありますが、 REPL (インタプリタプロンプト)で数行Pythonを記述するだけとシンプルです。TTN コンソールを通して、テストアプリケーション用にLoPyを登録します。
デバイスを登録したlopy_testingアプリケーションのアプリケーションEUIとApp Keyを使って、Pythonのアプリケーションの設定を行います。
ここで行ったのは、OTAAを行い、TTNのドキュメンテーションのサンプルを送信するもので、示したのはこれらを1つにした非常にシンプルなスクリプトです。
LoPyにこれを同期して、デバイスにリセットをかけたら、LoPyがネットワークに参加して、データを送信していることを、TTNコンソールを通して確認できると思います。
ファーストインプレッション
LoPyモジュールのハンズオンをいつかしてみようとずっとTo Doリストにあったのですが、ついにこれを行うことができ、そして結果的に満足できるものだったといえます。今回は明らかに表面をさらっただけで、実際のテストとしては現実のアプリケーションで1つかさらに多くのモジュールを使って何かを作ってみるべきですが、少なくとも今のところ大変驚きました。この小さなサイズにたくさんの素晴らしい機能が詰め込まれているだけでなく、ドキュメンテーションやユーザエクスペリエンスもそれなりに洗練されています。
ドキュメンテーションに関していえば、PycomがLoRaWANのものを含むいくつかのLoPyチュートリアルを出しています。また、LoRaWANゲートウェイやインターネットアクセスが必要ないなら、もっとシンプルな2つのLoPy間でのポイント・ツー・ポイント通信で使われる生のLoRa MACを使うサンプルもあります。Pycomモジュール全体に適用可能なチュートリアルもあり、HTTPSやMQTT、ADC、I2C、スレッディング、タイマーなどといった機能に対応しています。