NEQTO Docs
  • Languages icon日本語
    • English
  • ドキュメント
  • API
  • FAQ

›I2C

Getting Started

  • NEQTO Hello World!
  • Tutorial Step 1. NEQTO Console設定
  • Tutorial Step 2. デバイス設定とサービスの開始 (NEQTO Bridge)
  • Tutorial Step 2. デバイス設定とサービスの開始 (STM32 Discovery)
  • Tutorial Step 2. デバイス設定とサービスの開始 (SPRESENSE)
  • Tutorial Step 3. スクリプトを使ったアプリケーション開発

NEQTO

  • NEQTO アカウント登録
  • サブアカウント
  • APIの利用
  • GCP用NEQTO CloudSync
  • NEQTO Engineファームウェアリスト
  • お問い合わせに関するガイドライン

NEQTO Console

  • はじめに
  • 基本情報
  • 管理者専用の操作
  • デバイス管理
  • Linuxデバイス管理
  • 一括登録
  • スクリプト
  • アクション & コンタクト
  • Consoleでデータを表示
  • NEQTO Apps

    • NEQTO Apps について
    • NEQTO Infinitypool
    • NEQTO Insights
    • NEQTO Custodia
    • NEQTO Flow
  • Machine Driver
  • 推奨ブラウザ
  • 請求情報

SPRESENSE

    ハードウェア仕様

    • 01. About Spresense

    ソフトウェア仕様

    • 01. 動作フロー
    • 02. 初期インストール
    • 03. Spresense Wi-Fi 初期設定
    • 04. Spresense LTE-M 初期設定
    • 05. デバッグログ取得方法
    • 06. システムLED動作
    • 07. イベントメッセージ
    • 08. ファームウェア更新方法

    neqto.js

    • 01. About neqto.js
    • 02. Log
    • 03. Timers
    • 04. HTTP
    • 05. HTTPS
    • 06. MQTT
    • 07. Secure
    • 08. Storage
    • 09. Sleep
    • 10. RTC
    • 11. GPIO
    • 12. UART
    • 13. SPI
    • 14. I2C
    • 15. ADC
    • 16. GNSS
    • 17. Camera
    • 18. Utils
    • 19. nqSpresense
    • 20. nqService
    • 21. nqMqtt
    • 22. nqFOTA
    • 23. nqWiFi
    • 24. nqLte

STM32 Discovery

    ハードウェア仕様

    • 01. About STM32 Discovery Kit (B-L4S5I-IOT01A)

    ソフトウェア仕様

    • 01. 動作フロー
    • 02. 初期インストール
    • 03. STM32 Discovery Wi-Fi 初期設定
    • 04. デバッグログ取得方法
    • 05. システムLED動作
    • 06. イベントメッセージ
    • 07. ファームウェア更新方法

    neqto.js

    • 01. About neqto.js
    • 02. Log
    • 03. Timers
    • 04. HTTP
    • 05. HTTPS
    • 06. MQTT
    • 07. Secure
    • 08. Storage
    • 09. Sleep
    • 10. RTC
    • 11. UserSW
    • 12. GPIO
    • 13. UART
    • 14. SPI
    • 15. I2C
    • 16. ADC
    • 18. Utils
    • 19. nqDiscovery
    • 20. nqService
    • 21. nqMqtt
    • 22. nqFOTA
    • 23. nqWiFi

NEQTO Bridge

    ハードウェア仕様

    • 01. NEQTO Bridge Module
    • 02. NEQTO Bridge Wi-Fi Module
    • 03. NEQTO Bridge LTE-1 Module
    • 04. NEQTO Bridge LTE-M/NB Module
    • 05. NEQTO Bridge IO Board
    • 06. NEQTO Bridge Digital IO Board
    • 07. NEQTO Bridge Connector Board

    ソフトウェア仕様

    • 01. 動作フロー
    • 02. NEQTO Bridge Wi-Fi Module 初期設定
    • 03. NEQTO Bridge LTE Module 初期設定
    • 04. デバッグログ取得方法
    • 05. システムLED動作
    • 06. イベントメッセージ
    • 07. ファームウェア更新方法

    neqto.js

    • 01. About neqto.js
    • 02. Log
    • 03. Timers
    • 04. HTTP
    • 05. HTTPS
    • 06. MQTT
    • 07. Secure
    • 08. Storage
    • 09. Sleep
    • 10. RTC
    • 11. UserSW
    • 12. GPIO
    • 13. UART
    • 14. SPI
    • 15. I2C
    • 16. ADC
    • 17. BLE
    • 18. Utils
    • 19. nqBridge
    • 20. nqService
    • 21. nqMqtt
    • 22. nqFOTA
    • 23. nqWiFi
    • 24. nqLte
    • 25. nqLAN
    • 26. nqEx

