Você está na página 1de 8

Exemplo de comunicação BLE 4.

0
Indicador de peso

Exemplo de comunicação com IoT BPB085.pdf


09/2020

Índice
Introdução.............................................................................................................................................2
Download do exemplo..........................................................................................................................2
Acessando o projeto exemplo...............................................................................................................3
Opções do projeto exemplo..................................................................................................................4
;peso.................................................................................................................................................6
;tara..................................................................................................................................................6
;verif.................................................................................................................................................7
;batt..................................................................................................................................................7

Página 1
Exemplo de comunicação BLE 4.0
Indicador de peso

Exemplo de comunicação com IoT BPB085.pdf


09/2020

Introdução
Aqui constam alguns esclarecimentos técnicos e orientações em relação ao ACR Manejo Control
e o indicador BPB 085 IoT.

O Indicador de peso BPB 085 IoT opera com dispositivos que possuam suporte a bluetooh versão
4.0, observando que o fato do dispositivo ser novo não é garantia de que o recurso esteja disponível.

O indicador BPB 085 IoT faz pleno uso do bluetooh versão 4.0 aproveitando sua capacidade de
operar em modo Bluetooh Smart (ou Bluetooth Low Energy) padrão esse adotado por diversos
dispositivos que usam o conceito de IoT, sendo que IoT é o conceito que se refere à interconexão digital
entre objetos, no caso aqui estamos falando entre o indicador BPB 085 IoT e um dispositivo.

Download do exemplo
O exemplo aqui ilustrado foi escrito em linguagem Java, mas o desenvolvedor poderá adotar a
linguagem que desejar, desde que essa suporte comunicação com devices BLE.

