Forum: Mikrocontroller und Digitale Elektronik Bluetooth low energy - Wakeup Arduino on Message


von Walter (Gast)


Lesenswert?

Ich hab in letzter Zeit relativ viel über BLE und Zigbee gelesen und 
würde gerne mal ein Prototypen damit aufbauen, um die Thematik auch 
praktischer besser fassen zu können.

Ich habe aktuell einen Arduino Nano, welcher mittels 2x 18650-Akku 
(~4500mAh) mit Strom versorgt wird. Aktuell macht mein Prototyp nichts 
anderes als alle ~30Minuten aufzuwachen, einen Buzzer zum piepen zu 
bringen und wieder schlafen zu gehen.

Gerne würde ich nun ein CC2542 oder CC2541 Modul kaufen und den Arduino 
mittels RST-Pin neustarten, sobald auf dem BLE-Modul eine Nachricht 
ankommt (das ganze möglichst Stromsparend und über Funk).

Ich hab gelesen, dass BLE im "Sleep-Modus" rund 10uA benötitgt und 
trotztdem in dieser Zeit Nachrichten Empfangen und somit darauf 
reagieren kann.

Meine Fragen:
1.) Sind meine jetztigen Annahmen richtig?
2.) Könnt ihr mir alternative Module oder Tutorials empfehlen?
3.) Habt ihr bereits Erfahrung oder Tipps die mir helfen könnten?

PS: Ja der jetzige Anwendungsfall (nur piepen) ist nicht sinnvoll, es 
geht wirklich nur ums lernen und probieren

Grüße
Walter

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Lesenswert?

Walter schrieb:

> 1.) Sind meine jetztigen Annahmen richtig?

Die Annahme dabei ist sicher, dass es bereits eine Verbindung gibt. Wenn 
es keine Verbindung gibt, müsste das Modul advertising data senden, 
damit eine entsprechende Gegenstelle (Controller) einen 
Verbindungsaufbau initieren kann. Der zeitliche Abstand, mit dem diese 
advertising data Packete gesendet werden, beeinflusst die Leistung und 
die Zeit, die im Schnitt für einen Verbindungsaufbau nötig ist.

> 2.) Könnt ihr mir alternative Module oder Tutorials empfehlen?

Für so eine Anwendung reicht wahrscheinlich jedes breakout board mit 
einem BLE fähigen Microcontroller (z.B. auch die nrf51 von Nordic). Als 
Gegenstück kannst Du dann einen generischen GATT Client verwenden.

> PS: Ja der jetzige Anwendungsfall (nur piepen) ist nicht sinnvoll, es
> geht wirklich nur ums lernen und probieren

Na, es kommt halt drauf an, was genau Du lernen möchtest und was Du 
nicht mehr lernen musst. Hier ein Link zur GATT Dokumentation von Apple. 
Die finde ich ganz hilfreich: 
https://developer.apple.com/library/archive/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/AboutCoreBluetooth/Introduction.html

von Walter (Gast)


Lesenswert?

Torsten R. schrieb:
> Walter schrieb:
>
>> 1.) Sind meine jetztigen Annahmen richtig?
>
> Die Annahme dabei ist sicher, dass es bereits eine Verbindung gibt. Wenn
> es keine Verbindung gibt, müsste das Modul advertising data senden,
> damit eine entsprechende Gegenstelle (Controller) einen
> Verbindungsaufbau initieren kann. Der zeitliche Abstand, mit dem diese
> advertising data Packete gesendet werden, beeinflusst die Leistung und
> die Zeit, die im Schnitt für einen Verbindungsaufbau nötig ist.
>

Wie würde man in diesem Fall vorgehen um es möglichst Stromsparend zu 
halten.
Ich gehe davon aus, dass man den Arduino in den Deepsleep schickt und 
den TX vom CC2540 an den RST Pin vom Arduino anschließt. Der CC2540 ist 
dann permanent im Sleep und würde den Arduino wecken, insofern eine 
Message hineinkommt, von dem Gerät mit dem der BLE verbunden ist?

Leider gibt es hierzu kaum auffindbare Anleitung im Netz.

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Lesenswert?

Walter schrieb:

> Wie würde man in diesem Fall vorgehen um es möglichst Stromsparend zu
> halten.
> Ich gehe davon aus, dass man den Arduino in den Deepsleep schickt und
> den TX vom CC2540 an den RST Pin vom Arduino anschließt. Der CC2540 ist
> dann permanent im Sleep und würde den Arduino wecken, insofern eine
> Message hineinkommt, von dem Gerät mit dem der BLE verbunden ist?

Das Gerät müsste erst einmal eine Verbindung zum CC2540 aufbauen. Damit 
das Gerät eine Verbindung aufbauen kann, muss das Gerät aber erst einmal 
ein Advertising vom CC2540 empfangen. Der CC2540 muss also ständig 
Advertising data senden, damit Gerät überhaupt eine Verbindung aufbauen 
kann. Das Interval, mit dem der CC2540 advertisments sendet bestimmt 
dann auch, wie lange es im Schnitt dauert, bis das Gerät ein 
Advertisment vom CC2540 empfängt.

> Leider gibt es hierzu kaum auffindbare Anleitung im Netz.

Ich weis jetzt nicht, was Du mit Anleitung meinst. Aber zu BLE und dem 
von Dir ins Auge gefasste CC2540 gibt es öffentlich zugängliche 
Dokumentation.

von Frank K. (fchk)


Lesenswert?

Walter schrieb:

> Gerne würde ich nun ein CC2542 oder CC2541 Modul kaufen und den Arduino
> mittels RST-Pin neustarten, sobald auf dem BLE-Modul eine Nachricht
> ankommt (das ganze möglichst Stromsparend und über Funk).

Nimm einen Chip mit ARM drin, z.B.:

https://www.conrad.de/de/p/sensorkit-texas-instruments-launchxl-cc2650-1518509.html

http://www.ti.com/tool/LAUNCHXL-CC2650

Dieses Teil hat einen großen Vorteil: Du brauchst Deinen Arduino gar 
nicht mehr. Der Funkchip hat nämlich zu dem Prozessor für den Funk noch 
einen zweiten Prozessor eingebaut, auf dem Deine Anwendung läuft. Ein 
JTAG Debugger zum Entwickeln ist auch gleich mit dabei. Für das fertige 
Produkt nimmst Du natürlich ein Board ohne Debugger, das hier ist extra 
zum Entwickeln und schnellen Ausprobieren gedacht.

Und: Das hier ist die 50'er Version der Chipreihe, die alle Protokolle 
kann, nicht nur BLE, sondern auch alles, was auf IEEE 802.15.4 aufbaut: 
Zigbee, Thread, 6LoWPAN,...

Software dafür gibts bei TI zum Download. Link steht oben.

fchk

PS: Solche Chips gibts von mehreren Herstellern: SiLabs und NordicMicro 
sind die bekannteren. Aber da Du gerade schon bei TI hängen geblieben 
bist...

Auch von TI gibts neuere Versionen, z.B:

http://www.ti.com/tool/LAUNCHXL-CC26X2R1

aber das ist eventuell für Privatleute schlechter zu bekommen, und für 
den ersten Einstieg ist es egal.

: Bearbeitet durch User
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.