HTS221 v2 Temperature and Humidity Sensor
このライブラリは、STMicroelectronics社製HTS221温湿度センサを制御する機能を提供する組み込みクラスです。
Library usage requirements | |
---|---|
Type | I2C |
Name | HTS221_V2 |
Version | 2020-11-04 |
Code size used | 3.4KB |
Resources used | I2C x 1, Timers x 1 |
関連資料
STMicroelectronics社製HTS221温湿度センサの詳細については、データシートを参照してください。
Abstracts
Methods()/Properties | Summary |
---|---|
new HTS221() | HTS221 インスタンスを作成します。 |
{HTS221} Instance
Methods()/Properties | Summary |
---|---|
.write() | I2Cデバイスの指定されたレジスタに1バイトのデータを書き込みます。 |
.read() | I2Cデバイスの指定されたレジスタから1バイトのデータを読み込みます。 |
.init() | センサを初期化します。 |
.measOn() | センサの電源を入れ、シングル測定を開始します。 |
.measOff() | センサの電源を切り、消費電力を削減します。 |
.checkStatus() | センサの測定状態を確認します。 |
.getResult() | 温湿度の測定結果を取得します。 |
.checkStatusAndGetResult() | センサの測定完了を待ってから、温湿度の測定結果を取得します。 |
Details
new HTS221(i2c)
アクティブ化されたI2Cオブジェクトを使用してHTS221
インスタンスを作成します。
Instance Methods
.write()
I2Cデバイスの指定されたレジスタに1バイトのデータを書き込みます。
センサのレジスタに直接アクセスする場合に使用します。
Name | Type | Default | Summary |
---|---|---|---|
reg | number | MANDATORY | 対象レジスタ 設定範囲: 0x00~0xFF |
data | number | MANDATORY | 書き込みデータ 設定範囲: 0x00~0xFF |
return | boolean | - | true: 成功 false: 失敗 |
.read(reg)
I2Cデバイスの指定されたレジスタから1バイトのデータを読み込みます。
センサのレジスタに直接アクセスする場合に使用します。
Name | Type | Default | Summary |
---|---|---|---|
reg | number | MANDATORY | 対象レジスタ 設定範囲: 0x00~0xFF |
return | number, undefined | - | 読み込んだデータ 読み込みに失敗した場合は undefined を返します。 |
.init([avgT[,avgH]])
センサを初期化します。
このメソッドは、インスタンス作成後、はじめに呼び出す必要があります。
センサの温湿度測定用分解能モードを変更することができます。詳細については、センサのデータシートをご参照ください。
Name | Type | Default | Summary |
---|---|---|---|
avgT | number | 7 | 温度の平均サンプル数 設定範囲: 0~7 |
avgH | number | 7 | 湿度の平均サンプル数 設定範囲: 0~7 |
return | boolean | - | true: 成功 false: 失敗 |
.measOn()
センサの電源を入れ、センサのone-shot
測定機能を使用して、温湿度のシングル測定を開始します。
.checkStatus()
で測定完了を待つ必要があります。
尚、新たに測定を開始する場合は、このメソッドを再度呼び出す必要があります。
Name | Type | Default | Summary |
---|---|---|---|
return | undefined | - |
.measOff()
センサの電源を切り、消費電力を削減します。
Name | Type | Default | Summary |
---|---|---|---|
return | undefined | - |
.checkStatus()
センサの測定状態を確認します。
Name | Type | Default | Summary |
---|---|---|---|
return | boolean | - | true: 測定完了、データ読み出し可能です。 false: 測定中です。 |
.getResult()
温湿度の測定結果を取得します。
Name | Type | Default | Summary |
---|---|---|---|
return | Object, undefined | - | 測定結果は{Results}オブジェクトで返却されます。 失敗した場合は undefined が返ります。 |
{Results}
Name | Type | Description | Note |
---|---|---|---|
.temp | number | 温度(°C) | |
.humi | number | 湿度(%RH) |
.checkStatusAndGetResult()
センサの測定完了を待ってから、温湿度の測定結果を取得します。
Name | Type | Default | Summary |
---|---|---|---|
return | Object, undefined | - | 測定結果は{Results}オブジェクトで返却されます。 失敗した場合は undefined が返ります。 |
Usage Examples
Sample 1: シングル測定
// IMPORTED LIBRARIES
// - HTS221_V2
// Logging setup
log.setLevel(0,2); //-1:NONE 0:ERROR 1:WARNING 2:DEBUG 3:TRACE, 0:DISABLE 1:LOG 2:CONSOLE 3:BOTH
log.printLevel(2); //0:DISABLE 1:LOG 2:CONSOLE 3:BOTH
// I2C Configuration
var i2c;
if('nqBridge' in this){
if(nqEx.getBoardType()){
// Using NEQTO Bridge IO Board or NEQTO Bridge Digital IO Board.
nqEx.enI2CS(true);
nqEx.enI2CL(true);
}
i2c = new I2C(1);
} else if('nqSpresense' in this){
i2c = new I2C(0);
} else if('nqDiscovery' in this){
i2c = new I2C(2);
} else{
throw("Incompatible device.");
}
i2c.open(400000); // Baudrate: 400000
var hts221 = new HTS221(i2c);
var ready = hts221.init();
if (!ready) {
print("Error: Unable to connect to HTS221");
} else {
var dateTime = new Date();
hts221.measOn();
while(!hts221.checkStatus());
var results = hts221.getResult();
hts221.measOff();
if(!results) {
print("Error: Failed measurement.");
} else{
print(dateTime.toString() + ", Temp: " + results.temp + ", Humi: " + results.humi);
}
}
i2c.close();
Sample 2: 周期的に測定を行い、平均値を算出します
// IMPORTED LIBRARIES
// - HTS221_V2
// Logging setup
log.setLevel(0,2); //-1:NONE 0:ERROR 1:WARNING 2:DEBUG 3:TRACE, 0:DISABLE 1:LOG 2:CONSOLE 3:BOTH
log.printLevel(2); //0:DISABLE 1:LOG 2:CONSOLE 3:BOTH
// I2C Configuration
var i2c;
if('nqBridge' in this){
if(nqEx.getBoardType()){
// Using NEQTO Bridge IO Board or NEQTO Bridge Digital IO Board.
nqEx.enI2CS(true);
nqEx.enI2CL(true);
}
i2c = new I2C(1);
} else if('nqSpresense' in this){
i2c = new I2C(0);
} else if('nqDiscovery' in this){
i2c = new I2C(2);
} else{
throw("Incompatible device.");
}
i2c.open(400000); // Baudrate: 400000
var hts221 = new HTS221(i2c);
var ready = hts221.init();
var results;
var count = 0;
var sums = [0, 0];
var AVE_NUM = 10;
var MEAS_INTERVAL = 1000; // in milliseconds
if (!ready) {
print("Error: Unable to connect to HTS221");
} else {
var to = setInterval(function () {
var dateTime = new Date();
hts221.measOn(); // Necessary to start a new measurement.
results = hts221.checkStatusAndGetResult(); // Blocking
hts221.measOff();
if(!results) {
print("Error: Failed measurement.");
}
else{
count++;
sums[0] += results.temp;
sums[1] += results.humi;
print(dateTime.toString() + ", Temp: " + results.temp + ", Humi: " + results.humi);
if (count == AVE_NUM) {
print("[Average] Temp: " + (sums[0] / AVE_NUM).toFixed(2) + ", [Average] Humi: " + (sums[1] / AVE_NUM).toFixed(2));
// Finished measuring.
clearInterval(to);
i2c.close();
}
}
}, MEAS_INTERVAL)
}
上記に記載されている会社名、製品名は、各社の登録商標または商標です。
Updated: 2021-10-05