付属編: DS20L( LiDARデバイス搭載LoRaWAN距離検出センサー)で連続カウント測定を試してみる!
DS20L(LiDARデバイス搭載スマート距離検出センサー)のThe Things Stack Cloudへの登録、Tago.IOで見える化は以下を参照してください。
・The Things Stack Cloudから連携されたDS20L(LiDARデバイス搭載スマート距離検出センサー)のデータをTago.IOで見える化 Tips & Tricks 1 / 2
・The Things Stack Cloudから連携されたDS20L(LiDARデバイス搭載スマート距離検出センサー)のデータをTago.IOで見える化 Tips & Tricks 2 / 2
ここではDS20L検出対象物(人間や物)をカウントしながら連続測定できるように設定する方法をご紹介します。
1. DS20L を連続 ****カウントしながら測定できるよう設定
連続測定の消費電力は大きいため、DS20Lは外部電源を使用する必要があります。(スイッチをEに切り替え、外部電源を使用します。)
※連続カウント設定する場合は、写真右側 電源を専用ケーブルで外部供給します。
ATコマンドまたはダウンリンクコマンドによりDS20Lを設定します。
ATコマンド例: AT+MOD=2,1,50,200
LoRaWANダウンリンクコマンド例: 0A 02 00 00 32 00 00 00 C8
※DS20Lは連続測定+カウントモードになり、50mm以内でDS20Lが200msの間対象物を検出すると、+1カウントします。
DS20Lの設定についての詳細は以下のユーザマニュアルをご参照ください。
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル from CRI Japan, Inc.
Dragino LoRaWAN人感センサー&人感プローブ from CRI Japan, Inc.
2. TTN****エンドデバイスのアップリンクペイロードフォーマッター登録
以下のURLからアップリンクペイロードフォーマッターのjavascriptを取得します。
https://xxxxxxxx.com/DS20L/ DS02L_decoder_count.txt
下記よりコピー&ペーストしてご利用ください。
//The function is :
function Decoder(bytes, port) {
// Decode an uplink message from a buffer
// (array) of bytes to an object of fields.
var i;
var batV=0;//Battery,units:V
var mod = 0;
var Firmware = 0; // Firmware version; 5 bits
var sub_band;
var freq_band;
var sensor;
var firm_ver;
var distance;
var distance_state;
var interrupt_count;
var interrupt;
var alarm;
var dout;
var toilet_paper;
var limit;
var count;
var pulse_time;
var collection_threshold;
var count_method;
if(port==0x02)
{
batV= (bytes[0]<<8 | bytes[1])/1000;
interrupt = (bytes[2] >> 4) & 0x01;
mod = (bytes[2] >> 6) & 0x3F;
if(mod == 1)
{
distance = (bytes[3]<<8 | bytes[4]);
distance_state = bytes[5];
alarm = (bytes[2] >> 5) & 0x01;
interrupt = (bytes[2] >> 4) & 0x01;
interrupt_count = (bytes[6]<<24 | bytes[7]<<16 | bytes[8]<<8 | bytes[9]);
if(distance <=35)
toilet_paper=“FULL”;
else if(distance <= 150)
toilet_paper=“LESS”;
else if(distance >= 180)
toilet_paper=“NULL”;return {
BatV:batV,
Distance_mm:distance,
distance_state:distance_state,
Interrupt_count:interrupt_count,
Interrupt:interrupt,
alarm:alarm,
MOD:mod,
Toilet_paper:toilet_paper,
};
}
if (mod == 2)
{
count_method = (bytes[2] >> 5) & 0x01;
count =(bytes[3]<<24 | bytes[4]<<16 | bytes[5]<<8 | bytes[6]);
pulse_time=(bytes[7]<<24 | bytes[8]<<16 | bytes[9]<<8 | bytes[10]);
collection_threshold=(bytes[11]<<8 | bytes[12]);
return {
BatV:batV,
count:count,
pulse_time:pulse_time,
collection_threshold:collection_threshold,
MOD:mod,
count_method:count_method,
};
}
else if (mod == 3)
{
distance = (bytes[3]<<8 | bytes[4]);
distance_state = bytes[5];
alarm = (bytes[2] >> 5) & 0x01;
interrupt = (bytes[2] >> 4) & 0x01;
return {
BatV:batV,
Distance_mm:distance,
distance_state:distance_state,
alarm:alarm,
Interrupt:interrupt,
MOD:mod,
};
}
}if(port==0x05)
{
if(bytes[0]==0x21)
sensor_mode=“DS20L”;
else
sensor_mode=“NULL”;if(bytes[4]==0xff)
sub_band=“NULL”;
else
sub_band=bytes[4];
if(bytes[3]==0x01)
freq_band=“EU868”;
else if(bytes[3]==0x02)
freq_band=“US915”;
else if(bytes[3]==0x03)
freq_band=“IN865”;
else if(bytes[3]==0x04)
freq_band=“AU915”;
else if(bytes[3]==0x05)
freq_band=“KZ865”;
else if(bytes[3]==0x06)
freq_band=“RU864”;
else if(bytes[3]==0x07)
freq_band=“AS923”;
else if(bytes[3]==0x08)
freq_band=“AS923_1”;
else if(bytes[3]==0x09)
freq_band=“AS923_2”;
else if(bytes[3]==0x0A)
freq_band=“AS923_3”;
else if(bytes[3]==0x0B)
freq_band=“CN470”;
else if(bytes[3]==0x0C)
freq_band=“EU433”;
else if(bytes[3]==0x0D)
freq_band=“KR920”;
else if(bytes[3]==0x0E)
freq_band=“MA869”;firm_ver= (bytes[1]&0x0f)+‘.’+(bytes[2]>>4&0x0f)+‘.’+(bytes[2]&0x0f);
//alarm = bytes[5];
batV= (bytes[5]<<8 | bytes[6])/1000;return {
BatV:batV,
SENSOR_MODEL:sensor_mode,
FIRMWARE_VERSION:firm_ver,
FREQUENCY_BAND:freq_band,
SUB_BAND:sub_band,
SMODE:sensor,
};
}
}
取得したjavascriptをフォーマッターコードに登録します。
3. Tago.IO****にてダッシュボード作成
サンプルダッシュボード
以下のwidgetを使用しています。
必要なwidget を追加して、タイトル、データの取得元等を編集します。
カウント対象物の回数設定例(データは” DistanceDetector1”の” count”から取得)