PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : STM32 + Kamera



Wsk8
02.03.2014, 15:21
Hallo,

ich würde mir gerne ein STM32 Board kaufen, wo ich auch eine kleine Kamera anschließen kann.
Voraussetzung ist, das ich mindestens ~10 FPS von der Kamera abrufen kann, da ich Bewegungen erkennen möchte.

Hat da irgend jemand von euch Ideen?

Ich habe bis jetzt nur das STM32F4 Discovery gefunden. Dafür gibts auch ein Kameramodul. Ich weiß nur nicht ob das DCMI Interface schnell genug ist.

mfg

malthy
02.03.2014, 15:30
Ich kann dir nicht konkret helfen. Aber du solltest bedenken, dass du vermutlich nicht einfach nur 10 fps abrufen möchtest, sondern auch noch auf den Frames rechnen willst. Und da könnte es je nach algorithmischer Komplexität dann schnell eng werden.

Gruß
Malte

Wsk8
02.03.2014, 15:56
Das ist mir klar, aber für mich ist das wichtigste überhaupt mal genug Bilder aus der Kamera auszulesen. Bei 168MHz sollten nicht allzu komplexe Algos wohl kaum den Prozessor für mehrere Sekunden blockieren. Vor allem da ich ja keine große Auflösung brauche (~200x200 oder weniger) sollten locker ausreichen.

mfg

radbruch
02.03.2014, 16:16
Hallo


Bei 168MHz...Ich dachte, das STM32F3 Discovery kann "nur" 72MHz.


...keine große Auflösung brauche (~200x200 oder weniger)...Obwohl ich seit Jahren mit Kameras rumbastle ist mir diese Auflösung noch nie untergekommen.

Vielleicht solltest du dich noch etwas einlesen bevor du was kaufst. Das STM32 ist auch nicht ohne. Gute Tutorials sind immer noch rar (und fast immer in englisch geschrieben) obwohl das Board schon länger verfügbar ist. Einfacher wäre wohl ein Pi in den Griff zu bekommen. Das scheint zwar auch nicht auf 10 fps zu kommen, obwohl es deutlich mehr Power als das STM32 hat:
https://www.roboternetz.de/community/threads/61129-Schnelle%28%21%29-Objekterkennung-mit-Raspi-USB-Cam

btw: Gutes deutsches Tutorial für's STM32: http://diller-technologies.de/stm32_wide.html

Gruß

mic

BMS
02.03.2014, 16:20
Darf's ein bisschen mehr sein? Wie wäre es mit max. 640x400 bei 50fps?https://www.roboternetz.de/phpBB2/images/smiles/icon_wink.gif
https://www.kickstarter.com/projects/254449872/pixy-cmucam5-a-fast-easy-to-use-vision-sensor (Pixy/cmucam5)
Grüße, Bernhard

Wsk8
02.03.2014, 16:32
Ich dachte, das STM32F3 Discovery kann "nur" 72MHz.
Die neuen M4 schaffen 168MHz ;) Zudem war das Discover ja nur ein Beispiel, bin auch für anderes offen


Obwohl ich seit Jahren mit Kameras rumbastle ist mir diese Auflösung noch nie untergekommen.
Das weiß ich auch, ich wollte nur einen Richtwert setzen wo ich in etwa hin will. Zudem war ich zu Faul die korrekte Auflösung zu suchen (160x??)


Vielleicht solltest du dich noch etwas einlesen bevor du was kaufst. Das STM32 ist auch nicht ohne. Gute Tutorials sind immer noch rar (und fast immer in englisch geschrieben) obwohl das Board schon länger verfügbar ist. Einfacher wäre wohl ein Pi in den Griff zu bekommen. Das scheint zwar auch nicht auf 10 fps zu kommen, obwohl es deutlich mehr Power als das STM32 hat:
Ich will aber ein STM32 und English kann ich auch halbwegs gut.
Soviel ich weiß läuft auf dem Pi auch noch ein OS und ne USB Cam wird wohl ein bisschen mehr Pixel liefern als meine angestrebten "200x200".


Darf's ein bisschen mehr sein? Wie wäre es mit max. 640x400 bei 50fps?:wink:
Ich suche leider keine fertige Lösung.

mfg

durchgebrannt
04.03.2014, 14:09
Hi,
Vor kurzem hat ST die STM32F439/29 Serie vorgestellt. Diese erlaubt Taktraten bis 180MHz, was eigentlich reichen sollte. Duch einen effizienten Einsatz des DMA sollte die gestellte Aufgabe eigentlich gut realisierbar sein. Zudem gibt es für duese Controller Serie ebenfalls ein Discovery Board, welches gleich über ein Farb-LCD verfügt.

Anmerkung: Allgemein sind die F4xx optimal für Grafik Anwendungen geeignet. Die Chips haben im Vergleich zu anderen Cortex M4 Prozessoren einen großen Ram, was einem das Leben doch oft erleichtert.

