Chegou hoje o SensorTag da Texas Instruments.
É um dispositivo BLE (Bluetooth 4.0 Low Energy) com vários sensores (temperatura, humidade, aceleração/orientação e pressão atmosférica, bem como 2 botões de pressão).
Com o ev3dev foi facílimo ler a temperatura ambiente, bastou consultar dois links:
Partindo de um dongle BT4.0 funcional em hci0 (ver o meu artigo anterior, LEGO B3AC0N)
Carregar no botão de discovery do SensorTag e fazer um scan BLE:
root@ev3dev:~# hcitool -i hci0 lescan BC:6A:29:AB:83:4D SensorTag BC:6A:29:AB:83:4D (unknown) BC:6A:29:AB:83:4D SensorTag BC:6A:29:AB:83:4D (unknown) BC:6A:29:AB:83:4D SensorTag ... ^C
root@ev3dev:~# gatttool -b BC:6A:29:AB:83:4D -I [BC:6A:29:AB:83:4D][LE]> connect Attempting to connect to BC:6A:29:AB:83:4D Connection successful [BC:6A:29:AB:83:4D][LE]> char-read-hnd 0x25 Characteristic value/descriptor: 00 00 00 00 [BC:6A:29:AB:83:4D][LE]> char-write-cmd 0x29 01 [BC:6A:29:AB:83:4D][LE]> char-read-hnd 0x25 Characteristic value/descriptor: ae fe 74 0c [BC:6A:29:AB:83:4D][LE]>
Os quatro bytes do valor medido (ae fe 74 0c) correspondem a duas temperaturas: a do objecto em frente e a ambiente, no formato
ObjLSB ObjMSB AmbLSB AmbMSB
Assim:
Temp Amb = 0c74 = 3188
O valor real é obtido dividindo por 120:
3188/128 = 24.90625 = 25ºC
(Valor confirmado pela aplicação Android BLE SensorTag da TI)
Nota: ocasionalmente a conexão BLE falha. Nessas situações pode-se reiniciar o dongle com os comandos:
hciconfig hci0 down
hciconfig hci0 up
(em casos extremos será necessário remover fisicamente o dongle e voltar a inseri-lo ou na sua impossibilidade o velho reboot resolve tudo)