M5Stack編に引き続きデバイスをArduino MKR WIFI 1010にしてみました。
IoT Centralアプリケーションは変更なしです。デバイステンプレートも変更の必要はありませんでした。
IoT Centralアプリケーションの作成方法はこちらを参照してください。
デバイス用のサンプルプログラムは、Arduino公式サイトからこのレポジトリへリンクされてるのですが、試してみたけどなんか動かなかったのとCo2センサー(SCD30)を使いたかったので参考にしつつちょっと書き換えてみました。元のサンプルではDeviceTwin、DirectMethod、C2DMessageなども実装されていますが、今回のプログラムではD2CMessageだけになっています。あとMKR WIFI 1010専用です。
レポジトリがPublicだったのでユーザーさんかなと思ったら、プロフィール見てみるとIoT Centralの主任エンジニアさんでした。中の人が作ってたんだ・・・
#使用するデバイス
さて、MKR WIFI 1010ですが今年8月から国内で販売が開始されました。MKRシリーズの基板にWIFI-BTチップが搭載されています。チップメーカーはublox社なのですがどうなら中身はESP32のようです。チップはSPI接続となっています。Wifiチップが新しくなったのでライブラリも従来の物から変更になっています。
#インストールするライブラリ
・WiFiNINA
・ArduinoMqttClient
・RTCZero
・SCD30 ここからダウンロードしてインストール
#準備
ArduinoIDEは最新にしてください。現時点での最新版は1.8.16です。
サンプルプログラムを実行する前にWifiモジュールのファームウェアのアップデートとSSL Root証明書の登録が必要になります。
デバイスがMQTTプロトコルを使う場合には、TSL/SSL経由で接続する必要があります。その際Root証明書を参照しますが、MKR WIFI 1010ではFirmware Updaterを使ってWifiモジュール内に登録することができます。
ArduinoIDEを立ち上げて、ライブラリのインストールが完了したらツールメニューの「WiFi101/WiFiNINA Firmware Updater」をクリックします。
Updaterウィンドウが開いたら、右上の「Open Updater Sketch」ボタンをクリックします。Updaterスケッチが開きますのでそのままデバイスに書き込んでください。
スケッチが書き込めたら一番新しいファームウェア(現時点での最新は1.4.8)を選択してから「Update Firmware」ボタンをクリックします。
次は「Add domain」ボタンをクリックします。
ダイアログが開きますので、「microsoft.com:443」と入力し、OKボタンをクリックします。
リストに先ほど入力したドメインが表示されているのを確認してから、「Upload Certificates to WiFi module」ボタンをクリックして証明書を登録します。
以上で準備が完了しました。
#プログラム
こちらからプロジェクトをダウンロードして、適当な場所に展開してください。
IoT Centralアプリケーションで新たにデバイスを使いして、接続情報をメモしておきます。
メインプログラムを開いたら、「arduino_secrets.h」タブに切り替えて無線LAN設定および接続情報を書き込みます。
以上になります。
サンプルを作り始めた当初はMQTT接続がうまくできなかったのですが、証明書の登録方法がわかりそれから接続ができるようになりました。
一つ気になるのは登録した証明書のリストがUpdaterを開きなおした際には反映されないところです。
リストには上がっていなくてもちゃんと記録されているようなので今のところ問題はなさそうです。
登録できる証明書数は10件ほどということなので、確認のためにもいつか修正されるといいのですが。