Esta biblioteca não está mais sendo mantida e não há planos para um sucessor para esta biblioteca. Embora permaneça acessível para usuários existentes do SDK nRF5, ele não receberá mais atualizações ou suporte. Recomendamos evitar iniciar novos projetos com esta biblioteca, pois o firmware (arquivos .hex) disponível usa binários SoftDevice desatualizados.
pc-ble-driver
fornece bibliotecas C/C++ para serialização Bluetooth Low Energy nRF5 SoftDevice.
pc-ble-driver
consiste em um conjunto de bibliotecas estáticas e compartilhadas que fornecem funcionalidade SoftDevice ao aplicativo por meio de comunicação de porta serial com um chip de conectividade nRF5 executando o SoftDevice e software de conectividade, incluído como um único arquivo .hex aqui. Para obter mais informações sobre a serialização do SoftDevice, consulte Serialização.
As bibliotecas C/C++ podem ter interface direta, mas também são fornecidas como ligações de nível superior que facilitam o desenvolvimento ao custo de controle reduzido (aceitável na maioria dos casos):
Onde o 'chip de aplicação' é apenas um hardware genérico (ou seja, um dispositivo Windows, Linux ou macOS), embora também possa ser um Arduino ou Raspberry Pi, por exemplo.
Para usar o pc-ble-driver, seu kit de desenvolvimento precisa ter o firmware correto. Os firmwares necessários são encontrados na pasta hex/sd_api_v
e contêm o SoftDevice e o firmware de conectividade necessários para se comunicar com pc-ble-driver
.
As bibliotecas geradas são compatíveis com as seguintes versões da API SoftDevice e ICs nRF5x:
connectivity__1m_with_s130_2.xx
(ICs das séries nRF51 e nRF52)connectivity__<1m|*usb>_with_s132_3.xx
(apenas para ICs da série nRF52)connectivity__<1m|*usb>_with_s132_5.xx
(apenas para ICs da série nRF52)connectivity__<1m|*usb>_with_s132_6.xx
(apenas para ICs da série nRF52)connectivity__<1m|*usb>_with_s140_6.xx
(apenas para ICs da série nRF52)*usb) apenas para ICs da série nRF52 com periférico USBD
PCA | Nome oficial | Número do artigo | Notas |
---|---|---|---|
PCA10028 | KIT DE DESENVOLVIMENTO nRF51 | nRF6824 | |
PCA10031 | DONGLE nRF51 | nRF6825 | |
PCA10040 | KIT DE DESENVOLVIMENTO nRF52 | nRF6827 | |
PCA10056 | nRF52840 {Kit de Desenvolvimento} | nRF6828 | *) |
PCA10059 | nRF52840 { Dongle } | nRF6829 | Só é possível usar firmware de conectividade com suporte para porta serial Nordic USB CDC |
*) Pode usar a versão de porta serial Nordic USB CDC e a versão SEGGER J-Link-OB (VCOM). O uso da versão de porta serial Nordic USB CDC no PCA10056 requer que você conecte os pinos P0.18 e P0.24. Os pinos do chip QSPI também devem estar no lugar (eles estão por padrão). O algoritmo para detectar se é PCA10056 ou PCA10059 é verificar se é possível comunicar com o chip QSPI. PCA10059 não possui chip QSPI. A detecção é usada pelo gatilho nRF Connect DFU para determinar qual pino usar para redefinir o dispositivo ao alternar entre o modo DFU e o modo de aplicativo.
Esta biblioteca de comunicação funciona em qualquer tipo de porta serial (UART), mas é mais frequentemente usada em um UART Segger J-Link USB CDC. Para configurar os drivers J-Link necessários, basta baixar e instalar a versão correspondente ao seu sistema operacional:
Depois de instalar os drivers necessários e conectar uma placa habilitada para J-Link (como os Nordic Development Kits), a porta deverá estar disponível.
Além disso, você deve desabilitar o Mass Storage Device
para usar pc-ble-driver
para se comunicar com o dispositivo, consulte data corruption or drops issue
.
A porta serial aparecerá como COMxx
. Basta verificar a seção "Portas (COM e LPT)" no Gerenciador de Dispositivos.
A porta serial aparecerá como /dev/ttyACMx
.
Por padrão, a porta não está acessível a todos os usuários. Digite o comando abaixo para adicionar seu usuário ao grupo dialout
para conceder acesso à porta serial. Observe que é necessário fazer login novamente para que isso tenha efeito.
$ sudo usermod -a -G dialout < username >
Para evitar que o serviço modemmanager tente se conectar à porta serial CDC ACM:
$ systemctl stop ModemManager.service
$ systemctl disable ModemManager.service
A porta serial aparecerá como /dev/tty.usbmodemXXXX
.
Há um problema conhecido, verifique aqui se você encontrou algum problema.
Para programar o firmware de conectividade, você precisará nrfjprog
, que vem junto com as ferramentas de linha de comando nRF5x, que podem ser baixadas em:
Adicione nrfjprog
e mergehex
ao PATH
no Linux e macOS.
Alternativamente, nRF Connect Programmer
pode ajudá-lo a programar o firmware de conectividade com suporte de UI.
Baixe o nRF Connect Desktop e instale nRF Connect Programmer
lá.
Para compilar pc-ble-driver
você precisará das seguintes ferramentas:
pc-ble-driver
da fonte Para compilar arquivos HEX connectivity
você precisará de ferramentas adicionais:
connectivity
Siga as etapas para instalar dependências em uma plataforma específica:
Baixe Visual Studio 15
ou versão posterior e instale.
Instale Chocolatey. Instalar com cmd.exe
(executar 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 "
Se Chocolatey
já tiver sido instalado conforme descrito acima, mas não tiver sido adicionado ao PATH, execute:
$ SET " PATH=%PATH%;%ALLUSERSPROFILE%chocolateybin "
Instale Git
.
$ choco install -y git
Instale CMake
.
$ choco install -y cmake
Instale o vcpkg.
$ git clone https://github.com/Microsoft/vcpkg.git
$ cd vcpkg
$ git checkout tags/2020.04
$ . b ootstrap-vcpkg.bat
Em seguida, adicione o local do vcpkg ao PATH
e defina-o como variável de ambiente VCPKG_ROOT
.
As etapas a seguir serão necessárias somente se você desejar compilar seus próprios arquivos HEX connectivity
.
Instale ninja
.
$ choco install -y ninja
Baixe e instale GNU Embedded Toolchain for Arm
versão 7-2018q2
Baixe deste local.
Siga as instruções de instalação.
Defina seu caminho de instalação como GNUARMEMB_TOOLCHAIN_PATH
nas variáveis de ambiente. Por exemplo:
$ set GNUARMEMB_TOOLCHAIN_PATH=c: g ccarmemb
Instale Python
e pip
e, em seguida, instale nrfutil
$ pip install nrfutil
# Reboot if installation succeeds but validation fails
Instale build-essential
.
$ sudo apt-get -y install build-essential
Instale Git
$ sudo apt-get -y install git
Se a versão instalada do Git
for inferior à necessária, então:
$ 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
da fonte se a versão for inferior à necessária.
Instale o vcpkg.
$ git clone https://github.com/Microsoft/vcpkg.git
$ cd vcpkg
$ git checkout tags/2020.04
$ ./bootstrap-vcpkg.sh
Em seguida, adicione o local do vcpkg à variável de ambiente PATH
e VCPKG_ROOT
.
Instale Ninja
.
$ sudo apt-get install ninja-build
As etapas a seguir serão necessárias somente se você desejar compilar seus próprios arquivos HEX connectivity
.
Instale GNU Embedded Toolchain for Arm
versão 7-2018q2.
GNUARMEMB_TOOLCHAIN_PATH
nas variáveis de ambiente. Instale Python
e pip
e, em seguida, 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 o HomeBrew.
$ brew install gcc6
Instale CMake
usando o HomeBrew.
$ brew install cmake
$ brew upgrade cmake
Instale CMake
da fonte se a versão for inferior à necessária.
Instale o vcpkg.
$ git clone https://github.com/Microsoft/vcpkg/
$ cd vcpkg
$ git checkout tags/2020.04
$ ./bootstrap-vcpkg.sh
Em seguida, adicione o local do vcpkg à variável de ambiente PATH
e VCPKG_ROOT
.
As etapas a seguir serão necessárias somente se você desejar compilar seus próprios arquivos HEX connectivity
.
Instale GNU Embedded Toolchain for Arm
versão 7-2018q2.
GNUARMEMB_TOOLCHAIN_PATH
nas variáveis de ambiente. Instale Python
e pip
e, em seguida, instale nrfutil
$ pip install nrfutil
# Reboot if installation succeeds but validation fails
Instale dependências vcpkg.
# cd
# Make sure %VCPKG_ROOT% is set and added to %PATH%
$ mkdir build && cd build
$ vcpkg install asio catch2 spdlog
CMake Selecione o compilador do Visual Studio a ser usado de acordo com este artigo: Construir código C/C++ na linha de comando
$ cmake -G Ninja ..
Compilar
$ cmake --build .
Opcionalmente, selecione a configuração de compilação com a opção --config
. Normalmente Debug
, Release
, MinSizeRel
e RelWithDebInfo
estão disponíveis. Por exemplo:
$ cmake --build . --config Debug
Instale dependências 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
..
Opcionalmente, selecione a configuração de construção com a opção -DCMAKE_BUILD_TYPE
. Normalmente Debug
, Release
, MinSizeRel
e RelWithDebInfo
estão disponíveis.
Opcionalmente, selecione a arquitetura de destino (32 ou 64 bits) usando a opção -DARCH
. Os valores podem ser x86_32
, x86_64
, x86_32,x86_64
. Por exemplo:
$ cmake
-G Ninja
-DCMAKE_BUILD_TYPE=Debug
-DARCH=x86_32,x86_64
..
Compilar
$ cmake --build .
pc-ble-driver
a partir do código-fonte, se ainda não tiver feito isso.Certifique-se de que as seguintes variáveis de ambiente estejam definidas:
VCPKG_ROOT
GNUARMEMB_TOOLCHAIN_PATH
Certifique-se de que os seguintes caminhos foram adicionados ao PATH:
VCPKG_ROOT
mergehex
Siga as etapas para instalar dependências em uma plataforma específica:
Definir ambiente
# 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
é definido como 1 para permitir a compilação do firmware de conectividade.
CONNECTIVITY_VERSION
define uma versão para o firmware de conectividade compilado.
Verifique mais opções em compilar pc-ble-driver no Windows
Compilar
$ cmake --build . --target compile_connectivity
Os arquivos HEX estão disponíveis na pasta hex/sd_api_v
após a compilação. Eles incluem o SoftDevice e o aplicativo de conectividade.
Definir ambiente
# 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
é definido como 1 para permitir a compilação do firmware de conectividade.
CONNECTIVITY_VERSION
define uma versão para o firmware de conectividade compilado.
Verifique mais opções na compilação do pc-ble-driver no Ubuntu Linux ou macOS
Compilar
$ cmake --build . --target compile_connectivity
Os arquivos HEX estão disponíveis na pasta hex/sd_api_v
após a compilação. Eles incluem o SoftDevice e o aplicativo de conectividade.
Vá para instalar ferramentas se as ferramentas de linha de comando nRF5x ainda não tiverem sido instaladas.
Para usar esta biblioteca você precisará programar o firmware de conectividade em um IC nRF5x
Use as ferramentas de linha de comando nRF5x para apagar e programar o IC:
$ nrfjprog -f NRF5 -e
$ nrfjprog -f NRF5 --program hex/sd_api_v/connectivity___with_s_...hex
Alternativamente, use o nRF Connect Programmer para apagar e programar o IC.
Alguns kits, como o dongle pca10059 nRF52, não possuem depurador integrado e deverão ser programados via serial DFU. No Windows, os drivers de dispositivo são necessários para que os kits sejam detectados corretamente pelo sistema operacional. Para instalar os drivers necessários, certifique-se de ter o nRF Connect for Desktop mais recente instalado.
A programação do firmware de conectividade via serial DFU pode ser feita na linha de comando ou no nRF Connect for Desktop.
A atualização de firmware do dispositivo com nrfutil normalmente é feita em duas etapas: 1: gerando o pacote zip DFU e 2: executando o procedimento DFU. Um pacote zip DFU foi pré-fabricado e está incluído neste repositório. Para executar o procedimento DFU com nrfutil com o pacote DFU pré-fabricado:
nrfutil dfu usb-serial -pkg connectivity_x.x.x_usb_with_s_.._dfu_pkg.zip -p
Os exemplos servem como um excelente ponto de partida para o desenvolvimento com pc-ble-driver
. Os exemplos incluem um monitor de frequência cardíaca (periférico BLE) e um coletor de frequência cardíaca (mestre BLE) e mostram a estrutura básica de um aplicativo construído em pc-ble-driver
.
Para colocar os exemplos em funcionamento rapidamente, consulte exemplos/README.md.
Se você encontrar problemas durante a instalação do driver pc-ble, consulte Issues.md.
Sinta-se à vontade para propor alterações criando uma solicitação pull.
Se você planeja fazer alterações não triviais, comece aos poucos e peça um acordo antes de colocar muito trabalho nisso. Uma solicitação pull pode ser recusada se não se enquadrar no roteiro de produto atual.
Para aceitar sua solicitação pull, precisamos que você assine nosso Contrato de Licença de Contribuidor (CLA). Você verá instruções para fazer isso depois de enviar sua primeira solicitação pull.
Se você encontrar algum bug ou tiver dúvidas ou outros comentários em geral, envie uma postagem no portal Nordic DevZone. Observe que os relatórios de bugs devem descrever com detalhes suficientes como reproduzir o bug.
Consulte o arquivo de licença para obter detalhes.