STM32 + VL53L1X

Der chaotische Hauptfaden

Moderatoren: Heaterman, Finger, Sven, TDI, Marsupilami72, duese

Antworten
Bumbum
Beiträge: 280
Registriert: Mi 22. Apr 2015, 19:04

STM32 + VL53L1X

Beitrag von Bumbum »

Hallo,

hier im Forum gibt es doch jemand, der sich mit dem STM32 auskennt? Ich hatte bisher ausschließlich mit Atmels zu tun und habe folgende Frage:

Mich hat ein Kumpel gefragt, ob ich ihm folgendes nachbauen kann:

https://www.youtube.com/watch?v=c91Ve-g ... Nl&index=1

Es geht dabei um einen Laser-Entfernungs-Sensor, der oben an einer Tür angebracht wird und messen kann, ob eine Person den Raum betritt oder verlässt. Ziel des ganzen soll eine Präsenzmelder für die Räume seines Smarthome werden. Er möchte einen solchen Sensor an jede Tür anbringen und somit feststellen, ob im Raum eine Person ist.

Ich habe mir kurz das Datenblatt angeschaut: Winziger Sensor, I2C sollte kein Problem sein. Dachte ich...

Den kleinen Bruder des im Video verwendeten Sensor (VL53L0X) gibt es ab 5€ im Amazonas. Also habe ich kurzerhand einen solchen zum spielen bestellt. Also das Teil mit einem ATmega328 "verhäckelt" und angefangen. Kommunikation war schnell möglich, aber dann dämmerte es mir langsam. Im Datenblatt gibt es knapp eine halbe Seite über das Datenprotokoll. Das kann nicht alles sein, vor allem sind keinerlei "Befehle" zum messen oder auslesen der Daten aufgeführt. Nach einer ausführliche Google-Runde scheint es auch nicht so einfach zu sein.

Vom Hersteller gibt es eine API dafür. Und die schaut recht umfangreich aus. In anderen Foren habe ich ähnliche Fragestellungen gefunden, bei denen Leute auch direkt den Support des Herstellers angeschrieben haben und als Antwort sinngemäß folgendes bekommen haben: Der Sensor ist sehr komplex und umfangreich, deshalb gibt es keine Register bzw. Protokoll-Beschreibung. Bitte nutzen Sie die API.

Also habe ich mich mit der API beschäftigt. Diese scheint einen STM32 vorrauszusetzen. Und für diesen Controller scheint es einen "Driver" zu geben.

Da ich über diesen Prozessor, bzw. über die ganze Familie überhaupt nichts weiß: Ist die CPU tatsächlich schon so mächtig, dass man eine Art Treiber "installieren" kann? Wie aufwändig und wie teuer würde ein Einstieg werden? Was bräuchte man dafür?

Da das Projekt nicht für mich ist, sondern eher ein Gefallen: Kann jemand einschätzen, wie groß nach dem Einstieg der Aufwand wäre, die Software zu schreiben?

Viele Grüße
Andreas
Benutzeravatar
Fritzler
Beiträge: 12600
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: STM32 + VL53L1X

Beitrag von Fritzler »

hier im Forum gibt es doch jemand, der sich mit dem STM32 auskennt?
Anwesend!
Aber nur als Bare Metal und nicht mit diesem gruseligen STM32 "HAL" (das ist kein HAL, sondern ein obfuscation Bug Layer)

"Treiber installieren" hat nix mit der Mächtigkeit der CPU zu tun, sondern mit der Mächtigkeit des verwendeten Betriebssystems.
(Es hat ja schonmal wer LInux auf nem AVR in nem Emulator laufen lassen, da kannste dann Treiber nachladen, dauert nur Stunden :lol: )
Aber man kann beim STM32 Programme aus einem (externen) Flash in den SRAM/DRAM laden und dann ausführen, das werden die aber sicher nicht machen.

Der vorliegende Treiber wird also ganz normal als lib zur Compilezeit ins Programm fest reincompiliert.
Das Teil scheint dann nur aus viel Code zu bestehen.
Ich vermisse nur einen Link dazu ;)

Aber das Video is schon geil :shock:
Benutzeravatar
zauberkopf
Beiträge: 9524
Registriert: So 11. Aug 2013, 15:33
Wohnort: gefährliches Halbwissen

Re: STM32 + VL53L1X

Beitrag von zauberkopf »

hmm... klappt das auch für Katzen ?
...
... :roll:
Benutzeravatar
Bastelbruder
Beiträge: 11550
Registriert: Mi 14. Aug 2013, 18:28

Re: STM32 + VL53L1X

Beitrag von Bastelbruder »

Ein Laser-Entfernungsmesser als Anwesenheitsdetektor funktioniert ziemlich sicher in einem Kriechtunnel, aber nicht in einem "Raum" wo sich Personen frei bewegen können. Da würde ich auf ungerichtetes Radar setzen wie es in diversen Sensor-Leuchten verbaut und käuflich erwerbbar ist. Es gibt auch preiswertere Modelle, aber die Reichelt-Webseite ist so zum Kotzen daß ich da nicht weiter gesucht habe.
Das Vieh-DEO hab ich mir nicht angetan, es gibt in der Richtung zu viele Fakes.

Achja, häßliche Lampen werden in den letzten Jahren mit EEK klassifiziert. Ich glaube zu wissen daß der Ausdruck in englischsprachigen Comics öfter auftaucht ...
Bumbum
Beiträge: 280
Registriert: Mi 22. Apr 2015, 19:04

Re: STM32 + VL53L1X

Beitrag von Bumbum »

Hallo Bastelbruder,

der Sensor soll ja "zählen", ob Leute rein oder rausgegangen sind. Laut Beispiel hat der Sensor zwei "Bereiche" und man muss dann nur die Richtung beachten. Wenn der Raum zwei Türen hat, muss da natürlich noch etwas Logik dazu. Das sollte aber kein Problem sein, sofern ich mal das zählen auf die Reihe gebracht habe. Wie Störungsanfällig das ganze dann ist, ist die andere Frage.

Ich habe in der Zwischenzeit festgestellt, dass man den Quellcode des STM32-"Treibers" herunterladen kann. Das habe ich gemacht und mal einen Blick riskiert. Das lässt sich mit recht wenig Aufwand für Atmel µC übernehmen. Allerdings hat der Source von ST 473 kB. Uff!

Aber ich habe mich entschlossen zumindest mal den Initalisierungsteil zu "übersetzen" und dann mal zu schauen, was passiert.

Die Radar-Lampen fungieren wohl auch ähnlich wie Bewegungsmelder, wenn ich das richtig verstanden habe? Das wollte mein Bekannter nicht. Er hat wohl gelesen, dass man z.B. im Wohnzimmer bei der TV-Berieselung sich zuwenig bewegt.

Viele Grüße
Andreas
Benutzeravatar
Fritzler
Beiträge: 12600
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: STM32 + VL53L1X

Beitrag von Fritzler »

Haste maln Link dazu? (das zweite mal, dass ich schon Frage, willst du überhaupt Hilfe?)
Bumbum
Beiträge: 280
Registriert: Mi 22. Apr 2015, 19:04

Re: STM32 + VL53L1X

Beitrag von Bumbum »

Halloi Fritzler,

sorry, ich bin mir nicht sicher was für einen Link du möchtest. Hier ist Link zum Datenblatt des Sensors, den ich zum Spielen gekauft habe:

https://www.google.com/url?sa=t&rct=j&q ... J7lbKKynB-

Und hier das Datenblatt zum Sensor, der im Video empfohlen wird:

https://www.google.com/url?sa=t&rct=j&q ... tN4H_-E8oN

Das ist im Prinzip der gleiche, nur mit größerer Reichweite und etwas mehr Features. Ich bin mir nicht sicher, ob mein Spiel-Sensor auch die zwei Bereiche kann, wie im Video erwähnt, aber das ist für den Einstieg wohl erst mal nicht wichtig.

Um sich den "Treiber" herunterzuladen muss man sich zuerst einen Account bei ST anlegen. Dazu kann ich also keinen direkten Link senden. So wie ich das mittlerweile verstanden habe sind das tatsächlich einfach nur Bibliotheken, die man einbindet und dann Zugriff auf die API hat. Diese ist übrigens im Manual zum Sensor beschrieben, dass man hier herunterladen kann:

https://www.st.com/resource/en/user_man ... 279088.pdf

bzw.:

https://www.st.com/resource/en/user_man ... 474730.pdf

Ich würde mir die Schaltung für an die Tür dann auch als "Bare Metal" vorstellen. Ich gehe davon aus, du meinst damit nur die CPU, sowie die nötigsten Bauteile damit diese läuft. Soll ja klein werden. Da I2C nicht für längere Strecken gedacht ist müsste also an jede Tür der Sensor und ein Umsetzer auf einen anderen Bus. Und dann irgendwo eine Zentrale, die die Ein- und Ausgänge der Räume zählt und der Steuerung mitteilen, ob ein Raum belegt ist.

