Esta biblioteca ya no recibe mantenimiento y no hay planes para una sucesora de esta biblioteca. Si bien seguirá siendo accesible para los usuarios existentes del SDK nRF5, no recibirá más actualizaciones ni soporte. Recomendamos abstenerse de iniciar nuevos proyectos con esta biblioteca, ya que el firmware (archivos .hex) disponibles utiliza binarios SoftDevice desactualizados.
pc-ble-driver
proporciona bibliotecas C/C++ para la serialización de dispositivos SoftDevice Bluetooth Low Energy nRF5.
Descripción general
Arquitectura
Entornos compatibles
Sistema operativo
SoftDevice y IC
Instalación de controladores de dispositivos
Instalación del controlador
Validación del conductor
Instalación de herramientas
Instalando dependencias
Instalación en Windows
Instalación en Ubuntu Linux
Instalación en MacOS
Compilando pc-ble-driver desde la fuente
Compilando en Windows
Compilando en Ubuntu Linux o macOS
Compilación de archivos HEX de conectividad
Compilando en Windows
Compilando en Ubuntu Linux o macOS
Programación de archivos HEX de conectividad
Ejemplos
Problemas conocidos
Licencia
pc-ble-driver
consta de un conjunto de bibliotecas estáticas y compartidas que brindan funcionalidad SoftDevice a la aplicación a través de comunicación por puerto serie con un chip de conectividad nRF5 que ejecuta el SoftDevice y el software de conectividad, incluido aquí como un único archivo .hex. Para obtener más información sobre la serialización de SoftDevice, consulte Serialización.
Se puede interactuar con las bibliotecas C/C++ directamente, pero también se proporcionan como enlaces de nivel superior que facilitan el desarrollo a costa de un control reducido (aceptable en la mayoría de los casos):
Enlaces pc-ble-driver-js Node.JS
Enlaces de Python pc-ble-driver-py
Donde el 'chip de aplicación' es simplemente hardware genérico (es decir, un dispositivo Windows, Linux o macOS), aunque también podría ser un Arduino o Raspberry Pi, por ejemplo.
Windows 7, 8 y 10, 32 y 64 bits (probado en Windows 7)
Ubuntu Linux LTS de 64 bits (probado en Ubuntu 18.04)
macOS de 64 bits (probado en 10.14 Mojave)
Para utilizar pc-ble-driver, su kit de desarrollo debe tener el firmware correcto. Los firmwares necesarios se encuentran en la carpeta hex/sd_api_v<x>
y contienen el SoftDevice y el firmware de conectividad necesarios para comunicarse con pc-ble-driver
.
Las bibliotecas generadas son compatibles con las siguientes versiones de SoftDevice API y circuitos integrados nRF5x:
SoftDevice s130 API versión 2: connectivity_<version>_1m_with_s130_2.xx
(CI de las series nRF51 y nRF52)
SoftDevice s132 API versión 3: connectivity_<version>_<1m|*usb>_with_s132_3.xx
(solo para circuitos integrados de la serie nRF52)
SoftDevice s132 API versión 5: connectivity_<version>_<1m|*usb>_with_s132_5.xx
(solo para circuitos integrados de la serie nRF52)
SoftDevice s132 API versión 6: connectivity_<version>_<1m|*usb>_with_s132_6.xx
(solo para circuitos integrados de la serie nRF52)
SoftDevice s140 API versión 6: connectivity_<version>_<1m|*usb>_with_s140_6.xx
(solo para circuitos integrados de la serie nRF52)
*usb) solo para circuitos integrados de la serie nRF52 con periférico USBD
PCA | Nombre oficial | Número de artículo | Notas |
---|---|---|---|
PCA10028 | KIT DE DESARROLLO nRF51 | nRF6824 | |
PCA10031 | nRF51 DONGLE | nRF6825 | |
PCA10040 | KIT DE DESARROLLO nRF52 | nRF6827 | |
PCA10056 | nRF52840 {Kit de desarrollo} | nRF6828 | *) |
PCA10059 | nRF52840 {llave electrónica} | nRF6829 | Solo se puede utilizar firmware de conectividad con soporte de puerto serie CDC USB nórdico |
*) Puede utilizar tanto la versión de puerto serie CDC USB nórdico como la versión SEGGER J-Link-OB (VCOM). El uso del puerto serie Nordic USB CDC en PCA10056 requiere que conecte los pines P0.18 y P0.24. Los pines del chip QSPI también deben estar en su lugar (están por defecto). El algoritmo para detectar si es PCA10056 o PCA10059 es comprobar si es posible comunicarse con el chip QSPI. PCA10059 no tiene un chip QSPI. La detección es utilizada por el disparador nRF Connect DFU para determinar qué pin usar para restablecer el dispositivo al cambiar entre DFU y el modo de aplicación.
Esta biblioteca de comunicación funciona a través de cualquier tipo de puerto serie (UART), pero se utiliza con mayor frecuencia a través de un Segger J-Link USB CDC UART. Para configurar los controladores J-Link necesarios, simplemente descargue e instale la versión que coincida con su sistema operativo:
Enlace J SEGGER
Después de haber instalado los controladores necesarios y conectado una placa habilitada para J-Link (como los kits de desarrollo nórdicos), el puerto debería estar disponible.
Además, debe desactivar el Mass Storage Device
para poder utilizar pc-ble-driver
para comunicarse con el dispositivo; consulte data corruption or drops issue
.
El puerto serie aparecerá como COMxx
. Simplemente marque la sección "Puertos (COM y LPT)" en el Administrador de dispositivos.
El puerto serie aparecerá como /dev/ttyACMx
.
De forma predeterminada, no todos los usuarios pueden acceder al puerto. Escriba el siguiente comando para agregar su usuario al grupo dialout
y darle acceso al puerto serie. Tenga en cuenta que es necesario volver a iniciar sesión para que esto surta efecto.
$ sudo usermod -a -G dialout <nombre de usuario>
Para evitar que el servicio modemmanager intente conectarse al puerto serie CDC ACM:
$ systemctl detener ModemManager.service $ systemctl deshabilitar ModemManager.service
El puerto serie aparecerá como /dev/tty.usbmodemXXXX
.
Hay un problema conocido, verifíquelo aquí si encontró algún problema.
Para programar el firmware de conectividad necesitará nrfjprog
, que se incluye con las herramientas de línea de comandos nRF5x, que se pueden descargar desde:
Herramientas de línea de comandos nRF5x para Windows
Herramientas de línea de comandos nRF5x para Linux de 32 bits
Herramientas de línea de comandos nRF5x para Linux de 64 bits
Herramientas de línea de comandos nRF5x para macOS
Agregue nrfjprog
y mergehex
a PATH
en Linux y macOS.
Alternativamente, nRF Connect Programmer
puede ayudarle a programar el firmware de conectividad con soporte UI.
Descargue nRF Connect Desktop e instale nRF Connect Programmer
allí.
Para compilar pc-ble-driver
necesitará las siguientes herramientas:
Cadena de herramientas AC/C++
Git (>=2,19)
CMake (>=3.11)
vcpkg
pc-ble-driver
desde la fuente Para compilar archivos HEX connectivity
necesitarás herramientas adicionales:
chocolateado
ninja
Cadena de herramientas integrada GNU para Arm
Pitón
pepita
nrfutil
connectivity
Siga los pasos para instalar dependencias en una plataforma específica:
Descargue Visual Studio 15
o una versión posterior e instálelo.
Instalar chocolate. Instalar con cmd.exe
(Ejecutar como administrador)
# Copie todo lo siguiente@"%SystemRoot%System32WindowsPowerShellv1.0powershell.exe" -NoProfile -InputFormat Ninguno -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/ install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%chocolateybin"
Si Chocolatey
ya se instaló como se describe arriba pero no se agregó a PATH, ejecute:
$ SET "RUTA=%RUTA%;%ALLUSERSPROFILE%chocolateybin"
Instalar Git
.
$ choco instalar -y git
Instale CMake
.
$ choco instalar -y cmake
Instale vcpkg.
$ git clon https://github.com/Microsoft/vcpkg.git $ cdvcpkg $ etiquetas de pago de git/2020.04 $ .bootstrap-vcpkg.bat
Luego agregue la ubicación de vcpkg a la PATH
y configúrela como variable de entorno VCPKG_ROOT
.
Los siguientes pasos sólo son necesarios si desea compilar sus propios archivos HEX connectivity
.
Instalar ninja
.
$ choco instalar -y ninja
Descargue e instale GNU Embedded Toolchain for Arm
versión 7-2018q2
Descargar desde esta ubicación.
Siga las instrucciones de instalación.
Establezca su ruta de instalación como GNUARMEMB_TOOLCHAIN_PATH
en las variables de entorno. Por ejemplo:
$ establecer GNUARMEMB_TOOLCHAIN_PATH=c:gccarmemb
Instale Python
y pip
, y luego instale nrfutil
$ pip install nrfutil# Reinicie si la instalación se realiza correctamente pero la validación falla
Instale build-essential
.
$ sudo apt-get -y instalar compilación esencial
Instalar Git
$ sudo apt-get -y instalar git
Si la versión instalada de Git
es inferior a la requerida, entonces:
$ sudo agregar-apt-repository ppa:git-core/ppa $ sudo actualización apta $ sudo apto instalar git
Instale CMake
.
$ sudo apt-get -y instalar cmake
Instale CMake
desde la fuente si la versión es inferior a la requerida.
Instale vcpkg.
$ git clon https://github.com/Microsoft/vcpkg.git $ cdvcpkg $ etiquetas de pago de git/2020.04 $ ./bootstrap-vcpkg.sh
Luego agregue la ubicación de vcpkg a la variable de entorno PATH
y VCPKG_ROOT
.
Instalar Ninja
.
$ sudo apt-get install ninja-build
Los siguientes pasos sólo son necesarios si desea compilar sus propios archivos HEX connectivity
.
Instale GNU Embedded Toolchain for Arm
versión 7-2018q2.
Descargar desde aquí
Extracto
Establezca su ubicación como GNUARMEMB_TOOLCHAIN_PATH
en las variables de entorno.
Instale Python
y pip
, y luego instale nrfutil
.
$ pip install nrfutil# Reinicie si la instalación se realiza correctamente pero la validación falla# Si los errores persisten, intente actualizar pip.
Instale Xcode (>=10.1)
.
Instale gcc6
usando HomeBrew.
$ cerveza instalar gcc6
Instale CMake
usando HomeBrew.
$ cerveza instalar cmake $ cerveza actualizar cmake
Instale CMake
desde la fuente si la versión es inferior a la requerida.
Instale vcpkg.
$ git clon https://github.com/Microsoft/vcpkg/ $ cdvcpkg $ etiquetas de pago de git/2020.04 $ ./bootstrap-vcpkg.sh
Luego agregue la ubicación de vcpkg a la variable de entorno PATH
y VCPKG_ROOT
.
Los siguientes pasos sólo son necesarios si desea compilar sus propios archivos HEX connectivity
.
Instale GNU Embedded Toolchain for Arm
versión 7-2018q2.
Descargar desde aquí
Extracto
Establezca su ubicación como GNUARMEMB_TOOLCHAIN_PATH
en las variables de entorno.
Instale Python
y pip
, y luego instale nrfutil
$ pip install nrfutil# Reinicie si la instalación se realiza correctamente pero la validación falla
Instale las dependencias de vcpkg.
# cd <pc-ble-driver-root-folder># Asegúrese de que %VCPKG_ROOT% esté configurado y agregado a %PATH%$ mkdir build && cd build $ vcpkg instalar asio catch2 spdlog
CMake Seleccione el compilador de Visual Studio que desea usar según este artículo: Cree código C/C++ en la línea de comando
$ cmake -G Ninja ..
Compilar
$ cmake --build .
Opcionalmente, seleccione la configuración de compilación con la opción --config
. Normalmente están disponibles Debug
, Release
, MinSizeRel
y RelWithDebInfo
. Por ejemplo:
$ cmake --build . --config Depurar
Instale las dependencias de vcpkg.
# cd <pc-ble-driver-root-folder># Asegúrese de que $VCPKG_ROOT esté configurado y agregado a $PATH$ mkdir build && cd build $ vcpkg instalar asio catch2 spdlog
Chacer
$ cmhacer -G Ninja ..
Opcionalmente, seleccione la configuración de compilación con la opción -DCMAKE_BUILD_TYPE
. Normalmente están disponibles Debug
, Release
, MinSizeRel
y RelWithDebInfo
.
Opcionalmente, seleccione la arquitectura de destino (32 o 64 bits) usando la opción -DARCH
. Los valores pueden ser x86_32
, x86_64
, x86_32,x86_64
. Por ejemplo:
$ cmhacer -Ninja -DCMAKE_BUILD_TYPE=Depurar -DARCH=x86_32,x86_64 ..
Compilar
$ cmake --build .
pc-ble-driver
desde la fuente si aún no lo ha hecho.Asegúrese de que las siguientes variables de entorno estén configuradas:
VCPKG_ROOT
GNUARMEMB_TOOLCHAIN_PATH
Asegúrese de que se hayan agregado las siguientes rutas a PATH:
VCPKG_ROOT
mergehex
Siga los pasos para instalar dependencias en una plataforma específica:
Establecer entorno
# cd <pc-ble-driver-root-folder>$ SET "PATH=%PATH%;%ALLUSERSPROFILE%chocolateybin"# Asegúrese de que las variables de entorno se hayan configurado# como se describe al comienzo de esta sección
Chacer
$ mkdir build && cd build# Modificar -DCONNECTIVITY_VERSION=abc$ cmake -G Ninja -DCOMPILE_CONNECTIVITY=1 -DCONNECTIVITY_VERSION=1.0.0 ..
COMPILE_CONNECTIVITY
se establece en 1 para permitir la compilación del firmware de conectividad.
CONNECTIVITY_VERSION
define una versión para el firmware de conectividad compilado.
Consulte más opciones al compilar pc-ble-driver en Windows
Compilar
$ cmake --build . --objetivo compilación_conectividad
Los archivos HEX están disponibles en la carpeta hex/sd_api_v<x>
después de la compilación. Incluyen el SoftDevice y la aplicación de conectividad.
Establecer entorno
# cd <pc-ble-driver-root-folder>$ export TMP=/tmp# Asegúrese de que las variables de entorno se hayan configurado# como se describe al principio de esta sección
Chacer
$ mkdir build && cd build# Modificar -DCONNECTIVITY_VERSION=abc$ cmake -Ninja -DCOMPILE_CONNECTIVITY=1 -DCONNECTIVITY_VERSION=1.0.0 ..
COMPILE_CONNECTIVITY
se establece en 1 para permitir la compilación del firmware de conectividad.
CONNECTIVITY_VERSION
define una versión para el firmware de conectividad compilado.
Consulte más opciones al compilar pc-ble-driver en Ubuntu Linux o macOS
Compilar
$ cmake --build . --objetivo compilación_conectividad
Los archivos HEX están disponibles en la carpeta hex/sd_api_v<x>
después de la compilación. Incluyen el SoftDevice y la aplicación de conectividad.
Vaya a instalar herramientas si las herramientas de línea de comandos nRF5x aún no se han instalado.
Para utilizar esta biblioteca necesitará programar el firmware de conectividad en un IC nRF5x
Utilice las herramientas de línea de comandos nRF5x para borrar y programar el IC:
$ 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
Alternativamente, use nRF Connect Programmer para borrar y programar el IC.
Algunos kits, como el dongle pca10059 nRF52, no tienen un depurador integrado y deberán programarse mediante DFU serie. En Windows, se requieren controladores de dispositivo para que el sistema operativo detecte correctamente los kits. Para instalar los controladores necesarios, asegúrese de tener instalada la última versión de nRF Connect for Desktop.
La programación del firmware de conectividad a través de DFU serie se puede realizar desde la línea de comandos o desde nRF Connect for Desktop.
La actualización del firmware del dispositivo con nrfutil normalmente se realiza en dos pasos: 1: generar el paquete zip DFU y 2: realizar el procedimiento DFU. Se ha creado previamente un paquete zip DFU y se incluye en este repositorio. Para ejecutar el procedimiento DFU con nrfutil con el paquete DFU prefabricado:
nrfutil dfu usb-serial -pkg connectivity_x.x.x_usb_with_s<x>_<a>.<b>.<c>_dfu_pkg.zip -p <serial port>
Los ejemplos sirven como un excelente punto de partida para el desarrollo con pc-ble-driver
. Los ejemplos incluyen un monitor de frecuencia cardíaca (periférico BLE) y un recolector de frecuencia cardíaca (BLE maestro) y muestran la estructura básica de una aplicación construida en pc-ble-driver
.
Para poner en funcionamiento rápidamente los ejemplos, consulte ejemplos/README.md.
Si tiene problemas durante la instalación de pc-ble-driver, consulte Issues.md.
No dudes en proponer cambios creando una solicitud de extracción.
Si planea realizar cambios no triviales, comience poco a poco y solicite un acuerdo antes de esforzarse demasiado. Se puede rechazar una solicitud de extracción si no se ajusta bien a la hoja de ruta actual del producto.
Para aceptar su solicitud de extracción, necesitamos que firme nuestro Acuerdo de licencia de colaborador (CLA). Verá instrucciones para hacer esto después de haber enviado su primera solicitud de extracción.
Si encuentra algún error o tiene preguntas u otros comentarios en general, envíe una publicación en el portal Nordic DevZone. Tenga en cuenta que los informes de error deben describir con suficiente detalle cómo reproducir el error.
Consulte el archivo de licencia para obtener más detalles.