- Sensor de temperatura por Infravermelho
- Sensor de humidade
- Sensor de pressão
- Acelerometro
- Giroscópio
- Magnetometros
- 2 botões para comandos
Texas CC2541 Sensor Tag |
Além do próprio SensorTag seguem algumas ferramentas básicas que utilizei:
Visualizando o funcionamento do SensorTag:
Este é um aplicativo muito útil para você ver o SensorTag funcionado e para entender as mudança que você venha a fazer no código.
Programador:
CC2540 Development Kit |
CC2540 Mini Development Kit |
Código fonte:
Com os stack vem o código fonte que podemos alterar como exemplos, além dos arquivos .Hex mais atualizados para reprogramar o SensorTag ou o Dongle. Meu teste usou o Stack 1.3.2.
Flash Programmer:
Necessário para aplicar o arquivo .Hex no SensorTag. Meu teste usou a versão 1.12.7.
IDE:
Os chips CC2540 ou CC2541 possuem um processador 8051 interno, atualmente (agosto de 2013) é a forma oficial da Texas para programar. Ele é um software pago, para o efeito de aprendizado desta postagem é necessário escolher a licença com período de expiração de 30 dias (existe uma outra opção de licença com limitação do tamanho do código em 4K que não funciona para o SensorTag, pois seu código é maior que isso). Meu teste usou a versão 8.20.1 com 30 days Evaluation edition License.
Você pode pesquisar se outras IDEs já suportam o CC2540 / CC2541, dois candidatos para o futuro são:
SDCC - Small Device C Compiler
http://sdcc.sourceforge.net/
Você pode pesquisar se outras IDEs já suportam o CC2540 / CC2541, dois candidatos para o futuro são:
SDCC - Small Device C Compiler
http://sdcc.sourceforge.net/
Passo a passo
Reprograme o Dongle
O dongle que vem no CC2540 Mini Development Kit está com um firmware de sniffer que precisa ser substituído. Instale o Bluetooth low energy software stack and tools e o SmartRF Flash Programmer.
Conecte a Evaluation Board SmartRF05(qualquer uma das duas) do CC2540 Mini Development Kit conforme abaixo:
Não esqueça da chave liga-desliga na evaluation board.
Os dois conectores USB precisam estar conectados, especificamente o que fica conectado na evaluation board (esquerda da foto) será utilizado para passar informações, o cabo conectado ao dongle (direita da foto) serve somente para alimentar o dongle.
MUITA ATENÇÃO: Na posição do cabo de debug, veja o fio vermelho na posição 1 indicada no dongle.
Abra o Flash Programmer:
Provavelmente irá aparecer esta janela informando que o firmware dela é antigo e precisa ser atualizado:
Configure conforme a imagem abaixo, para atualizar o firmware da evaluation board:
Feche o programa e abra novamente.
Configure conforme a imagem abaixo:
Em FlashImage utilize o .hex abaixo (o meu dongle usa o chip CC2540):
C:\Texas Instruments\BLE-CC254x-1.3.2\Accessories\HexFiles\CC2540_USBdongle_HostTestRelease_All.hex
Clique em Perform Actions para transmitir o firmware para o dongle
Uma vez reprogramado o dongle já pode ser utilizado, quando for conectado pela primeira vez será necessário o driver que está no diretório:
C:\Texas Instruments\BLE-CC254x-1.3.2\Accessories\Drivers
C:\Texas Instruments\BLE-CC254x-1.3.2\Accessories\Drivers
Mais informações no documento 4505.Reprogramming_CC2540_USB_dongle.pdf
Teste o Dongle e o SensorTag
Antes de reprograr o seu SensorTag, veja ele funcionando. Instale o Bluetooth low energy (BLE) Device Monitor e teste os SensorTag.
Desconecte a evaluation board o dongle o cabo de debug, e conecte somente o dongle no seu computador.
Abra o BLE Device Monitor. (instruções mais detalhadas aqui.)
Pressione o botão lateral do SensorTag:
No BLE Device Monitor click em Scan, aguarde aparecer o SensorTag, selecione ele e clique em Connect.
Uma vez conectado, e Attributes(à direita) expanda o item 93, depois o 94, no 96 em Value escreva: 01:00
Aperte os botões do SensorTag e note que o valor de 95 irá mudar para 01 e 02 (de acordo com o botão que você apertar), em EventLog (à esquerda).
Isto demonstrou que o seu Dongle está configurado adequadamente e o SensorTag está se comunicando corretamente.
Clique em Disconnect e feche o BLE Device Monitor.
Configurando a IDE
Instale o IAR Embedded Workbench for 8051 (lembre-se de escolher a licença com período de expiração de 30 dias).
Copie o diretório:
C:\Texas Instruments\BLE-CC254x-1.3.2\Projects\ble\SensorTag
Para
C:\Texas Instruments\BLE-CC254x-1.3.2\Projects\ble\MySensorTag
Somente para preservar o código original.
Abra o IAR Embedded Workbench, clique em File->Open->Workspace...
Selecione o arquivo:
C:\Texas Instruments\BLE-CC254x-1.3.2\Projects\ble\MySensorTag\CC2541DB\SensorTag.eww
Se aparecer a janela de mensagem abaixo clique em Sim.
Em Workspace clique com o botão direito em SensorTag-CC2541DK-Sensor e em seguida em Rebuild All.
Provavelmente dará o erro: Error[e16]: Segment SLEEP_CODE (size: 0x9 align: 0) is too long for segment definition. At least 0x1 more bytes needed. The problem occurred while ...
Existem um workaround que vou utilizar, mais informações aqui.
Expanda HAL->Target->Drivers e abra o arquivo hal_sleep.c procure a função:
void halSetSleepMode(void)
Substitua:
PCON = halSleepPconValue;
por:
asm("MOV 0x87,halSleepPconValue");
Salve, e execute o Rebuild All novamente somente para verificar se está tudo corrigido.
Deve ter sido gerado com sucesso um arquivo em:
C:\Texas Instruments\BLE-CC254x-1.3.2\Projects\ble\MySensorTag\CC2541DB\CC2541DK-Sensor\Exe\SensorTag.hex
Renomeie este arquivo para SensorTagOri.hex. (Vamos usar este arquivo para voltar o SensorTag para a configuração original depois de modificá-lo.
Re-programando o SensorTag
Vamos gerar alguma modificação no código somente para provar que o ciclo completo foi realizado.
Quando apertamos os botões do SensorTag é transmitido o número 01 ou 02 dependendo do botão acionado. Vamos modificar estes número para 03 e 04.
Expanda APP e abra o arquivo SensorTag.c procure a função:
static void sensorTag_HandleKeys( uint8 shift, uint8 keys
procure a linha:
SK_Keys |= SK_KEY_LEFT;
Modifique para:
SK_Keys |= 0x03;//SK_KEY_LEFT;
Agora procure a linha:
SK_Keys |= SK_KEY_RIGHT;
Modifique para:
SK_Keys |= 0x04;//SK_KEY_RIGHT;
Salve, e execute o Rebuild All
Conecte o SensorTag na Evaluation Board e ela no computador:
Atenção para a posição do pino 1 (fio vermelho do cabo de debug)
Abra o Flash Programmer:
Reprograme o SensorTag com o arquivo:
C:\Texas Instruments\BLE-CC254x-1.3.2\Projects\ble\MySensorTag\CC2541DB\CC2541DK-Sensor\Exe\SensorTag.hex
Que acabou se ser gerado.
feche o Flash Programmer, desconecte a evaluation board e o SensorTag do cabo de debug.
Conecte o Dongle no computador e abra o BLE Device Monitor, conecte o SensorTag e veja que os números 03 e 04 são enviados quando os botões do SensorTag são pressionados.
Pronto!
Agora, reprograme o SensorTag usando o SensorTagOri.hex (aquele que foi gerado antes da modificação), caso tenha pulado esta etapa, volte o código ao original e gere um novo .hex.
Dicas adicionais:
Fatal Error[e89]
A primeira vez que tentei reprogramar o SensorTag utilizei o IAR com a licença que limita o código em 4k, apresentou:
Fatal Error[e89]: Too much object code produced (more than 0x1000 bytes) for this package
Substitui a licença pela outra que é por tempo (30 dias), e o erro continuou. Aparentemente o IAR deixou algum arquivo que informava o a licença antiga no diretório do projeto.
Para resolve-lo é necessário (fechar e abrir o IAR), copiar o diretório com o código fonte original e começar novamente a partir deste diretório "limpo".
Target Selection
Sempre compile através do Rebuild All.
O botão com um triangulo verde tem a Donwload e Debug que não é aplicável no nosso caso (eu cai nessa):
Quando você clica nele aparece a mensagem abaixo solicitando o Target Selection, que também não é necessária.
Em resumo: use o Rebuild All.
SensorTag e Python
Acesse o Blog da Isabela:
Conectando dois SensorTags no mesmo Dongle
Acesse o blog do Arthur: