モノのインターネットに補償型大気質センサを追加
DigiKeyの北米担当編集者の提供
2018-08-28
スマートビルディングシステムに大気質センサを追加することで、エンジニアは有害ガスや化学物質の蓄積に関する早期警告を実施できますが、商用の大気質センサにはスマートビルディングネットワークに参加するために必要な統合機能が欠けています。しかし、使いやすい開発キットを使用することで、エンジニアはこの欠点を克服するために必要な処理能力とワイヤレス機能を追加できます。
環境中のCO2または揮発性有機化合物(VOC)のppm濃度を決定するための最も一般的な種類の大気質デバイスは、測定されるガスまたは化学物質の濃度に比例した出力電圧を発生する半導体電気化学素子に基づきます。ただし、測定精度は温度と湿度の両方の影響を受けます。大気質センサの出力の精度を向上させるために連続補正アルゴリズムのデータを提供する可能性がある気温センサおよび湿度センサは、このタイプの大気質センサと日常的に統合されていません。
さらに、現在の大気質センサには、他の種類のセンサに共通するスマートビルディングネットワークへの接続に必要なワイヤレス技術が欠けています。
これらの欠陥により、エンジニアは、家庭用、商業用、および産業用のワイヤレスネットワーク用の大気質センサを設計することがより困難になります。
しかし、温度と湿度のセンサや、ワイヤレス接続を含む、大気質モニタリング製品用の開発キットの最近の導入により、設計上の課題が緩和されています。この記事では、これらの開発キットを使用して大気質の製品の設計サイクルを短縮する方法について説明します。
MOSセンサ特性
大気質を監視するためのセンサにはいくつかの種類があります。例としては、電気化学(EC)、非分散型赤外線(NDIR)、光イオン化検出器(PID)、および熱が挙げられます。
しかし、スマートビルディングアプリケーションの監視要件に最も近いのは、金属酸化膜半導体(MOS)タイプです。これらのデバイスはコンパクトで比較的安価で、バッテリで動作することができ(MOSセンサのヒーターに定期的に電力を供給するのに十分な容量で)、検出範囲は室内の職場でのCO2およびVOCの典型的な濃度と一致します(図1)

図1:一日中の寝室のCO2とVOCの濃度の変化(画像提供:IDT)
動作中、検出素子は摂氏数百度(℃)に加熱されます。正確な温度によって、特定のガスまたは化学物質に対する要素の選択性が決まります。感度は素材の厚さによって異なります。
センサは、n型またはp型の半導体検出素子を使用して製造されています。検出素子はターゲット化学物質を吸収(p型)または脱着(n型)し、ターゲット化合物との電気化学反応は半導体の伝導帯に電子を追加または除去します。電子の移動により、検出素子の抵抗率または導電率が既知のベースライン値から直線的に変化します(図2)。

図2:MOSセンサ素子の抵抗率は、ターゲット化学物質の濃度の変化に応じて直線的に変化します。この例ではエタノールです。(画像提供:IDT)
スマートホームアプリケーション用の商用MOSセンサの1つがamsから供給されています。CCS811Bは、マイクロコントローラ、アナログ〜デジタルコンバータ(ADC)、およびI2Cインターフェースを組み込んだデジタルMOSセンサソリューションです(図3)。このデバイスは生のセンサ測定値を処理して、「等価総VOC」(eTVOC)と「等価CO2」(eCO2)の値を出力します。このセンサは、10ピン2.7 x 4.0 x 1.1ミリメートル(mm)パッケージで入手可能です。

