Übertragung eines Videostreams durch einen Mikrocontroller

Ich arbeite an einem Projekt, das derzeit gut funktioniert, aber dieses Jahr wollen wir es erweitern, indem wir Daten daraus sammeln, unabhängig von seinen aktuellen Funktionen. Wir haben eine iPad-App eingerichtet, um einen Arduino über Bluetooth zu steuern. Der nächste Schritt ist die Übertragung von Videos über Bluetooth auf das iPad.

Mit dieser Frage möchte ich mich darauf konzentrieren, wie ein Mikrocontroller einen Videostream über Bluetooth senden kann. Ich kann anscheinend keinen Weg finden, dieses Projekt überhaupt zu starten.

Wie verbindet man die Kamera mit dem Mikrocontroller?

Wie senden Sie diesen Stream dann über Bluetooth?

Sie können wahrscheinlich nicht über Bluetooth streamen - nicht genug Bandbreite. Jede Datenübertragung über Bluetooth auf ein iPad ist wirklich schwierig, da die Art der öffentlich verfügbaren Datenströme begrenzt ist. Video über WLAN ist eine bessere Wahl und es gibt bereits Lösungen von der Stange.
Wenn Sie den Rat Ihres Mannes befolgen und mit meinem Partner sprechen, scheint er sowieso bereits letzte Woche auf WLAN umgestiegen zu sein. Also habe ich mit WLAN eine weitere Frage gestellt electronic.stackexchange.com/q/49045/15343
aber kann er nicht ein 32-Bild oder einen AVR-Mikrocontroller für das Video-Streaming mit einer TTL-Kamera (Bild mit hoher Geschwindigkeit) verwenden?
Wer hier nach einer Antwort sucht, sollte sich Intels neuen Curie-Mikroprozessor ansehen. Der Arduino 101 verwendet es. Ich bin mir noch nicht sicher, ob es das kann, aber es ist im Moment die neueste Technologie. Für ~ 30 US-Dollar sind BTLE, Gyroskop und Beschleunigungsmesser eingebaut.

Antworten (2)

Leider werden Sie meiner Erfahrung nach schnell feststellen, dass Videos ohne viel CPU-Leistung unerträglich schwer zu manipulieren sind. Beginnen wir von vorne: Wie viel Video möchten Sie?

Hier gibt es viele Möglichkeiten, aber fangen Sie klein an. Angenommen, Sie wollten der Einfachheit halber ein 640 x 480-Frame eines 8-Bit-Schwarzweißvideos mit 24 Frames pro Sekunde.

Das sind 640*480 Pixel = 307.200 * 8 Bit pro Pixel = 307.200 Kilobyte pro Frame * 24 Frames pro Sekunde = 7.372.800 Byte pro Sekunde oder ~7,37 Megabyte pro Sekunde

Das ist also eine Grundlinie für den Datendurchsatz für eine Kamera, die Rohbilder ausgibt, und das schließt Ton oder Farbe nicht ein. Jetzt haben Sie ein paar Möglichkeiten, die Sie einschlagen können: Sie können mit dem Codieren des Videostreams beginnen, oder Sie können viel Bandbreite erhalten. Ich kenne den Durchsatz von Bluetooth nicht, daher kann ich Ihnen dort nicht helfen.

Das Codieren erfordert leider eines von drei Dingen: viel Rechenleistung oder spezialisierte Hardware oder (möglicherweise) FPGA-Kenntnisse, die ich auch nicht habe. Die Kodierung wird Bandbreitenprobleme reduzieren, aber zu ziemlich hohen Kosten. Sie müssten die Komprimierung und so weiter untersuchen, um herauszufinden, ob Sie dies überhaupt über Ihre Schnittstelle bekommen könnten und das Arduino trotzdem nützliche Arbeit leisten könnte.

Wenn Sie eine Kamera an einen Mikrocontroller anschließen möchten, werden Sie feststellen, dass selbst das einfache Aufnehmen von Standbildern ein Problem sein kann, je nachdem, wie die Standbilder geliefert werden. Es gab eine Sparkfun-Kamera, die JPEG-Frames lieferte, aber keinen festen Zeitraum hatte, wie lange die Codierung dauerte, und dann plötzlich anfing, den codierten Frame so schnell wie möglich auszuspucken, und da die Frames zu groß waren, um hineinzupassen RAM auf dem Mikrocontroller musste seine ganze Zeit damit verbringen, den Frame zu erhalten und ihn über die Schnittstelle auszuspucken, die sie zur Übertragung verwendeten.

