Windows 10 UWP向けPM2.5/PM10大気質検知アプリの設計
必要な部品と材料
| SDS011 PM2.5 & PM10センサー | ×1 |
| HC-06 Bluetoothモジュール | ×1 |
| ミニブレッドボード | ×1 |
| Lumia 1520またはWindows Phone 10対応デバイス | ×1 |
| ORICO Bluetoothモジュール | ×1 |
| Arduino UNO | ×1 |
| Raspberry Pi 2 Model B | ×1 |
使用するアプリとオンラインサービス
- Microsoft Windows 10 IoT Core
プロジェクト概要
はじめに
大気汚染は世界中の国々が無視できない深刻な課題です。PM2.5とPM10(微小粒子状物質)は人体に健康被害をもたらす主要な汚染物質です。本プロジェクトでは、Windows 10ユニバーサルプラットフォーム(PC用Windows 10、Mobile用Windows 10、Windows 10 IoT Core)で動作するPM2.5/PM10検知システムを構築します。アプリケーションはUWPテンプレートを基盤として開発されます。
まず、SDS011センサーとHC-06 Bluetoothモジュールを組み合わせてリアルタイムデータを取得し、Bluetoothで送信します。次に、Bluetoothモジュールを搭載したWindows 10デバイスでデータを受信し、接続画面に表示します。
前提条件
SDS011はレーザー散乱の原理を用い、0.3〜10ミクロンの浮遊粒子濃度を安定かつ信頼性高く測定できます。Bluetooth通信には低コストで小型のHC-06モジュールを使用します。Surface ProやLumia 1520などの内蔵Bluetooth搭載デバイスなら追加モジュールは不要ですが、Raspberry PiやMBMなどのWindows 10 IoTデバイスではBluetoothドングルが必要です。環境構築については、MVPのDavid Jones氏による「Generic Serial Bluetooth with Win 10 IoT-Core RPI2」を参照してください。
注: Windows 10とVisual Studio 2015が未セットアップの場合、前提条件の完了に2〜3時間かかりますが、その大半は無人作業時間です。
必要なもの
パーツ:
- SDS011 PM2.5 & PM10センサー
- HC-06 Bluetoothモジュール
- オス-オスおよびオス-メスジャンパーワイヤー
- ミニブレッドボード
- Lumia 1520またはWindows Phone 10対応デバイス
- ORICO Bluetoothモジュール
- Arduino Uno R3
- Raspberry Pi 2
プロジェクト手順
ステップ1: HC-06モジュールをSDS011センサーに接続
所要時間: 5分
必要な部品: 5V電源、HC-06、SDS011、ジャンパーワイヤー、ミニブレッドボード
SDS011の元々の出力はTTL-USBで、無線接続には不向きです。そこでHC-06をBluetoothモジュールとしてデータ送信に用います。これはSparkFunのBlueSMiRF Silverよりも安価です。また、5V DC電源で検知器を駆動します。
まずBluetoothモジュールをブレッドボードに差し込み、配線を容易にします。Arduinoの5V電源レールからモジュールのVccピンへジャンパーを接続し(他の5V電源でも可)、モジュールのGNDピンをArduinoの任意のGNDピンに接続します。シリアル通信を確立するため、BluetoothモジュールのTXピンをSDS011のRXピンに、RXピンをSDS011のTXピンにそれぞれ接続します。

ステップ2: BluetoothモジュールとWindows 10デバイスをペアリング
所要時間: 5分
必要な部品: Bluetoothモジュール、Windows 10デバイス、ORICO Bluetoothモジュール(オプション)
BluetoothモジュールはSPP(Serial Protocol over Bluetooth)プロトコルで動作するため、SPP対応デバイスなら接続可能です。Windows 10では仮想COMポートとして認識されます。接続前にモジュールが電源投入済みでペアリング待機状態か確認してください。モジュールの赤色LEDが点滅なら「ペアリング待機」、点灯なら「ペアリング済み」を示します。
Windows 10 PCの場合
「設定」→「デバイス」→「Bluetooth」へ進み、Bluetoothをオンにすると「HC-06」が表示されます。タップしてペアリングし、ペアリングコードを入力します。デフォルトは1234、デフォルトのシリアルポート速度は9600ボーレートです。

