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

›UART

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の利用
  • NEQTO Engineファームウェアリスト
  • お問い合わせに関するガイドライン
  • NEQTO 製品を安全に安心してご使用いただくために
  • 脆弱性開示ポリシー

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. SubTask
    • 14. Queue
    • 15. Utils
    • 16. nqLinux
    • 17. nqService
    • 18. nqMqtt
    • 19. nqFOTA
    • 20. 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
    • [Archive] 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
  • Splunk
  • Niagara
  • [Archive] SAP Cloud Platform Internet of Things

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版 リリース
  • neqto.js Libraries リリース

SRF Ultrasonic Range Finder - Serial Mode

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

Library usage requirements
Type UART
Name SRF_SERIAL
Version 1_00_00
Code size used 3.9KB
Resources used UART × 1, Timer × 1

関連資料

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



Abstracts

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

{SRF_SERIAL} Instance

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



Details

new SRF_SERIAL(uart[,config])

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

NameTypeM/ODescriptionNote                                  
uart{UART}mandatory事前にオープン済みのUARTインスタンスを指定します。
UARTの設定は、センサの型番によって異なります。使用するセンサの技術仕様を確認してください。
SRF02を使用する場合は
下記設定となります。
ボーレート : 9600bps
ハードウェアフロー : 無効
パリティビット : 無し
データビット : 8ビット
ストップビット : 2ビット
configObjectoptionalコンフィグレーション
詳細はconfigを参照してください。
return{SRF_SERIAL}-{SRF_SERIAL} : 生成された{SRF_SERIAL}異常が発生した時は、例外となります。

config

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

.write(cmd)

書き込みコマンドを実行します。
センサに直接アクセスする際に使用します。

NameTypeM/ODescriptionNote
cmdnumbermandatory書き込みコマンド
設定範囲: 0x00~0xFF
returnboolean-true: 成功
false: 失敗

.read(cmd,len)

読み出しコマンドを実行します。
センサに直接アクセスする際に使用します。

NameTypeM/ODescriptionNote
cmdnumbermandatory読み出しコマンド
設定範囲: 0x00~0xFF
lennumbermandatoryコマンド応答データのバイト長を指定します。
設定範囲: 1~512
returnArrayBuffer-コマンド応答データ
失敗した場合は、サイズが0となります。

.isReady([address])

指定されたデバイスアドレスのセンサが実行可能状態であるか確認します。
指定デバイスアドレスのセンサが存在しない場合、実行不可が返却されます。

NameTypeM/ODescriptionNote          
addressnumberoptionalデバイスアドレス
設定範囲: 0x00~0x0F
省略した場合は、現時点で設定されている対象デバイスアドレスとなります。
returnboolean-true: 実行可能
false: 実行不可
パラメータ異常の場合は例外となります。

.scanAddress()

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

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

.init([address[,statusCheck]])

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

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

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

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

.changeAddress(address)

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

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

NameTypeM/ODescription                                         Note
addressnumbermandatory新デバイスアドレスを指定します。
設定範囲: 0x00~0x0F
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_SERIAL' in this)) { throw new Error('Please import the SRF_SERIAL library.'); }

//Specify the UART connection settings for the SRFxx ultrasonic range finder.
var uart = new UART(1); //UART node number
var ready = uart.open(9600,false,0,0,1); //UART settings for SRF02
if(!ready) {
    throw new Error('UART open failed. Check the UART node number.');
}
//var srf = new SRF_SERIAL(uart, { address: 0x00 });
var srf = new SRF_SERIAL(uart);
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);
uart.close();

Sample 2

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

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_SERIAL' in this)) { throw new Error('Please import the SRF_SERIAL library.'); }

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

//Specify the UART connection settings for the SRFxx ultrasonic range finder.
var uart = new UART(1); //UART node number
var ready = uart.open(9600,false,0,0,1); //UART settings for SRF02
if(!ready) {
    throw new Error('UART open failed. Check the UART node number.');
}
var srf = new SRF_SERIAL(uart);

var list = srf.scanAddress();
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);
uart.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_SERIAL' in this)) { throw new Error('Please import the SRF_SERIAL library.'); }

var TARGET_ADDRESS = 0x00;
var NEW_ADDRESS = 0x01;

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

//Specify the UART connection settings for the SRFxx ultrasonic range finder.
var uart = new UART(1); //UART node number
var ready = uart.open(9600,false,0,0,1); //UART settings for SRF02
if(!ready) {
    throw new Error('UART open failed. Check the UART node number.');
}
var srf = new SRF_SERIAL(uart);
ready = srf.init(TARGET_ADDRESS);
if(!ready) {
    print('target srf not found');
    while(1);
}

ready = srf.changeAddress(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);
uart.close();


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

Updated: 2022-04-14
← 前次 →
  • Abstracts
    • {SRF_SERIAL} Instance
  • Details
    • new SRF_SERIAL(uart[,config])
    • .write(cmd)
    • .read(cmd,len)
    • .isReady([address])
    • .scanAddress()
    • .init([address[,statusCheck]])
    • .changeAddress(address)
    • .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.
© 2025 JIG-SAW INC.