tl; dr: Sie sollten feststellen, was Sie brauchen, und wahrscheinlich versuchen, herauszufinden, ob die Verwendung des Mikrocontrollers als Vermittler die beste Wahl ist.

Viel Glück! Ich hoffe das hilft.

7.372.800 Bytes pro Sekunde sind tatsächlich etwas mehr als 7,03 Megabytes pro Sekunde. Bluetooth ist nur mit etwa 2,1 Mbit/s oder 0,26 Megabyte pro Sekunde bewertet. Sie sind also genau richtig, eine Alternative zu empfehlen, Bluetooth ist nicht für Video geeignet.
Das wären 7,03 Mebibyte , oder nicht? Huzzah für seltsame halbneue binäre Präfixe ... Und als zusätzlicher Kommentar: Was Ihnen an vielen Designs für Elektronik mit Video auffallen wird, ist, dass sie häufig analoges Video sind, alles andere digital. Das liegt daran, dass es viel einfacher ist, nichts verarbeiten zu müssen und nur die Person hinter den Kontrollen die harte Arbeit der Interpretation des Videos erledigen zu lassen. Dies liegt auch daran, dass normalerweise nicht alle Informationen erforderlich sind, sodass verlustbehaftetes analoges Video in Ordnung ist.
Mebibyte, das ist seltsam. IEEE ist damit fertig, aber Google nicht . Da bin ich ehrlich gesagt etwas hin- und hergerissen, ich bin bei beiden Mitglied.
Der Grund für dieses Problem ist, dass in der Community allgemein angenommen wurde, dass Kilo oder Mega vor „Byte“ Potenzen von 2 bedeuten. Dann erkannten einige skrupellose Einzelpersonen in einer Festplatten-Marketinggruppe, dass sie sich verkaufen könnten Potenzen von 10 und nicht verklagt werden, weil sie weniger Platz verkauft haben, als auf der Verpackung stand. Damit begann die Diskrepanz, und da die Verwendung von "MB" auf einer Festplatte x10^6 Bytes und nicht x2^20 beträgt und durch SI-Präfixe technisch korrekt ist, wurde ein neues Präfix erstellt. Der einzige Sinn, sie jetzt zu verwenden, ist der Klarheit halber in Situationen wie diesen.
Übrigens: ist das Bandbreite 2,1 Mibit/sec? Oder 2,1 Mbit? Der ganze Grund für das neue Präfix besteht darin, sicherzustellen, dass Sie solche Fragen nicht stellen müssen, aber es wird lange dauern, bis die Leute anfangen, sie regelmäßig zu verwenden.
Ich erinnere mich an die Debatte zwischen Marketing und Ingenieuren im Zusammenhang mit dem, was sie 1000 Bit oder 1024 Bit nannten, hatte aber nicht bemerkt, dass sie es gelöst hatten. Es sind 2,1 Mbit und 0,26 Mebibyte. In diesem Fall ist es zumindest akademisch, da wir nicht einmal in der Wut einer akzeptablen Rate für Bluetooth-Videos sind.

Bluetooth ist eine Halbduplex-Funktechnologie mit einer maximalen Rohdatenrate von 1, 2 oder 3 Mbit/s, je nach verwendetem spezifischen Modulationsschema. In der Praxis kann eine Anwendung höchstens etwa 200 KB/s Datendurchsatz erreichen.

Selbst wenn Sie Ihre Videoanforderungen auf Viertel-VGA (320 × 240) bei 10 fps mit 8 Bit/Pixel (768 KB/s) reduzieren, müssen Sie die Daten immer noch um mindestens 4:1 komprimieren Übertragen Sie es in Echtzeit über Bluetooth.

Wenn Sie dies jedoch immer noch verfolgen möchten, würde ich empfehlen, sich DSP-Chips als den von Ihnen ausgewählten Mikrocontroller anzusehen. Beispielsweise eignet sich der Analog Devices Blackfin ( ADSP-BF561 ) besonders gut für die Echtzeit-Videoverarbeitung. Das dazugehörige EZ-KIT erleichtert den Einstieg in die Entwicklung.