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版 リリース

SRF Ultrasonic Range Finder - I2C Mode

このライブラリは、Devantech社製SRFシリーズ超音波距離センサにおいてI2Cモードを使用した制御機能を提供する組み込みクラスです。

Library usage requirements
Type I2C
Name SRF_I2C
Version 1_00_00
Code size used 4.1KB
Resources used I2C × 1, Timer × 1

関連資料

  • SRF02 Ultrasonic Range Finder Technical Specification
  • SRF02 Ultrasonic Range Finder Technical Specification - I2C Mode



Abstracts

Methods()/PropertiesSummaryNote
new SRF_I2C()SRF_I2Cインスタンスを生成します。

{SRF_I2C} Instance

Methods()/PropertiesSummaryNote
.write()指定されたセンサレジスタに1バイトのデータを書き込みます。
.read()指定されたセンサレジスタから指定バイト長のデータを読み込みます。
.isReady()指定されたスレーブアドレスのセンサが実行可能状態であるか確認します。
.scanSlaveAddress()センサがサポートしている全てのスレーブアドレスをスキャンします。
.init()センサを初期化します。
.changeSlaveAddress()センサのスレーブアドレスを書き換えます。
.startMeasurement()測定を開始します。
.checkMeasComp()測定完了を確認します。
.getResult()測定結果を取得します。
.startMeasAndGetResult()測定を開始し、測定完了を待ってから、測定結果を取得します。
.VERSIONバージョン情報
maj : {number} Main Version
min : {number} Minor Version
rev : {number} Revision



Details

new SRF_I2C(i2c[,config])

SRF_I2Cインスタンスを生成します。

NameTypeM/ODescription                            Note
i2c{I2C}mandatory事前にオープン済みのI2Cインスタンスを指定します。
configObjectoptionalコンフィグレーション
詳細はconfigを参照してください。
return{SRF_I2C}-{SRF_I2C} : 生成された{SRF_I2C}異常が発生した時は、例外となります。

config

NameTypeM/ODescriptionNote
slaveAddressnumberoptional対象スレーブアドレス(7ビット)
設定範囲: 0x70~0x7F
デフォルト値は0x70となります。
rangingModenumberoptionalレンジングモード
測定結果の出力単位を指定します。
0x50: インチ
0x51: センチメートル
0x52: マイクロ秒
デフォルト値は0x51となります。

.write(reg,val)

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

NameTypeM/ODescriptionNote
regnumbermandatory対象レジスタ
設定範囲: 0x00~0xFF
valnumbermandatory書き込みデータ
設定範囲: 0x00~0xFF
returnboolean-true: 成功
false: 失敗

.read(reg,len)

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

NameTypeM/ODescriptionNote
regnumbermandatory対象レジスタ
設定範囲: 0x00~0xFF
lennumbermandatory読み込みバイト長を指定します。
設定範囲: 1~255
returnArrayBuffer-読み込んだデータ
読み込みに失敗した場合は、サイズが0となります。

.isReady([slaveAddress])

指定されたスレーブアドレスのセンサが実行可能状態であるか確認します。
指定スレーブアドレスのセンサが存在しない又は、測定中によりセンサがビジー状態になっている場合、実行不可が返却されます。

NameTypeM/ODescriptionNote          
slaveAddressnumberoptionalスレーブアドレス(7ビット)
設定範囲: 0x70~0x7F
省略した場合は、現時点で設定されている対象スレーブアドレスとなります。
returnboolean-true: 実行可能
false: 実行不可
パラメータ異常の場合は例外となります。

.scanSlaveAddress()

センサがサポートしている全てのスレーブアドレスをスキャンします。
各スレーブアドレスに対して.isReady()による状態確認を行います。

NameTypeM/ODescriptionNote
returnArray-スキャンリスト
実行可能状態が検出されたスレーブアドレスの一覧が配列型で返却されます。配列の要素にはnumber型のスレーブアドレス値が格納されます。尚、不検出の場合は、配列の要素数が0となります。

.init([slaveAddress[,statusCheck]])

センサを初期化します。
対象スレーブアドレスのセンサに対して.isReady()による状態確認を行います。

