Een CJMCU VL53L0X-laserdistansmeter gebruiken met Arduino
Deze tutorial laat zien hoe je de CJMCU VL53L0X laserafstandsmeter gebruikt met een Arduino. Deze module, met een Texas Instruments VL53L0X time-of-flight sensor en een TXS0108E bidirectionele niveauverschuiver (in video op 00:06), biedt nauwkeurige afstandsmeting tot twee meter (in video op 00:52). De compatibiliteit met verschillende logische niveaus (3,3V, 1,8V, 5V) vereenvoudigt de integratie met verschillende microcontrollers (in video op 00:21). Dit project opent een breed scala aan mogelijkheden.
Projectideeën:
- Robotica: Implementeer obstakelvermijding in robots.
- Automatisering: Bestuur machines op basis van nabijheid.
- Slim huis: Creëer automatische verlichting op basis van afstand.
- Beveiliging: Ontwikkel een op nabijheid gebaseerd alarmsysteem.
Hardware/Componenten
Om dit project te bouwen, heb je de volgende componenten nodig:
- Arduino-board (elk model werkt)
- CJMCU VL53L0X laserafstandsmeter-module
- Jumperdraden
Bedradingsgids
De VL53L0X-module wordt als volgt op de Arduino aangesloten:
Verbind de VCC-pin van de module met de 5V-pin op de Arduino. De interne regelaar van de module zorgt voor de benodigde 3,3V voor de sensor. (in video op 01:50)
Verbind de GND-pin van de module met de GND-pin op de Arduino.
Verbind de SDA-pin van de module met de A4-pin op de Arduino.
Verbind de SCL-pin van de module met de A5-pin op de Arduino.
Laat de XSHUT-pin niet aangesloten, tenzij je deze nodig hebt voor uitschakelbesturing. (in video op 03:50)
Uitleg van de code
De meegeleverde code maakt gebruik van de VL53L0X-bibliotheek. Hier is een uitleg van de belangrijkste configureerbare onderdelen:
#include <Wire.h>
#include <VL53L0X.h>
VL53L0X sensor;
void setup()
{
Serial.begin(9600);
// ... andere setup-code ...
sensor.setTimeout(500); // Stel timeout in op 500 ms (in video op 06:40)
sensor.startContinuous(); // Start continue meetmodus (in video op 06:50)
}
void loop()
{
Serial.print(sensor.readRangeContinuousMillimeters()); // Lees afstand in mm (in video op 07:01)
// ... andere loop-code ...
}
De regel sensor.setTimeout(500) stelt de timeout voor afstandsmetingen in op 500 milliseconden. Pas deze waarde aan indien nodig voor jouw toepassing (in video op 06:40). De functie sensor.startContinuous() start continue afstandsmeting, waardoor afstandsmetingen zo snel mogelijk worden verstrekt (in video op 06:50). De functie sensor.readRangeContinuousMillimeters() retourneert de gemeten afstand in millimeters (in video op 07:01).
Live project/demonstratie
De video demonstreert de werking van de sensor en laat zien hoe de afstandsmetingen veranderen naarmate de afstand van de sensor tot het doel verandert. De metingen zijn nauwkeurig binnen enkele millimeters, vooral bij afstanden groter dan 10 mm (in video op 08:20). Bij zeer korte afstanden (minder dan 10 mm) neemt de nauwkeurigheid af (in video op 09:50). De demonstratie toont ook dat reflecterende oppervlakken de metingen kunnen beïnvloeden, vooral als de laser niet loodrecht op het oppervlak staat (in video op 10:32).
Hoofdstukken
- [00:00] Introductie en projectoverzicht
- [00:48] VL53L0X-sensordetails
- [01:41] Moduleoverzicht en specificaties
- [02:55] Toepassingen en normen
- [03:35] Pinout en aansluitingen
- [05:29] Uitleg van de code
- [07:45] Bedrading en aansluitingen
- [08:18] Live demonstratie
/* 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();
}
Hulpmiddelen en referenties
-
ExternPololu download (GitHub)github.com
-
ExternTXS0108E datasheetti.com
Bestanden📁
Fritzing-bestand
-
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