Forum: HF, Funk und Felder Bluetooth Low Energy Kommunikation zw. Sensorknoten und Basisstation, wie?


von Paul H. (powl)


Lesenswert?

Ich experimentiere gerade etwas mit Energyharvesting herum und möchte 
einen autarken Temperatursensor über Bluetooth Low Energy mit einer 
Basisstation verbinden.

Der Sensor bezieht seine Energie über ein Peltierelement aus einer 
Wärmequelle, das klappt schon ganz gut soweit, insgesamt stehen 
dauerhaft 1mA zur Verfügung, welche über einen Kondensator auch noch 
gepuffert werden. Für BLE habe ich mir einen nRF52832 SOC ausgesucht. Es 
geht nun erst mal primär darum, die Funkkommunikation erst mal mit 
minimalem Aufwand zum laufen zu kriegen. D.h. alle paar Sekunden oder 
Minuten soll der Mikrocontroller kurz aufwachen, eine Messung vornehmen 
und per BLE seine Daten bereitstellen. Nachdem ich mich nun schon ein 
bisschen in BLE eingelesen habe stelle ich fest, dass das ja durchaus 
gar nicht so unkomplex ist.

Ich habe mir zwei Strategien überlegt:
1) In bestimmten Intervallen wacht der µC auf und sendet die Daten 
einfach mit einem Advertising-Paket raus. Advertising-Intervalle lassen 
sich ja laut Bluetooth Spec in einem Interval von 20ms bis 4s (?) 
senden, in der Zeit muss vermutlich der µC aktiv sein damit das 
Radio-Frontend seine Arbeit richtig machen kann? Wie stelle ich sicher, 
dass die Basisstation auch alle Advertisingpakete mitbekommt? Ist das 
schon bei einem einzelnen Advertising-Paket sichergestellt oder muss ich 
hier längere Zeit advertisen?

2a) Der Sensorknoten advertised, die Basisstation stellt eine Verbindung 
her und überträgt die Daten dann im Rahmen der Verbindung. z.B. über 
GATT. Brauche ich GATT hier überhaupt oder kann ich die Daten auch 
einfach quasi raw senden? Brächte mir das Vorteile?

2b) Wie 2a nur, dass stattdessen die Basisstation advertised und der 
Sensorknoten sich mit ihr verbindet. Sind die Kommunikationspartner 
sobald die Verbindung erst mal besteht gleichberechtigt? Ist es also 
egal, wer die Verbindung initiiert hat? Welche Variante ist geschickter 
im Bezug auf die Zeit, die es benötigt, bis die Verbindung hergestellt 
wurde?

Kann sich der µC sobald die Verbindung besteht getrost schlafen legen 
und sein Radio-Frontend für eine gewisse Zeit abschalten?

Danke für die Unterstützung, mangels Erfahrung bin ich echt unsicher wie 
ich hier am besten Vorgehe und ich möchte mich nicht in eine Sackgasse 
begeben.

Grüße, Paul

von Michael D. (sirs)


Lesenswert?

Minimalen Aufwand bekommst du wenn die Basisstation immer am lauschen 
ist. Dann kannst du den Sensorknoten beliebig schlafen legen um Strom zu 
sparen. Mit einem Timerinterrupt weckst du ihn auf.

Lieber ein kurzes Sendeintervall. Senden kostet Energie, die du 
wahrscheinlich nicht hast. Rechne aus, wie viel Energie du brauchst, wie 
viel du hast, plan genug Verlust ein, bestimm wie schnell deine 
Temperatur sich ändert.
Kenne aber deine Anwendung nicht. Außenthermometer/Raumtemperatur würde 
ich alle 30 oder 60 Sekunden abfragen. Verbindungsintervall möglichst 
kurz.

Advertising kann gestört werden. Sende doch einfach [Messwert n-2, 
Messwert n-1, Messwert aktuell] oder füge einen Zeitstempel dazu 
(Vorsicht vor Überläufen des Timers). Dann ist Redundanz da und du 
bekommst sicher Alles mit bzw du weist wo was fehlt.

Frontends abschalten oder schlafen legen trennt Verbindungen 
normalerweise. Das sind meist auch unterschiedlich tiefe Schlafzustände. 
Aber hast du bei Advertising überhaupt Verbindungen die du halten musst?

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
Noch kein Account? Hier anmelden.