切替先スレーブアドレスの指定は、同一バス上にスレーブアドレスが異なる本センサが複数存在する場合、それらを動的に切り替える際に使用します。基本的に、現在選択されている対象スレーブアドレスのセンサが測定完了している状態で切替を行う必要があります。
デフォルトの動作では、切替後のセンサに対して.isReady()による状態確認が行われます。尚、個々のセンサ状態を常に把握できている場合、必ずしも切替毎に状態確認を行う必要はありません。その際、statusCheckをfalseに指定して状態確認処理をスキップすることが可能です。

同一バス上に同じスレーブアドレスを持ったセンサが複数存在することがないようにしてください。

NameTypeM/ODescription               Note
slaveAddressnumberoptional切替先スレーブアドレス(7ビット)
設定範囲: 0x70~0x7F
省略した場合は、現時点で設定されている対象スレーブアドレスのセンサに対して初期化を行います。
statusCheckbooleanoptionalセンサ切替後の状態確認
true: 有効
false: 無効
デフォルト値はtrueとなります。
このパラメータは切替先スレーブアドレスが指定されている場合のみ有効となります。
returnboolean-true: 成功
false: 失敗
パラメータ異常の場合は例外となります。

.changeSlaveAddress(slaveAddress)

センサのスレーブアドレスを書き換えます。
本メソッドを実行する前に.init()によって書き換え対象センサのスレーブアドレスが選択され、実行可能状態となっている必要があります。
センサに対してスレーブアドレスの書き換えを発行すると、センサ内のROMが書き換えられ、センサが再起動します。以降、センサのスレーブアドレスは新スレーブアドレスとなります。
本メソッドは、その後、対象スレーブアドレスを新スレーブアドレスに切り替えて.init()を実行し、結果を返却します。したがって、本メソッド後に継続して測定を開始することが可能です。

スレーブアドレスの書き換えは、センサ内のROM書き換えを伴います。予期せぬ故障を避けるため、頻繁な使用は避けてください。

NameTypeM/ODescription                             Note
slaveAddressnumbermandatory新スレーブアドレス(7ビット)を指定します。
設定範囲: 0x70~0x7F
returnboolean-true: 成功
false: 失敗
パラメータ異常の場合は例外となります。

.startMeasurement()

測定を開始します。
本メソッド実行後、.checkMeasComp()で測定完了を待つ必要があります。
測定完了後、新たに測定を開始する場合は、このメソッドを再度呼び出す必要があります。

NameTypeM/ODescriptionNote
returnboolean-true: 成功
false: 失敗

.checkMeasComp()

測定完了を確認します。

NameTypeM/ODescriptionNote
returnboolean-true: 測定完了
false: 測定中

.getResult()

測定結果を取得します。
事前に.checkMeasComp()で測定完了を待つ必要があります。

NameTypeM/ODescriptionNote
returnnumber-測定結果
レンジングモードで指定されている単位で測定結果が出力されます。尚、距離が測定できなかった場合は0、センサ異常が発生した場合は-1となります。

.startMeasAndGetResult()

測定を開始し、測定完了を待ってから、測定結果を取得します。

NameTypeM/ODescriptionNote
returnnumber-測定結果
レンジングモードで指定されている単位で測定結果が出力されます。尚、距離が測定できなかった場合は0、センサ異常が発生した場合は-1となります。



Usage Examples

Sample 1

周期的に距離を測定するサンプルです。

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

if(!('SRF_I2C' in this)) { throw new Error('Please import the SRF_I2C library.'); }

//Specify the I2C connection settings for the SRFxx ultrasonic range finder.
var i2c = new I2C(1); //I2C node number
var ready = i2c.open(400000); //I2C baudrate
if(!ready) {
    throw new Error('I2C open failed. Check the I2C node number.');
}
//var srf = new SRF_I2C(i2c, { slaveAddress: 0x70 });
var srf = new SRF_I2C(i2c);
ready = srf.init();
if(!ready) {
    print('srf init failed');
    while(1);
}

var actFlag = true;

var measFlag = false;
var MEAS_INTERVAL = 1000; //ms
var tout = setInterval(function() { measFlag = true; }, MEAS_INTERVAL);

