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?
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.
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.
spearson
Tom Prats
Benutzer18923
Bruno Bronosky