Forum: Mikrocontroller und Digitale Elektronik IP Camera Projekt


von Andreas U. (mountainking)


Lesenswert?

Hallo, ich möchte eine IP Camera bauen und habe einige Fragen dazu:

1.) Bei meiner Suche habe ich lediglich dieses Projekt gefunden: 
http://www.ime.usp.br/~fr/sbc/
Kennt jemand noch weitere?

2.) Die wesentlichen Bauteile einer IP-Camera sind
der CMOS Image Sensor, der Processor, SDRAM zum Zwischenspeichern damit 
wenn z.B. Verzögerungen auftreten keine Bildinformationen verloren gehen 
und eine Schnitstelle wie GigE oder USB.
Warum wurde dann im oben genannten Projekt sowohl ein ARM9-Prozessor als 
auch ein FPGA mit jeweils eigenem SDRAM verwendet? Ist das nicht doppelt 
gemoppelt?

3.) Was ist am besten als Prozessor geeignet? Es gibt da ja drei 
verschiedene Lösungen wenn ich das richtig sehe:
a) über einen FPGA
b) über einen MPU
c) oder auch über einen Digital Media System-on-Chip (DMSoC) wie z.B. 
den DM368 von TI.
Anmerkung: Ich hätte gerne die Möglichkeit das Bildrohmaterial 
unkomprimiert zu übertragen als auch einen eigenen Video-Codec verwenden 
zu können.

4.) Ip Cameras sind ja einfach per Webbrowser aufrufbar. D.h. diese 
müssen einen Webserver haben. Läuft auf diesem Webserver ein Programm ab 
oder ist dort eine Webseite abgelegt?

5.) Ich brauche GigE. Ich nehme mal an es kommt eigentlich nur ein FPGA 
wegen der hohen Datenrate in Frage? Kann so ein FPGA auch als Webserver 
fungieren?

von dito (Gast)


Lesenswert?

Ich vermute mal, dass der ARM den Webserver implementiert und der FPGA 
für die komplette Videobildverarbeitung zuständig ist.

von Lehrmann M. (ubimbo)


Lesenswert?

Andreas U. schrieb:
> Warum wurde dann im oben genannten Projekt sowohl ein ARM9-Prozessor als
> auch ein FPGA mit jeweils eigenem SDRAM verwendet? Ist das nicht doppelt
> gemoppelt?

Nein auf keine Fall. Du musst dir mal ausrechnen was da für Daten auf 
dich zukommen.

nehmen wir mal 640*480 als Standartauflösung. Bei 8 Bit für RGB und 30 
fps.

640*480*3*8*30 = 221.184.000 Bits pro Sekunde = 27.648.000 Byte/s = 
27.648 kB/s = 27,648 Mb pro Sekunde.

In dieser Zeit muss der Datenstream AD-Gewandelt werden, komprimiert 
werden und auf Ethernet bzw. dessen Sub-Layer gelegt werden.

Dir ist schon klar, dass das irrsinnige Datenmengen sind? Bei der 
gwählten Auflösung sind wir aber bei weitem noch bei Webcamqualität ... 
Vorallem in der Farbtiefe sind wir noch nicht sonderlich weit...

Glaub mir da wird der Speicher voll ausgelastet ... darum auch der 
externe SDRAM. Man muss ja die 28Mb pro Sekunde irgendwo unterbringen 
bis sie weggeschafft werden...

Der FPGA ist übrigens in Kombination mit dem ARM Prozessor an der 
Komprimierung (das frisst ordentlich Leistung) am werkeln. Vermutlich 
macht der ARM auch noch den Webserver mit.

Andreas U. schrieb:
> 3.) Was ist am besten als Prozessor geeignet? Es gibt da ja drei
> verschiedene Lösungen wenn ich das richtig sehe:
> a) über einen FPGA

Ein FPGA ist kein Prozessor sondern eine Ansammlung von Logikelementen 
(primär Flip Flops). Die kann der Anwender für seine Bedürfnisse 
entsprechend verschalten. Mit einem Microcontroller oder Prozessor hat 
das zunächst mal überhaupt nichts zu tun.

> b) über einen MPU
auch der muss angesteuert werden. Ein Mikroprozessor darf nicht mit 
einem Micrcontroller verwechselt werden (!)

> c) oder auch über einen Digital Media System-on-Chip (DMSoC) wie z.B.
> den DM368 von TI.
Das wäre eine akzepable Möglichkeit.

> Anmerkung: Ich hätte gerne die Möglichkeit das Bildrohmaterial
> unkomprimiert zu übertragen als auch einen eigenen Video-Codec verwenden
> zu können.
Ich befürchte das wird nicht möglich sein - siehe Datenaufkommen und dem 
was du zur Übertragung zur Verfügung hast.

Andreas U. schrieb:
> 4.) Ip Cameras sind ja einfach per Webbrowser aufrufbar. D.h. diese
> müssen einen Webserver haben. Läuft auf diesem Webserver ein Programm ab
> oder ist dort eine Webseite abgelegt?

Ich empfehle dir dich etwas mit TCP/IP Stacks zu beschäftigen. Wie ich 
das interpretiere hast du recht wenig Ahnung in diesen Sachen (sorry 
nimm's mir nicht persönlich). Prinzipiell und grob gesagt fungiert ein 
Mikrocontroller als Webserver. Er biete z.B. die HTML Dokumente an 
welche dann mit einem entsprechenden Webclient (z.B. deinem Webbrowser) 
abgerufen werden können. Schon alleine das ist für ungeübte eine Aufgabe 
für ein halbes Jahr das zu realisieren. Dann muss dort noch der 
Videostream codiert werden und dann in einem geeigneten Datenformat auf 
den Weg geschickt werden. Ergo: auf dem Mikrocontroller (bzw. auf Grund 
der Größe auf einem externen Speichermedium (z.B. SD-Karte) ist die 
entsprechende Website hinterlegt). Google mal nach AVR Webserver oder 
nach Microcontroller Webserver.

Andreas U. schrieb:
> 5.) Ich brauche GigE. Ich nehme mal an es kommt eigentlich nur ein FPGA
> wegen der hohen Datenrate in Frage? Kann so ein FPGA auch als Webserver
> fungieren?

Ja kann er. Das ist alles eine Frage des Aufwandes und der Zeit: Hier 
der absolut einfachste Einstieg in die FPGA Welt mit Netzwerkanschluss. 
Wir reden hier noch lange nicht von einem Webserver !
http://www.fpga4fun.com/10BASE-T0.html

Prinzipielles zu FPGAs: VHDL (=grob gesagt FPGA Programmiersprache) zu 
behrerrschen ist eine Kunst. Mikrocontroller sollte man davor auf dem FF 
beherrschen. Dann kann man sich daran wagen VHDL zu machen. Bis man aber 
effizient genug programmieren kann um dein Vorhaben zu realisieren 
vergehen mit Sicherheit mehrere Jahre.
Im Grunde kommt nur ein FPGA in Frage (ganz richtig wegen der hohen 
Datenraten). Sehr viel Entspannung würde ein Video-IC bringen der dir 
das Datenmaterial kodiert. Diesen Stream müsste man dann 'nur' noch via 
FPGA und TCP/IP weiterleiten. Mit 'nur' meine ich eine Entwicklungszeit 
von einem Jahr oder mehr bei mehreren Stunden Hobby-Elektrotechnik auf 
höchstem Niveau.
Problem mit FPGAs: teuer (!). Ein Hobbybastler kann sich einen 
Mikrocontroller für 5Euro noch leisten. Brauchbare FPGAs in deinen 
benötigten Dimensionen gehen bei 180-200€ los und hören irgendwo bei 
500€ wieder auf. Hinzu kommt die benötigte Entwicklungsumgebung und 
selbstverständlich ausreichende Debugging-Tools. Da wirst du gut Geld 
los werden.

Fazit: Sie mir nicht böse aber du scheinst Anfänger auf diesem Gebiet zu 
sein (kann man deinen Fragestellungen entnehmen). Dieses Projekt ist was 
für ausgewachsene Entwicklungsingenieure mit 10-20 Jahren 
Berufserfahrung auf diesem Gebiet. Wenn du dich anstrengst - viel liest 
und autodidaktisch veranlagt bist dann kannst du es schaffen - keine 
Frage. Als ca. Zeit würde ich ohne Spaß 5 bis 8 Jahre Entwicklungszeit 
(bei 1 Man) einplanen bist das Produk einiger Maßen verwendbar ist.

Lies dich mal ein bisschen ein und überlege dir, ob du das wirklich 
realisieren möchtest und ob du dazu Zeit und Nerven hast. Das zweite ist 
ein nicht zu unterschätzender Faktor. Ca. die Hälfte aller 
Hobby-Entwickler geben irgendwann deswegen ein Projekt aus. Jahrelange 
Frustraiton, etc...
Wenn es irgendwie geht dann rate ich dir zu einer fertigen Kamera ...


Viel Erfolg =)

von JojoS (Gast)


Lesenswert?

Wo soll die Kamera denn eingesetzt werden?
Zu 4): Kameras nach GigE Standard haben keinen Webserver drin und 
liefern idR nur unkomprimierte Bilddaten für messtechnische Aufgaben.
Kameras mit Ethernet ohne AIA GigE Standard sind meist 
Überwachungskameras. Da will man dann viele im Netz haben und hier ist 
z.Teil sehr aufwändige Software drin, Komprimierung und Webserver 
inclusive.

von Andreas U. (mountainking)


Lesenswert?

Schonmal danke für eure Tipps. Der AT91RM9200 ist natürlich ein MCU. 
Hatte ich falsch in Erinnerung.
Über das Programmieren des FPGA mache ich mir keine Sorgen. Habe zwar 
noch nicht mit VHDL gearbeitet, aber das sollte nicht das Problem 
werden. Was mir allerdings Kopfzerbrechen gemacht hat ist der Webserver, 
weil ich mich in diesem Bereich gar nicht auskenne.
Das geht aber wohl auch auf einem FPGA:
http://www.altera.com/support/examples/nios2/exm-micro_tutorial.html
Zum Preis des FPGA. Im Auge habe ich den Altera Cyclone IV. Der ist mit 
ca. 30€ ja noch recht günstig. Reicht dieser etwa nicht aus um 1080p bei 
60 fps zu verarbeiten? Und ist dieser von der Rechenleistung zum 
komprimieren geeignet?

@JojoS
Dass GigE Cameras wie z.b. von Point Grey keinen Webserver haben wusste 
ich nicht.
Es gibt wenn ich das sehe also 2 Möglichkeiten:
Ethernet (GigE) + Control Software und
Ethernet + Webserver
Erstere Lösung ist wahrscheinlich die einfachere, allerdings auch für 
den PC rechenintensiver. So ein Webserver wäre schon nett.

von Benjamin S. (recycler)


Lesenswert?

Ich habs aktuell so gemacht. Dockstar mit Logitech Webcam C160 für ~15 
Euro bei Reichelt. Kostet dich mit Dockstar (20 Euro) also 35 Euro.

http://www.rudiswiki.de/wiki/DockStarWebCamStream

Ausserdem kannst du die CAM auf Infrarot umbauen.

Wenn du es nativ bauen willst, dann wirds aufwändiger, aber ob sich das 
lohnt?

von Andreas U. (mountainking)


Lesenswert?

@Benjamin
Dass es fertige Cams gibt weis ich, aber darum geht es nicht ;).

Ich habe mich nochmal ein wenig schlau gemacht. Um den FPGA Ethernet 
fähig zu machen müsste ich wohl selber einen Gigabit Ethernet IP Core 
schreiben bzw. kaufen. Auf http://opencores.org und 
http://www.fpga4fun.com/10BASE-T0.html scheint es ja 
Implementierungsbeispiele zu geben.

Aber kann ich mir den ganzen Aufwand den Ethernet IP Core selber zu 
schreiben nicht sparen indem ich z.B. diesen 
http://de.farnell.com/texas-instruments/tlk2201ajrzqe/transceiver-enet-1-1-6gbps-80bga/dp/1576962 
Gigabit Ethernet Tranceiver verwende?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.