Tafuta Msimbo

Kupima Umbali kwa Laser VL53L0X Moduli ya Pini 6 kwa Arduino

Kupima Umbali kwa Laser VL53L0X Moduli ya Pini 6 kwa Arduino

Katika mafunzo haya, tutajifunza jinsi ya kupima umbali kwa kutumia kihisi cha umbali cha laser cha VL53L0X na moduli ya pini 6. Kihisi hiki kidogo lakini chenye nguvu kinatumia teknolojia ya muda wa safari (time-of-flight) kutoa vipimo sahihi vya umbali hadi sm 200. Kwa kufuata mwongozo huu, utaweza kuunganisha kihisi na Arduino na kusoma thamani za umbali moja kwa moja kutoka kwenye mfuatiliaji wako wa serial.

VL53L0X 200cm range sensor

Kwa mradi huu, tutatumia kihisi cha VL53L0X, ambacho ni kidogo na rahisi kuunganisha katika matumizi mbalimbali. Kihisi kinawasiliana kupitia I2C, na kufanya iwe rahisi kuunganisha kwenye bodi ya Arduino. Katika video, utapata maelezo ya ziada na maonyesho ya mchakato wa usanidi (katika video saa 04:00).

Vifaa Vimeelezwa

VL53L0X ni kihisi cha umbali cha muda wa safari ambacho hutoa mwanga wa laser na kupima muda unaochukua mwanga kurudi baada ya kugonga kitu. Hii inaruhusu kuhesabu umbali wa kitu kwa usahihi. Kihisi hufanya kazi kwa voltage kati ya 2.6 V hadi 3.5 V, lakini kinaweza kuendeshwa kwa 5 V kutokana na mdhibiti wa voltage wa ndani.

Moduli ina pini sita: VCC, GND, SDA (laini ya data), SCL (laini ya saa), GPIO1 (I/O ya jumla), na XSHUT (pini ya kuzima). Pini ya GPIO1 haitumiwi katika usanidi huu lakini inaweza kuachwa bila kuunganishwa. Pini ya XSHUT inakuruhusu kuzima kihisi ili kuokoa nishati wakati haitumiki.

Maelezo ya Datasheet

MtengenezajiSTMicroelectronics
Nambari ya sehemuVL53L0X
Voltage ya mantiki/IO2.6 V hadi 3.5 V (5 V na mdhibiti)
Joto la uendeshaji-20 °C hadi 70 °C
Masafa ya kipimo30 mm hadi 2000 mm
Masafa ya mawasiliano ya I2C400 kHz
Ukubwa4.4 mm x 2.4 mm x 1 mm

  • Hakikisha ugavi wa nishati sahihi (5 V inapendekezwa).
  • Unganisha SDA na SCL kwenye pini sahihi za I2C kwenye Arduino.
  • Tumia resistors za kuvuta-juu kwenye laini za I2C ikihitajika.
  • Usiachie GPIO1 bila kuunganishwa; inaweza kuachwa ikielea.
  • Weka pini ya XSHUT juu wakati wa uendeshaji.
  • Pima umbali katika mazingira yenye mwanga mzuri kwa usahihi bora.
  • Sawazisha kihisi kwa vipimo sahihi.
  • Jaribu masafa ya kihisi kwa kuweka vitu katika umbali mbalimbali.
  • Fuatilia matokeo ya serial kwa usomaji wa umbali na ujumbe wa muda ulioisha.

Maelekezo ya Uunganishaji

Arduino wiring VL53L0X laser distance sensor
Arduino wiring VL53L0X laser distance sensor

Ili kuunganisha kihisi cha VL53L0X kwenye Arduino yako, anza kwa kuunganisha pini ya VCC ya kihisi kwenye pini ya 5V kwenye Arduino. Ifuatayo, unganisha pini ya GND kwenye GND kwenye Arduino. Pini ya SDA ya kihisi inapaswa kuunganishwa kwenye pini ya A4 kwenye Arduino (au pini ya SDA ikiwa bodi yako ina pini maalum za I2C). Vivyo hivyo, unganisha pini ya SCL ya kihisi kwenye pini ya A5 (au pini ya SCL). Acha pini ya GPIO1 bila kuunganishwa kwani haihitajiki kwa mradi huu.

