Momentan interessiere ich mich für Kameramodule, wie z.B. das Modul für
den Raspi oder das Pollin-Modul
http://www.pollin.de/shop/dt/Mjk3OTE0OTk-/Bauelemente_Bauteile/Aktive_Bauelemente/LEDs/Power_LED_und_Kameramodul.html
Interessiert bin ich vor allem an Informationen, wie man sich selber so
ein Modul bauen könnte. Einige Informationen habe ich schon gefunden,
aber nicht, was mein Wissen genügend anreichert, um so ein Modul
herstellen zu können.
Wie üblich werden bestimmt Einwände kommen, dass dieses Vorhaben zu
schwer ist, ein FPGA benötigt wird und zu umständig zu programmieren
sei, ... - aber darum geht es mir nicht.
Mir geht es darum, das Wissen zu erlangen, um so einen Schluss selber
ziehen zu können. Ich will mich mit der Materie auseinandersetzen und
verstehen, welche Bildsensoren es gibt und auf welche Weise diese
einfach angesprochen werden können, welche Linse oder welches Objektiv
eine passende Wahl ist, etc. Ich möchte in der Lage sein, theoretisch
ein Kameramodul aufbauen zu können (Auswahl Linse, Bildsensor, µC zum
Auslesen der Daten, evtl. µC zum Komprimieren der Daten, evtl.
Implementation von Funktionen wie Weißabgleich o.Ä., ...). Wenn ich
hinterher vielleicht wirklich etwas lauffähiges auf die Beine stellen
kann, dann wäre ich natürlich nicht unglücklich.
Über Infos zu vielleicht schon umgesetzten (eigenen oder fremden)
Projekten würde ich mich auch freuen.
Ich empfehle als Einstieg einen Zeilensensor. Den kann man recht bequem
mit einem Flash- oder Pipeline-ADC (bzw. drei davon) auslesen, und es
gibt Beispiele, auch hier im Forum (z.B. Spektrometerprojekt). Und wer
gut ist, baut eine Scankamera.
Ich habe mal eine 5 Mega-Pixel-Kamera gebaut. Sensor war ein MT9P031 von
Aptina. Die Datenübertragung ging über einen Spartan3AN an einen
FTDI2232H und von da an den PC. Der gesamte Block-RAM des Spartan wurde
als Ringpuffer benutzt um kurze USB-Aussetzer ausgleichen zu können. Das
Objektiv war ein C-Mount, die Halterung dafür habe ich bei
www.schaeffer-ag.de machen lassen.
Da das Auslesen des Bildes ca. 0.7s dauerte, war wegen des
Rolling-Shutter-Effektes die Kamera nur für statische Szenen zu
gebrauchen.
@Sebastian:
Vielen Dank für deinen Hinweis auf Zeilensensoren. Ich habe aber
einerseits eher Interesse an der Verarbeitung ganzer Bilder und Videos
und andererseita momentan (noch?) keine Bestrebungen etwas zu
implementieren. Noch bin ich in der Phase des Lernens
@Markus:
Was war der Grund für die lange Zeit - war es die Übertragung mittels
USB oder wirklich das Auslesen des Sensors? Der Sensor soll ja bis
2592x1944@14Hz schaffen und wenn ich mich nicht irre, dann ist der FPGA
doch auch schnell genug um Videos aus dem Sensor auszulesen. Woran hat
es gelegen?
Der Flaschenhals war die Übertragung per USB. Das Problem ist das man
den Sensor innerhalb eines Bildes nicht anhalten kann. Der FTDI hat
4KByte Puffer, der FPGA konnte auch nochmal 4096 Pixel speichern.
Wenn die Puffer überlaufen gehen Daten verloren und das Bild ist kaputt.
Mit 7.5MHz Pixeltakt hat es funktioniert bei 15 MHz gingen immer wieder
Daten verloren. Ich habe den Takt für den Bildsensor von den 60MHz des
FTDI heruntergeteilt, so musste ich nicht mit verschiedenen Taktquellen
arbeiten.
Da es für die Anwendung schnell genug war habe ich es dann nicht weiter
optimiert.
Von dam ausgehend, was ich bisher gelesen habe scheint allemein die
Datenübertragung von Videoströmen das größte Problem zu sein. Das ist
aber auch ein weiteres Puzzlestück: ein passender Hardware-Encoder.
Bei dem denke ich mir jedoch momentan noch, dass es wahrscheinlich kein
Problem ist. So Encoder werden heutzutage in jedem nur erdenklichen
Gerät benutzt, dass ich davon ausgehe eine Vielzahl von Infos und
Beispielprojekten zu finden.
Ich habe mir mal ein wenig die Seiten zwischen 2629 und 3412 angeschaut.
Dies ist schon WESENTLICH mehr, als ich mir überhaupt vorstelle. Der
Chip, den du beschreibst, kann einfach einen Haufen an
Bildtransformationen vornehmen (drehen, skalieren, ...) und eine
Vielzahl an Ein- und Ausgabegeräten ansteuern.
Auch die VPU ist wesentlich mächtiger als momentan angedacht. Es reicht
ein einfacher Encoder, der das Material aus dem Bildsensor, nachdem es
durch einen FPGA gejagt wurde, in z.B. h.264 zu transformieren. Der
i.MX53 kann das, aber auch noch ein halbes dutzend weitere Formate En-
und Dekodieren.
Mir ist aber auch bewusst, dass ein einfacher MP2/h.254/...-Encoder
nicht einfach zu bekommen ist. Ich finde hier und da immer wieder mal
einen passenden Chip. Aber obwohl mittlerweile 'überall' Videoencoder
benutzt werden, wie z.B. in zig Millionen Handys, scheinen die Chips
selber für Endkunden nur schwer zu bekommen. Oder regeln das alle Handys
per Software?
Aber wie gesagt werde ich schon irgendeinen Chip finden - sei es auch
nicht mit meiner gewünschten Auflösung, Framerate oder Komprimierung.
Sollte jemand eine Quelle für entsprechende Chips haben - immer her
damit.
Im Consumer-Bereich ist der Hardware-Encoder entweder ins SoC (bei
Handys usw.) oder in den Bildsensor (div. Webcams) integriert.
Ansonsten gibt es noch Hardware-Encoder für JPEG2000 von Analog (ADV212)
und diverse JPG-Encoder-Cores für FPGA.
DSPs von verschiedenen Herstellern (z.B. TI) mit denen man Videos
codieren kann gibts natürlich auch noch.
Wenn Du noch etwas anders findest, würde mich das sehr interessieren.
Das Datenblatt was ich verlinkt hatte ist von einem imx535, das ist ein
typischer (eigentlich schon veralteter) SoC für ein Tablet.
Freescale ist soweit ich weiß der einzige Hersteller wo man die
komplette Doku eines solchen SoC einfach so herunterladen kann.
Ich suche gerade seid Ewigkeiten nach einem vernünftigen Encoder. Ich
glaube ich starte gleich einen neuen Thread um nach solchen Chips zu
fragen.
Patente sind Ansichtssache und ich finde unser Patentwesen ziemlich
unausgereift. Aber davon gelöst - ist es durch die Patente echt
gelungen, dass man als Konsument zum Basteln keine Möglichkeit hat um so
einen Encoder zu bekommen? Ich meine jetzt ohne einen teuren Allround-µC
mit entsprechenden Fähigkeiten zu kaufen? Natürlich gibt es alternativen
wie das Zerlegen von Geräten mit entsprechenden Komponenten oder etwa
einen Raspi, aber kann ich als Endverbraucher / interessierter Konsument
wirklich keinen passenden Prozessor kaufen?
Ich glaube das hat eher wirtschaftliche Gründe:
Kaum jemand braucht sowas ohne das drumherum.
Und wenn doch dann sind die für professionelles Videoequipment für TV
Sender, Security und so.
Billig und einfach dranzukommen kannste daher vergessen.
> Ich meine jetzt ohne einen teuren Allround-µC mit> entsprechenden Fähigkeiten zu kaufen?
Ehm, ich glaube ohne sind die teurer als mit weil spezialteil ;-)
Ich habe gerade nochmals eine Ewigkeit weitergesucht. Es gibt so einiges
an µC, IP-Cores zum Lizensieren, ... aber mir wollen die wohl alle
nichts verkaufen ;)
Nun ja, dann muss ich mich wohl darauf einlassen, dass ich hier die
Grundlagen nur theoretisch erarbeiten kann. Für eine Implementierung bin
ich nunmehr immer wieder bei den i.MX 6 gelandet. Aus der Serie können
alle außer dem SoloLite Video-Encoding und der i.MX 6 Solo kostet bei
Digikey ca. 26$
(http://www.digikey.com/product-detail/en/MCIMX6S5DVM10AB/MCIMX6S5DVM10AB-ND/3831437)
Mit dem Chip kann man direkt einen Bildsensor auslesen und das Kodierte
Video über USB ausgeben... wenn gewünscht auch mit weiteren
Transformationen und gleichzeitiger Ausgabe über zwei Displays.
Irgendwie schade, dass man keinen dezidierten Video-Encoder bekommen
kann. Grendel hat wohl recht, dass sich ein Encoder für Endanwender
nicht rechnet. Wahrscheinlich wollen die Meisten eher so einen µC wie
den i.MX, mit dem man fast alles erdenkliche im Multimedia-Bereich
erschlagen kann.
> aber mir wollen die wohl alle nichts verkaufen ;)
Warum sollten Sie auch?
Ne E-Mail von Dir zu beantworten kostet die schon mehr als Du denen
einbringst ;-)
(Stundenlohn...)
$26 ...
Der i.MX6 alleine reicht nicht: Da kommt noch 2x DDR3 Speicher dabei und
Power Management und eine (minimum) 6 Lagen Platine und ein riesen
Haufen anderer Bauteile.
Du kannst für die Materialkosten in Einzelstückzahlen noch locker eine 0
dranhängen und davon ists noch nicht zusammengebaut oder getestet.
Und wenns nicht auf anhieb klappt: Alles nochmal ;-)
Grendel schrieb:> $26 ...> Der i.MX6 alleine reicht nicht: Da kommt noch 2x DDR3 Speicher dabei und> Power Management und eine (minimum) 6 Lagen Platine und ein riesen> Haufen anderer Bauteile.> Du kannst für die Materialkosten in Einzelstückzahlen noch locker eine 0> dranhängen und davon ists noch nicht zusammengebaut oder getestet.> Und wenns nicht auf anhieb klappt: Alles nochmal ;-)
Es gibt die Wandboards die haben IMX6 SoloLite, Dual bzw. Quad verbaut.
Kosten alle so ~100€ mit Basisboard (das man nicht braucht). Offener EDM
Connector. Laufen ganz gut stabil und sind halbwegs im indust. Umfeld
brauchbar. Freescale schlägt übrigens ein 12 Lagen Layout vor ... nicht
ohne Grund.
Ja klar FERTIGE Module aus Großserienfertigung gibts günstiger, ich
sprach da vom Selbstbau (klang danach als wollte der Threadstarter dies
tun, was natürlich kostentechnisch völlig sinnfrei ist).
> Freescale schlägt übrigens ein 12 Lagen Layout vor ...> nicht ohne Grund.
Die normalen Boards sind alle 8 Lagig.
Na, na, na, wer wird denn meine Idee für sinnfrei halten? ;)
Natürlich ist es sinnfrei... oder aber auch nicht. Kommt auf den
Blickwinkel an. Ich lerne etwas neues und habe Spaß daran - für mich in
der Regel eine der schönsten Dinge die es gibt. Und wenn ich hinterher
sogar etwas nettes Implementieren kann, dann hat sich mein Lernprojekt
doppelt gelohnt.
Ich möchte am liebsten so viel wie möglich lernen und selber machen.
Aber das hat auch seine Grenzen - zeitlich und finanziell. Natürlich
werde ich NIE ein >komplettes< Kameramodul herstellen. Ich werde NIE den
passenden Bildsensor selber herstellen oder die Leiterplatte selber
herstellen (ich meine das Basismaterial selbst). Aber auch das andere
Extrem, direkt ein fertiges Modul wie die geniale 30€ Kamera vom Raspi
zu benutzen, reizt mich nicht.
Irgendwo dazwischen würde ich gerne landen. Mein erstes Bild im Kopf war
ein System aus µC, FPGA (evtl. beides kombiniert), Bildsensor, Kamera,
Encoder und eine Anbindung z.B. via USB. Das würde ich noch immer gerne
machen, scheint aber so nicht umsetzbar zu sein.
Momentan läuft es darauf hinaus, dass ich wohl nur bei der Theorie
bleibe / bleiben muss mangels Alternativen.
ABER wie so üblich habe ich mich mit etwas intensiver
auseinandergesetzt, womit ich mich vorher nicht beschäftigt habe: den
netten Freescale Prozessoren. Die oben angesprochenen Wandboards hatte
ich bereits entdeckt, und für 79€ - 129€ sind die in meinen Augen schon
der Knaller. Ich glaube mit denen werde ich mich auch mal beschäftigen
und vielleicht ein nettes Multimedia-Projekt umsetzen.
P.S.: @Grendel: Das kleinste Wandboard dass ich kenne hat zum Glück
nicht den SoloLite, sondern den Solo (für 79€). Der SoloLote kann
nämlich keine Videos kodieren.
> Na, na, na, wer wird denn meine Idee für sinnfrei halten? ;)> > kostentechnisch völlig sinnfrei
Kostentechnisch. Kostentechnisch. ;-)
Rechne Dir mal in online Kalkulatoren von Platinenherstellern aus was ne
sagen wir mal 100x100mm 8 Lagen Platine kosten würde.
Und dann überleg Dir noch wie die ganzen großen BGAs auf die Platine
gelötet werden sollen.
> P.S.: @Grendel: Das kleinste Wandboard...
Du meinst @fg, vom Wandboard hab ich ja nix gesagt ;-)