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.
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):
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.
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
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:
connectivity__1m_with_s130_2.xx
(CI de las series nRF51 y nRF52)connectivity__<1m|*usb>_with_s132_3.xx
(solo para circuitos integrados de la serie nRF52)connectivity__<1m|*usb>_with_s132_5.xx
(solo para circuitos integrados de la serie nRF52)connectivity__<1m|*usb>_with_s132_6.xx
(solo para circuitos integrados de la serie nRF52)connectivity__<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:
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 < username >
Para evitar que el servicio modemmanager intente conectarse al puerto serie CDC ACM:
$ systemctl stop ModemManager.service
$ systemctl disable 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:
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:
pc-ble-driver
desde la fuente Para compilar archivos HEX connectivity
necesitarás herramientas adicionales:
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)
# 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
ya se instaló como se describe arriba pero no se agregó a PATH, ejecute:
$ SET " PATH=%PATH%;%ALLUSERSPROFILE%chocolateybin "
Instalar Git
.
$ choco install -y git
Instale CMake
.
$ choco install -y cmake
Instale vcpkg.
$ git clone https://github.com/Microsoft/vcpkg.git
$ cd vcpkg
$ git checkout tags/2020.04
$ . b ootstrap-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 install -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:
$ set GNUARMEMB_TOOLCHAIN_PATH=c: g ccarmemb
Instale Python
y pip
, y luego instale nrfutil
$ pip install nrfutil
# Reboot if installation succeeds but validation fails
Instale build-essential
.
$ sudo apt-get -y install build-essential
Instalar Git
$ sudo apt-get -y install git
Si la versión instalada de Git
es inferior a la requerida, entonces:
$ sudo add-apt-repository ppa:git-core/ppa
$ sudo apt update
$ sudo apt install git
Instale CMake
.
$ sudo apt-get -y install cmake
Instale CMake
desde la fuente si la versión es inferior a la requerida.
Instale vcpkg.
$ git clone https://github.com/Microsoft/vcpkg.git
$ cd vcpkg
$ git checkout tags/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.
GNUARMEMB_TOOLCHAIN_PATH
en las variables de entorno. Instale Python
y pip
, y luego instale nrfutil
.
$ pip install nrfutil
# Reboot if installation succeeds but validation fails
# If errors persist, try updating pip itself.
Instale Xcode (>=10.1)
.
Instale gcc6
usando HomeBrew.
$ brew install gcc6
Instale CMake
usando HomeBrew.
$ brew install cmake
$ brew upgrade cmake
Instale CMake
desde la fuente si la versión es inferior a la requerida.
Instale vcpkg.
$ git clone https://github.com/Microsoft/vcpkg/
$ cd vcpkg
$ git checkout tags/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.
GNUARMEMB_TOOLCHAIN_PATH
en las variables de entorno. Instale Python
y pip
, y luego instale nrfutil
$ pip install nrfutil
# Reboot if installation succeeds but validation fails
Instale las dependencias de vcpkg.
# cd
# Make sure %VCPKG_ROOT% is set and added to %PATH%
$ mkdir build && cd build
$ vcpkg install 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 Debug
Instale las dependencias de vcpkg.
# cd
# Make sure $VCPKG_ROOT is set and added to $PATH
$ mkdir build && cd build
$ vcpkg install asio catch2 spdlog
Chacer
$ cmake
-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:
$ cmake
-G Ninja
-DCMAKE_BUILD_TYPE=Debug
-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
$ SET " PATH=%PATH%;%ALLUSERSPROFILE%chocolateybin "
# Make sure environment variables have been set
# as described at beginning of this section
Chacer
$ mkdir build && cd build
# Modify -DCONNECTIVITY_VERSION=a.b.c
$ 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 . --target compile_connectivity
Los archivos HEX están disponibles en la carpeta hex/sd_api_v
después de la compilación. Incluyen el SoftDevice y la aplicación de conectividad.
Establecer entorno
# cd
$ export TMP=/tmp
# Make sure environment variables have been set
# as described at beginning of this section
Chacer
$ mkdir build && cd build
# Modify -DCONNECTIVITY_VERSION=a.b.c
$ 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 Ubuntu Linux o macOS
Compilar
$ cmake --build . --target compile_connectivity
Los archivos HEX están disponibles en la carpeta hex/sd_api_v
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 -e
$ nrfjprog -f NRF5 --program hex/sd_api_v/connectivity___with_s_...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_.._dfu_pkg.zip -p
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 recopilador 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.