Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
embedded_systems:experimentiersystem:vl53l0x-tof-sensor [2019-03-22 12:02] mlammerichembedded_systems:experimentiersystem:vl53l0x-tof-sensor [2024-04-19 13:25] (aktuell) Moritz Lammerich
Zeile 3: Zeile 3:
 Der [[ https://www.st.com/en/imaging-and-photonics-solutions/vl53l0x.html | VL53L0X ]] ist eine neue Generation von ToF Sensoren, die genaue Distanzmessungen bis 2m erlaubt. Der [[ https://www.st.com/en/imaging-and-photonics-solutions/vl53l0x.html | VL53L0X ]] ist eine neue Generation von ToF Sensoren, die genaue Distanzmessungen bis 2m erlaubt.
  
-===== Verwendung mit dem MPC555 ===== 
  
-Der VL53L0X kann mit dem MPC55 verwendet werden. Es wird jedoch ein zweiter Mikrocontroller zum Anschluss an diesen benötigt. Die NTB stellt eine fertige Firmware für das [[https://www.st.com/en/evaluation-tools/nucleo-l432kc.html | Nucleo STM32L432KC Board]] zur Verfügung. **Es können maximal 4 Sensoren angesteuert werden.**+===== Verwendung mit Python unter Linux auf dem Zynq7000 =====
  
-==== Verdrahtung ====+Der VL53L0X wird direkt an eine I2C-Schnittstelle angeschlossen.  
 +^ Zynq7000 ^ VL53L0X          ^ 
 +| MIO10    | SCL              | 
 +| MIO11   | SDA              | 
 +| <FlinkGPIO channel> | XSHUT | 
 +| 3.3V    | Vcc | 
 +| GND         | GND              | 
 + 
 +==== Python Code ==== 
 + 
 +Die Sensoren können mit Hilfe des ''vl53l0x_helper'' Treibers im [[ https://gitlab.ost.ch/tech/inf/teaching/sysp/software/python-scripts/driver | driver ]] Repository initialisiert werden. 
 + 
 +Der XSHUT Pin jedes VL53L0X Sensor benötigt einen eigenen ''FlinkGPIO'' Kanal. 
 +Die Pins/Kanäle sind ''init_vl53l0x'' als Liste von ''int''s (Ganzzahlen) zu übergenen. Die Anzahl Sensoren leitet sich aus der Anzahl an GPIO Kanälen ab, mit denen ''init_vl53l0x'' aufgerufen wird. ''init_vl53l0x'' gibt die initialisierten Sensoren als Liste zurück. Das Aufrufen von ''get_distance()'' auf einem Listenelement liefert den aktuellen Messwert des entsprechenden Sensors. 
 + 
 +Beispiel: ''sensors = init_vl53l0x([0, 1])'' initialisiert 2 Sensoren. ''sensors[0]'' verwendet ''FlinkGPIO'' Kanal 0 und ''sensors[1]'' verwendet ''FlinkGPIO'' Kanal 1. ''sensors[0].get_distance()'' liefert den aktuellen Messwert des ersten Sensors (GPIO 0), während ''sensors[1].get_distance()'' den Messwert des 2. Sensors (GPIO 1) zurück gibt. 
 + 
 +Komplettes Beispiel: 
 +<code python> 
 +from vl53l0x_helper import init_vl53l0x 
 + 
 +# initialize 2 ToF sensors conected to FlinkGPIO channels 0 and 1 
 +tofs = init_vl53l0x([0, 1]) 
 + 
 +# print measurements 
 +for _ in range(1, 11): 
 +    # combine all measurements into 1 string to print everything on one line 
 +    line = " ".join(["% d" % tof.get_distance() for tof in tofs]) 
 +    print("distance %s" % line) 
 + 
 +</code> 
 + 
 +===== Verwendung mit Deep auf dem MPC555 / Zynq7000 ===== 
 + 
 +Der VL53L0X kann mit dem MPC55 und dem Zynq7000 verwendet werden. Es wird jedoch ein zweiter Mikrocontroller zum Anschluss an diesen benötigt. Die OST stellt eine fertige Firmware für das [[https://www.st.com/en/evaluation-tools/nucleo-l432kc.html | Nucleo STM32L432KC Board]] zur Verfügung. **Es können maximal 4 Sensoren angesteuert werden.** 
 + 
 +==== Verdrahtung MPC555 ====
  
 ^ MPC555 ^ STM32L432KC ^ ^ MPC555 ^ STM32L432KC ^
Zeile 15: Zeile 50:
 | PCS 2  | PB0 (D3)    | | PCS 2  | PB0 (D3)    |
 | GND    | GND         | | GND    | GND         |
 +
 +==== Verdrahtung Zynq7000 ====
 +
 +^ Zynq7000 ^ STM32L432KC ^ Funktion ^
 +| MIO 12   | PA1 (A1)    | CLK      |
 +| MIO 11   | PA11 (D10)  | MISO     |
 +| MIO 10   | PA7 (A6)    | MOSI     |
 +| MIO 13   | PB0 (D3)    | CS       |
 +| GND      | GND         | GND      |
  
 Anmerkung: die relevanten Pins des STM32L432KC sind 5V tolerant, es sind also keine Pegelwandler nötig. Anmerkung: die relevanten Pins des STM32L432KC sind 5V tolerant, es sind also keine Pegelwandler nötig.
Zeile 20: Zeile 64:
 ^ STM32L432KC ^ VL53L0X          ^ ^ STM32L432KC ^ VL53L0X          ^
 | PA9 (D1)    | SCL              | | PA9 (D1)    | SCL              |
-| PA10 (D0)   DSA              |+| PA10 (D0)   SDA              |
 | PA3 (A2)    | XSHUT (Sensor 1) | | PA3 (A2)    | XSHUT (Sensor 1) |
 | PA4 (A3)    | XSHUT (Sensor 2) | | PA4 (A3)    | XSHUT (Sensor 2) |
Zeile 44: Zeile 88:
 ==== Verwendung in Deep ==== ==== Verwendung in Deep ====
  
-Der Deep Treiber ist unter ch.ntb.inf.deep.runtime.mpc555.driver.VL53L0X zu finden.+Der Deep Treiber ist unter ''org.deepjava.runtime.mpc555.driver.VL53L0X'' oder ''org.deepjava.runtime.zynq7000.driver.VL53L0X'' zu finden.
  
 === Initialisierung === === Initialisierung ===
Zeile 74: Zeile 118:
  
 <code java> <code java>
 +// Nur MPC555
 if (tof.resetDone()) if (tof.resetDone())
 { {
Zeile 80: Zeile 125:
 </code> </code>
  
-=== Reset ===+=== Reset (nur MPC555) ===
  
 Die reset() Methode veranlasst einen Reset die STM32L432KC und der Vl53L0X Sensoren. Die reset() Methode veranlasst einen Reset die STM32L432KC und der Vl53L0X Sensoren.
Zeile 86: Zeile 131:
 ==== Debugging / Troubleshooting ==== ==== Debugging / Troubleshooting ====
  
-Das Nucleo STM32L432KC bietet eine virtuelle serielle Schnittstelle über USB, wenn es mit einem PC verbunden ist. Über diese werden Debug Informationen über den internen Zustande des Mirkocontrollers sowie die Messwerte ausgegeben. Funktionert die Kommunikatio nicht korrekt, kann sich hier ein Überblick verschafft werden, wo die Ursache ligen könnte.+Das Nucleo STM32L432KC bietet eine virtuelle serielle Schnittstelle über USB, wenn es mit einem PC verbunden ist. Über diese werden Debuginformationen über den internen Zustande des Mirkocontrollers sowie die Messwerte ausgegeben. Funktioniert die Kommunikation nicht korrekt, kann sich hier ein Überblick verschafft werden, wo die Ursache liegen könnte.
  
-Des Weiteren leuchet LD3 (grüne LED unten link, wenn USB Port oben), wenn der STM32L432KC auf einen SPI Transfer wartet und erlischt während dem Messvorgang.+Des Weiteren leuchet LD3 (grüne LED unten links, wenn USB Port oben), wenn der STM32L432KC auf einen SPI Transfer wartet und erlischt während dem Messvorgang.
 Diese sollte im normalen Betrieb blinken. Diese sollte im normalen Betrieb blinken.
 +Das GPIO Signal der LED ist auf Pin D13 am Board zu finden.