Esecuzione del Pi come dispositivo host bluetooth anziché come client in Python

Aug 20 2020

Sto cercando di trovare un codice di esempio per utilizzare il pi come dispositivo Bluetooth in modo che altri dispositivi possano cercarlo e accoppiarsi con esso. In particolare, voglio che si comporti come un misuratore di potenza per biciclette per il progetto che ho in mente.

Non riesco a trovare le parole chiave corrette da cercare su Google, ma guardando in giro per questo sito sembra che sia possibile (ho visto che qualcuno l'ha usato come stampante bluetooth ..)

C'era bisogno solo di una direzione, forse una biblioteca o anche cosa cercare.

Risposte

2 ukBaz Aug 20 2020 at 15:59

La mia ipotesi è che tu stia cercando di essere uno dei profili / servizi di ciclismo standard definiti da Bluetooth SIG.

Si tratta di Bluetooth Low Energy (BLE) e utilizzano la specifica GATT.

Su Linux, lo stack Bluetooth è BlueZ che utilizza D-Bus per esporre la sua API. Ad esempio, l'API GATT è documentata in:https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc/gatt-api.txt

Il tuo dispositivo assumerà il ruolo di Periferico, il che significa creare un server GATT. C'è un esempio di questo nel codice sorgente BlueZ:https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/test/example-gatt-server

La periferica dovrà inoltre pubblicizzare il servizio GATT: https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/test/example-advertisement

Per impostazione predefinita, RPi è sia BR / EDR (classico) che LE Bluetooth. Quando si agisce come una periferica BLE è bene configurare il controller solo su Bluetooth Low Energy. È stato scoperto che per ottenere una connessione affidabile ai telefoni Android questo è necessario. Questa modifica alla configurazione viene eseguita nel /etc/bluetooth/main.conffile. Assicurati che contenga quanto segue:

ControllerMode = le