Gruß Jannis

Croal
06.03.2014, 20:13
Als Camera könntest du so was nehmen:

https://www.sparkfun.com/products/retired/10061

Weiss aber nicht wie viele gps die kann. Kann über UART ausgelesen werden.

durchgebrannt
06.03.2014, 21:03
UART wird bei 30Fps aber schon übel. Ich hatte das oben mal nachgerechnet, mit diesen Daten: 320*320px 8 Bit Farbtiefe und 30Fps. Selbst wenn das DCMI Interface nur bis F_CPU/2 geht, in diese, Fall 90MHz hättest du immernoch reichlichst Zeit, die Daten zu verarbeiten. Einzig wird der RAM werden, 256kb reichen da absolut nicht aus. Ein Frame alleine braucht 100kb, wenn du zwei oder mehr Frames speichern willst, ist Ende im Gelände, da die Erkennung sicher auch noch RAM brauchen wird. Anhilfe schafft da externer Ram, eine Anbindung ist über das native RAM Interface möglich.

Gruß Jannis

Croal
06.03.2014, 21:15
Naja, 320x320 pc muss ja auch nicht sein. 160x120 reicht ja auch aber im Grunde hast du recht mit dem Ram. Mit Cams hantieren sollte man schon ein bisschen mehr haben, eventuell auf sd card speichern. Je nach dem was du vorhast ist die fps ist ja nur zweitrangig. Du brauchst ja auch nicht eine flüssige widergabe wenn du das Ergebnis nicht beobachtest sondern die Daten nur für den Stm32 gedacht sind.

durchgebrannt
06.03.2014, 21:32
Eine SD-Card als Ram zu nutzen, ist in diese, Fall nict klug. Zum einem müssen diese meist Page-weise geschrieben werden, zum wäre es deutlich zu langsam die Daten erst von der Kamera zum Chip zu übertragen und dann wieder auf die SD-Karte zu schreiben. 320*320 und ähnliche Dimmensionen sind mit etwas externem Ram(der STM kann nativ bis zu 1GB adressieren) relativ problemlos machbar. Zum sind SD-Karten nicht dafür gemacht, n-mal in der Sekunde neu geschrieben zu werden. Ein durchschalten der Pages und eine entsprechende Speicherverwaltung kostet wieded Zeit und Takte. Im eigenen Ram braucht man da nur Startadressen zu speichern oder feste Buffer anzulegen und die Situation ist entschärft.

Gruß Jannis

Wsk8
06.03.2014, 21:45
Also mir würde eine Auflösung von 160x120 bereits reichen. Das wären dann etwa 20KB RAM. Mehr als 2 Bilder halte ich normal nicht im RAM. Das einzige Problem ist, dass der UART zu langsam ist (für 10 FPS bräuchte ich eine Baudrate von ca 800.000). Das unterstützt das Kameramodul nicht. Ich habe auch gelesen, dass man die Baud bei den voreingestellten 38400 lassen soll, da es sonst zu Problemen kommen kann.

Ich hätte jetzt eher Kameras mit DCMI Interface ins Auge gefasst. Das ist wohl so ne Art SPI und High Speed SPI geht bis 3,4MB. Lieg ich da richtig??

mfg

robin
06.03.2014, 22:48
Die STM32F4x7 und 4x9 unterstützen DCMI, musst mal im Datenblatt nachschauen. Sieht für mich aber nicht nach einer art SPI aus, da es im Datenblatt mit 8-14bit breitem Bus angegeben wird.

Ich hab damit noch nicht gearbeitet, kann dir also nicht weiterhelfen damit.

Mucki
07.03.2014, 13:15
Hi,

vielleicht mal die CMU Cam 4 (http://www.cmucam.org/projects/cmucam4/) anschauen. Version 3 kannst du vielleicht günstig in der "Bucht" bekommen. Auf jeden Fall kannst du Onboard Image Processing betreiben.

FYI,

Mucki

durchgebrannt
07.03.2014, 20:56
Das DCMI Interface ist ein paralleles Interface, welches beim STM unter anderem 8 und 16Bit Busbreite. Es ist ein synchrones interface, die Kamera fungiert als Master. Auf Grund dessen, sind Fehler, durch Toleranzen im Takt, ausgeschlossen.

Gruß Jannis

Achromat
11.03.2014, 21:26
Hallo,

wenn es Passt und Du einen Windows Rechner hast, kannst Du die Patswitch Software verwenden um bis 65Hz in Echtzeit zb Bilder über eine WebCam auszuwerten.
Das Auswerten geht in Echtzeit während der Aquierung, indem man ein Luascript auf die Bedürfnisse anpasst. Die Ergebnisse könenn direct zb. u.a. auf einen AduC7020
Mikrokontroller in Schaltzustände gewandelt werden.

Wie das geht sieht man hier :

http://www.flexxvision.de/luascript.html

Grüße Karsten.