niccollive

作れるものはなんでも作ります

View the Project on GitHub niccolli/log

nRF52840でIKEA TRÅDFRIを制御する

nRF52840は、NordicのSDKを使うとZigbeeも扱うことができます。nRF52840を使った無線モジュールとSDK内のCLIデモアプリを組み合わせることで、IKEA TRÅDFRIを制御できるようになりました。

とりあえず制御できるようにするには

nRF52840の準備

nRF52840モジュールは、スイッチサイエンスで販売しているMS88SF2を使いました。写真のように、J-LINKが出す5Vを直結すると、モジュール内部で適宜降圧するのでとても便利です。

  1. nrf5sdkforthreadv41/components/boards/pca10056.h のUART入出力ピンを、モジュールで利用できるピンに変更する。どれを使うのかよくわからなかったので、UARTは全部同じピン番号に変更しました。
  2. J-LINKとMS88SF2を適切に接続する。UARTは前項で設定したピンに合わせます。
  3. nrf5sdkforthreadv41/examples/zigbee/experimental/cli/cli_agent_router/pca10056/blank/ses/zigbee_cli_agent_router_pca10056.emProject を、SEGGER Embedded Studioで開く。
  4. UARTのピン番号が変更になっているので、再度ビルドしてMS88SF2に書き込む。
  5. シリアルコンソールで > が表示されており、エンターキーでCLIが動くことを確認する。

TRÅDFRIを制御する

今のところ下記の手順で制御できるようになりました。手間がかかるので、もっと簡単なやり方はあるのかもしれません。

  1. Nordicのドキュメント内、Using CLI to control lighting devicesに従って、match_descまでコマンドを入力する。
  2. match_desc実行中に、TRÅDFRIの電球側を初期化する
  3. タイミングが合うとsrc_addrが出力される。この値を使ってieee_addrのコマンドを実行する。
  4. 16桁の文字列を使ってドキュメント内の「Interacting with clusters」のコマンドを実行すると、それぞれ対応した動作をさせることができます。

おわりに