while(actFlag) {
    if(measFlag) {
        var utime = Date.now();
        var dist = srf.startMeasAndGetResult();
        print(utime + ': ' + dist);
        measFlag = false;
    }
}

clearInterval(tout);
i2c.close();

Sample 2

スレーブアドレスが異なる複数のセンサを順番に切り替えながら距離を測定するサンプルです。
はじめに.scanSlaveAddress()を使用してバス上に存在する全てのセンサを把握します。

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

if(!('SRF_I2C' in this)) { throw new Error('Please import the SRF_I2C library.'); }

var toHexStr = function(val) { return '0x' + ('00' + val.toString(16).toUpperCase()).substr(-2); };

//Specify the I2C connection settings for the SRFxx ultrasonic range finder.
var i2c = new I2C(1); //I2C node number
var ready = i2c.open(400000); //I2C baudrate
if(!ready) {
    throw new Error('I2C open failed. Check the I2C node number.');
}
var srf = new SRF_I2C(i2c);

var list = srf.scanSlaveAddress();
if(!list.length) {
    print('srf not found');
    while(1);
}
print('List[' + list.length + ']: ' + list);

var actFlag = true;
var index = 0;

var measFlag = false;
var MEAS_INTERVAL = 1000; //ms
var tout = setInterval(function() { measFlag = true; }, MEAS_INTERVAL);

while(actFlag) {
    if(measFlag) {
        var utime = Date.now();
        var addr = list[index];
        srf.init(addr, false); //Skip status check
        var dist = srf.startMeasAndGetResult();
        print(utime + ': [' + toHexStr(addr) + '] '+ dist);
        if(++index >= list.length) index = 0;
        measFlag = false;
    }
}

clearInterval(tout);
i2c.close();

Sample 3

対象センサのスレーブアドレスを新しいスレーブアドレスに書き換えるサンプルです。
スレーブアドレス書き換え後、距離の測定を継続します。

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

if(!('SRF_I2C' in this)) { throw new Error('Please import the SRF_I2C library.'); }

var TARGET_ADDRESS = 0x70;
var NEW_ADDRESS = 0x71;

var toHexStr = function(val) { return '0x' + ('00' + val.toString(16).toUpperCase()).substr(-2); };

//Specify the I2C connection settings for the SRFxx ultrasonic range finder.
var i2c = new I2C(1); //I2C node number
var ready = i2c.open(400000); //I2C baudrate
if(!ready) {
    throw new Error('I2C open failed. Check the I2C node number.');
}
var srf = new SRF_I2C(i2c);
ready = srf.init(TARGET_ADDRESS);
if(!ready) {
    print('target srf not found');
    while(1);
}

ready = srf.changeSlaveAddress(NEW_ADDRESS);
if(!ready) {
    print('new address srf not found');
    while(1);
}

print('Address change successful! [' + toHexStr(TARGET_ADDRESS) + ' to ' + toHexStr(NEW_ADDRESS) + ']');

var actFlag = true;

var measFlag = false;
var MEAS_INTERVAL = 1000; //ms
var tout = setInterval(function() { measFlag = true; }, MEAS_INTERVAL);

while(actFlag) {
    if(measFlag) {
        var utime = Date.now();
        var dist = srf.startMeasAndGetResult();
        print(utime + ': ' + dist);
        measFlag = false;
    }
}

clearInterval(tout);
i2c.close();


上記に記載されている会社名、製品名は、各社の登録商標または商標です。

Updated: 2022-04-14
← 前次 →
  • Abstracts
    • {SRF_I2C} Instance
  • Details
    • new SRF_I2C(i2c[,config])
    • .write(reg,val)
    • .read(reg,len)
    • .isReady([slaveAddress])
    • .scanSlaveAddress()
    • .init([slaveAddress[,statusCheck]])
    • .changeSlaveAddress(slaveAddress)
    • .startMeasurement()
    • .checkMeasComp()
    • .getResult()
    • .startMeasAndGetResult()
  • Usage Examples
    • Sample 1
    • Sample 2
    • Sample 3
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.