Arduino MKR WiFi 1010とENVシールドで環境データをIoT Cloudに可視化
必要な部品と材料
- Arduino MKR WiFi 1010 × 1
- Arduino MKR ENV Shield × 1
- バッテリーパック(または他の電源手段)
使用するサービス
- Arduino IoT Cloud
プロジェクトの概要
このプロジェクトでは、MKR ENV Shield搭載の各種センサからデータを読み取り、Arduino Cloudのウィジェットで可視化する方法を学びます。
必要なもの
- Arduino MKR WiFi 1010: SAMD21マイコンとNINA-W10モジュール(WiFi/BLE対応)を搭載し、演算と通信を担当。
- バッテリーパック: MKR WiFi 1010に接続し、外部電源がない場合の駆動用。
- MKR ENV Shield: 温度、湿度、気圧、照度、UVを測定する環境センサを搭載したMKR用シールド。
- WiFi認証情報: ネットワーク接続用のSSIDとパスワード。
ハードウェア構成はシンプル:MKR WiFi 1010にENV Shieldを重ね、バッテリーパックを接続するだけです。



コード構造
コードには主に2つの部分があります:
- Arduino IoT Cloud APIが自動生成するスケルトンテンプレート(MKR WiFiボードから受信したデータを表示)
Arduino_MKRENVライブラリ(ENV Shieldの全センサ値を読み取り)
IoT CloudのThingには、MKR WiFi 1010が取得する6つの測定値を格納するプロパティを設定します。スケッチはIoT Cloudが自動生成し、インターネット接続とThingとボード間のデータ転送を処理します。ここにArduino_MKRENVライブラリを追加してセンサ管理を行います。
スケッチの詳細
ライブラリのインクルード
#include "thingProperties.h"
#include
thingProperties.h: WiFi接続機能とクラウド接続管理を含む。ユーザーが入力するのはWiFi認証情報(SSIDとPASSWORD)のみ。- Arduino IoT Cloudは、デバイスセットアップ時にボードの暗号チップに格納されるキーでデバイスを認証し、安全なチャネルでデータを送信。
Arduino_MKRENVライブラリ: ENV Shield全センサの読み取りに必要な機能を提供。
setup()
void setup() {
Serial.begin(9600);
delay(1500); // シリアルモニタ待ち
initProperties(); // thingProperties.hで定義
ArduinoCloud.begin(ArduinoIoTPreferredConnection);
setDebugMessageLevel(2); // デバッグレベル(0=エラーのみ、最大4)
ArduinoCloud.printDebugInfo();
if (!ENV.begin()) {
Serial.println("Failed to initialize MKR ENV shield!");
while(1);
}
}
loop()
void loop() {
ArduinoCloud.update();
humidity = int(ENV.readHumidity());
lux = int(ENV.readIlluminance());
pressure = int(ENV.readPressure());
temperature = int(ENV.readTemperature());
uva = int(ENV.readUVA());
uvb = int(ENV.readUVB());
uvi = int(ENV.readUVIndex());
delay(1000);
}
各センサ値を読み取り、プロパティ変数を更新。ArduinoCloud.update()でクラウドと同期します。
セットアップと使用方法
- 全パーツを接続し、MKR WiFi 1010をPCにつないでArduino Cloudアカウントにログイン。
- Arduino Cloud Getting Startedの手順に従い、以下のプロパティを作成(大文字小文字区別あり)。



- 全プロパティ作成後、「edit code」ボタンをクリックし、Arduino Create Web Editorでメインスケッチを以下のコードに置き換え。
/* Sketch generated by the Arduino IoT Cloud Thing "env_shield"
https://create.arduino.cc/cloud/things/829941ed-efdd-4572-91c0-e93a732192ec
Arduino IoT Cloud Properties description
The following variables are automatically generated and updated when changes are made to the Thing properties
int humidity;
int lux;
int pressure;
int temperature;
int uva;
int uvb;
int uvi;
Properties which are marked as READ/WRITE in the Cloud Thing will also have functions which are called when their values are changed from the Dashboard.
These functions are generated with the Thing and added at the end of this sketch.
*/
#include "thingProperties.h"
#include
void setup() {
Serial.begin(9600);
delay(1500);
initProperties();
ArduinoCloud.begin(ArduinoIoTPreferredConnection);
setDebugMessageLevel(4);
ArduinoCloud.printDebugInfo();
if (!ENV.begin()) {
Serial.println("Failed to initialize MKR ENV shield!");
while(1);
}
}
void loop() {
ArduinoCloud.update();
humidity = int(ENV.readHumidity());
lux = int(ENV.readIlluminance());
pressure = int(ENV.readPressure());
temperature = int(ENV.readTemperature());
uva = int(ENV.readUVA());
uvb = int(ENV.readUVB());
uvi = int(ENV.readUVIndex());
delay(1000);
}
void onHumidityChange() { }
void onLuxChange() { }
void onPressureChange() { }
void onTemperatureChange() { }
void onUvaChange() { }
void onUvbChange() { }
void onUviChange() { }
- スケッチをボードにアップロード。接続確立後、MKR ENV Shieldの値がクラウドのプロパティと同期され、作成したThingのダッシュボードに表示されます。

Arduino Team
製造プロセス
- クラウド×IoTの力を解き放つ:シームレスな接続とデータインサイトの実現
- クラウドインフラを最適化し、ピークパフォーマンスと効率を実現する
- MATLABでライブIoTデータを活用:RTI Connext DDS連携
- クラウドの誤解 #3: クラウドは無責任なビジネス選択ではない
- IXrouter:産業用IoTのためのシームレスなエッジツークラウド接続
- IoTとクラウドコンピューティングが形作るエンタープライズデータの未来
- 製造現場はIoT導入の準備ができているか? 実践ガイド
- IoTデータをビジネス価値に変える:実践ガイド
- IoTデータを活用した製造エクセレンスの実現
- クラウド・コンピューティングがIoT展開を強化する3つの強力な方法
- IoT投資がクラウド支出を超える見込み、新調査で判明