図3:amsのCCS811BデジタルMOSセンサは、生のセンサデータのオンボード処理のためのマイクロコントローラを含みます。(画像提供:ams)
各MOSセンサは、与えられた空気組成、温度、湿度に対して固有のベースライン抵抗値を持っています。これは、ガスまたは化学物質の濃度を計算するための基礎として使用されます。ベースライン値からの抵抗値の差は、ガスまたは化学物質の濃度に比例します。
現場では、周囲温度と湿度がセンサ素子のベースライン抵抗値に影響を与え、その感度、ひいては精度を変化させます。たとえば、周囲温度が上がると(特定の湿度に対して)センサ素子のベースライン抵抗値が上がり、湿度が上がると(特定の温度に対して)ベースライン抵抗値が下がります。
センサメーカーは、監視用マイクロプロセッサがアルゴリズムを実行してベースライン抵抗値の変動を継続的に補正できるように、大気質センサと温度および湿度センサを組み合わせることを奨励しています。
このアプリケーションに人気のあるデバイスは、Bosch SensortecのBME280です。BME280は、デジタル湿度、圧力および温度を2.5 x 2.5 x 0.93mmのフットプリントを持つLGAパッケージにまとめたものです。このセンサは、外部マイクロプロセッサと通信するためのI2Cインターフェースを備えており、センサ電源として1.71〜3.6Vの電源が必要です。センサがスリープモードにあるとき、消費電流は0.1マイクロアンペア(μA)に低下します。
市販のMOSセンサには、ワイヤレスネットワークに参加するために必要な組み込み接続がありません。しかしながら、センサと直接インターフェースするように設計された多くの低電力ワイヤレスチップがあります。これらのデバイスの多くには、生のセンサデータを処理し、湿度と温度の変動を補正するのに必要なアルゴリズムを実行するのに十分強力な組み込みマイクロプロセッサも含まれています。(このアプリケーションに適したワイヤレス技術の詳細については、DigiKeyの記事「低電力ワイヤレス技術の比較」を参照してください。)
基本的な大気質センサの開発
無線接続された大気質モニタを設計するには、エンジニアはディスクリートMOSセンサ、湿度および温度センサ、無線トランシーバ、そして(場合によっては)マイクロプロセッサを動作システムに組み合わせる必要があります。このような複雑さは、これを困難で時間のかかる作業にする可能性があります。
ただし、初期の設計およびテストプロセスを大幅に容易にする開発キットが市場に出回っています。たとえば、大気質センサ開発用のSparkFun ElectronicsのSEN-14348 Qwiic環境コンボブレイクアウトは、CCS811B大気質センサとBME280センサを組み合わせて温度と湿度を補正し、4ピン分極Qwiicコネクタの形をした2つの物理I2Cインターフェースを含みます(図4)。

