Hi, ich experimentiere zur Zeit an einem BLE-Funksensor, welcher über Energy-Harvesting autark aus einer Wärmequelle versorgt werden soll. Konkret kann ich innerhalb von 10min ca. 0.5-1J sammeln. Das sollte reichen um innerhalb dieser Zeit alle paar Sekunden eine Temperaturmessung durchzuführen und die Daten über BLE an eine entsprechende Empfangsstelle, ich nenne sie mal Master zu senden. Allerdings steige ich noch nicht so ganz durch, was unter Verwendung von BLE konkret ein geeigneter Kommunikationsablauf ist. BLE kann ja Advertising-Pakete raussenden. Schon diese können Daten enthalten (31 bytes payload afaik, das würde reichen). Allerdings sind diese erst mal unverschlüsselt und von jedem Empfänger einsehbar sowie so ohne weiteres nicht einer bestimmen gesicherten Quelle zuordbar (sofern ich z.b. ganz viele dieser Funk-Sensoren betreibe, die auch noch alle gleich heißen. Oder haben die alle eine unique ID?). Nachdem ein Advertising-Paket vom Master detektiert wurde kann sich dieses mit meinem BLE-Funksensor connecten. Nach dem Herstellen der Verbindung können dann Daten ausgetauscht werden. Hier steige ich aber noch nicht ganz durch, wie das mit den Protokollen/Services funktioniert. Was ich zuletzt gelesen habe sagt, BLE kann kein herkömmliches serielles Protokoll. Stattdessen wird das Protokoll von der Applikationsebene, d.h. meiner eigenen Software bestimmt, also eigentlich doch wieder einfach serielle Kommunikation. Dann gibts da allerdings noch GATT, d.h. irgendwie so eine Art Kommunikation mittels Austausch von Schlüssel-Werte-Paaren, was für mich ja eher unbrauchbar ist. Oder ist das auch nur ein Protokoll, Service, wie auch immer man es nennt, das jedes mal aufs neue von der Software, welche das BLE-device bedient, selbst zu Fuß implementiert wird? Eigentlich möchte ich am liebsten einfach nur schnell connecten, ein paar Daten seriell austauschen und schnell wieder disconnecten. Oder macht es Sinn, die Connection über längere Zeit aufrecht zu erhalten und nur ab und zu Daten zu senden? Oder verbraucht schon das Aufrechterhalten der Connection dauerhaft viel Strom? Kann ich eine Connection nur als Antwort auf ein Advertising-Paket etablieren? Kann also mein Master gar nicht selbst bestimmen, wann es Zeit wäre, Daten abzurufen, weil mein BLE-Funksensor gar nicht zuhört, wenn er nicht zuvor ein Advertising-Paket gesendet hat? Wie lange hat mein Master denn überhaupt Zeit, nachdem der Funksensor ein Advertising-Paket gesendet hat, um sich zu connecten? Ich stelle mir das so vor, dass er das Advertising-Paket raushaut und dann ein paar ...Millisekunden oder den Empfänger scharf schaltet um auf eingehende Connection-Anfragen reagieren zu können. Wäre nett, wenn mich jemand aufklären könnte. Die häppchenweise verteilten Informationen im Internet sind ziemlich zäh verdaulich. lg Paul
Paul H. schrieb: > Oder haben die alle eine unique ID? MAC Addresse haben alle BLE Geräte, und die wird beim Advertising mit gesendet. Paul H. schrieb: > Oder macht es Sinn, die Connection über längere Zeit aufrecht zu > erhalten und nur ab und zu Daten zu senden? Ja, denn das verbraucht deutlich weniger Strom. Bei Advertising muss man beachten dass es ja 3 Frequenzbänder gibt und so 60% der Pakete nicht empfangen werden können - weil Sender und Empfänger absichlich nicht synchron sind. Bei einer Connection kann man das "Connection Intervall" ziemlich lang machen, und der "Slave" darf optional auch Intervalle weglassen (Slave Latency). Paul H. schrieb: > Kann ich eine Connection nur als Antwort auf ein Advertising-Paket > etablieren? Ja, denn nur dann ist der Empfänger "scharf". Ansonsten ist der BTLE Empfänger zuwecks Stromsparen aus. Paul H. schrieb: > Oder verbraucht schon das > Aufrechterhalten der Connection dauerhaft viel Strom? Nö. Da man wengen oben genannter Beschränkung nicht beliebig tief in der Advertising Frequenz gehen kann (sollte), ist eine langsame Verbindung sogar deutlich stromsparender. Habe ich hier mal mit NRF51x Modulen gemessen. Es gibt für BT LE Temperatursensoren ein vordefiniertes Protokoll - und sogar Beispielcode im NordicSemi SDK.
Paul H. schrieb: > Wie lange hat mein Master denn überhaupt Zeit, nachdem der Funksensor > ein Advertising-Paket gesendet hat, um sich zu connecten? Ich stelle mir > das so vor, dass er das Advertising-Paket raushaut und dann ein paar > ...Millisekunden oder den Empfänger scharf schaltet um auf eingehende > Connection-Anfragen reagieren zu können. Das sind nur 150µs. In der Praxis läuft das dann so, dass Du dem BLE Stack sagst, er möge bitte mal nach Advertisments scannen und der liefert Dir dann, was er so findet. Dann pickst Du Dir eine Adresse raus und initierst einen Verbindungsaufbau. Dann scannt die Radio-Hardware ganz gezielt nach dieser einen Adresse und schickt sofort (150µs) nach dem Empfang einen Connection Request an das Device. Neben den offensichtlichen Protokollparametern, wie Connection Interval und Slave Latency, bestimmt übrigens auch die Präzision der verwendeten Zeitgeber auf beiden Seiten, die benötigte Energie für eine Verbindung. Beim Verbindungsaufbau erhält das Peripheral die Präzision des Zeitgebers der Gegenseite, kombiniert dies mit der eigenen Präzision und berechnet daraus die Größe des Zeitfensters, in dem das Peripheral das Radio aktiv haben muss.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.