Hatimaye, unganisha pini ya XSHUT kwenye pini ya dijiti 12 kwenye Arduino. Pini hii itatumika kudhibiti hali ya kuzima ya kihisi. Hakikisha miunganisho yote ni salama ili kuepuka matatizo yoyote ya mawasiliano.

Mifano ya Msimbo na Maelezo

Katika msimbo, tunaanza kwa kujumuisha maktaba muhimu na kuanzisha kihisi cha VL53L0X. Kazi ya setup inasanidi kihisi na kuanza vipimo vya umbali vinavyoendelea. Hapa kuna kipande kutoka kwa kazi ya setup:

void setup() {
  pinMode(12, INPUT_PULLUP);
  digitalWrite(12, HIGH);
  Serial.begin(9600);
  Wire.begin();
  sensor.init();
  sensor.setTimeout(500);
  sensor.startContinuous();
}

Katika kipande hiki, tunaweka pini 12 kama ingizo na resistor ya kuvuta-juu na kuanzisha mawasiliano ya serial kwa 9600 baud. Pia tunaanzisha kihisi na kuweka muda wa kusubiri kwa usomaji, kuhakikisha kinafanya kazi kwa kuendelea.

Ifuatayo, tunasoma umbali katika kazi ya loop, ambapo thamani iliyopimwa inachapishwa kwenye mfuatiliaji wa serial:

void loop() {
  int distance = sensor.readRangeContinuousMillimeters();
  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.print("mm");
  if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }
  Serial.println();
  delay(100);
}

Msimbo huu unasoma umbali kwa milimita na kuuchapisha kwenye mfuatiliaji wa serial. Ikiwa muda utaisha, inaonyesha kwamba kihisi hakikupata usomaji halali.

Maonyesho / Nini cha Kutarajia

Unapoendesha programu, unapaswa kuanza kuona vipimo vya umbali kwenye mfuatiliaji wa serial. Matokeo yatabadilika unaposogeza vitu karibu au mbali na kihisi. Unaweza kuona ujumbe wa muda ulioisha mara kwa mara ikiwa kihisi kitashindwa kupata usomaji (katika video saa 10:30). Ili kuboresha usahihi, zingatia kuchukua wastani wa usomaji mbalimbali.

Bilder

VL53L0X 200cm range sensor
VL53L0X 200cm range sensor
Arduino wiring VL53L0X laser distance sensor
Arduino wiring VL53L0X laser distance sensor
103-Measureing distance using VL53L0X TOF range sensor
Språk: C++
/* This example shows how to use continuous mode to take
range measurements with the 6-pin VL53L0X module. It is based on
vl53l0x_ContinuousRanging_Example.c from the VL53L0X API.

The range readings are in units of mm. 

Original source: https://github.com/adafruit/Adafruit_VL53L0X
Modified by Ahmad Shamshiri for RoboJax.com/RJT83
Date modified: May 31, 2018 at 19:25 in Ajax, Ontario, Canada
Watch the instruction video for this code https://youtu.be/S2jaAQEv3Yo

Pin connection
VL53L0X Pin  Arduino Pin
VCC         5V
GND         GND
SDA         A4 or SDA if available
SCL         A5 or SCL if available
GPIO1       leave it unconnected
XSHUT       D12 (digital 12 or pin 12)
*/


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

VL53L0X sensor;

void setup()
{
  pinMode(12,INPUT_PULLUP);
  digitalWrite(12,HIGH);
  Serial.begin(9600);
  Wire.begin();

  sensor.init();
  sensor.setTimeout(500);

  // 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()
{
  int distance =sensor.readRangeContinuousMillimeters();
  //int distance =sensor.startContinuous(100);
  
 //distance = distance;
  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.print("mm");
  if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }

  Serial.println();
  delay(100);
}

Tänker att du kanske behöver

Resurser och referenser

Filer📁

Fritzing-fil

  • VL53L0X_Distance_sensor_Squares
    VL53L0X_Distance_sensor_Squares.fzpz 0.02 MB
  • Adafruit VL6180X Time of Flight Distance Sensor
    Fritzing part for the Adafruit VL6180X Time of Flight distance sensor. This sensor measures absolute distance up to 100mm and ambient light, communicating via I2C. Includes the sensor breakout board and pin connections for use in Fritzing projects.
    Adafruit VL6180X Time of Flight Distance Sensor-1.fzpz 0.02 MB

Andra filer