Linux-based device

    ソフトウェア仕様

    • 01. システム要件
    • 02. インストール
    • 03. ソフトウェア構成
    • 04. 動作フロー
    • 05. デバッグログ取得方法
    • 06. イベントメッセージ
    • 07. ソフトウェア更新方法

    neqto.js

    • 01. About neqto.js
    • 02. Log
    • 03. Timers
    • 04. HTTP
    • 05. HTTPS
    • 06. MQTT
    • 07. Secure
    • 08. Storage
    • 09. RTC
    • 10. UNIXSocket
    • 11. FileSystem
    • 12. SubProcess
    • 13. Utils
    • 14. nqLinux
    • 15. nqService
    • 16. nqMqtt
    • 17. nqFOTA
    • 18. nqLAN

neqto.js Libraries

  • About neqto.js Libraries
  • UART

    • GM65 Barcode Reader
    • SRF Ultrasonic Range Finder - Serial Mode

    I2C

    • HTS221 v2 Temperature and Humidity Sensor
    • LIS2DW12 v2 Accelerometer
    • SRF Ultrasonic Range Finder - I2C Mode
    • [Archive] HTS221 Temperature and Humidity Sensor
    • [Archive] LIS2DW12 Accelerometer

    Utils

    • RTC Alarm Synchronized Scheduler

    Integration

    • AWS S3 v2
    • AWS IoT Core v2
    • Azure IoT v2
    • GCP IoT Core
    • [Archive] AWS S3
    • [Archive] AWS IoT Core

neqto.js Snippets

  • About neqto.js Snippets
  • DataDog
  • Dropbox
  • Google Sheets
  • InfluxDB
  • Oracle Cloud Object Storage
  • Salesforce
  • SAP Cloud Platform Internet of Things
  • Splunk
  • Niagara

Release Notes

  • NEQTO Console アップデート
  • NEQTO Firmware (Bridge Wi-Fi/LTE Module) リリース
  • NEQTO Firmware (STM32 Discovery Wi-Fi) リリース
  • NEQTO Firmware (Spresense Wi-Fi/LTE-M) リリース
  • NEQTO Engine Linux版 リリース

LIS2DW12 v2 Accelerometer

このライブラリは、STMicroelectronics社製LIS2DW12加速度センサを制御する機能を提供する組み込みクラスです。

Library usage requirements
Type I2C
Name LIS2DW12_V2
Version 2020-12-10
Code size used 3.7KB
Resources used I2C x 1, Timers x 1

関連資料

STMicroelectronics社製LIS2DW12加速度センサの詳細については、データシートを参照してください。



Abstracts

Methods()/PropertiesSummary
new LIS2DW12()LIS2DW12インスタンスを作成します。

{LIS2DW12} Instance

Methods()/PropertiesSummary
.write()I2Cデバイスの指定したレジスタに1バイトのデータを書き込みます。
.read()I2Cデバイスの指定したレジスタから1バイトのデータを読み込みます。
.readBuff()I2Cデバイスの指定されたレジスタから指定された長さのデータを読み込みます。
.init()センサを初期化します。
.measOn()センサの電源を入れ、測定を開始します。
.measOff()センサの電源を切ります。
.getFifoNum()FIFOバッファに保存されているサンプル数を取得します。
.readFifo()X、Y、Z軸の直線加速度測定結果を取得します。
.readFifoMaxAcc()X、Y、Z軸の合成加速度最大値、およびそのサンプルの直線加速度値を取得します。

Details

new LIS2DW12(i2c)

LIS2DW12インスタンスを作成します。

Instance Methods

.write(reg,data)

I2Cデバイスの指定したレジスタに1バイトのデータを書き込みます。
センサのレジスタに直接アクセスする場合に使用します。

NameTypeDefaultSummary
regnumberMANDATORY対象レジスタ
設定範囲: 0x00~0xFF
datanumberMANDATORY書き込みデータ
設定範囲: 0x00~0xFF
returnboolean-true: 成功
false: 失敗

.read(reg)

I2Cデバイスの指定したレジスタから1バイトのデータを読み込みます。
センサのレジスタに直接アクセスする場合に使用します。

NameTypeDefaultSummary
regnumberMANDATORY対象レジスタ
設定範囲: 0x00~0xFF
returnnumber, undefined-読み込んだデータ
読み込みに失敗した場合はundefinedを返します。

.readBuff(reg,len)