図4:SparkFunのSEN-14348ブレイクアウトは、CCS811BセンサとBME280デバイスを組み合わせて温度と湿度を補正します。(画像提供:SparkFun)
SEN-14348は、温度と湿度を補正した大気質センサの設計の基礎として使用できますが、包括的なソリューションではありません。CCS811Bにはマイクロプロセッサが含まれていますが、このデバイスは定期的な測定の監視とベースライン補正を実行できますが、それを超える機能は制限されています。大気質しきい値の監視、長期間のガス濃度または化学物質濃度の計算など、より複雑な応用は、マイクロプロセッサの機能を超えています。SEN-14348でより高度なアプリケーションをサポートするには、より高性能なマイクロプロセッサに接続する必要があります。
初期開発のために、SparkFunはSEN-14348ブレイクアウトをRedBoardのようなArduino互換コンピュータに接続することを提案します。RedBoardは、Arduino IDEからコードをアップロードするためにUSBケーブル(ボードにも電力を供給します)を介してPCに接続します。RedBoardをQwiicブレイクアウトで使用するには、コンピュータにDEV-14352 Qwiicシールドを取り付ける必要があります。シールドはI2Cコネクタを収容し、5ボルトのRedBoard電源をSEN-14348ブレイクアウトのセンサに必要な3.3ボルトまで安定化します。
作業を開始するには、開発者はGithubからSparkFunのCCS811およびBME280 Arduinoライブラリをダウンロードする必要があります。センサは、Arduino IDEから、サンプリングレート、有限インパルス応答(FIR)フィルタ係数、オーバーサンプリングモードなどの情報で構成されます。
以下のコードスニペットは、読み取りを行う前にBME280センサを初期化するためのルーチンを示しています(CCS811の初期化ルーチンも同様です)。
コピーする
#include <SparkFunBME280.h>
#include <SparkFunCCS811.h>
#define CCS811_ADDR 0x5B //Default I2C Address
//#define CCS811_ADDR 0x5A //Alternate I2C Address
//Global sensor objects
CCS811 myCCS811(CCS811_ADDR);
BME280 myBME280;
void setup()
{
Serial.begin(9600);
Serial.println();
Serial.println("Apply BME280 data to CCS811 for compensatio
n.");
//This begins the CCS811 sensor and prints error status of .
begin()
CCS811Core::status returnCode = myCCS811.begin();
if (returnCode != CCS811Core::SENSOR_SUCCESS)
{
Serial.println("Problem with CCS811");
printDriverError(returnCode);
}
else {
Serial.println("CCS811 online");
}
//Initialize BME280
//For I2C, enable the following and disable the SPI section
myBME280.settings.commInterface = I2C_MODE;
myBME280.settings.I2CAddress = 0x77;
myBME280.settings.runMode = 3; //Normal mode
myBME280.settings.tStandby = 0;
myBME280.settings.filter = 4;
myBME280.settings.tempOverSample = 5;
myBME280.settings.pressOverSample = 5;
myBME280.settings.humidOverSample = 5;
//Calling .begin() causes the settings to be loaded
delay(10); //Make sure sensor had enough time to turn on.B
ME280 requires 2ms to start up.
byte id = myBME280.begin(); //Returns ID of 0x60 if successf
ul
if (id != 0x60)
{
Serial.println("Problem with BME280");
}
else {
Serial.println("BME280 online");
}
}
コードスニペット1:読み取り前のBME280センサの初期化ルーチンです。(コード提供:SparkFun)
センサから測定値を取得するには、コードにボイドループを追加する必要があります(Arduinoの「スケッチ」)(コードスニペット2)。
コピーする
void loop() {
if (myCCS811.dataAvailable()) //Check to see if CCS811 has n ew data (it's the slowest sensor)
{
myCCS811.readAlgorithmResults(); //Read latest from CCS81
1 and update tVOC and CO2 variables
//getWeather(); //Get latest humidity/pressure/temp data f
rom BME280
printData(); //Pretty print all the data
}
else if (myCCS811.checkForStatusError()) //Check to see if C
CS811 has thrown an error
{
Serial.println(myCCS811.getErrorRegister()); //Prints what
ever CSS811 error flags are detected
}
delay(2000); //Wait for next reading
}
コードスニペット2:CCS811センサからの読み取り値の取得と印刷のためのルーチンです。(コード提供:SparkFun)
BME280からの環境データ(「ENV_DATA」)はCCS811に書き込まれるので、温度と湿度の影響を考慮してベースライン抵抗値に補正係数を適用できます。
湿度と温度の情報は、1/512%RHと1/512度の分解能を持つ符号なし16ビット整数として伝達されます。湿度のデフォルト値は50パーセント(= 0x64、0x00)です。例えば、湿度48.5パーセント= 0x61、0x00です。温度測定値には、-25°Cにマッピングされた0のオフセットが含まれています。デフォルト値は25℃(= 0x64、0x00)です。たとえば、23.5°C = 0x61、0x00です。
BME280からCCS811に温度と湿度を供給すると、マイクロプロセッサは補正アルゴリズム(コードスニペット3)を適用できます。
コピーする
void loop() {
//Check to see if data is available
if (myCCS811.dataAvailable())
{
//Calling this function updates the global tVOC and eCO2 v
ariables
myCCS811.readAlgorithmResults();
//printData fetches the values of tVOC and eCO2
printData();
float BMEtempC = myBME280.readTempC();
float BMEhumid = myBME280.readFloatHumidity();
Serial.print("Applying new values (deg C, %): ");
Serial.print(BMEtempC);
Serial.print(",");
Serial.println(BMEhumid);
Serial.println();
//This sends the temperature data to the CCS811
myCCS811.setEnvironmentalData(BMEhumid, BMEtempC);
}
else if (myCCS811.checkForStatusError())
{
Serial.println(myCCS811.getErrorRegister()); //Prints what
ever CSS811 error flags are detected
}
delay(2000); //Wait for next reading
}
コードスニペット3:CCS 811センサが補正アルゴリズムを実行できるようにするために温度と湿度のデータを供給します。(コード提供:SparkFun)
IoTに大気質センサを追加
SparkFunのSEN-14348ブレイクアウト、Arduinoコンピュータ、およびシールドは大気質データの制御と照合を可能にしますが、このシステムは無線接続を提供しません。Cypress SemiconductorのCY8CKIT-042-BLE-A PSoC 4 BLEパイオニアキットには、この要件を解決するためのワイヤレス機能が含まれています。
PSoC 4 BLEパイオニアキットは、エンジニアがワイヤレスセンサアプリケーションを開発するのを助けるように設計された開発ツールです。このキットを使用すると、エンジニアはアプリケーションをコーディングおよびコンパイルしてからファームウェアをCypressのPSoC 4 Bluetooth Low Energy SoCに移植できます。SoCは、32ビット、48MHzのArm® Cortex®-M0プロセッサとBluetooth Low Energy無線を内蔵しています。
この場合、ブレイクアウトの補正済み大気質データは、ブレイクアウトのI2C接続を介してキットのPCボード上のI2Cコネクタに供給されます。I2CインターフェースのSDAラインからデータを受信することに加えて、プロセッサはセンサをリセット、中断、およびスリープ状態にすることができます。
キットを使用して大気質センサ設計をプログラムおよびデバッグするには、いくらかの開発作業が必要です。Cypressは、Windows CySmartホストエミュレーションツール(PC上で実行)とコーディングおよびテスト用のBluetooth Low Energyドングルを提供しています。開発プロセス中に、ドングルとパイオニアキットの両方を同時に共通のホストPCに接続できます(図5)。
図5:Cypressは、PSoC 4 BLEパイオニアキットでアプリケーションファームウェアの開発を支援するために、Bluetooth Low Energy開発ツールとドングル(Bluetooth Low Energyセントラルデバイスとして構成)を提供しています。(画像提供:Cypress Semiconductor)
CY8CKIT-042-BLE-A PSoC 4 BLEパイオニアキット設計プロセスを使用した開発は、4つの段階で構成されています。
- PSoC Creator回路図ページで設計を作成
- Bluetooth Low Energyイベントを初期化して処理するためのファームウェアを作成
- パイオニアキットを使用してBluetooth Low Energy SoCをプログラム
- CySmartホストエミュレーションツール(またはモバイルアプリ)を使用して設計をテスト
(Bluetooth Low Energyアプリケーション開発の詳細については、DigiKeyの記事「Bluetooth 4.1、4.2、および5対応Bluetooth Low Energy SoCとツールがIoTの課題を解決」を参照してください。)
アプリケーションファームウェアは、Bluetooth Low Energy SoCがセンサのデータを収集して処理し、Bluetooth Low Energyリンクを介して情報を分析や表示のためにスマートフォンなどに送信することを可能にします。
その後、センサからのデータをスマートフォンからクラウドサーバに転送してデータを保存し、そのデータに基づいて「If This Then That」(IFTTT)通知をトリガすることもできます。たとえば、子供の寝室でのCO2の測定値が持続的に高くなると、親のスマートフォンに換気の向上が必要なことを知らせる通知が表示される可能性があります。
センサから直接クラウドに接続するのはもう少し複雑です。CypressのコンポーネントなどのBluetooth Low Energy SoCには、通常、ネイティブIPv6ネットワーク層がありません。解決策は、クラウドに接続するための代替プロトコル(例えば、Wi-Fi)を使用してBluetoothデータを「ゲートウェイ」に送信することです。
CypressとSparkFunは、これを可能にするために再び協力しました。CypressのCY8CKIT-062-BLE PSoC 6 BLEパイオニアキットとSparkFunのDEV-14531 PSoCパイオニアIoTアドオンシールド(XB2B-WFWT-001 XBee Wi-Fiモジュールを装備)を使用することで、エンジニアはセンサから補正された大気質データを取得し、CY8CKIT-042-BLE-A PSoC 4 BLEパイオニアキットからCY8CKIT-062-BLE PSoC 6 BLEパイオニアキットに、そしてそこからBluetooth Low Energyリンクを介してそれをクラウドへ送信するネットワーク(Wi-Fi経由で)を開発することができます(図6)。(Wi-Fiモジュールを使用してクラウドに接続する方法の詳細については、DigiKeyの技術記事「802.11xモジュール開発キットがIoTワイヤレス設計の手間を軽減」を参照してください。)

図6:CypressとSparkFun開発キットから構築されたこのワイヤレスシステムは、Bluetooth low energyとWi-Fiを使用して大気質センサデータをクラウドに送信します。(画像提供:DigiKey)
結論
スマートビルディングネットワークの一部として大気質センサを含めることは、制御換気ビル内のCO2などのVOCやガスの蓄積による有害な健康への影響に対する認識が高まっているため、重要になっています。
市販の大気質センサには、現在、他の(モジュラー)センサに典型的な強力な内蔵マイクロプロセッサとワイヤレス接続が欠けています。しかし、エンジニアは使いやすい設計ツールを使用することで、生の大気質データに温度や湿度の影響を補正するだけでなく、Bluetooth Low Energyネットワークや、スマートフォンネットワークまたはWi-Fiモジュールを介してワイヤレスでクラウドへ情報を送信できます。
免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、DigiKeyの意見、信念および視点またはDigiKeyの公式な方針を必ずしも反映するものではありません。