Viele Grüße
Andreas
Benutzeravatar
Fritzler
Beiträge: 12600
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: STM32 + VL53L1X

Beitrag von Fritzler »

ja den Link zum Sensortreiber meint ich.

Also von 400k seh ich da nix:

Code: Alles auswählen

arm-none-eabi-size main.elf
   text	   data	    bss	    dec	    hex	filename
  21680	     32	      0	  21712	   54d0	main.elf
Das ist jetzt mit leeren I2C Callbacks.
winnman
Beiträge: 1215
Registriert: Fr 18. Jul 2014, 10:15

Re: STM32 + VL53L1X

Beitrag von winnman »

Was passiert wenn sich dein Sensor verzählt? (Kind geht gemeinsam mit Erwachsenen parallel durch die Türe, 2 gehen rein, 3 gehen wieder raus, . . .)

Bleibt dann das Licht aus, dauernd an, der "verzählte" steht plötzlich im dunkeln, . . .

Würde da auch eher auf IR oder Radar setzten und die Bewegung im Raum auswerten.
Benutzeravatar
xoexlepox
Beiträge: 4815
Registriert: So 11. Aug 2013, 19:28
Wohnort: So etwa in der Mitte

Re: STM32 + VL53L1X

Beitrag von xoexlepox »

Was passiert wenn sich dein Sensor verzählt?
Das wird ein Problem bleiben, genau wie auch bei richtungsempfindlichen Lichtschranken an den Zugängen. Von daher wäre ggf. ein zusätzlicher Bewegungsmelder (zur Vermeidung dieses Fehlers) angebracht. -> "Wenn sich zwei Personen im Raum aufhalten, und drei gehen heraus, muss eine Person hinein kommen, damit der Raum leer ist" ;)
Bumbum
Beiträge: 280
Registriert: Mi 22. Apr 2015, 19:04

Re: STM32 + VL53L1X

Beitrag von Bumbum »

Hallo,
Fritzler hat geschrieben:Also von 400k seh ich da nix:
Ich meinte den uncompilierten Zustand, den ich zu bearbeiten habe. ;-)
winnman hat geschrieben:Was passiert wenn sich dein Sensor verzählt?
Da kommt es wohl auf die Logik an. Kind gibt es derzeit noch keins bei meinem Kumpel, dafür aber eine Katze... Die haben ja sowieso die Weltherschaft. Warum sollen Sie dann nicht auch das Licht im Haus schalten dürfen? :D
Die Kombination mit dem Bewegungsmelder finde ich aber gut.

Viele Grüße
Andreas
Benutzeravatar
Fritzler
Beiträge: 12600
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: STM32 + VL53L1X

Beitrag von Fritzler »

Also viel zu beabreiten haste da wohl nicht.
Die vl53l1_platform.c will gefüllt werden und dann ist der Treiber wohl funktionstüchtig.
Aber warum das so viele Callbacks sind ist mir etwas schleierhaft.
Nur ist die "sehr gut" erklärt :roll:
Name vergessen
Beiträge: 3261
Registriert: Mo 12. Aug 2013, 19:47

Re: STM32 + VL53L1X

Beitrag von Name vergessen »

Bumbum hat geschrieben:Da I2C nicht für längere Strecken gedacht ist müsste also an jede Tür der Sensor und ein Umsetzer auf einen anderen Bus.
Das ist nicht so kritisch. Wenn der Bus langsam genug sein darf, steigt die mögliche Kabellänge erheblich an. Man sollte den dann ggfs. mit KSQ terminieren statt mit Widerständen, ansonsten ist der nicht so kritisch wie man meinen könnte. 10m Netzwerkkabel wurden schon erfolgreicht getestet (trotz falscher Paarzuordnung :oops: ).

Ob der Zählimpuls nun 500ms oder 500ns bis zum Zentralhirn braucht, ist jetzt nicht so relevant, da ja Personen und keine Autos gezählt werden sollen.
Bumbum
Beiträge: 280
Registriert: Mi 22. Apr 2015, 19:04

Re: STM32 + VL53L1X

Beitrag von Bumbum »

