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