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.
Aperçu
Architecture
Environnements pris en charge
Système opérateur
SoftDevice et IC
Installation des pilotes de périphérique
Installation du pilote
Validation du pilote
Installation d'outils
Installation des dépendances
Installation sous Windows
Installation sur Ubuntu Linux
Installation sur macOS
Compilation du pilote PC-BLE à partir des sources
Compilation sous Windows
Compilation sur Ubuntu Linux ou macOS
Compilation des fichiers HEX de connectivité
Compilation sous Windows
Compilation sur Ubuntu Linux ou macOS
Programmation des fichiers HEX de connectivité
Exemples
Problèmes connus
Licence
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) :
liaisons pc-ble-driver-js Node.JS
Liaisons Python pc-ble-driver-py
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.
Windows 7, 8 et 10, 32 et 64 bits (testé sur Windows 7)
Ubuntu Linux LTS 64 bits (testé sur Ubuntu 18.04)
macOS 64 bits (testé sur 10.14 Mojave)
Pour utiliser pc-ble-driver, votre kit de développement doit disposer du micrologiciel correct. Les firmwares nécessaires se trouvent dans le dossier hex/sd_api_v<x>
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 :
API SoftDevice s130 version 2 : connectivity_<version>_1m_with_s130_2.xx
(CI séries nRF51 et nRF52)
API SoftDevice s132 version 3 : connectivity_<version>_<1m|*usb>_with_s132_3.xx
(uniquement pour les circuits intégrés de la série nRF52)
API SoftDevice s132 version 5 : connectivity_<version>_<1m|*usb>_with_s132_5.xx
(uniquement pour les circuits intégrés de la série nRF52)
API SoftDevice s132 version 6 : connectivity_<version>_<1m|*usb>_with_s132_6.xx
(uniquement pour les circuits intégrés de la série nRF52)
API SoftDevice s140 version 6 : connectivity_<version>_<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 :
SEGGER J-Link
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 <nom d'utilisateur>
Pour empêcher le service modemmanager d'essayer de se connecter au port série CDC ACM :
$ systemctl arrête ModemManager.service $ systemctl désactive 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 :
Outils de ligne de commande nRF5x pour Windows
Outils de ligne de commande nRF5x pour Linux 32 bits
Outils de ligne de commande nRF5x pour Linux 64 bits
Outils de ligne de commande nRF5x pour macOS
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 :
Chaîne d'outils AC/C++
Git (>=2,19)
CMake (>=3.11)
vcpkg
pc-ble-driver
à partir des sources Pour compiler les fichiers HEX connectivity
vous aurez besoin d'outils supplémentaires :
Chocolaté
Ninja
Chaîne d'outils intégrée GNU pour Arm
Python
pépin
nrfutil
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)
# Copiez tout ci-dessous@"%SystemRoot%System32WindowsPowerShellv1.0powershell.exe" -NoProfile -InputFormat Aucun -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 $balises de paiement git/2020.04 $ .bootstrap-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:gccarmemb
Installez Python
et pip
, puis installez nrfutil
$ pip install nrfutil# Redémarrez si l'installation réussit mais que la validation échoue
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 mise à jour $ sudo apte à installer 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 $balises de paiement git/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.
Téléchargez à partir d'ici
Extrait
Définissez son emplacement comme GNUARMEMB_TOOLCHAIN_PATH
dans les variables d'environnement.
Installez Python
et pip
, puis installez nrfutil
.
$ pip install nrfutil# Redémarrez si l'installation réussit mais la validation échoue# Si les erreurs persistent, essayez de mettre à jour pip lui-même.
Installez Xcode (>=10.1)
.
Installez gcc6
à l'aide de HomeBrew.
$ Brew installer gcc6
Installez CMake
à l'aide de HomeBrew.
$ Brew installer cmake $ Brew mise à niveau 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 $balises de paiement git/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.
Téléchargez à partir d'ici
Extrait
Définissez son emplacement comme GNUARMEMB_TOOLCHAIN_PATH
dans les variables d'environnement.
Installez Python
et pip
, puis installez nrfutil
$ pip install nrfutil# Redémarrez si l'installation réussit mais que la validation échoue
Installez les dépendances vcpkg.
# cd <pc-ble-driver-root-folder># Assurez-vous que %VCPKG_ROOT% est défini et ajouté à %PATH%$ mkdir build && cd build $ vcpkg installer 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 Débogage
Installez les dépendances vcpkg.
# cd <pc-ble-driver-root-folder># Assurez-vous que $VCPKG_ROOT est défini et ajouté à $PATH$ mkdir build && cd build $ vcpkg installer asio catch2 spdlog
CMake
$ cmfaire -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:
$ cmfaire -G Ninja -DCMAKE_BUILD_TYPE=Débogage -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 <pc-ble-driver-root-folder>$ SET "PATH=%PATH%;%ALLUSERSPROFILE%chocolateybin"# Assurez-vous que les variables d'environnement ont été définies# comme décrit au début de cette section
CMake
$ mkdir build && cd build# Modifier -DCONNECTIVITY_VERSION=abc$ 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<x>
après compilation. Ils incluent le SoftDevice et l'application de connectivité.
Définir l'environnement
# cd <pc-ble-driver-root-folder>$ export TMP=/tmp# Assurez-vous que les variables d'environnement ont été définies# comme décrit au début de cette section
CMake
$ mkdir build && cd build# Modifier -DCONNECTIVITY_VERSION=abc$ cmake -G Ninja -DCOMPILE_CONNECTIVITÉ=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<x>
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<x> -e $ nrfjprog -f NRF5<x> --program hex/sd_api_v<x>/connectivity_<ver>_<baudrate>_with_s<x>_<a>.<b>.<c>.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<x>_<a>.<b>.<c>_dfu_pkg.zip -p <serial port>
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 demande de tirage.
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.