O projeto exemplo visa apenas demonstrar o processo de comunicação, não sendo um APP para
usuário final, devendo ser executado e testado em ambiente de desenvolvimento com o Android Studio
(https://developer.android.com/studio?hl=pt-br).

Link para download do exemplo versionado


git clone https://tikorth@bitbucket.org/programadoreskorth/exemplo-integracao-bpb-085-iot.git

Página 2
Exemplo de comunicação BLE 4.0
Indicador de peso

Exemplo de comunicação com IoT BPB085.pdf


09/2020

Acessando o projeto exemplo


O fonte exemplo possui tudo que é necessário para comunicação com o indicador Balanças Açores
BPB 085 IoT.

Os comandos previstos são os seguintes

Comando Sintaxe
Pedir um peso, retorna o peso e o status ;peso
Pede o status bateria, retorna se está baixa ou alta ;batt
Envia um comando de verificação do peso ;verif
Tara o indicador ;tara

Página 3
Exemplo de comunicação BLE 4.0
Indicador de peso

Exemplo de comunicação com IoT BPB085.pdf


09/2020

Opções do projeto exemplo


O fonte exemplo possui tudo que é necessário para comunicação com o indicador Balanças
Açores BPB 085 IoT.

A opção LISTAR DISPOSITIVOS é um exemplo de que demonstra como buscar possíveis


dispositivos IoT nas proximidades.

Esta rotina é opcional de ser implementada, pois no seu APP você pode pedir ao usuário que
informe o MAC ADDRESS do device com base no conteúdo impresso na etiqueta do produto.

Este comando instância a classe UartService.java presente no exemplo, sendo que esta estende
a classe Service do SO Android. Aqui implementamos um serviço UART, que é o acrônimo de Universal
Asynchrounous Receiver/Transmiter ou Receptor/Transmissor Universal Assíncrono.

Página 4
Exemplo de comunicação BLE 4.0
Indicador de peso

Exemplo de comunicação com IoT BPB085.pdf


09/2020

Ao instanciar este serviço o desenvolver precisar implementar as callbacks necessárias para


detectar que o serviço está disponível, abaixo temos um exemplo no LogCat do Android Studio.

I/ComunicaoIndicadorBLE: ServicoIndicadorBLE()
I/ComunicaoIndicadorBLE: Iniciar serviço UART :
com.example.ti.myapplication.UartService@7a882b3

Após instanciar o serviço da UART é possível conectar o indicador BPB 085 IoT selecionado , a
rotina presente na classe ComunicaoIndicadorBLE exemplifica como realizar este procedimento, há um
listener registrado no botão do exemplo.

Por ser um procedimento assíncrono o desenvolvedor deverá implementar um AsyncTask para


captura do retorno da conexão. Vide exemplo junto ao LogCat.

D/BluetoothAdapter: STATE_ON
D/BluetoothGatt: connect() - device: CA:B4:6B:65:4E:02, auto: false
D/BluetoothAdapter: isSecureModeEnabled
D/BluetoothGatt: registerApp()
D/BluetoothGatt: registerApp() - UUID=21c08557-504c-44bd-a516-6506301effc2
D/UartService: Trying to create a new connection.
D/BluetoothGatt: onClientRegistered() - status=0 clientIf=7
D/BluetoothGatt: onClientConnectionState() - status=0 clientIf=7 device=CA:B4:6B:65:4E:02
I/UartService: Connected to GATT server.
I/ComunicaoIndicadorBLE: com.nordicsemi.nrfUART.ACTION_GATT_CONNECTED
D/BluetoothGatt: discoverServices() - device: CA:B4:6B:65:4E:02
I/UartService: Attempting to start service discovery:true
D/BluetoothGatt: onConnectionUpdated() - Device=CA:B4:6B:65:4E:02...
D/BluetoothGatt: onSearchComplete() = Device=CA:B4:6B:65:4E:02 Status=0
W/UartService: mBluetoothGatt = android.bluetooth.BluetoothGatt@44511a5
I/ComunicaoIndicadorBLE: com.nordicsemi.nrfUART.ACTION_GATT_SERVICES_DISCOVERED
D/BluetoothGatt: setCharacteristicNotification() - uuid: 6e400003-b5a3-f393-e0a9-e50e24dcca9e
enable: true
I/ComunicaoIndicadorBLE: com.nordicsemi.nrfUART.ACTION_DATA_AVAILABLE
I/ComunicaoIndicadorBLE: com.nordicsemi.nrfUART.ACTION_DATA_AVAILABLE -> Connected!
I/ComunicaoIndicadorBLE: UART avisou que conectou no service

A callback da classe ComunicaoIndicadorBLE ilustra que o serviço entregou a informação da


conexão, vide log em vermelho.

Página 5
Exemplo de comunicação BLE 4.0
Indicador de peso

Exemplo de comunicação com IoT BPB085.pdf


09/2020

O comando de desconexão aqui ilustrado não trata de encerramento de tasks/threads e operações


de I/O que devem ser tratadas pelo desenvolvedor conforme a natureza de sua aplicação.

Abaixo temos o LogCat do processo de desconexão, importante observar que as callbacks sempre
retornam o MAC do device afetado.

D/BluetoothGatt: cancelOpen() - device: CA:B4:6B:65:4E:02


D/BluetoothGatt: onClientConnectionState() - status=0 clientIf=7 device=CA:B4:6B:65:4E:02
I/UartService: Disconnected from GATT server.
W/UartService: mBluetoothGatt closed
D/BluetoothGatt: close()
D/BluetoothGatt: unregisterApp() - mClientIf=7

O COMANDO AVULSO 1 e 2 permitem o desenvolvedor testar e observar o resultado de cada


comando, os previstos são os citados na tabela presente no início deste documento. Os testes da rotina
devem ser feitas direto no LogCat, no projeto final o desenvolvedor deverá implementar as AsyncTasks
conforme a natureza de sua aplicação.

A seguir temos exemplos de retornos no logCat, posteriormente recomenda-se a depuração dos


comandos para melhor entendimento.

;peso
I/ComunicaoIndicadorBLE: Korth_UART_TX(;peso)
D/UartService: write TXchar - status=true
I/ComunicaoIndicadorBLE: com.nordicsemi.nrfUART.ACTION_DATA_AVAILABLE
I/ComunicaoIndicadorBLE: com.nordicsemi.nrfUART.ACTION_DATA_AVAILABLE -> +0000.0;Z;1;

;tara
I/ComunicaoIndicadorBLE: Korth_UART_TX(;tara)
D/UartService: write TXchar - status=true
I/ComunicaoIndicadorBLE: com.nordicsemi.nrfUART.ACTION_DATA_AVAILABLE
I/ComunicaoIndicadorBLE: com.nordicsemi.nrfUART.ACTION_DATA_AVAILABLE -> ;tara;ok;1;

;verif
I/ComunicaoIndicadorBLE: Korth_UART_TX(;verif)
D/UartService: write TXchar - status=true
I/ComunicaoIndicadorBLE: com.nordicsemi.nrfUART.ACTION_DATA_AVAILABLE
I/ComunicaoIndicadorBLE: com.nordicsemi.nrfUART.ACTION_DATA_AVAILABLE -> ;verif;ok;1;

Página 6
Exemplo de comunicação BLE 4.0
Indicador de peso

Exemplo de comunicação com IoT BPB085.pdf


09/2020

;batt
I/ComunicaoIndicadorBLE: Korth_UART_TX(;batt)
D/UartService: write TXchar - status=true
I/ComunicaoIndicadorBLE: com.nordicsemi.nrfUART.ACTION_DATA_AVAILABLE
I/ComunicaoIndicadorBLE: com.nordicsemi.nrfUART.ACTION_DATA_AVAILABLE -> ;batt;high;1;

Página 7
Exemplo de comunicação BLE 4.0
Indicador de peso

Exemplo de comunicação com IoT BPB085.pdf


09/2020

Referências ao desenvolvedor
https://developer.android.com/guide/topics/connectivity/bluetooth-le

https://developer.android.com/reference/android/os/AsyncTask

https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/include/bluetooth/services/nus.html

Página 8

Você também pode gostar