node-ksy-hat
v0.1.1
Published
node-ksy-hat は KSY 社の Raspberry Pi 向けマルチセンサー HAT「Smart Remote Control HAT」を制御および計測値を取得するモジュールです。
Downloads
3
Maintainers
Readme
node-ksy-hat
node-ksy-hat は KSY 社の Raspberry Pi 向けマルチセンサー HAT「Smart Remote Control HAT」を制御および計測値を取得するモジュールです。
※ このモジュールは KSY 社公式または公認の node モジュールではありません。非公式・非公認の node モジュールです。
このモジュールは以下の機能を提供します。
- マルチカラー LED の操作
- パワー赤外発光ダイオードの操作
- タクトスイッチの状態変化検知
- 焦電センサ (モーションセンサ) の状態変化検知
- 温湿度センサ (Sensirion SHT30) の計測値取得
- 環境光センサ (VISHAY VEML7700-TT) の計測値取得
- 絶対圧センサ (オムロン 2SMPB-02E) の計測値取得
本モジュールは、現時点では以下の機能は提供していません。
- 赤外リモコン受光モジュール (VISHAY TSOP38238)
サポート OS
node-ksy-hat は、Raspberry Pi OS で動作します。
依存関係
インストール
$ npm install node-ksy-hat
目次
- クイックスタート
KsyHat
オブジェクトKsyHatLed
オブジェクトKsyHatIrtx
オブジェクトKsyHatSwitch
オブジェクトKsyHatMotion
オブジェクトKsyHatSht3x
オブジェクトKsyHatVeml7700
オブジェクトKsyHatOmron2smpd
オブジェクト- リリースノート
- リファレンス
- ライセンス
クイックスタート
センサ計測値の取得
次のサンプルコードは、HAT に内蔵されたセンサの計測値をまとめて読み取り、それを出力します。
// node-ksy-hat をロードし、KsyHat コンストラクタオブジェクトを取得
const KsyHat = require('node-ksy-hat');
// KsyHat オブジェクトを生成
const ksyhat = new KsyHat();
(async () => {
// KsyHat オブジェクトを初期化
await ksyhat.init();
// センサ計測値を読み取り出力
const res = await ksyhat.readSensorData();
console.log(res);
// KsyHat オブジェクトの終了処理
await ksyhat.destroy();
})();
まず、KsyHat
コンストラクタオブジェクトから KsyHat
オブジェクトを生成しなければいけません。上記コードでは、変数 KsyHat
が KsyHat
オブジェクトに相当します。
init()
メソッドを呼び出すと、KsyHat
オブジェクトが利用可能な状態になります。このメソッドの呼び出しを忘れないようにしてください。なお、KsyHat
に実装された非同期型のメソッドは、Promise
オブジェクトを返します。
KsyHat
オブジェクトの readSensorData()
メソッドは、HAT に内蔵の各種センサから温度、湿度、大気圧、照度の計測結果を読み取ります。
上記サンプルコードは、次のような結果を出力します:
{
illuminance: 125.3,
pressure: 1012.4,
temperature: 29.5,
humidity: 35.9
}
HAT の利用が終了したら、必ず KsyHat
オブジェクトの destroy()
メソッドを呼び出してください。
LED の点灯
次のサンプルコードは、HAT に内蔵のマルチカラー LED を 1 秒ごとに赤、緑、青の順に点灯し続けます。
const KsyHat = require('node-ksy-hat');
const ksyhat = new KsyHat();
(async () => {
await ksyhat.init();
while (true) {
// 赤点灯
await ksyhat.led.setStates({ r: true, g: false, b: false });
await ksyhat.wait(1000);
// 緑点灯
await ksyhat.led.setStates({ r: false, g: true, b: false });
await ksyhat.wait(1000);
// 青点灯
await ksyhat.led.setStates({ r: false, g: false, b: true });
await ksyhat.wait(1000);
}
})();
KsyHat
オブジェクトの led
プロパティから KsyHatLed
オブジェクトが得られます。KsyHatLed
オブジェクトは HAT 内蔵のマルチカラー LED を表していますが、その setStates()
メソッドを使って LED を操作することができます。
setStates()
メソッドには、赤、緑、青それぞれの状態を示したオブジェクトを引数に指定します。
タクトスイッチ押下の検知
次のサンプルコードは、HAT 内蔵のタクトスイッチの押下を検知して、その状態を出力します。このサンプルコードでは、押下のモニタリングを 10 秒で終了します。
const KsyHat = require('node-ksy-hat');
const ksyhat = new KsyHat();
(async () => {
await ksyhat.init();
// KsyHatSwitch オブジェクトの pressed イベントのリスナーをセット
ksyhat.switch.on('pressed', (state) => {
if (state === true) {
console.log('タクトスイッチが押されました。');
} else {
console.log('タクトスイッチが離されました。');
}
});
// タクトスイッチのモニタリングを開始
ksyhat.switch.start();
console.log('タクトスイッチのモニタリングを開始しました。');
// 10 秒間待つ
await ksyhat.wait(10000);
// タクトスイッチのモニタリングを終了
ksyhat.switch.stop();
console.log('タクトスイッチのモニタリングを終了しました。');
// KsyHat オブジェクトの終了処理
await ksyhat.destroy();
})();
KsyHat
オブジェクトの switch
プロパティから KsyHatSwitch
オブジェクトが得られます。KsyHatSwitch
オブジェクトは HAT 内蔵のタクトスイッチを表していますが、その pressed
イベント をモニタリングすることで、タクトスイッチの押下状態を検知することができます。
上記コードは次のような結果を出力します:
タクトスイッチのモニタリングを開始しました。
タクトスイッチが押されました。
タクトスイッチが離されました。
タクトスイッチのモニタリングを終了しました。
KsyHat
オブジェクト
node-ksy-hat を使うためには、次のように、node-ksy-hat モジュールをロードしなければいけません:
const KsyHat = require('node-ksy-hat');
上記コードから KsyHat
コンストラクタが得られます。その後、次のように、KsyHat
コンストラクタから KsyHat
オブジェクトを生成しなければいけません:
const ksyhat = new KsyHat();
ここで得られた KsyHat
オブジェクトのメソッドやプロパティを通して HAT にアクセスします。
init() メソッド
KsyHat
オブジェクトは当初は利用することができません。以下のように、init()
メソッドを使って初期化しなければいけません。
(async () => {
await ksyhat.init();
...
})();
init()
メソッドは Promise
オブジェクトを返します。本ドキュメントでは、Promise
オブジェクトを返すメソッドは await
で呼び出します。そのため、上記コードのように、async
の関数内で呼び出されることを前提とします。以降、async
のコードは記述しませんので注意してください。
KsyHat
オブジェクトが初期化されれば、以降の章で説明するメソッドやプロパティを利用することができるようになります。
readSensorData() メソッド
readSensorData()
メソッドは、HAT 内蔵の各種 I2C ベースのセンサから計測値を読み取ります。このメソッドは Promise
オブジェクトを返します。このメソッドに引数はありません。
const res = await ksyhat.readSensorData();
読み取りに成功すると、次のプロパティを含んだオブジェクトが返されます。
プロパティ名 | 型 | 説明
:-------------|:-------|:-------------------------
illuminance
| Number | 照度 (lx)
pressure
| Number | 大気圧 (hPa)
temperature
| Number | 温度 (degC)
humidity
| Number | 湿度 (%RH)
実際には、次のようなオブジェクトが得られます。
{
illuminance: 125.3,
pressure: 1012.4,
temperature: 29.5,
humidity: 35.9
}
HAT の I2C ベースのセンサは 1 秒未満で繰り返し読み取りを行うとエラーになる場合がります。そのため、何度も呼び出す必要がある場合は、1 秒以上の間隔をあけてください。
illuminance
は環境光センサ (VISHAY VEML7700-TT) から読み取った値です。pressure
は絶対圧センサ (オムロン 2SMPB-02E) から読み取った値です。temperature
と humidity
は温湿度センサ (Sensirion SHT30) から読み取った値です。
readSensorData()
メソッドは、内部的には、KsyHatVeml7700
オブジェクトの read()
メソッド、KsyHatSht3x
オブジェクトの read()
メソッド、 KsyHatOmron2smpd
オブジェクトの read()
メソッドを呼び出しているだけです。
温度は絶対圧センサ (オムロン 2SMPB-02E) からも読み取ることが可能ですが、readSensorData()
メソッドでは使いません。もしオムロン 2SMPB-02E の温度計測値を読み取りたい場合は、後述の KsyHatOmron2smpd
オブジェクトの read()
メソッドを使ってください。
destroy() メソッド
destroy()
メソッドは、Raspberry Pi の GPIO をリセットし、I2C への接続を閉じます。このメソッドは Promise
オブジェクトを返します。このメソッドに引数はありません。
HAT の利用が終了したら、必ずこのメソッドを呼び出してください。
await ksyhat.destroy();
wait() メソッド
wait()
メソッドは指定のミリ秒間だけ待ちます。このメソッドは待ち時間を表す整数 (ミリ秒) を引数に取ります。このメソッドは Promise
オブジェクトを返します。
このメソッドは HAT に対して何もしません。これは単なるユーティリティメソッドです。
await ksyhat.wait(1000);
プロパティ
KsyHat
オブジェクトは、HAT に搭載された各種センサを表すオブジェクトを返すプロパティを持っています。
プロパティ | 型 | 説明
:------------|:-------------------|:----------------------
led
| KsyHatLed
| マルチカラー LED (Everlight EASV3015RGBA0) を表す KsyHatLed
オブジェクトを返します。
irtx
| KsyHatIrtx
| パワー赤外発光ダイオード (OSRAM SFH 4726AS A01) を表す KsyHatIrtx
オブジェクトを返します。
switch
| KsyHatSwitch
| タクトスイッチ (Alps/Alpine SKRTLAE010) を表す KsyHatSwitch
オブジェクトを返します。
motion
| KsyHatMotion
| 焦電センサ (村田 IRA-S210ST01) を表す KsyHatMotion
オブジェクトを返します。
sht3x
| KsyHatSht3x
| 温湿度センサ (Sensirion SHT30-DIS-B2.5KS) を表す KsyHatSht3x
オブジェクトを返します。
veml7700
| KsyHatVeml7700
| 環境光センサ (VISHAY VEML7700-TT) を表す KsyHatVeml7700
オブジェクトを返します。
omron2smpd
| KsyHatOmron2smpd
| 絶対圧センサ (オムロン 2SMPB-02E) を表す KsyHatOmron2smpd
オブジェクトを返します。
KsyHatLed
オブジェクト
KsyHatLed
オブジェクトはマルチカラー LED (Everlight EASV3015RGBA0) を表すオブジェクトで、KsyHat
オブジェクトの led
プロパティから得ることができます。このオブジェクトは以下のメソッドを持っています。
setStates() メソッド
setStates()
メソッドは、マルチカラー LED の状態 (ON/OFF) をセットします。このメソッドは Promise
オブジェクトを返します。
このメソッドは、次のプロパティを持つオブジェクトを引数に与えなければいけません。
プロパティ | 型 | 必須 |説明
:---------|:--------|:-----|:---------------
r
| Boolean | 任意 | 赤色 LED の点灯状態 (true
: 点灯, false
: 消灯)
g
| Boolean | 任意 | 緑色 LED の点灯状態 (true
: 点灯, false
: 消灯)
b
| Boolean | 任意 | 青色 LED の点灯状態 (true
: 点灯, false
: 消灯)
次のコードは、赤色 LED のみを点灯します。
await ksyhat.led.setStates({ r: true });
KsyHatIrtx
オブジェクト
KsyHatIrtx
オブジェクトはパワー赤外発光ダイオード (OSRAM SFH 4726AS A01) を表すオブジェクトで、KsyHat
オブジェクトの irtx
プロパティから得ることができます。このオブジェクトは以下のメソッドを持っています。
setState() メソッド
setStates()
メソッドは、パワー赤外発光ダイオードの発光状態 (ON/OFF) をセットします。このメソッドは Promise
オブジェクトを返します。
このメソッドは、次の引数を受け取ります。
No. | 型 | 必須 |説明
:---------|:--------|:-----|:---------------
第 1 引数 | Boolean | 必須 | 発光状態 (true
: 点灯, false
: 消灯)
次のコードは赤外線を発光します。
await ksyhat.irtx.setState(true);
KsyHatSwitch
オブジェクト
KsyHatSwitch
オブジェクトはタクトスイッチ (Alps/Alpine SKRTLAE010) を表すオブジェクトで、KsyHat
オブジェクトの switch
プロパティから得ることができます。このオブジェクトは以下のメソッドを持っています。
start() メソッド
start()
メソッドは、タクトスイッチの状態変化のモニタリングを開始します。このメソッドは何も返しません。このメソッドに引数はありません。
次のコードは、10 秒間、タクトスイッチの状態変化をモニタリングし、スイッチが押されたら Pressed
を、スイッチが離されたら Released
を出力します。
// KsyHatSwitch オブジェクトの pressed イベントのリスナーをセット
ksyhat.switch.on('pressed', (state) => {
if (state === true) {
console.log('Pressed');
} else {
console.log('Released');
}
});
// タクトスイッチのモニタリングを開始
ksyhat.switch.start();
// 10 秒間待つ
await ksyhat.wait(10000);
// タクトスイッチのモニタリングを終了
ksyhat.switch.stop();
stop() メソッド
stop()
メソッドは、タクトスイッチの状態変化のモニタリングを終了します。このメソッドは何も返しません。このメソッドに引数はありません。
このメソッドの使い方は、start()
メソッドの説明のサンプルコードをご覧ください。
pressed
イベント
start()
メソッドを呼び出してから stop()
メソッドを呼び出すまでの間、タクトスイッチの状態変化があれば、KsyHatSwitch
オブジェクトで pressed
イベントが発生します。
リスナー関数には、タクトスイッチの状態を表す Boolean 値が引き渡されます。true
ならスイッチが押されたことを意味し、false
ならスイッチが離されたことを意味します。
このイベントの扱い方については、start()
メソッドの説明のサンプルコードをご覧ください。
KsyHatMotion
オブジェクト
KsyHatMotion
オブジェクトは焦電センサ (村田 IRA-S210ST01) を表すオブジェクトで、KsyHat
オブジェクトの motion
プロパティから得ることができます。このオブジェクトは以下のメソッドを持っています。
start() メソッド
start()
メソッドは、焦電センサの反応のモニタリングを開始します。このメソッドは何も返しません。このメソッドに引数はありません。
次のコードは、10 秒間、焦電センサの反応をモニタリングし、反応を検知したらその結果を出力します。
// KsyHatMotion オブジェクトの detected イベントのリスナーをセット
ksyhat.motion.on('detected', (data) => {
console.log(data);
});
// 焦電センサの反応のモニタリングを開始
ksyhat.motion.start();
// 10 秒間待つ
await ksyhat.wait(10000);
// 焦電センサの反応のモニタリングを終了
ksyhat.motion.stop();
焦電センサが動きを検知すると、次のような結果が連続して出力されます。
{ output: 'T', value: true }
{ output: 'T', value: false }
{ output: 'T', value: true }
{ output: 'D', value: true }
{ output: 'T', value: true }
output
が T
の結果は、焦電センサが移動方向検出を出力したことを表します。output
が D
の結果は、焦電センサがコンパレータ出力したことを表します。
stop() メソッド
stop()
メソッドは、焦電センサの反応のモニタリングを終了します。このメソッドは何も返しません。このメソッドに引数はありません。
このメソッドの使い方は、start()
メソッドの説明のサンプルコードをご覧ください。
detected
イベント
start()
メソッドを呼び出してから stop()
メソッドを呼び出すまでの間、焦電センサの反応があれば、KsyHatMotion
オブジェクトで detected
イベントが発生します。
リスナー関数には、次のプロパティを含んだオブジェクトが引き渡されます。
プロパティ | 型 | 説明
:---------|:--------|:---------------
output
| String | T
なら BD9251FV の T_OUT (移動方向検出出力) を表し、D
なら BD9251FV の D_OUT (コンパレータ出力) を表します。
value
| Boolean | 該当の出力が HIGH なら true
、LOW なら false
がセットされます。
このイベントの扱い方については、start()
メソッドの説明のサンプルコードをご覧ください。
KsyHatSht3x
オブジェクト
KsyHatSht3x
オブジェクトは温湿度センサ (Sensirion SHT30-DIS-B2.5KS) を表すオブジェクトで、KsyHat
オブジェクトの sht3x
プロパティから得ることができます。このオブジェクトは以下のメソッドを持っています。
read() メソッド
read()
メソッドは、温湿度センサ (Sensirion SHT30-DIS-B2.5KS) から I2C を通して温度と湿度を読み取ります。このメソッドは Promise
オブジェクトを返します。このメソッドに引数はありません。
このメソッドは、次のプロパティを含んだオブジェクトを返します。
プロパティ名 | 型 | 説明
:-------------|:-------|:-------------------------
temperature
| Number | 温度 (degC)
humidity
| Number | 湿度 (%RH)
const res = await ksyhat.sht3x.read();
console.log(res);
上記コードは、次のような結果を出力します。
{ temperature: 29.7, humidity: 36.4 }
HAT の I2C ベースのセンサは 1 秒未満で繰り返し読み取りを行うとエラーになる場合がります。そのため、何度も呼び出す必要がある場合は、1 秒以上の間隔をあけてください。
KsyHatVeml7700
オブジェクト
KsyHatVeml7700
オブジェクトは環境光センサ (VISHAY VEML7700-TT) を表すオブジェクトで、KsyHat
オブジェクトの veml7700
プロパティから得ることができます。このオブジェクトは以下のメソッドを持っています。
read() メソッド
read()
メソッドは、温湿度センサ (Sensirion SHT30-DIS-B2.5KS) から I2C を通して照度を読み取ります。このメソッドは Promise
オブジェクトを返します。このメソッドに引数はありません。
このメソッドは、次のプロパティを含んだオブジェクトを返します。
プロパティ名 | 型 | 説明
:-------------|:-------|:-------------------------
illuminance
| Number | 照度 (lx)
const res = await ksyhat.veml7700.read();
console.log(res);
上記コードは、次のような結果を出力します。
{ illuminance: 195.4 }
HAT の I2C ベースのセンサは 1 秒未満で繰り返し読み取りを行うとエラーになる場合がります。そのため、何度も呼び出す必要がある場合は、1 秒以上の間隔をあけてください。
KsyHatOmron2smpd
オブジェクト
KsyHatOmron2smpd
オブジェクトは絶対圧センサ (オムロン 2SMPB-02E) を表すオブジェクトで、KsyHat
オブジェクトの omron2smpd
プロパティから得ることができます。このオブジェクトは以下のメソッドを持っています。
read() メソッド
read()
メソッドは、絶対圧センサ (オムロン 2SMPB-02E) から I2C を通して大気圧と温度を読み取ります。このメソッドは Promise
オブジェクトを返します。このメソッドに引数はありません。
このメソッドは、次のプロパティを含んだオブジェクトを返します。
プロパティ名 | 型 | 説明
:-------------|:-------|:-------------------------
pressure
| Number | 大気圧 (hPa)
temperature
| Number | 温度 (degC)
const res = await ksyhat.omron2smpd.read();
console.log(res);
上記コードは、次のような結果を出力します。
{ pressure: 1005.8, temperature: 30.5 }
HAT の I2C ベースのセンサは 1 秒未満で繰り返し読み取りを行うとエラーになる場合がります。そのため、何度も呼び出す必要がある場合は、1 秒以上の間隔をあけてください。
リリースノート
- v0.1.0 (2022-11-24)
- 初回リリース
リファレンス
- KSY Smart Remote Control HAT[KSPST000000002] 商品ページ
- GitHub - KSY スマートリモコン HAT
- Sensirion デジタル温湿度センサー SHT30
- オムロン 形2SMPB-02E MEMS 絶対圧センサ
- 村田製作所 焦電型赤外線センサ IRA-S210ST01
- ローム 人感センサ用 IC 焦電型赤外線センサ用アンプ IC BD9251FV
- VISHAY 環境光センサ VEML7700-TT
ライセンス
The MIT License (MIT)
Copyright (c) 2022 Futomi Hatano