Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

距離センサー VL53L0Xのエラー対処方法 #1

Open
Hammer-Head7 opened this issue Oct 17, 2022 · 5 comments
Open

距離センサー VL53L0Xのエラー対処方法 #1

Hammer-Head7 opened this issue Oct 17, 2022 · 5 comments

Comments

@Hammer-Head7
Copy link
Owner

VL53L0Xを使用した時に「Failed to detect and initialize sensor!」とエラーが出てしまいました。
その対処方法がほとんど英語の文献でわかりづらかったので、開発の参考になるようここに忘備録として置いておきます。
個人開発なので間違っている可能性もあります。それについてはご容赦お願いします。
ちなみに私が使っているマイコンとセンサーについては下記に記載しておきます。

使用Arduino
 ・ESP8266(LOLIN (WEMOS) D1 R2 & mini)(Aliexpress)
購入先URL:https://ja.aliexpress.com/item/32843721010.html?spm=a2g0o.order_list.0.0.1875585aLgJ1qW&gatewayAdapt=glo2jpn

センサー
 ・VL53L0X(スイッチサイエンス)
購入先URL:https://www.switch-science.com/products/2894?variant=42381945798854

@Hammer-Head7
Copy link
Owner Author

Hammer-Head7 commented Oct 17, 2022

エラーが出た時はこんな感じでした

--------------- CUT HERE FOR EXCEPTION DECODER ---------------

Soft WDT reset

stack>>>

ctx: cont
sp: 3ffffdf0 end: 3fffffc0 offset: 01a0
3fffff90: 3fffdad0 3ffee64c 3ffee4f8 4020106c
3fffffa0: feefeffe 00000000 3ffee6a0 40202a18
3fffffb0: feefeffe feefeffe 3ffe85e0 40100db1
<<<stack<<<

--------------- CUT HERE FOR EXCEPTION DECODER ---------------
c_⸮rS⸮fJ⸮j⸮Failed to detect and initialize sensor!

@Hammer-Head7
Copy link
Owner Author

Hammer-Head7 commented Oct 17, 2022

現在は動作しており、変更前と変更後のプログラムをここに記載しておきます。
次のコメントにて配線の変更点を記載しておきます。

変更前プログラム

/* This example shows how to use continuous mode to take
range measurements with the VL53L0X. It is based on
vl53l0x_ContinuousRanging_Example.c from the VL53L0X API.

The range readings are in units of mm. */

#include <Wire.h>
#include <VL53L0X.h>

VL53L0X sensor;

void setup()
{
Serial.begin(9600);
Wire.begin();

sensor.setTimeout(500);
if (!sensor.init())
{
Serial.println("Failed to detect and initialize sensor!");
while (1) {}
}

// Start continuous back-to-back mode (take readings as
// fast as possible). To use continuous timed mode
// instead, provide a desired inter-measurement period in
// ms (e.g. sensor.startContinuous(100)).
sensor.startContinuous();
}

void loop()
{
Serial.print(sensor.readRangeContinuousMillimeters());
if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }

Serial.println();
}

変更後プログラム

/* This example shows how to use continuous mode to take
range measurements with the VL53L0X. It is based on
vl53l0x_ContinuousRanging_Example.c from the VL53L0X API.

The range readings are in units of mm. */

#include <Wire.h>
#include <VL53L0X.h>

VL53L0X sensor;

void setup()
{
Serial.begin(9600);
delay(50); //←変更箇所
Wire.begin();

sensor.setTimeout(500);
if (!sensor.init())
{
Serial.println("Failed to detect and initialize sensor!");
while (1) {}
}

// Start continuous back-to-back mode (take readings as
// fast as possible). To use continuous timed mode
// instead, provide a desired inter-measurement period in
// ms (e.g. sensor.startContinuous(100)).
sensor.startContinuous();
}

void loop()
{
Serial.print(sensor.readRangeContinuousMillimeters());
if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }

Serial.println();
}

@Hammer-Head7
Copy link
Owner Author

Hammer-Head7 commented Oct 17, 2022

そして、配線については以下のようになります。
変更前

VCC- 3V3
GND- G
SDA- D2
SCL - D1
XSHUT - ×
GPIO - ×

変更後
VCC- 5 ← 変更箇所
GND- G
SDA- D2
SCL - D1
XSHUT - RST ← 変更箇所
GPIO - ×

@Hammer-Head7
Copy link
Owner Author

プログラムを変えた理由
3V3PINを使用する時、立ち上がったESP8266はすぐには3.3Vにはならず、少し時間をかけて、3.3Vになるそう。

以下参考URL
https://arduino.stackexchange.com/questions/78209/failed-to-boot-vl53l0x-vl53l0x-error-6

配線を変更した理由
複数使用するときに起動するための電流値もしくは電圧値が足りなくなる可能性が有るので、5Vに配線し直しました。←動作するけど、取得データ値が65535になる。
↑この問題3V3でも接続がちゃんとできていれば反応しました。
また、XSHUTについてはI2Cのアドレスを識別するために必要らしい?(まあ本当かどうかは知らんけど....)

以下参考URL
pololu/vl53l0x-arduino#33

@Hammer-Head7
Copy link
Owner Author

Hammer-Head7 commented Oct 17, 2022

私が分かったのはこの辺ぐらいです。
まとめ

  • ちゃんと配線する
  • 3.3Vで上手くいかない場合、Wire.begin()の前にdelay(50);を入れてみる
  • それでもいかない場合はセンサーが5V動作するか確認して5VPINに接続してみる
  • そしてXSHUTはRSTPINに接続する

皆さんの手助けになれば幸いです。ではでは ✋

@Hammer-Head7 Hammer-Head7 changed the title Failed to detect and initialize sensor! (VL53L0X) Failed to detect and initialize sensor! (VL53L0X)日本語 Oct 17, 2022
@Hammer-Head7 Hammer-Head7 changed the title Failed to detect and initialize sensor! (VL53L0X)日本語 Failed to detect and initialize sensor! (VL53L0X)日本語記載 Oct 17, 2022
@Hammer-Head7 Hammer-Head7 changed the title Failed to detect and initialize sensor! (VL53L0X)日本語記載 距離センサー VL53L0Xのエラー対処方法(忘備録) Oct 18, 2022
@Hammer-Head7 Hammer-Head7 changed the title 距離センサー VL53L0Xのエラー対処方法(忘備録) 距離センサー VL53L0Xのエラー対処方法 Feb 7, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant