Kamera am Arduino ?

Hallo Leute,

ich bin noch sehr frisch im Thema Arduino usw. Für ein Projekt, was mir so im Kopf herumschwirrt wäre es hilfreich, eine Kamera am Arduino zu haben um ein Bild nach dem Auslösen auf einen Webserver zu übertragen. Im Forum bin ich zwar auf Topics gestoßen zu diesem Thema, jedoch sind diese schon etwas älter.

Beim googeln bin ich auf diese beiden Dinger gestoßen:
http://www.electrodragon.com/?product=ov7670-camera-module-breakout-board-power-cable
http://www.miniinthebox.com/de/arduino-ov7670-kamera-modul_p391024.html

Kennt das wer ? Hat jemand bereits Erfahrung mit einer Kamera am Arduino ?

Ich würde mich sehr über eine Antwort freuen.

Beste Grüße
Lazzard

Prinzipiell ist zu sagen daß der Arduino UNO oder MEGA oder dessen Nachbauten zuwenig Rechenleistung und Speicher haben um Videodaten zu verarbeiten.

Was ist die SCCB Schnittstelle?
Grüße Uwe

http://www.miniinthebox.com/de/arduino-ov7670-kamera-modul_p391024.html

Zumindest dieses Kameramodul hat eine serielle Schnittstelle. Der Arduino taugt maximal dazu, das Modul zu parametrieren (Auflösung, Farbe/SW, Dateiformat usw.) und die Einzelbild-Aufnahme auszulösen. Danach die Daten irgendwohin zu leiten (seriell, Bluetooth, Ethernet), evtl. auf SD-Karte speichern. Das dauert pro Bild mindestens einige 10 Sekunden. Von "Bildbearbeitung" oder "Streaming" kann also wirklich keine Rede sein ...

Ich will damit sicherlich keinen Stream verfolgen. Es wäre von Nutzen, wenn ein Bild in einem bestimmten Moment geschossen wird und dann zu einem Webserver oder auf eine SD Karte abgelegt wird. Oder Mailversand mit dem Foto etc. Es würde da auch egal sein, wenn er 15sec zum verarbeiten benötigt.

Mich würde mal interessieren, ob schonmal jemand die Kamera irgendwie verbaut hat etc in Verbindung mit dem Arduino. Oder auch gerne Info's, wenn man damit gescheitert ist :slight_smile:

Der Arduino ist das falsche Mittel für sowas. Nimm einen Raspi oder sonstwas in der Leistungsklasse.

Kleines Rechenbeispiel. Die Kamera leifert 640x480 Pixel. Bei RAW RGB mit 8 Bit pro Kanal reden wir von 6404803 Bytes = 900KB pro Einzelbild. Nehmen wir ferner an, das Du die Daten mit 57600 bit/s aus der Kamera gelesen bekommst ( also 7.2kB/s) brauchst Du im Idealfall schon 125 Sekunden um ein einziges Bild zu lesen (selbst bei doppelter Geschwindigkeit noch immer eine volle Minute). Die Frage ist aber wie lange die Kamera die Bilder vorhält (interner Cahce 3M laut Deinem Link). Du musst das Bild aber auch noch auf eine SD-Karte schreiben, denn bei 2KB SRAM passt nur ein winziger Bruchteil der Bilddaten in den Speicher des Arduino. Danach hast Du dann das gleiche Problem mit dem Speicher, wenn Du die Daten weiterschicken willst, z.b. als Email. Dann hast Du aber immer noch ein RAW-RGB Bild und kein JPEG oder ähnliches. Die Verarbeitung musst Du dann auch noch machen und spätestens da ist dann der Arduino komplett überfordert.

Ein Arduino Mega oder Eigenbau auf einem Breadboard mit einem atmega1284 lässt sich schon dafür benutzen. Siehe OV7670 with both arduino uno and now mega - Sensors - Arduino Forum und mein Beispiel auf GitHub GitHub - arndtjenssen/ov7670: OV7670+fifo camera control with an AVR ATmega1284. Am besten ist eine OV7670 mit FIFO, die das Bild in einen Zwischenspeicher legt, der dann einfach ausgelesen werden kann. Damit lassen sich die aufgenommenen Bilder auf einem Display anzeigen, auf einer SD Karte abspeichern oder auch übertragen...

Klar, man kann auch an einen Smart eine Hängerkupplung schrauben. Spaß macht sowas aber nicht wirklich. Mit einem Raspi geht das einfach und der hat auch genug Leistung. Die Zeit die man mit dem Arduino verpulvert um das zum Laufen zu bekommen steht in keinem Verhältnis zu den zu erwartenden Einsparungen (falls sich überhaupt welche realisieren lassen).

Hallo,
ich beschäftige mich gerade auch mit dem OV7670 und muss den anderen Recht geben, die "Normalen" Arduinos sind deutlich zu schwach für den Datentransfer und die Datenmengen!
Es gibt wohl Projekte die mit der Minimalauflösung arbeiten und die Daten auf ner SD-Karte ablegen aber eine ordentliche Verarbeitung bzw. Weiterleitung ist deutlich zuviel!
Um Uwe's Frage zu beantworten:
SCCB ist eine I2C kompatible Schnittstelle um das Modul zu konfigurieren aber auch die Bilddaten auszulesen!

Ich versuche derzeit das Modul über einen Due anzusteuern um den umgang mit dem SCCB reibungslos hin zu bekommen, probleme bereitet mit noch die Taktgenerierung da ich ein modul ohne fifo benutze!
Schluss endlich aber auch nur ne trockenübung um das ganze auf ein raspberry pi, beaglebone black oder cubieboard 2 zu übertragen, ziel von mir ist es mit den Bildern von 2 Ov7670 räumliche Daten zu erfassen! Sobald ich was handfestes habe werd ich das Projekt mal vorstellen ^^

Mmmh. Kommt ganz darauf an, was der Zweck des Aufbaus / Projektes ist. Mir reichen die mickrigen 16Mhz eines AVRs zur Ansteuerung einer OV760+Fifo, da ich die Bilder nur abspeichern und anzeigen möchte. Alles sehr gemächlich, kein Video, keine JPEG Komprimierung o.ä. notwendig. Ein Raspberry hätte auch zu wenig I/O Ports (im Vergleich zum atmega1284) für die zusätzliche Ansteuerung eines TFTs und anderer Sensoren, die ich für das Projekt benötige. Also mein Antwort auf die Frage: "Kamera an Arduino?" Ja, aber mit Einschränkungen. Die Kommentare anderer Forenteilnehmer fande ich zu absolut und demotivierend.

Die Kamera konnte ich mit der Arduino I2C Library nicht ansprechen, aber ich habe eine bit-banging Variante für SCCP gefunden, die funzt. Siehe SimpleI2C.ccp in meinen code auf github (link weiter oben). Eine OV7670 mit FIFO ist extrem praktisch, da man die Daten aus dem AL422 abholen (auch zwischendurch "stoppen") und weiterverarbeiten kann. Ohne FIFO und dem kleinen SRAM der AVRs wirds kritisch mit der Weiterverarbeitung, z.B. Speicherung auf SD.

Der Post ist mittlerweile schon etwas älter, aber ich habe mir jetzt auch mal die Cam bestellt und will dann versuchen ein Bild mit dem Wemos D1 aus u lesen über I2C und dann an einen Webserver zu übertragen.

Nach dem was ich alles gelesen habe erwartet mich vor allem viel Arbeit, ich werde versuchen mit ArduCam das ganze zu realisieren.

@SphaeroX Hey, bist du mit dem Projekt welches du vor hattest voran gekommen?
Ich habe nämlich das gleiche vor und würde mich über nützliche Infos freuen :wink: