Gebruik van 'n CJMCU VL53L0X Laserafstandmeter met Arduino
Hierdie tutoriaal demonstreer hoe om die CJMCU VL53L0X-laserafstandmeter met 'n Arduino te gebruik. Hierdie module, met 'n Texas Instruments VL53L0X-tyd-van-vlug-sensor en 'n TXS0108E-tweerigtingvlakverskuiwer (in video by 00:06), bied presiese afstandmeting tot twee meter (in video by 00:52). Die verenigbaarheid daarvan met verskeie logikavlakke (3.3V, 1.8V, 5V) vereenvoudig integrasie met verskillende mikrobeheerders (in video by 00:21). Hierdie projek open 'n wye reeks moontlikhede.
Projekidees:
- Robotika: Implementeer hindernisvermyding in robotte.
- Outomatisering: Beheer masjinerie op grond van nabyheid.
- Slim Huis: Skep outomatiese beligting gebaseer op afstand.
- Sekuriteit: Ontwikkel 'n nabyheid-gebaseerde alarmstelsel.
Hardeware/Komponente
Om hierdie projek te bou, sal jy die volgende komponente benodig:
- Arduino-bord (enige model sal werk)
- CJMCU VL53L0X-laserafstandmeter-module
- Springdrade
Bedradingsgids
Die VL53L0X-module verbind soos volg aan die Arduino:
Verbind die VCC-pen van die module aan die 5V-pen op die Arduino. Die module se interne reguleerder hanteer die vereiste 3.3V vir die sensor. (in video by 01:50)
Verbind die GND-pen van die module aan die GND-pen op die Arduino.
Verbind die SDA-pen van die module aan die A4-pen op die Arduino.
Verbind die SCL-pen van die module aan die A5-pen op die Arduino.
Los die XSHUT-pen onverbind tensy jy dit vir afskakelbeheer moet gebruik. (in video by 03:50)
Kodeverduideliking
Die verskafde kode gebruik die VL53L0X-biblioteek. Hier is 'n verduideliking van die sleutel konfigureerbare dele:
#include <Wire.h>
#include <VL53L0X.h>
VL53L0X sensor;
void setup()
{
Serial.begin(9600);
// ... ander opstellingskode ...
sensor.setTimeout(500); // Stel tydperk op 500ms (in video by 06:40)
sensor.startContinuous(); // Begin deurlopende metingsmodus (in video by 06:50)
}
void loop()
{
Serial.print(sensor.readRangeContinuousMillimeters()); // Lees afstand in mm (in video by 07:01)
// ... ander luskode ...
}
Die sensor.setTimeout(500)-reël stel die tydperk vir afstandmetings op 500 millisekondes. Pas hierdie waarde aan indien nodig vir jou toepassing (in video by 06:40). Die sensor.startContinuous()-funksie begin deurlopende afstandsmeting, wat afstandlesings so vinnig as moontlik verskaf (in video by 06:50). Die sensor.readRangeContinuousMillimeters()-funksie gee die gemete afstand in millimeter terug (in video by 07:01).
Lewende Projek/Demonstrasie
Die video demonstreer die sensor se werking en wys hoe die afstandlesings verander soos die sensor se afstand tot die teiken verander. Die lesings is akkuraat binne 'n paar millimeter, veral by afstande groter as 10mm (in video by 08:20). By baie naby reekse (minder as 10mm) verminder die akkuraatheid (in video by 09:50). Die demonstrasie wys ook dat reflektiewe oppervlaktes die lesings kan beïnvloed, veral as die laser nie loodreg op die oppervlak is nie (in video by 10:32).
Hoofstukke
- [00:00] Inleiding en Projekoorsig
- [00:48] VL53L0X-sensorbesonderhede
- [01:41] Module-oorsig en Spesifikasies
- [02:55] Toepassings en Standaarde
- [03:35] Penuitleg en Verbindings
- [05:29] Kodeverduideliking
- [07:45] Bedrading en Verbindings
- [08:18] Lewende Demonstrasie
/* 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.
Updated by Ahmad Shamshiri for Robojax.com on July 23, 2018 in Ajax, Ontario, Canada.
Watch video instructions for this code: https://youtu.be/0PnAyt51IU4
Download the library and get other resources for this code at http://robojax.com
*/
#include <Wire.h>
#include <VL53L0X.h>
VL53L0X sensor;
void setup()
{
Serial.begin(9600);
Serial.println("Robojax CJMCU VL523L0X laser distance test");
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()
{
Serial.print(sensor.readRangeContinuousMillimeters());// print distance
if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }
Serial.println();
}
Hulpbronne en verwysings
-
BuitenburgPololu download (GitHub)github.com
-
BuitenburgTXS0108E datasheetti.com
Lêers📁
Fritzing-lêer
-
Adafruit VL6180X Time of Flight Distance SensorFritzing 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.fzpz0.02 MB