BLE hat nur eine Datennutzlast von 100 Kbit / s, also habe ich mich gefragt, ob es möglich ist, ein Live-Video mit Bluetooth Low Energy zu streamen.
Klassisches Bluetooth 4.0 hat eine Datennutzlast von 2 Mbit / s, was die Übertragung des Videos erleichtert, aber ich bin mehr besorgt über die Gesamtleistung, daher möchte ich die BLE implementieren. Kann ich das gleiche Ergebnis erzielen, wenn ich das Video mit BLE streame?
bluetooth
bluetooth-low-energy
Elektronisch neugierig
quelle
quelle
Antworten:
BLE ist selbst für Streaming mit mittlerer Bandbreite (Audio oder Video) sehr ungeeignet, da es für die Übertragung weniger und kleiner Datenpakete mit viel Ruhezeit dazwischen ausgelegt ist. Aus diesem Grund wird es als "Niedrigenergie" und nicht als "Niedrigenergie" bezeichnet - es reduziert die Menge an Picojoule pro Bit für kleine Pakete im Vergleich zu konkurrierenden Standards. Andere Standards verbrauchen meistens mehr Strom, nicht weil sie weniger effiziente Funkgeräte haben, sondern weil zumindest der Empfänger ständig eingeschaltet ist, selbst wenn der Funkverkehr vergleichsweise groß ist, und weil ein erheblicher Teil der übertragenen Bits keine Nutzlast, sondern Overhead ist - Protokoll-Header, Prüfsummen, auch nur Leerzeichen. BLE eliminiert die meisten dieser unnötigen Stromaufnahmen. Aber wohlgemerkt, das tut es nicht. t Verbessern Sie den Stromverbrauch der Transceiver auf magische Weise, wenn sie aktiv sind. Bei der Videoübertragung werden die Transceiver ständig eingeschaltet. Sie verlieren den größten Vorteil von BLE.
Diese Designwahl reduziert Overhead im Wesentlichen so wenig , wie Sie möchten, aber macht es auch , dass es nicht haben keine Streaming - Einrichtungen eingebauten nativ wie Paket Rekombination, verzögerte Bestätigung und asynchronen Transfers. Sie haben eigentlich nichts eingebaut, BLE ist so roh wie möglich zu einer drahtlosen Schnittstelle, außer vielleicht nRF24 und TI CC2x00. Infolgedessen müssen Sie dies in einer Software tun (entweder auf einem Mikrocontroller oder auf Ihrem Benutzergerät), und dies verbraucht unglaublich viel mehr Energie als wenn Sie ein speziell entwickeltes Protokoll mit Hardwareeinrichtungen dafür wie Bluetooth 3.0 EDR oder verwenden W-lan.
Dies führt zu der etwas eingängigen Vorstellung, dass Bluetooth Low Energy, sobald Sie sich mit Audiodatenraten und höher befassen, je nach Implementierung etwa zweimal weniger effizient ist als Bluetooth 3.0, und wenn Sie in den Megabit-Bereich gelangen, ist dies erheblich weniger effizient als WiFi. Dies ist der Grund, warum WiFi existiert - das und wohl die drahtlose Reichweite, obwohl heutzutage Transceiver für beide Standards sehr gleichwertig sind. WiFi hat nur optionales MIMO und Diversity.
Selbst wenn Sie die - zumindest für Video - sehr restriktiven Bandbreiten- und Reichweitenbeschränkungen, die Bluetooth auferlegt, nicht berücksichtigen, können Sie mit dieser Methode möglicherweise nicht das Ziel einer Videoübertragung mit geringem Stromverbrauch erreichen.
quelle
Mit 100 KBit / s können Sie möglicherweise ein Video von geringer Qualität in der Größe einer Briefmarke streamen :-)
Ohne Präzision stelle ich mir vor, dass Sie HD (nicht einmal Full HD) mit 30 fps in H264 mit durchschnittlicher Bewegung (Faktor 2) wünschen. Eine ungefähre Bitratenschätzung könnte sein:
(1280px * 720px) * 30fps * 2 * 0,07 ~ = 3800kbps
Sie müssen dies also um einen Faktor 38 reduzieren (zumindest!).
Angenommen, Sie geben sich mit ~ 320x200 @ 15fps zufrieden und liegen immer noch etwas darüber (die theoretische Bandbreite, erwarten Sie weniger).
quelle
Alle meine Tests endeten mit unter 2000 Oktetten / Sekunde
Voraussetzungen:
Alle Tests, die ich zwischen Android <-> Linux & Bunget, Android <-> Linux & Bleno, Android <-> ST-Micro Nucleus + blueNRG durchgeführt habe. Linux & NUCLEO mit GATT-Servern. Android läuft hauptsächlich mit GATT-Client.
Android-> GATT-Server NOTIFICATION / WRITE NO RESPONSE kann nicht oft als 13 ms gesendet werden. Oft als 13ms in Paket verloren enaded.
Server-> Android NOTIFICATION / WRITE NO RESPONSE kann nicht oft als 15 ms gesendet werden
Das führt zu 1000 ms / 13 ms -> 77 Mal / Sekunde von 20 Bytes = 1500 Oktetten / Sekunde.
quelle