Ich habe vor kurzem begonnen zu lernen, ein mircontroller-based Gerät zu entwickeln, das BLE-Modul haben wird. Das Gerät soll analoges Lesen vom Sensor an eine Android-Anwendung senden, die ich entwickeln werde.
Für das, was ich über die Art und Weise studiert habe GATT funktioniert, ist:Das GATT-Protokoll in BLE verstehen
- Das micron-basiertes Gerät wird GATT-Server sein.
- Die Android-Anwendung wird GATT-Client sein.
- Aus Sicht der Kommunikation gesehen, ist das Gerät auf Mikrocontroller-Basis Slave und die Android-Anwendung Master.
Fragen:
- Wie entscheide ich, die Anzahl der Attribute, die ich, um zu definieren, müssen Befehl von GATT-Client zu empfangen und die Antwort senden (die ein Float-Wert sein wird)? Muss ich zwei verschiedene Attribute haben: Einen für Android, um Befehle zu senden, und einen für das auf dem Mikrocontroller basierende Gerät, um Daten an Android zu senden. Oder ich kann ein einzelnes Attribut verwenden?
- GATT scheint ein ereignisgesteuertes System zu sein.
2.1: Welche Ereignisse werden generiert, wenn Android einen Befehl an ein Mikrocontroller-basiertes Gerät sendet: (Client zu Server)?
2.2: Wird ein Ereignis generiert, wenn die Daten auf das Attribut geschrieben werden, das von einer Android-Anwendung gelesen werden soll: (Server zu Client)? - Die Android-Anwendung (GATT-Client) sollte Lese-/Schreibbefehle verwenden, um mit dem Microncontroller-basierten Gerät (GATT-Server) zu kommunizieren. Außerdem sollte der GATT-Server Notify/Indicate verwenden, um die Daten an den GATT-Client zu übergeben. Ist mein Verständnis richtig?
Ich verwende this BlueGiga BLE112 Module für die Entwicklung.
Die gatt.xml-Datei, die ich bisher geschrieben ist:
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<!-- 1800: org.bluetooth.service.generic_access -->
<service uuid="1800" id="generic_access">
<description>Generic Access</description>
<!-- 2A00: org.bluetooth.characteristic.gap.device_name -->
<characteristic uuid="2A00" id="c_device_name">
<description>Device Name</description>
<properties read="true" const="true" />
<value>MyBLEDev</value>
</characteristic>
<!-- 2A01: org.bluetooth.characteristic.gap.appearance -->
<characteristic uuid="2A01" id="c_appearance">
<description>Appearance</description>
<properties read="true" const="true" />
<value type="hex">0300</value>
</characteristic>
</service>
<!-- custom service -->
<service uuid="624e957f-cb42-4cd6-bacc-84aeb898f69b" advertise="true">
<description>Custom Device Service</description>
<!-- custom write-only characteristic for Client to send commands to fetch reading -->
<characteristic uuid="a57892fe-4f58-97d4-a5245-78a4125d3e6" id="c_cmd_TxReading">
<description>Request for Reading</description>
<properties write="true" />
<value length="4" />
</characteristic>
<characteristic uuid="8fde302a-56ac-b289-65ed-a577ed66b89c" id="c_reading">
<description>Measurement</description>
<properties read="true" write="true" />
<value length="4" type="float32" />
</characteristic>
</service>