Hallo,
Fritzler hat geschrieben: Die vl53l1_platform.c will gefüllt werden
Ich glaube das war der Tipp schlechthin. Das habe ich so gar nicht erkannt. Vielen Dank für den Denkanstoss. Ich rechne dann zwar noch mit einigen Warnungen, aber das werde ich dann mal probieren.
Name vergessen hat geschrieben: 10m Netzwerkkabel
Ich glaube mit 10m kommt man in einem Haus nur zu einer, vielleicht zu zwei Türen, anstatt zu vermutlich 10-20. (Muss mir den Grundriss mal zeigen lassen)

Viele Grüße
Andreas
Benutzeravatar
Fritzler
Beiträge: 12600
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: STM32 + VL53L1X

Beitrag von Fritzler »

Die Erfahrung sagt einem eben wo man hingucken muss :mrgreen:
Was ich aber nicht gefunden habe ist die fix und fertig Software für das Projekt aus dem Video.
Damit man schonmal sehen kann wie der I2C angesteuert werden soll.
Name vergessen
Beiträge: 3261
Registriert: Mo 12. Aug 2013, 19:47

Re: STM32 + VL53L1X

Beitrag von Name vergessen »

Bumbum hat geschrieben:Ich glaube mit 10m kommt man in einem Haus nur zu einer, vielleicht zu zwei Türen, anstatt zu vermutlich 10-20. (Muss mir den Grundriss mal zeigen lassen)
Habe ja nur geschrieben, dass das damit gelaufen ist. Ob nicht noch viel mehr geht, müsste halt probiert werden. Wenn Du den Sensor grundsätzlich am Laufen hast, kannst Du ja mal ein paar Kabeltrommeln dazwischenhängen oder sowas. Aber wenn nur 10m gingen würde wahrscheinlich je Etage ein mehr oder weniger zentral platzierbarer Busumsetzer reichen, was ja schonmal besser wäre als an jeder Tür einer.
Benutzeravatar
Fritzler
Beiträge: 12600
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: STM32 + VL53L1X

Beitrag von Fritzler »

Bei dem Sensor wird wohl auch nicht viel gehen mit einem langsameren I2C.
Der Treiber scheint richtig viel mit dem zu reden.

Die ganzen neueren AVR sind inzwischen auch recht günstig, Microchip spürt den Atem der ARM SoCs im Nacken :lol:
Bumbum
Beiträge: 280
Registriert: Mi 22. Apr 2015, 19:04

Re: STM32 + VL53L1X

Beitrag von Bumbum »

Hallo Fritzler,

ich melde den ersten Erfolg. Dein Tipp hat geklappt. Ich habe alle notwendigen Dateien des Treibers in mein Atmel-Projekt eingebunden und dann die plattform.c angepasst. Danach gab's es noch eine handvoll Warnungen, die ich aber einfach beheben konnte. Und dann war der erste Build erfolgreich. Mit folgendem Ergebnis: :evil:
IMG_0632.jpg
Naja, also noch mal alles für einen Atmel mit 64k Flash und 4k RAM ungewurschtel und dann ist das Beispiel mit der Entfernungsmessung gelaufen. Es wurden sogar (fast) auf Anhieb korrekte Entfernungswerte auf meinem LCD angezeigt. Prima! :D

Jetzt werde ich mich mal auf die Suche nach Source des 2-Zonen-Beispiel aus dem Video machen. Ich hoffe, ich finde da was.

Vielen Dank bis hierher und viele Grüße
Andreas
Benutzeravatar
Fritzler
Beiträge: 12600
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: STM32 + VL53L1X

Beitrag von Fritzler »

Ich hab dich ja vorgewarnt, dasses groß wird nachm compilen :lol:

Von der Rechenleistung her reicht der AVR?
Bumbum
Beiträge: 280
Registriert: Mi 22. Apr 2015, 19:04

Re: STM32 + VL53L1X

Beitrag von Bumbum »

Fritzler hat geschrieben: Von der Rechenleistung her reicht der AVR?
Ich nutze jetzt einen Atmega644 (lag rum) mit einem 16MHz Quarz. Für das Entfernungs-Messungs-Beispiel (vl53l0x_SingleRanging_Long_Range_Example.c) musste ich sogar drosseln. Die Initialisierung erfolgt in Sekundenbruchteilen und die Anzeige der Messwerte war so zappelig, dass ich dazwischen erst mal ein 100ms Intervall legen musste.

Wie es dann später mit der 2-Zonen-Auswertung aussieht weißt ich nicht.
Antworten