ESP32 mit VL53L0X realisiert IoT-Fahrzeug mit künstlicher Intelligenz
Hauptmerkmale des VL53L0X-Chips:
1.Vollständig integriertes Miniaturmodul
-
940nm Laser-VCSEL
-
VCSEL-Treiber
-
Abstandsmesssensor mit fortschrittlichem eingebettetem Mikrocontroller
-
4.4mmx2.4mmx1.0mm
-
Schnelle und genaue Distanzmessung
-
Misst absolute Entfernungen bis zu 2 m
-
Die gemeldeten Entfernungen werden durch das Reflexionsvermögen des Ziels nicht beeinflusst
-
Funktioniert in Umgebungen mit hohem Infrarotlicht
-
Fortschrittliche eingebettete optische Übersprechkompensation zur Vereinfachung des Glasgehäusedesigns.
2.Menschenaugen-Sicherheit
- Lasergeräte der Klasse 1 gemäß der neuesten Norm IEC 60825-1:2014 (3. Ausgabe)
3.Einfach zu integrieren
-
Fließende Komponenten
-
Keine zusätzlichen Optiken erforderlich
-
Einzelne Stromversorgung
-
I2C-Schnittstelle zur Gerätesteuerung und Datenübertragung
-
Xshutdown und unterbrechen GPIOs
-
Betriebsspannung: 3,3V/5V
4.Parameter des VL53L0X:
-
Produktgröße: 4,4 mm × 2,4 mm × 1,0 mm
-
Entfernungsmessbereich: 30 ~ 2000mm
-
Genauigkeit der Entfernungsmessung: ±5 % (Hochgeschwindigkeitsmodus), ±3 % (Hochgenauigkeitsmodus)
-
Messzeit (min): 20 ms (Hochgeschwindigkeitsmodus), 200 ms (Hochpräzisionsmodus)
-
Bereichswinkel: 25
-
Laserwellenlänge: 940nm
-
Betriebstemperatur: -20 ~ 70°C
Der VL53L0X-Sensor bietet 3 Messmodi
-
Einzelmessmodus: In diesem Messmodus führt ein einzelner Trigger nur eine Distanzmessung durch. Nach Abschluss der Messung kehrt der VL53L0X-Sensor in den Standby-Modus zurück und wartet auf den nächsten Trigger.
-
Kontinuierlicher Messmodus: In diesem Modus wird die Distanzmessung kontinuierlich durchgeführt. Wenn eine Messung beendet ist, wird sofort mit der nächsten begonnen, und der Benutzer muss die Distanzmessung stoppen, um in den Standby-Modus zurückzukehren. Die letzte Messung ist vor dem Stoppen abgeschlossen.
-
Zeitgesteuerter Messmodus: Bei diesem Modus handelt es sich eigentlich um einen kontinuierlichen Messmodus mit festgelegten Zeitintervallen. Wenn eine Messung abgeschlossen ist, wird nach einer benutzerdefinierten Verzögerungszeit die nächste Messung eingeleitet. Der Benutzer muss die Bereichsmessung beenden, um in den Standby-Modus zurückzukehren. Die letzte Messung ist vor dem Stoppen abgeschlossen.
Der VL53L0X-Sensor bietet außerdem 4 verschiedene Genauigkeitsmodi:
Präzisionsmodus
|
MesszeitBudgetbereich (ms)
|
Messdistanz (m)
|
Typische Anwendungsszenarien
|
Standard
|
30
|
1.2
|
Standard
|
hohe Präzision
|
200
|
1.2 (Genauigkeit <± 3%)
|
Genauigkeit
|
Langstrecke
|
33
|
2
|
Lange Distanz, nur für dunkle, nicht infrarote Bedingungen
|
hohe Geschwindigkeit
|
20
|
1.2 (Genauigkeit <
± 5%)
|
Hohe Geschwindigkeit, Präzision ist keine Priorität
|
Schnittstelle | Beschreibung |
VCC | Positive Stromversorgung (3,3V/5V Stromversorgungseingang) |
GND | Erdung |
SDA | I2C-Datenpin |
SCL | I2C-Taktpin |
SCHLIESSEN | Pin, anschließbar an IO-Port |
INT | Interrupt-Ausgangspin, anschließbar an IO-Port |
Laser-Distanzmessmodul | ESP32-Modul |
VCC | +5 V |
GND | GND |
SDA | P21 |
SCL | P22 |
Spezifischer Betriebsprozess
-
Öffnen Sie das Bibliotheksverwaltungsfenster der Arduino IDE, geben Sie VL53L0X in das Suchfeld ein und wählen Sie dann die Installation der Adafruit_VL53L0X-Bibliothek aus, wie unten gezeigt.
-
Als nächstes schauen wir uns ein einfaches Template-Programm für den Einzelmessmodus an. Dieses ist unten zu sehen: ESP32 mit VL53L0X realisiert IoT-Fahrzeug mit künstlicher Intelligenz - einfaches Template-Programm
Wie Sie im obigen Code sehen können, sind diese Schritte erforderlich, um eine einzelne Messung des Laser-Entfernungsmessmoduls durchzuführen:
(1) Erstellen Sie eine Instanz des Adafruit_VL53L0X-Objekts
Adafruit_VL53L0X lox = Adafruit_VL53L0X();
Rufen Sie die Methode begin() auf, um die Initialisierung des Laserentfernungsmessmoduls abzuschließen
(3) Erstellen Sie eine Instanz der Struktur VL53L0X_RangingMeasurementData_t, die die Messergebnisse speichert.
(4) Rufen Sie die RangingTest()-Methode auf, um eine Messung abzuschließen.
(5) Das RangeStatus-Attribut des Messergebnisobjekts gibt den Status des Messergebnisses an, und der Wert des RangeMilliMeter-Attributs ist die gemessene Entfernung (in Millimetern).
Bei der kontinuierlichen Messung besteht der Unterschied zur obigen Einzelmessung darin, dass Sie nach dem Aufruf von begin() zum Abschließen der Initialisierung des Moduls die Methode startRangeContinuous() aufrufen müssen, um das Laserentfernungsmessmodul in den kontinuierlichen Messmodus zu schalten. Der Unterschied beim Lesen von Daten besteht darin, dass Sie die Methode isRangeComplete() verwenden, um zu bestimmen, ob das Laserentfernungsmessmodul eine Messung abgeschlossen hat, und dann die Methode readRange() verwenden, um die Ergebnisse der Messung zu lesen. Die Programmvorlage ist unten dargestellt: ESP32 mit VL53L0X realisiert IoT-Fahrzeug mit künstlicher Intelligenz – kontinuierliche Messung