I2Cデバイスの指定されたレジスタから指定された長さのデータを読み込みます。
センサのレジスタに直接アクセスする場合に使用します。

NameTypeDefaultSummary
regnumberMANDATORY対象レジスタ
設定範囲: 0x00~0xFF
lennumberMANDATORY読み込みデータ長(バイト)
指定可能な最大長は255バイトです。
returnArrayBuffer, undefined-読み込んだデータ
読み込みに失敗した場合はundefinedを返します。

.init()

センサを初期化します。
このメソッドは、インスタンス作成後、はじめに呼び出す必要があります。

NameTypeDefaultSummary
returnboolean-true: 成功
false: 失敗

.measOn(odr,mode,bwfilter,fs,fds,lownoise)

センサの電源を入れ、測定を開始します。
各種加速度測定モードを選択することができます。詳細については、センサのデータシートをご参照ください。

NameTypeDefaultSummary
odrnumberMANDATORY出力データレート
[ 設定値: High-Performance Mode時 / Low-Power Mode時 ]
1: 12.5 / 1.6 Hz
2: 12.5 / 12.5 Hz
3: 25 / 25 Hz
4: 50 / 50 Hz
5: 100 / 100 Hz
6: 200 / 200 Hz
7: 400 / 200 Hz
modenumberMANDATORYPowerモード及び分解能
0: High-Performance Mode (14-bit)
1: Low-Power Mode 1 (12-bit)
2: Low-Power Mode 2 (14-bit)
3: Low-Power Mode 3 (14-bit)
4: Low-Power Mode 4 (14-bit)
bwfilternumberMANDATORYフィルタ帯域幅
0: ODR/2
1: ODR/4
2: ODR/10
3: ODR/20
fsnumberMANDATORYフルスケール
0: ±2g
1: ±4g
2: ±8g
3: ±16g
fdsbooleanMANDATORYフィルタタイプ
true: ハイパスフィルタ
false: ローパスフィルタ
lownoisebooleanMANDATORY低ノイズ動作モード
true: 有効
false: 無効
returnboolean-true: 成功
false: 失敗

.measOff()

センサの電源を切り、消費電力を削減します。

NameTypeDefaultSummary
returnundefined--

.getFifoNum()

FIFOバッファに保存されているサンプル数を取得します。
センサのFIFOバッファーは、最大32サンプルの3軸加速度データを保存することができます。
したがって、戻り値のサンプル数が32となった場合、一部のサンプルが上書きされ、データが失われた可能性があります。
データの損失を防ぐためには、最適な出力データレートの選択と分散的なアプリケーション処理を実装する必要があります。

NameTypeDefaultSummary
returnnumber-FIFOバッファに保存されているサンプル数

.readFifo(num)

X、Y、Z軸の直線加速度測定結果を取得します。

NameTypeDefaultSummary
numnumberMANDATORY読み出しサンプル数
.getFifoNum()メソッドで取得したサンプル数以下である必要があります。
returnarray-3軸直線加速度値(g)を[ x[], y[], z[] ]形式の2次元配列で返します。
配列の要素はnumber型です。
読み出しに失敗した場合は、空の配列[ [], [], [] ]が返されます。

.readFifoMaxAcc(num)

X、Y、Z軸の合成加速度最大値、およびそのサンプルの直線加速度値を取得します。
読み出したnumサンプルデータのうち、3軸合成加速度値が最も大きいサンプルのデータを返します。

NameTypeDefaultSummary
numnumberMANDATORY読み出しサンプル数
.getFifoNum()メソッドで取得したサンプル数以下である必要があります。
returnarray-3軸合成加速度値m(g)と3軸直線加速度値(g)を[m, x, y, z]形式の配列で返します。
配列の要素はnumber型です。
読み出しに失敗した場合は、3軸合成加速度値が-1となります。

Usage Examples

Sample 1: 指数平滑法による連続測定

// IMPORTED LIBRARIES
// - LIS2DW12_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(1);
} else{
    throw("Incompatible device.");
}

i2c.open(400000); // Baudrate: 400000
var lis2dw12 = new LIS2DW12(i2c);
var ready = lis2dw12.init();

var results;
var ewmaVals = []; // Smoothed results (Exponential Weighted Moving Average)
var prevVals = []; // Stored previous results
var isFirstRun = true;
var alpha = 0.5;

var count = 0;
var maxCount = 100;
var loopFlag = true;

