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
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
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.
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.
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.htmlhttp://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.