Cette bibliothèque n'est plus maintenue et il n'est pas prévu de lui succéder. Bien qu'il reste accessible aux utilisateurs existants du SDK nRF5, il ne recevra pas de mises à jour ni de support supplémentaires. Nous vous recommandons de ne pas lancer de nouveaux projets avec cette bibliothèque, car le firmware (fichiers .hex) disponible utilise des binaires SoftDevice obsolètes.
pc-ble-driver
fournit des bibliothèques C/C++ pour la sérialisation Bluetooth Low Energy nRF5 SoftDevice.
pc-ble-driver
se compose d'un ensemble de bibliothèques statiques et partagées qui fournissent la fonctionnalité SoftDevice à l'application via une communication par port série avec une puce de connectivité nRF5 exécutant le SoftDevice et le logiciel de connectivité, inclus sous la forme d'un seul fichier .hex ici. Pour plus d’informations sur la sérialisation SoftDevice, voir Sérialisation.
Les bibliothèques C/C++ peuvent être interfacées directement, mais sont également fournies sous forme de liaisons de niveau supérieur qui facilitent le développement au prix d'un contrôle réduit (acceptable dans la plupart des cas) :
Où la « puce d'application » n'est qu'un matériel générique (c'est-à-dire un appareil Windows, Linux ou macOS), bien qu'il puisse également s'agir d'un Arduino ou d'un Raspberry Pi par exemple.
Pour utiliser pc-ble-driver, votre kit de développement doit disposer du firmware correct. Les firmwares nécessaires se trouvent dans le dossier hex/sd_api_v
et contiennent le SoftDevice et le firmware de connectivité requis pour communiquer avec pc-ble-driver
.
Les bibliothèques générées sont compatibles avec les versions d'API SoftDevice et les circuits intégrés nRF5x suivants :
connectivity__1m_with_s130_2.xx
(CI séries nRF51 et nRF52)connectivity__<1m|*usb>_with_s132_3.xx
(uniquement pour les circuits intégrés de la série nRF52)connectivity__<1m|*usb>_with_s132_5.xx
(uniquement pour les circuits intégrés de la série nRF52)connectivity__<1m|*usb>_with_s132_6.xx
(uniquement pour les circuits intégrés de la série nRF52)connectivity__<1m|*usb>_with_s140_6.xx
(uniquement pour les circuits intégrés de la série nRF52)*usb) uniquement pour les circuits intégrés de la série nRF52 avec périphérique USBD
APC | Nom officiel | Numéro d'article | Remarques |
---|---|---|---|
PCA10028 | KIT DE DÉVELOPPEMENT nRF51 | nRF6824 | |
PCA10031 | DONGLE nRF51 | nRF6825 | |
PCA10040 | KIT DE DÉVELOPPEMENT nRF52 | nRF6827 | |
PCA10056 | nRF52840 { Kit de développement } | nRF6828 | *) |
PCA10059 | nRF52840 { Clé électronique } | nRF6829 | Ne peut utiliser le micrologiciel de connectivité qu'avec la prise en charge du port série Nordic USB CDC |
*) Peut utiliser à la fois la version du port série Nordic USB CDC et la version SEGGER J-Link-OB (VCOM). L'utilisation de la version du port série Nordic USB CDC sur PCA10056 nécessite que vous connectiez les broches P0.18 et P0.24. Les broches de la puce QSPI doivent également être en place (elles le sont par défaut). L'algorithme pour détecter s'il s'agit de PCA10056 ou PCA10059 consiste à vérifier s'il est possible de communiquer avec la puce QSPI. Le PCA10059 n'a pas de puce QSPI. La détection est utilisée par le déclencheur nRF Connect DFU pour déterminer quelle broche utiliser pour réinitialiser l'appareil lors du changement entre le mode DFU et le mode application.
Cette bibliothèque de communication fonctionne sur tout type de port série (UART), mais elle est le plus souvent utilisée sur un Segger J-Link USB CDC UART. Pour configurer les pilotes J-Link requis, téléchargez et installez simplement la version correspondant à votre système d'exploitation :
Après avoir installé les pilotes requis et connecté une carte compatible J-Link (telle que les kits de développement Nordic), le port devrait être disponible.
De plus, vous devez désactiver le Mass Storage Device
afin d'utiliser pc-ble-driver
pour communiquer avec le périphérique, voir data corruption or drops issue
.
Le port série apparaîtra comme COMxx
. Vérifiez simplement la section "Ports (COM & LPT)" dans le Gestionnaire de périphériques.
Le port série apparaîtra sous la forme /dev/ttyACMx
.
Par défaut, le port n'est pas accessible à tous les utilisateurs. Tapez la commande ci-dessous pour ajouter votre utilisateur au groupe dialout
afin de lui donner accès au port série. Notez qu’une nouvelle connexion est nécessaire pour que cela prenne effet.
$ sudo usermod -a -G dialout < username >
Pour empêcher le service modemmanager d'essayer de se connecter au port série CDC ACM :
$ systemctl stop ModemManager.service
$ systemctl disable ModemManager.service
Le port série apparaîtra sous la forme /dev/tty.usbmodemXXXX
.
Il y a un problème connu, vérifiez-le ici si vous rencontrez des problèmes.
Pour programmer le micrologiciel de connectivité, vous aurez besoin nrfjprog
qui est fourni avec les outils de ligne de commande nRF5x, qui peuvent être téléchargés depuis :
Ajoutez nrfjprog
et mergehex
à PATH
sous Linux et macOS.
Alternativement, nRF Connect Programmer
peut vous aider à programmer le micrologiciel de connectivité avec la prise en charge de l'interface utilisateur.
Téléchargez nRF Connect Desktop et installez-y nRF Connect Programmer
.
Pour compiler pc-ble-driver
vous aurez besoin des outils suivants :
pc-ble-driver
à partir des sources Pour compiler les fichiers HEX connectivity
vous aurez besoin d'outils supplémentaires :
connectivity
Suivez les étapes pour installer les dépendances sur une plateforme spécifique :
Téléchargez Visual Studio 15
ou version ultérieure et installez-le.
Installez Chocolatey. Installer avec cmd.exe
(exécuter en tant qu'administrateur)
# Copy everything below
@ " %SystemRoot%System32WindowsPowerShellv1.0powershell.exe " -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command " iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) " && SET " PATH=%PATH%;%ALLUSERSPROFILE%chocolateybin "
Si Chocolatey
a déjà été installé comme décrit ci-dessus mais n'a pas été ajouté à PATH, exécutez :
$ SET " PATH=%PATH%;%ALLUSERSPROFILE%chocolateybin "
Installez Git
.
$ choco install -y git
Installez CMake
.
$ choco install -y cmake
Installez vcpkg.
$ git clone https://github.com/Microsoft/vcpkg.git
$ cd vcpkg
$ git checkout tags/2020.04
$ . b ootstrap-vcpkg.bat
Ajoutez ensuite l'emplacement vcpkg au PATH
et définissez-le comme variable d'environnement VCPKG_ROOT
.
Les étapes suivantes sont nécessaires uniquement si vous souhaitez compiler vos propres fichiers HEX connectivity
.
Installez ninja
.
$ choco install -y ninja
Téléchargez et installez GNU Embedded Toolchain for Arm
version 7-2018q2
Téléchargez à partir de cet emplacement.
Suivez les instructions d'installation.
Définissez son chemin d'installation sur GNUARMEMB_TOOLCHAIN_PATH
dans les variables d'environnement. Par exemple:
$ set GNUARMEMB_TOOLCHAIN_PATH=c: g ccarmemb
Installez Python
et pip
, puis installez nrfutil
$ pip install nrfutil
# Reboot if installation succeeds but validation fails
Installez build-essential
.
$ sudo apt-get -y install build-essential
Installer Git
$ sudo apt-get -y install git
Si la version installée de Git
est inférieure à celle requise, alors :
$ sudo add-apt-repository ppa:git-core/ppa
$ sudo apt update
$ sudo apt install git
Installez CMake
.
$ sudo apt-get -y install cmake
Installez CMake
à partir des sources si la version est inférieure à celle requise.
Installez vcpkg.
$ git clone https://github.com/Microsoft/vcpkg.git
$ cd vcpkg
$ git checkout tags/2020.04
$ ./bootstrap-vcpkg.sh
Ajoutez ensuite l'emplacement vcpkg à la variable d'environnement PATH
et VCPKG_ROOT
.
Installez Ninja
.
$ sudo apt-get install ninja-build
Les étapes suivantes sont nécessaires uniquement si vous souhaitez compiler vos propres fichiers HEX connectivity
.
Installez GNU Embedded Toolchain for Arm
version 7-2018q2.
GNUARMEMB_TOOLCHAIN_PATH
dans les variables d'environnement. Installez Python
et pip
, puis installez nrfutil
.
$ pip install nrfutil
# Reboot if installation succeeds but validation fails
# If errors persist, try updating pip itself.
Installez Xcode (>=10.1)
.
Installez gcc6
à l'aide de HomeBrew.
$ brew install gcc6
Installez CMake
à l'aide de HomeBrew.
$ brew install cmake
$ brew upgrade cmake
Installez CMake
à partir des sources si la version est inférieure à celle requise.
Installez vcpkg.
$ git clone https://github.com/Microsoft/vcpkg/
$ cd vcpkg
$ git checkout tags/2020.04
$ ./bootstrap-vcpkg.sh
Ajoutez ensuite l'emplacement vcpkg à la variable d'environnement PATH
et VCPKG_ROOT
.
Les étapes suivantes sont nécessaires uniquement si vous souhaitez compiler vos propres fichiers HEX connectivity
.
Installez GNU Embedded Toolchain for Arm
version 7-2018q2.
GNUARMEMB_TOOLCHAIN_PATH
dans les variables d'environnement. Installez Python
et pip
, puis installez nrfutil
$ pip install nrfutil
# Reboot if installation succeeds but validation fails
Installez les dépendances vcpkg.
# cd
# Make sure %VCPKG_ROOT% is set and added to %PATH%
$ mkdir build && cd build
$ vcpkg install asio catch2 spdlog
CMake Sélectionnez le compilateur Visual Studio à utiliser selon cet article : Créer du code C/C++ sur la ligne de commande
$ cmake -G Ninja ..
Compiler
$ cmake --build .
Sélectionnez éventuellement la configuration de build avec l'option --config
. Généralement Debug
, Release
, MinSizeRel
et RelWithDebInfo
sont disponibles. Par exemple:
$ cmake --build . --config Debug
Installez les dépendances vcpkg.
# cd
# Make sure $VCPKG_ROOT is set and added to $PATH
$ mkdir build && cd build
$ vcpkg install asio catch2 spdlog
CMake
$ cmake
-G Ninja
..
Sélectionnez éventuellement la configuration de build avec l'option -DCMAKE_BUILD_TYPE
. Généralement Debug
, Release
, MinSizeRel
et RelWithDebInfo
sont disponibles.
Sélectionnez éventuellement l'architecture cible (32 ou 64 bits) à l'aide de l'option -DARCH
. Les valeurs peuvent être x86_32
, x86_64
, x86_32,x86_64
. Par exemple:
$ cmake
-G Ninja
-DCMAKE_BUILD_TYPE=Debug
-DARCH=x86_32,x86_64
..
Compiler
$ cmake --build .
pc-ble-driver
à partir des sources si vous ne l'avez pas encore fait.Assurez-vous que les variables d'environnement suivantes sont définies :
VCPKG_ROOT
GNUARMEMB_TOOLCHAIN_PATH
Assurez-vous que les chemins suivants ont été ajoutés à PATH :
VCPKG_ROOT
mergehex
Suivez les étapes pour installer les dépendances sur une plateforme spécifique :
Définir l'environnement
# cd
$ SET " PATH=%PATH%;%ALLUSERSPROFILE%chocolateybin "
# Make sure environment variables have been set
# as described at beginning of this section
CMake
$ mkdir build && cd build
# Modify -DCONNECTIVITY_VERSION=a.b.c
$ cmake -G Ninja -DCOMPILE_CONNECTIVITY=1 -DCONNECTIVITY_VERSION=1.0.0 ..
COMPILE_CONNECTIVITY
est défini sur 1 pour permettre la compilation du micrologiciel de connectivité.
CONNECTIVITY_VERSION
définit une version pour le micrologiciel de connectivité compilé.
Vérifiez plus d'options lors de la compilation de PC-ble-driver sous Windows
Compiler
$ cmake --build . --target compile_connectivity
Les fichiers HEX sont disponibles dans le dossier hex/sd_api_v
après compilation. Ils incluent le SoftDevice et l’application de connectivité.
Définir l'environnement
# cd
$ export TMP=/tmp
# Make sure environment variables have been set
# as described at beginning of this section
CMake
$ mkdir build && cd build
# Modify -DCONNECTIVITY_VERSION=a.b.c
$ cmake
-G Ninja
-DCOMPILE_CONNECTIVITY=1
-DCONNECTIVITY_VERSION=1.0.0
..
COMPILE_CONNECTIVITY
est défini sur 1 pour permettre la compilation du micrologiciel de connectivité.
CONNECTIVITY_VERSION
définit une version pour le micrologiciel de connectivité compilé.
Vérifiez plus d'options lors de la compilation de pc-ble-driver sur Ubuntu Linux ou macOS
Compiler
$ cmake --build . --target compile_connectivity
Les fichiers HEX sont disponibles dans le dossier hex/sd_api_v
après compilation. Ils incluent le SoftDevice et l’application de connectivité.
Accédez aux outils d'installation si les outils de ligne de commande nRF5x n'ont pas encore été installés.
Pour utiliser cette bibliothèque, vous devrez programmer le firmware de connectivité sur un IC nRF5x
Utilisez les outils de ligne de commande nRF5x pour effacer et programmer le CI :
$ nrfjprog -f NRF5 -e
$ nrfjprog -f NRF5 --program hex/sd_api_v/connectivity___with_s_...hex
Vous pouvez également utiliser le programmeur nRF Connect pour effacer et programmer le circuit intégré.
Certains kits, comme le dongle pca10059 nRF52, n'ont pas de débogueur intégré et devront être programmés via DFU série. Sous Windows, des pilotes de périphérique sont requis pour que les kits soient correctement détectés par le système d'exploitation. Pour installer les pilotes requis, assurez-vous que la dernière version de nRF Connect for Desktop est installée.
La programmation du micrologiciel de connectivité via DFU série peut être effectuée à partir de la ligne de commande ou de nRF Connect for Desktop.
La mise à niveau du micrologiciel de l'appareil avec nrfutil s'effectue normalement en deux étapes : 1 : génération du package zip DFU et 2 : exécution de la procédure DFU. Un package zip DFU a été prédéfini et est inclus dans ce référentiel. Pour exécuter la procédure DFU avec nrfutil avec le package DFU prédéfini :
nrfutil dfu usb-serial -pkg connectivity_x.x.x_usb_with_s_.._dfu_pkg.zip -p
Les exemples constituent un excellent point de départ pour le développement avec pc-ble-driver
. Les exemples incluent un moniteur de fréquence cardiaque (périphérique BLE) et un collecteur de fréquence cardiaque (maître BLE) et montrent la structure de base d'une application construite sur pc-ble-driver
.
Pour que les exemples soient rapidement opérationnels, consultez examples/README.md.
Si vous rencontrez des problèmes lors de l'installation de pc-ble-driver, veuillez consulter Issues.md.
N'hésitez pas à proposer des modifications en créant une pull request.
Si vous envisagez d'apporter des modifications non triviales, veuillez commencer petit et demander un accord avant d'y consacrer trop de travail. Une pull request peut être refusée si elle ne correspond pas bien à la feuille de route actuelle du produit.
Afin d'accepter votre pull request, nous avons besoin que vous signiez notre contrat de licence de contributeur (CLA). Vous verrez les instructions pour ce faire après avoir soumis votre première pull request.
Si vous trouvez des bugs, ou si vous avez des questions ou d'autres commentaires en général, veuillez soumettre un message sur le portail Nordic DevZone. Notez que les rapports de bugs doivent décrire de manière suffisamment détaillée comment reproduire le bug.
Consultez le fichier de licence pour plus de détails.