if (!ready) {
    print("Error: Unable to connect to LIS2DW12");
}
else{
    // 100 Hz, High Perf, ODR/2, +-2g, Low pass filter, Low noise enabled
    var ready2 = lis2dw12.measOn(5, 0, 0, 0, false, true);
    if(!ready2) print('measOn unsuccessful');
    else {
        print('measOn successful');
        while(loopFlag){
            var num = lis2dw12.getFifoNum();
            // print('accnum: '+num);
            if(num == 32) print('Warning: Fifo buffer possible overrun!');

            if(num!=0){
                results = lis2dw12.readFifo(num);

                for(var i=0; i<num; i++) {
                    if(isFirstRun){
                       isFirstRun = false;
                       print('|  cnt  |   x  |   y  |   z  |  smx |  smy |  smz |');
                       print(`|   ${count}   | ${results[0][0].toFixed(2)} | ${results[1][0].toFixed(2)} | ${results[2][0].toFixed(2)} |  { } |  { } |  { } |`);
                        count++;
                    } else {
                        for (var j = 0; j < 3; j++) { // 3-Axis X, Y, Z
                            if (ewmaVals.length < 3) { // Initial values for ewmaVals
                                ewmaVals[j] = results[j][0];
                            } else {
                                ewmaVals[j] = (alpha * prevVals[j]) + ((1-alpha) * ewmaVals[j]);
                            }
                            prevVals[j] = results[j][i];
                        }
                        print(`|   ${count}   | ${results[0][i].toFixed(2)} | ${results[1][i].toFixed(2)} | ${results[2][i].toFixed(2)} | ` +
                              `${ewmaVals[0].toFixed(2)} | ${ewmaVals[1].toFixed(2)} | ${ewmaVals[2].toFixed(2)} |`);
                        if(count++ >= maxCount){
                            loopFlag = false;
                            break;
                        }
                    }
                }
            }
        }
    }
    lis2dw12.measOff();
}
i2c.close();

Sample 2: 衝撃検出

// IMPORTED LIBRARIES
// - LIS2DW12_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(1);
} else{
    throw("Incompatible device.");
}

i2c.open(400000); // Baudrate: 400000
var lis2dw12 = new LIS2DW12(i2c);
var ready = lis2dw12.init();
var dateTime;

var results;
var highThreshold = 2.00; // Shock threshold engage
var lowThreshold = 0.50; // Shock threshold release
var detection = false;
var maxShock = [0, 0, 0, 0];
var maxShockTime;

var count = 0;
var maxCount = 100;
var loopFlag = true;

if (!ready) {
    print("Error: Unable to connect to LIS2DW12");
}
else{
    // 400 Hz, High Perf, ODR/2, +-16g, High pass filter, Low noise enabled
    var ready2 = lis2dw12.measOn(7, 0, 0, 3, true, true);
    if(!ready2) print('measOn unsuccessful');
    else {
        print('measOn successful');
        while(loopFlag){
            var num = lis2dw12.getFifoNum();
            // print('accnum: '+num);
            if(num == 32) print('Warning: Fifo buffer possible overrun!');

            if(num!=0){
                results = lis2dw12.readFifoMaxAcc(num);

                if(!detection && results[0] > highThreshold){
                    print("Warning: Shock detected!");
                    detection = true;
                    if(maxShock[0] <= results[0]){
                      maxShock = results.slice();
                      maxShockTime = Date.now();
                    }
                } else if(detection && results[0] < lowThreshold){
                    detection = false;
                    print(`[Max Shock] ${maxShockTime}, Magnitude: ${maxShock[0].toFixed(2)}, X: ${maxShock[1].toFixed(2)}, Y: ${maxShock[2].toFixed(2)}, Z: ${maxShock[3].toFixed(2)}`);
                    // loopFlag = false; // One-shock detection
                    var maxShock = [0, 0, 0, 0]; // Reset
                }
            }
        }
    }
    lis2dw12.measOff();
}
i2c.close();
上記に記載されている会社名、製品名は、各社の登録商標または商標です。

Updated: 2021-10-05
← 前次 →
  • Abstracts
    • {LIS2DW12} Instance
  • Details
    • new LIS2DW12(i2c)
    • Instance Methods
  • Usage Examples
    • Sample 1: 指数平滑法による連続測定
    • Sample 2: 衝撃検出
NEQTO とはニュースサービスFAQプライバシーポリシー}
NEQTO Console
はじめに基本情報管理者専用の操作デバイス管理NEQTO Apps
NEQTO Bridge
NEQTO Bridge ピン配置NEQTO Bridge Wi-Fi ModuleNEQTO Bridge LTE-1 Moduleデバッグログ取得方法イベントメッセージ
APIのドキュメント
APIの利用グローバル APIリージョン APIAPIサービス利用規約
Jigsaw, Inc.
© 2023 JIG-SAW INC.