Windows 10 Mobileの場合
同様に「設定」→「デバイス」→「Bluetooth」でペアリングします。

Windows 10 IoT Coreデバイス(Raspberry Pi 2など)の場合
オンボードBluetooth非搭載のRaspberry Pi 2やMBMでは、Bluetooth USBドングルが必要です。ハードウェア互換性リストで検証済みのドングルを選んでください。本プロジェクトではORICO BTA-403を使用します。Dragon Board 410cはオンボードBluetooth搭載のためドングル不要です。
ORICO BTA-403をRaspberry Pi 2のUSBポートに挿すと、Windows 10 IoT Coreのデフォルトアプリ画面にメッセージが表示されます。Bluetoothペアリングについては「Pairing a BLE Device and GATT Attribute Table Dump Tool」ページの「Pairing the Sensortag」セクションのStep 1〜6に従い、SSHでWindows IoT Coreに接続してコマンドラインツールで設定します。

注: メインメニューでBRモードを選択してください。デフォルトのペアリングコードは1234です。

ステップ3: コードのダウンロードと展開
所要時間: 10分
まず5V DC電源を接続し、PM2.5/PM10検知器(HC-06付き)を稼働させます。1秒ごとにデータが取得されます。
次にGitHubから「GenericBluetoothSerialUWApp」プロジェクトをダウンロードし、Visual Studio 2015 Update 1で読み込みます。このアプリはMVP David Jones氏の「Generic Serial Bluetooth with Win 10 IoT-Core RPI2」を参考に設計されています。ターゲットによりデバッグ設定を変更します:
- PCで実行:x86またはx64、ローカルデバッグ
- Windows 10 Mobile:ARM、デバイスデバッグ
- Windows 10 IoTデバイス(Raspberry Pi 2等):リモートデバッグをデバイスに設定
HC-06とWindows 10デバイスのペアリング完了後、Visual StudioでF5を押してUWPアプリを起動します。「HC-06」シンボルをダブルタップすると、IDと名前がアプリ上部に表示されます。間もなくHC-06のLEDが点滅から点灯に変わり、「Start Rev」ボタンが有効になります。クリックしてデータ受信を開始すると、「Stop Recv」と「Start Process」ボタンが有効になります。「Start Process」をクリックしてデータ処理アルゴリズムを実行します。

PM2.5とPM10の値がTextBlocksに表示されます。
コード
PM25Detector
Windows 10 UWP App
https://github.com/shijiong/PM25Detector
回路図

この図ではSparkfun ZigBeeモジュールがPM2.5センサー(SDS011)を表しています。使用ピンは5V、GND、Tx、Rxです。
PM25Detector.fzz
製造プロセス
- 製造向け設計 (DFM): エンジニアとデザイナーのための実践ガイド
- Arduino + Windows IoT + Azure クラウドによる高度な転倒検知システム
- Arduino Unoで作る低コスト落雷検知器
- ESP8266 WiFiモジュールとBlynkアプリでArduino Unoをシームレスに制御
- ハードウェア成功におけるDesign for Manufacturing(DFM)の決定的役割
- 治具・工具の積層造形向け最適化設計
- RF・マイクロ波PCB設計の必須原則:信頼性の高い性能を実現
- 高電圧PCB設計:材料、安全性、ベストプラクティス
- Bluetooth 5.1 SoC:IoTデバイス向け超小型・低コストソリューション
- WindowsでC#開発用Visual Studio 2019 Community Editionをインストールする手順
- Windows、macOS、Linux への GCC コンパイラ インストール: ステップバイステップ ガイド