📡 Sensores BLE — Leitura de Dados sem Fio
Guia para configurar a leitura de sensores BLE em dispositivos Rinho IoT.
Este guia aborda a leitura de sensores BLE (temperatura, umidade, combustível, presença). Para configurar um terminal serial sem fio para enviar comandos do celular, consulte o guia de Vinculação BLE (SPP).
🤔 Para que serve a leitura de sensores BLE?
O módulo BLE permite conectar sensores sem fio ao dispositivo GPS:
- 🌡️ Temperatura e umidade — Cadeia de frio com sensores Rinho Condition (L02S)
- ⛽ Combustível — Nível do tanque com Escort TD BLE
- 🚪 Portas — Abertura/fechamento com sensor magnético (Hall)
- 🏷️ Presença — Detecção de motorista, ferramenta ou reboque com iBeacon
- 🆘 Pânico — Botão de emergência sem fio com pulseira MoKo W6
É possível configurar até 4 sensores BLE simultâneos (BS00 a BS03), cada um vinculado a um sensor específico pelo endereço MAC.
🔧 Pré-requisitos
Antes de começar:
| Requisito | Detalhe |
|---|---|
| Dispositivo | Spider IoT, Smart IoT ou Zero IoT |
| Sensor BLE | Rinho Condition (L02S), Escort TD, iBeacon ou outro compatível |
| App no celular | Cargando... |
| Terminal serial | Cabo USB ou Cargando... |
🔄 Escolher e carregar firmware BLE
Spider IoT / Smart IoT
O ESP32 possui duas partições de firmware intercambiáveis. Para usar BLE, o firmware Nimble deve estar carregado:
BLE e WiFi não podem coexistir na mesma partição do Spider / Smart IoT. Se ambos forem necessários, carregue cada firmware em uma partição diferente e alterne com >SFRMCP0< / >SFRMCP1<.
Zero IoT
O Zero IoT possui um firmware único que inclui BLE e WiFi. Não é necessário trocar de firmware, mas ambas as funcionalidades não podem estar ativas simultaneamente:
// Usar BLE: desligar WiFi
>SSSWIFPWR00<
// Usar WiFi: desligar BLE
>SSSBTHPWR00<| Sinal | Ligar | Desligar | Função |
|---|---|---|---|
WIFPWR | >SSSWIFPWR11< | >SSSWIFPWR00< | Controla o módulo WiFi |
BLEPWR | >SSSBTHPWR11< | >SSSBTHPWR00< | Controla o módulo BLE |
O Zero IoT não requer firmware especial. Basta desligar o WiFi com >SSSWIFPWR00< para usar BLE, e vice-versa.
Carregar firmware Nimble no Spider / Smart IoT
Definir URL de download
Iniciar download via WiFi ou celular
>SFRMM1< // Via WiFi (mais rápido)
>SFRMM2< // Via dados móveis (se não houver WiFi)Aguardar a atualização
O dispositivo baixa, instala e reinicia automaticamente. Pode levar de 2 a 5 minutos via dados móveis.
Verificar firmware
>QVR<A resposta deve incluir NIMBLE:
>RVR RINHO IOT v1.09.16 SP EG915U LC86G 16MB NIMBLE 2025-01-15 10:30:00;ID=...Partições de firmware (Spider / Smart): Se o WiFi estiver em uma partição e o BLE for desejado na outra, use >SFRMCP0< ou >SFRMCP1< para alternar entre partições sem perder nenhuma. Depois reinicie com >SRST<.
🌡️ Caso 1: Sensor de temperatura e umidade — Rinho Condition (L02S)
O sensor mais utilizado com dispositivos Rinho. Mede temperatura, umidade e possui sensor magnético (Hall) para detecção de portas.
📦 Ficha técnica do Rinho Condition · Cargando...
Passo 0: Ligar o sensor
O sensor vem desligado de fábrica:
- Desparafuse a tampa inferior do sensor (sentido anti-horário)
- Remova a tampa para acessar o interior
- Pressione o botão interno por 3 segundos até o LED piscar
- Recoloque a tampa
Uma vez ligado, o sensor começa a transmitir via BLE automaticamente. Para desligar: mantenha o botão pressionado por 10 segundos.
Passo 1: Configurar o sensor com BeaconX Pro
Instalar o app
Cargando...Conectar ao sensor
- Abra o BeaconX Pro e escaneie os dispositivos
- Toque no sensor Rinho Condition (L02S) para conectar
Configurar Slot 2 como Sensor Info
O sensor possui 3 “slots” (canais de transmissão). Para que o dispositivo Rinho leia os dados corretamente:
- Vá para Slot 2 (SLOT2)
- Altere o tipo para Sensor Info
- Salve as alterações
Anotar o endereço MAC
Na tela principal do sensor conectado, anote o endereço MAC (ex.: AC233FA24B16). Será necessário para configurar o BS.
Configurar sensor magnético Hall (se usar detecção de porta)
Passo crítico se estiver usando o sensor de efeito Hall (detecção de porta). Muitos usuários não veem mudanças no estado magnético porque pulam este passo.
Por padrão, o sensor tem o modo “Magnet On/Off” ativado, que liga/desliga o sensor com um ímã em vez de reportar o estado magnético. Para usá-lo como sensor de porta, é necessário desativar esta funcionalidade:
- No BeaconX Pro, vá para a seção Sensor
- Encontre a opção “Magnet On/Off”
- Desative “Magnet On/Off”
- Salve as alterações
O sensor agora reportará continuamente o estado do campo magnético no atributo mag_st (0 = fechado, 1 = aberto).
Passo 2: Configurar BS no dispositivo
>SBS00E,AC233FA24B16,10,60,0,INVALID<| Parâmetro | Valor | Descrição |
|---|---|---|
00 | Índice | Posição do sensor (00 a 03) |
E | Habilitar | E=Habilitar, D=Desabilitar |
AC233FA24B16 | MAC | Endereço MAC do sensor (sem :) |
10 | Tipo | 10 = Rinho Condition / Sensor Info (MK) |
60 | Timeout | Segundos sem sinal para considerar desconectado |
0 | Distância | 0 = sem filtro de distância |
INVALID | Valor inválido | Texto quando não há leitura válida |
Passo 3: Verificar leitura
Consulte os atributos do sensor com o comando QBS:
>QBS00< // Status geral do sensor
>QBS00.temp< // Temperatura (ex.: 23.5)
>QBS00.hum< // Umidade (ex.: 65)
>QBS00.mag< // Magnético (0=fechado, 1=aberto)
>QBS00.batt< // Bateria do sensor (%)
>QBS00.rssi< // Intensidade do sinal BLEResposta completa típica:
>RBS00E,AC233FA24B16,10,60,0,INVALID;mag_st:0,mot_st:0,mag_cnt:5,mot_cnt:0,x:0,y:0,z:0,temp:23.5,hum:65,batt:95,tag:MK,rssi:-52;ID=...Atributos disponíveis para tipo 10 (MK): mag_st (magnético), mot_st (movimento), mag_cnt, mot_cnt, x, y, z, temp, hum, batt, tag, rssi.
⛽ Caso 2: Sensor de combustível (Escort TD BLE)
O Escort TD é um sensor de nível de combustível sem fio instalado no tanque.
Configurar BS
>SBS01E,A1B2C3D4E5F6,30,60,10,INVALID<| Parâmetro | Valor | Descrição |
|---|---|---|
01 | Índice | BS01 (pode ser qualquer de 00-03) |
30 | Tipo | 30 = Escort TD (Combustível) |
A1B2C3D4E5F6 | MAC | MAC do Escort TD |
Consultar nível
>QBS01.fuel_lvl< // Nível de combustível
>QBS01.battery< // Bateria do sensor
>QBS01.temp< // TemperaturaResposta:
>432;ID=... // 432 = nível de combustível (unidade depende do sensor)🏷️ Caso 3: iBeacon para presença e pânico
iBeacons são beacons simples que transmitem sua identidade. Útil para saber se um motorista, ferramenta ou reboque está próximo.
Configurar BS com iBeacon
>SBS02E,AABBCCDDEEFF,2,30,5,0<| Parâmetro | Valor | Descrição |
|---|---|---|
02 | Índice | BS02 |
2 | Tipo | 2 = Eddystone UID / iBeacon presença |
30 | Timeout | 30 segundos sem sinal = ausente |
5 | Distância | 5 metros máximo |
Usar sinais em regras
Cada sensor BS gera sinais automáticos que podem ser usados no motor de eventos:
| Sinal | Significado |
|---|---|
BS02+ | Beacon foi detectado (entrou no alcance) |
BS02- | Beacon foi perdido (saiu do alcance ou timeout) |
Exemplo de regra: Reportar quando o motorista embarca ou sai do veículo:
// Regra: quando o beacon do motorista é detectado, reportar
>SRL00E;TRG=BS02+;ACC={GCQ00H}<
// Regra: quando o beacon é perdido, reportar
>SRL01E;TRG=BS02-;ACC={GCQ00H}<🔍 BSW: Auto-detecção para cenários dinâmicos
O sistema BSW (Bluetooth Smart Wildcard) detecta sensores automaticamente sem conhecer o MAC previamente. Filtra por UUID, Major e Minor do iBeacon.
Quando usar BSW em vez de BS?
| Cenário | Usar |
|---|---|
| Sensor fixo, sempre o mesmo | BS (com MAC) |
| Semirreboque intercambiável | BSW (sem MAC, filtra por UUID) |
| Múltiplos sensores idênticos em rotação | BSW |
| Frota com reboques alternando entre tratores | BSW |
Exemplo: Trator conectando-se a diferentes reboques
Cada reboque tem um beacon com o mesmo UUID mas Major diferente. O trator detecta automaticamente qual reboque está acoplado:
// BSW00 captura beacons com UUID específico e injeta no BS00
>SBSW00E,00,2F234454CF6D4A0FADF2F4911BA9FFA6,0,0,30,5<| Parâmetro | Valor | Descrição |
|---|---|---|
00 | Índice BSW | BSW00 |
E | Habilitar | |
00 | Destino | Injeta o MAC capturado no BS00 |
2F23...FFA6 | UUID | UUID do beacon do reboque |
0 | Major | 0 = qualquer Major |
0 | Minor | 0 = qualquer Minor |
30 | Timeout | 30 segundos |
5 | Distância | 5 metros máximo |
Consultar status do BSW
>QBSW00<Resposta com dispositivo detectado:
>RBSW00E,00,2F234454CF6D4A0FADF2F4911BA9FFA6,0,0,30,5;detects:1,active:1,mac:AA:BB:CC:DD:EE:FF,rssi:-45,distance:1.50,age:3;ID=...BSW com múltiplos destinos
Para monitorar temperatura em 4 zonas de um reboque refrigerado, com um sensor por zona:
// BSW00 captura sensores com Major 1-4 e distribui para BS00-BS03
>SBSW00E,00:01:02:03,2F234454CF6D4A0FADF2F4911BA9FFA6,1,4,60,0<O intervalo Major 1 a 4 faz o BSW capturar até 4 sensores diferentes e atribuí-los a BS00, BS01, BS02 e BS03 respectivamente.
📊 Integrar dados BLE nos relatórios
Para que a plataforma receba dados dos sensores BLE, configure um relatório de usuário (SUC) que inclua tokens QBS:
Exemplo: Relatório com temperatura e umidade
>SUC04 $RCQ| #| QCQ,5,64| $;PA=temp:2:| QBS00.temp| $;PA=hum:2:| QBS00.hum| $;PA=mag:1:| QBS00.mag<| Token | Descrição |
|---|---|
$RCQ | Cabeçalho do relatório |
# | Número de sequência |
QCQ,5,64 | Posição GPS padrão |
$;PA=temp:2: | Parâmetro adicional “temp” tipo float (2) |
QBS00.temp | Valor de temperatura do BS00 |
$;PA=hum:2: | Parâmetro adicional “hum” tipo float (2) |
QBS00.hum | Valor de umidade do BS00 |
$;PA=mag:1: | Parâmetro adicional “mag” tipo inteiro (1) |
QBS00.mag | Valor magnético do BS00 |
Tipos de dados para parâmetros PA
| Código | Tipo | Exemplo |
|---|---|---|
1 | Inteiro | mag:1:0 |
2 | Float | temp:2:23.5 |
3 | String | tag:3:MK |
Gerar o relatório
>GCQ04H< // Gera um relatório SUC04 e enviaConsulte o comando G para mais opções de geração.
Resposta do dispositivo:
>RCQ04...;PA=temp:2:23.5;PA=hum:2:65;PA=mag:1:0;ID=...🔗 Criar regras com sensores BLE
Os sinais BS podem ser usados para criar automações com regras (RL) e disparadores de usuário (UV):
Exemplo 1: Alerta de temperatura alta
Primeiro crie um disparador de usuário (UV) que monitora a temperatura e ativa quando ultrapassar 35 graus:
// UV00: monitora QBS00.temp (float), ativa quando valor está entre 350 e 9999
// (o sensor reporta temp x10, então 350 = 35.0 graus)
>SUV00FQBS00.temp,0,10,350,9999<
// Regra: se UV00 ativa (temp alta), gerar relatório
>SRL02E;TRG=UV00+;ACC={GCQ04H}<
// Regra: se UV00 desativa (temp normal), gerar relatório
>SRL03E;TRG=UV00-;ACC={GCQ04H}<| Parâmetro SUV | Valor | Descrição |
|---|---|---|
00 | Índice | Disparador UV00 |
F | Tipo | Float (ponto flutuante) |
QBS00.temp | Comando | Valor a monitorar |
0 | Início | Posição do primeiro caractere |
10 | Comprimento | Número de caracteres a extrair |
350 | Mínimo | Valor mínimo para ativar (35.0 graus) |
9999 | Máximo | Valor máximo |
Exemplo 2: Alerta de porta aberta (sensor magnético)
// UV01: monitora estado magnético, ativa quando mag é 1 ou mais
>SUV01FQBS00.mag,0,10,1,2<
// Regra: porta aberta (magnético = 1)
>SRL04E;TRG=UV01+;ACC={GCQ04H}<
// Regra: porta fechada (magnético = 0)
>SRL05E;TRG=UV01-;ACC={GCQ04H}<Exemplo 3: Presença do motorista (sinal BS direto)
// BS02 tem o iBeacon do motorista
// Regra: reportar quando motorista embarca (beacon detectado)
>SRL06E;TRG=BS02+;ACC={GCQ00H}<
// Regra: reportar quando motorista sai (beacon perdido)
>SRL07E;TRG=BS02-;ACC={GCQ00H}<🐛 Depuração BLE
Quando um sensor não aparece ou os dados estão incorretos, habilite o debug BLE:
Ver frames BLE brutos
Use o comando DB para habilitar o debug BLE:
>SDB0+BLX<Isso mostra no console de debug todos os pacotes BLE recebidos pelo dispositivo, incluindo MACs, tipos e dados brutos. Útil para:
- Verificar se o sensor está transmitindo
- Confirmar o endereço MAC
- Checar se o tipo de sensor está correto
- Diagnosticar sensores desconhecidos
Desabilitar debug BLE
>SDB0-BLX<Habilitar debug geral
>SDB1< // Nível 1: mensagens principais
>SDB2< // Nível 2: mais detalhes🔧 Solução de problemas
| Problema | Causa provável | Solução |
|---|---|---|
QVR não mostra NIMBLE ou BLE | Firmware incorreto (Spider/Smart) | Carregar firmware Nimble (ver seção de firmware) |
| Sensor não detectado | MAC incorreto | Verificar MAC com BeaconX Pro |
QBS00 retorna INVALID | Sensor fora de alcance ou desligado | Aproximar sensor, verificar bateria |
| Temperatura sempre 0 | Configuração de slot errada | Configurar Slot 2 como Sensor Info no BeaconX Pro |
| WiFi parou de funcionar (Spider/Smart) | BLE e WiFi compartilham partição | Normal: usar partições (>SFRMCP<) |
| WiFi parou de funcionar (Zero) | BLE e WiFi mutuamente exclusivos | Desligar BLE com >SSSBTHPWR00< antes de usar WiFi |
| Hall sempre 0 | Modo “Magnet On/Off” ativo | Desativar no BeaconX Pro, seção Sensor |
| Dispositivo mais lento | Escaneamento BLE usa recursos | Normal, considerar intervalos de escaneamento |
| Sensor funciona intermitentemente | Sinal fraco ou interferência | Verificar >QBS00.rssi<, aproximar sensor |
📱 Apps úteis
| App | Plataforma | Uso |
|---|---|---|
| Cargando... | Android/iOS | Configurar sensores MoKo (slots, intervalos, Hall) |
| Cargando... | Android | Enviar comandos ao dispositivo Rinho via BLE |
| Cargando... | Android/iOS | Escanear e depurar dispositivos BLE genéricos |
📝 Exemplo completo
Configuração típica de um dispositivo com sensor de temperatura Rinho Condition (L02S) e beacon de presença do motorista:
// 1. Verificar firmware BLE
>QVR<
>RVR RINHO IOT v1.09.16 SP EG915U LC86G 16MB NIMBLE ...;ID=...
// 2. Configurar sensor de temperatura no BS00
>SBS00E,AC233FA24B16,10,60,0,INVALID<
>RBS00E,AC233FA24B16,10,60,0,INVALID;...
// 3. Verificar leitura de temperatura
>QBS00.temp<
>23.5;ID=...
// 4. Configurar beacon do motorista no BS02
>SBS02E,DDEEFF112233,2,30,5,0<
>RBS02E,DDEEFF112233,2,30,5,0;...
// 5. Criar relatório com temperatura
>SUC04 $RCQ| #| QCQ,5,64| $;PA=temp:2:| QBS00.temp| $;PA=hum:2:| QBS00.hum<
// 6. Regra: reportar quando motorista embarca/sai
>SRL00E;TRG=BS02+;ACC={GCQ04H}<
>SRL01E;TRG=BS02-;ACC={GCQ04H}<
// 7. Regra: alerta de temperatura alta
>SUV00FQBS00.temp,0,10,350,9999<
>SRL02E;TRG=UV00+;ACC={GCQ04H}<
// 8. Testar relatório manual
>GCQ04H<
>RCQ04...;PA=temp:2:23.5;PA=hum:2:65;ID=...📖 Resumo de comandos
| Comando | Função | Referência |
|---|---|---|
>SBS00E,MAC,tipo,...< | Configurar sensor BLE | BS IoT |
>QBS00< | Status do sensor | BS IoT |
>QBS00.temp< | Ler atributo específico | BS IoT |
>SBSW00E,...< | Configurar auto-detecção | BSW IoT |
>QBSW00< | Status do wildcard | BSW IoT |
>SUV00F...< | Disparador de usuário | UV |
>SRL00E;TRG=...;ACC={...}< | Regra do motor de eventos | RL |
>SUC04 ...< | Relatório de usuário | Relatórios de usuário |
>GCQ04H< | Gerar relatório | G |
>SDB0+BLX< | Debug BLE | DB |
>SFRMM1< / >SFRMM2< | Atualizar firmware | — |
>SFRMCP0< / >SFRMCP1< | Alternar partição | — |
>SSSWIFPWR00< | Desligar WiFi (Zero IoT) | — |
>SSSBTHPWR00< | Desligar BLE (Zero IoT) | — |
🎯 Próximos passos
- 📲 Vinculação BLE (SPP) — Terminal sem fio para configuração pelo celular
- 🚀 Primeiros Passos — Configuração básica do dispositivo
- 📶 Configurar WiFi — WiFi como canal alternativo
- 🧠 Motor de Eventos — Criar regras avançadas
- 📡 Comandos BLE — Referência completa de BS, BSW e BE