ToF-Cartridge
Der VL53L5CX der ToF-Cartridge wird auf einer Angebotsseite bei mouser.de zusammengefasst so beschrieben: Der Sensor STMicroelectronics VL53L5CX 8x8 Multi-Zone Time-of-Flight bringt ein SPAD-Array, physische Infrarotfilter und diffraktive Optik (DOE) in ein kompaktes, umlauffähiges Gehäuse. Er ermöglicht Mehrzonen-Distanzmessungen mit bis zu 8 x 8 Echtzeit-Einlagezonen und einem breiten Diagonal-Sichtfeld von 63°, wobei jede Zone die Entfernung zu einem Ziel von bis zu vier Metern mit einer maximalen Frequenz von 60 Hz messen kann. Der Sensor kann mehrere Objekte im Sichtfeld erkennen und ist immun gegen Störungen durch Glasübersprechungen über 60 cm. Die Abstandsmessleistung funktioniert unter verschiedenen Beleuchtungsbedingungen und mit verschiedenen Abdeckglasmaterialien.
Ich versuche das mal stark vereinfacht zu erklären: Man stelle sich eine Taschenlampe vor einem Karton mit 8 x 8 Löchern vor. Wenn die Taschenlampe auf diesen Karton gerichtet leuchtet, entsteht an der gegenüberliegenden Wand ein Muster aus Lichtpunkten. Wenn einige dieser Punkte durch ein Objekt blockiert werden, kann man feststellen, wo das Objekt steht, indem man nachsieht, welche Punkte blockiert sind.
In Wirklichkeit ist das System des Sensors natürlich viel komplizierter, aber das Grundprinzip ist ähnlich: Licht wird ausgesendet, reflektiert und dann erfasst, um Informationen über die Umgebung zu erhalten.
Hier ein kleines Programm aus der NanoPy-Entwicklungsumgebung (NanoPy -> Cartridges -> ToF -> Abstandssensor) zum Abstandmessen:
import toftextFont(FONT_ROBOTO_24)w = textWidth("init TOF ~10s")drawText(120-w/2,10,"init TOF ~10s")update()TOF.init() # inits and calibrates the TOF (takes up to 10s)TOF.set4x4()def onDraw():TOF.getData() # reads the 16 (4x4) sensor data and status values#TOF.data[i] # data indicating the distance in mm#TOF.status[i] # status indicating the measurement validity (5 & 9 means ranging OK)minDistance = 9999for i in 16:if TOF.status[i] == 5 || TOF.status[i] == 9:distance = TOF.data[i]if distance < minDistance:minDistance = distanceclear()textFont(FONT_ROBOTO_24)w = textWidth("TOF distance")drawText(120-w/2,10,"TOF distance")w = textWidth("sensor")drawText(120-w/2,34,"sensor")textFont(FONT_ROBOTO_80)w = textWidth(minDistance)drawText(120-w/2,88,minDistance)textFont(FONT_ROBOTO_32)w = textWidth("mm")drawText(120-w/2,170,"mm")update()if getButton():if returnToMenu():return
Auch hier ist der eigentliche zur Messung erforderliche Code sehr kurz. Man könnte sich damit also einen eigenen Abstandswarner fürs Auto bauen.
Wie man sieht, hat das mit dem schon erwähnten simplen Temperaturwiderstand nichts mehr zu tun. Beide Sensorkarten sind komplexe Systeme mit eigenen Mikrocontrollern, die über I2C oder I2C und SPI (beim VL53L5CX) und den in NanoPy zur Verfügung gestellten Bibliotheken mit dem ESP32 der Oxocard Connect kommunizieren.
Für die Anwender genügen dann simple Funktionen, um die Sensorwerte zu empfangen und weiterverarbeiten zu können. Das macht es sehr einfach, mit den hochwertigen Sensoren zu arbeiten und Anwendungsmöglichkeiten spielerisch zu erforschen.
Breadboard-Cartridge (Steckplatine)
Meistens sind Sensoren nicht so pflegeleicht verpackt wie die beiden vorgestellten. Die schon erwähnten Licht- und Temperaturwiderstände bedürfen etwas mehr Aufwand, um sie mit den üblichen ESP32-Mikrocontrollern zu verbinden. Dafür sind Elektronikgrundkenntnisse nützlich.
Mit der Breadboard-Cartridge gibt es eine einfache Möglichkeit, die notwendigen Kenntnisse zu erwerben und auszuprobieren, ob die ausgedachte Anschlussmethode beziehungsweise Schaltung tatsächlich funktioniert. Obwohl die Oxocard Connect also nach außen hin ein smoothes Design und scheinbar keine Anschlussmöglichkeiten besitzt, ist es mit dem angesteckten Breadboard möglich, die wichtigsten Anschlussleitungen eines ESP32 nach außen zu führen und sie direkt auf dem Breadboard für eigene Experimente zur Verfügung zu stellen.
Hier ist es dann zum Beispiel mit zwei Drahtbrücken und einem Widerstand möglich, einen Lichtwiderstand (LDR) über einen Spannungsteiler an den Analog-Digital-Wandler des ESP32 anzuschließen und so den sich bei Helligkeitsschwankungen verändernden Widerstandswert direkt digital mit NanoPy in der Oxocard Connect zu verarbeiten.
Damit lässt sich ein Morse-Detektor programmieren! Nebenbei bemerkt ist das eine sehr gute Programmierübung.
Aber auch normalerweise nicht manuell verwendbare Bauteile oder Sensoren mit eigenem Mikrocontroller in SMD-Bauform (hier von Adafruit), die von manchen Anbietern auf eine kleine Platine gelötet und mit Lötpads versehen sind, können in das Breadboard gesteckt und mit einigen wenigen Drähten über SPI oder I2C mit der Connect verbunden werden.
Das macht es einfach, solche Bauteile prototypisch auszuprobieren und erste kleine Testprogramme zu entwickeln. Allerdings muss da meist noch eine kleine und oft mitgelieferte Pinleiste in die Lötpads gesteckt und angelötet werden.
Sollte jemand bei dem Begriff Spannungsteiler schon geistig ausgestiegen sein, ist das Oxocard Connect Innovator Kit (79 CHF, rund 85 Euro) auf jeden Fall richtig, denn das kann helfen, diese Wissenslücke zu schließen.