Ich habe eine kundenspezifische Platine, die einen Bluetooth LE-Chip von Nordic Semiconductor verwendet. Ich werde mit einer iOS-App mit diesem Gerät sprechen und bin neu bei BTLE und etwas verwirrt durch den gesamten Entdeckungs-/Kopplungsablauf. Unser Gerät sendet einfach ASCII-Text, der ein benutzerdefiniertes Datenformat ist.
Der EE, der dieses Board entwickelt hat, hat mir nicht viel Anleitung gegeben, wie ich es verbinden kann. Wenn ich die LightBlue iOS-App verwende, kann ich das Gerät und seine UUIDs sehen. Die UUIDs, die ich sehe, sind genau die gleichen wie die UUIDs in der Nordic nRF UART App .
Meine Hauptfragen sind:
Ich weiß, dass es sowohl für den Dienst als auch für die Merkmale unterschiedliche UUIDs gibt ... meine Fragen gelten für alle diese.
Nein, die UUID sollte für alle Ihre Boards gleich sein. Ich weiß, warum Sie das vielleicht seltsam finden, aber es sind die Dienste, die gleich aussehen und sich gleich verhalten, die Boards müssen das nicht. Aber wenn Ihre Boards unterschiedliche Aufgaben übernehmen, könnten Sie vielleicht jedem von ihnen unterschiedliche, spezifischere Dienste hinzufügen. Um zu erkennen, welches das eine und wer das andere ist, sollten Sie den Namen des Geräts ändern. Eine gängige Methode, dies zu tun, besteht darin, nach derselben UUID von iOS zu suchen und dann eine Liste mit Gerätenamen abzurufen, die diese bestimmte UUID übertragen. Wenn Sie ein nRF51822-Gerät verwenden, teilen Sie Ihrem EE mit, dass er eindeutige Namen anstelle eindeutiger UUIDs haben kann, indem Sie diese Zeile in is main.c ändern, um Ihre verschiedenen Boards leichter zu identifizieren.
#define DEVICE_NAME "Device_name" // <<-- this line
// In gap_params_init
sd_ble_gap_device_name_set(&sec_mode,(const uint8_t *)DEVICE_NAME, strlen(DEVICE_NAME));
Wenn Ihr Gerät einen Dienst vom Typ Bluetooth SIG (Special Interest Group) ankündigen soll, muss die UUID ein standardisierter 16-Bit-Wert von der SIG sein. Diese finden Sie hier. Wenn Sie einen Chip von Nordic Semiconductor verwenden, werden Sie sehen, dass in deren Bibliotheken alle Dienst- und Merkmalsdefinitionen bereits definiert sind.
Auszug aus diesen Dokumentationsseiten :
#define BLE_UUID_ALERT_NOTIFICATION_SERVICE 0x1811 /**< Alert Notification service UUID. */
#define BLE_UUID_BATTERY_SERVICE 0x180F /**< Battery service UUID. */
Andererseits ist der Nordic UART-Dienst ein kundenspezifischer Dienst. Um einen benutzerdefinierten Dienst zu verwenden, müssen Sie eine zufällige 128-Bit-UUID generieren und diese selbst zum Dienst hinzufügen. Da Ihr EE dies bereits getan hat, ist es kein Problem, es einfach auszutauschen.
chwi
chwi
Brianz
chwi