Arduino MKR1000 OTAプログラミング – 音声制御付き
部品と材料
| 部品 | 数量 | 備考 |
|---|---|---|
| Arduino MKR1000 | 1 | 全OTAプロジェクトで必須。以下はユースケース(室温調節器)用 |
| DHT11 温湿度センサー (4ピン) | 1 | |
| リレー (汎用) | 1 | |
| ブレッドボード (汎用) | 1 |
アプリとオンラインサービス
- Arduino IDE
- Microsoft Azure IoT Hub
- Microsoft Visual Studio 2015 (UWP開発用)
- Microsoft Project Oxford (音声認識API)
プロジェクト概要
このプロジェクトは2部構成です。
パート1: 再利用可能なコンポーネント群
以下の便利な機能を活用したさまざまなIoTプロジェクト構築のためのフレームワークとして機能します:
- Arduino MKR1000のOver-the-Air (OTA) プログラミング(コンパイル済みバイナリのアップロード)。複数の方法に対応:LAN内から、インターネット経由でセキュアに、Microsoft Azure IoT Hub経由で。
- 洗練されたUIを持つUniversal Windows Platform (UWP) クライアントアプリ。Azure IoT Hub経由でボードとセキュアに通信。
- 音声認識(クライアントアプリ上で)、Microsoft Project OxfordのSpeech Recognition APIを使用。音声コマンドでAzure IoT Hub経由でボードを制御。
パート2: ユースケース/サンプル – スマホで操作する室温調節器
上記コンポーネントの活用例として室温調節器を開発しました。なんと実際にオフィスに設置し、執筆時点ではこのプロジェクトでオフィスの暖房を制御しています。
OTAの仕組み
以下のコンポーネントを開発しました:
Arduino IDE用
- ランタイムライブラリ:ファームウェアのアップロードとコピー処理を担当
- カスタム「boards」パッケージ:ライブラリに必要なリンカー関連設定を含む
- Arduino IDEプラグイン:ダウンロード信号とコンパイル済みバイナリスケッチ(ファームウェア)を送信。ボード、Azure IoT Hub、IoTディスパッチャーサーバーアプリと通信
サードパーティサーバー(Microsoft Azure Web Sitesなど)にインストール
- IoT Dispatcher:ファームウェアを格納・配信するPHP + MySQLアプリケーション
UWPアプリの仕組み
- C#で書かれたUWPクライアントアプリ。Azure IoT Hub経由でボードと通信し、Microsoft Project Oxfordで音声コマンドを認識。様々なプロジェクトの出発点として利用可能
OTAデモ
パート2: ユースケース – 室温調節器
前述の通り、コンポーネントの組み合わせで実用的なプロジェクトを構築する方法を示すために室温調節器を開発しました。実際に運用投入し、オフィスの暖房を制御しています。
ロジックはシンプル:
- 温度が設定値を下回る → リレー(暖房)ON
- 温度が設定値を上回る → リレー/暖房 OFF
- UWPクライアント:ステータス表示、設定温度の変更(テキストボックスまたは音声)
1. ハードウェアの製作
Fritzing図は提供しません。Beta版MKR1000を使用しているため、ピン配置が将来変更される可能性があるためです。
2. OTAとAzure IoT Hub用の開発環境セットアップ
- Arduino IDE 1.6.7以上をインストール
- Arduino SAMD Boardsをインストール:IDEの「ツール」→「ボード: ...」→「ボードマネージャー...」→「Arduino SAMD Boards」選択
- 以下のライブラリを
SKETCHBOOK_DIR/libraries(例:Documents/Arduino/libraries)にダウンロード・解凍:WiFi101, AzureIoT, RTCZero
さらに独自コンポーネント:
- OTA ランタイムライブラリを同上のlibrariesフォルダに
- カスタム「boards」パッケージ。
SKETCHBOOK_DIR/hardware/flower-platformディレクトリを作成し、ここに解凍 - Arduino IDEプラグイン。
SKETCHBOOK_DIR/toolsディレクトリを作成し、ここに解凍
インターネット/HTTPS経由のセキュアOTA用:
- IoT Dispatcherをダウンロードし、PHP + MySQLサーバーにインストール。Microsoft Azureクラウドへのデプロイ手順も用意
3. OTA動作テスト
OTAアップロードには3つの方法があります。
1) LAN経由OTAを試す
ファイル → スケッチ例 → Arduino-FlowerOTA → WiFiOTA を開く。// CHANGE MEとコメントされた行を適宜修正(IPアドレス、WiFiパラメータ、平文/SSL、サーバー署名)。その後 Flower Platform → Upload OTA... を実行。
以下を使用すること:
WiFiClient client;
および(ポップアップの「サーバー署名」参照):
ota.begin(&udp, &client, "1hvtdliHzKLjMykvfW1MfPwsFthUU/YfjN8fOZJ3Qhc=");
注意: 3つの方法すべてで、最初のアップロードはUSB経由で行う必要があります。その後、好きな方法でOTAを継続できます。
2) セキュアディスパッチャー経由OTAを試す
同じファイルを使用:
以下を使用:
WiFiSSLClient client;
および:
ota.begin(&udp, &client, "my-iot-dispatcher-upload-key"); // IoT Dispatcher(PHP)で設定
3) セキュアディスパッチャー + Azure IoT Hub経由OTAを試す
ファイル → スケッチ例 → Arduino-FlowerOTA → WiFiOTA-AzureIoTHub。同様に// CHANGE ME行を調整。
4) ユースケース/サンプル:室温調節器を試す
こちらで利用可能です。
4. ユーザーインターフェースのテスト (UWPアプリ + Azure IoT Hub + 音声認識)
UWPプロジェクトはこちら。Visual Studio 2015とWindows 10が必要。
Azureアカウントに合わせて接続パラメータを変更:
SendCloudToDevice.cs
class SendCloudToDevice {
// CHANGE ME: 以下の定数を実際の値(Azureポータルから取得)に置き換え
private const string HOST = "???.azure-devices.net";
private const string DEVICE_ID = "???";
private const string DEVICE_KEY = "???";
static string sharedAccessKeyName = "???";
static string sharedAccessKey = "???";
}
ReadDeviceToCloud.cs
class ReadDeviceToCloud {
// 以下の定数を実際の値(Azureポータルから取得)に置き換え
private static string ConnectionString = "???";
private static string eventHubEntity = "???";
}
このコードは様々なプロジェクトのクライアントアプリの出発点として利用できます。プロジェクトに合わせてユーザーインターフェースを調整するだけです。
今後の展開
Arduino MKR1000のような、十分な処理能力とSSL通信機能を持つボードは、メイカーコミュニティにとって大きな前進です。
このプロジェクトで始めた作業を継続し、Flower Platform IoTというオンラインサービスを開発中です。これによりIoTプロジェクトが劇的に加速します:
- 開発:OOPコンポーネントとグラフィカルプログラミング言語(手書きコードと混在可能)の使用
- デプロイ:OTAの活用
Flower Platformを活用し、幼い子供たちがIoTプロジェクトを作り、プログラミングを学ぶための基盤づくりを目指しています。
コード
- ランタイムライブラリ(ファームウェアアップロード/コピー処理、C++):GitHub
- カスタム「boards」パッケージ(リンカー設定、リンカースクリプト):GitHub
- Arduino IDEプラグイン(ボード、ディスパッチャー、IoT Hubと通信、Java):GitHub
- IoT Dispatcher(OTA用ファームウェア格納/配信、PHP + MySQL):GitHub
- 室温調節器ユースケース/サンプル(C++):GitHub
- UWPクライアント(室温調節器用、C#, HTML, JavaScript):GitHub
回路図
Fritzing図は提供しません。Beta版MKR1000を使用しているため、ピン配置が将来変更される可能性があるためです。
製造プロセス
- 予防保全プログラムのコントロールを取り戻す3つの実証済み戦略
- 経口避妊薬:歴史、メリット、リスク、製造
- 自動プール給水・監視システム
- Emerson、AzureホストのZedi Cloud SCADAで持続可能性を強化
- Microsoft認定Azure Administratorになるためのステップバイステップガイド
- Microsoft Azureは賢いキャリアパスか?シェア、給与、認定インサイト
- Microsoft Azureがブロックチェーン・トークン化とデータ管理サービスを発表
- Microsoft Azureチートシート2020 – Azureサービスとアーキテクチャの決定版ガイド
- AzureとPower BIを統合:モダンビジネスのためのステップバイステップガイド
- エッジAIと低消費電力ハードウェアが音声制御の台頭を支える
- Microsoft、5G対応IoTとAIワークロードを強化するAzure Edge Zonesを発表