Projeto Gateway Wifi - BTLE - Versão 2

De MediaWiki do Campus São José
Ir para: navegação, pesquisa

Bolsista

Nome: Thiago Werner Curso: Engenharia de Telecomunicações/6ª Fase

Local e Horário de Trabalho

Local de Trabalho

Os trabalhos da bolsa serão realizados na sala de Monitoria ou no labIC1.

Horários

GradeFINAL1.png

Plano de Trabalho

ETAPA Atividades Período
1 Kit de Desenvolvimento Agosto
2 Comunicação via Radio Agosto
3 Comunicação via Softdevice Agosto/Setembro
4 Comunicação Wi-Fi Outubro

Kit de Desenvolvimento

O material é composto por duas placas, são elas: PCA10000 e a PCA10001. Ambas tem o mesmo processador, Cortex M0. A sua desenvolvedora (Nordic Semicondutores) nos fornece ao comprarmos o Kit uma Key, que serve para obtermos o material necessário para desenvolvermos projetos com o Kit. O processo de investigação da Key foi demorado, contudo utilizei o rápido suporte da Nordic para obter a Key. No mesmo dia que fiz o ticket no site da Nordic a equipe de suporte respondeu com todos os dados que eu precisava para efetuar os downloads em seu site.

Dentre os diversos materiais que tive acesso, os mais importantes foram: nAN-29, Manual Reference e o User Guide.

nAN-29

Este documento nos fornece um passo-a-passo para programar as placas do Kit utilizando o software Eclipse. No entanto, este documento foi escrito no ano de 2013, e por isso alguns comandos que ele dá como instrução talvez não existam, ou existam similares. Com isso, a procura por download de ferramentas do ano anterior em seus sites de desenvolvedor são essenciais. Apesar disso, uma dificuldade que ainda me impossibilita de ao menos utilizar o debugger do Eclipse é o fato de um erro ocorrer: "The binary file is not found", porém algumas aplicações consigo ainda compilar.

Manual Reference

No Manual Reference temos uma descrição sobre todos os componentes do microcontrolador, o que é muito interessante para adquirirmos conhecimento sobre as memórias, registradores e todo o processo da máquina de estado do Radio.

User Guide

O Evaluation User Guide nos trás um manual para instalação do nRFgo Studio e do IDE Keil. O nRFgo Studio é a ferramenta que a Nordic nos oferece para embarcar os programas nas placas do Kit. Já o Keil, é o software que a Nordic nos recomenda para fazer debugger e editar e compilar os projetos que quisermos embarcar nas placas. Lembrando que, arquivos .c editamos no Keil, já arquivos .hex frutos da compilação no Keil são utilizados pelo nRFgo Studio.

Comunicação via Radio

Utilizando o software Keil para compilação de código e a ferramenta da nRFgo Studio a implementação do exemplo "Radio Led Example" foi bem sucedida. Para este experimento utilizamos as duas placas do Kit de Desenvolvimento nRF51822 para comunicação via rádio entre elas.

Na placa PCA10001 foi implementado a função de recepção (Rx) e na PCA10000 a de transmissão (Tx). A razão pela qual foi adotada esta distribuição foi que a PCA10001 tem muito mais recursos em sua periferia (como leds, botões, e etc), já a PCA10000 apenas tem a comunicação rádio e sua entrada USB. Contudo, a transmissão via rádio para a PCA10001 deve ser feita através de um comando feito pelo usuário, e para isso foi necessário a utilização do programa Termite Terminal, que emula um terminal UART na porta USB do ambiente de trabalho. Com ele devemos configurar o "Baud Rate" para 38700 e selecionar adequadamente a porta que a PCA10000 está conectada no computador.

Para efetuar o experimento, o usuário deve escrever '1' ou '0' no terminal do Termite, o que corresponde na transmissão de um packet que aciona o "LED_1" ou "LED_0" respectivamente na PCA10001. Contudo, no código fornecido originalmente pela Nordic as linhas de configuração dos LEDs do arquivo de recepção à ser embarcado na PCA10001 está com erros, veja: Original:

      switch(packet[0])
      {
        case '0':
          nrf_gpio_pin_set(LED0);
          nrf_gpio_pin_clear(LED1);
          break;

        case '1':
          nrf_gpio_pin_set(LED1);
          nrf_gpio_pin_clear(LED0);
          break;
      }

Correto:

      switch(packet[0])
      {
        case '0':
          nrf_gpio_pin_set(LED_0);
          nrf_gpio_pin_clear(LED_1);
          break;

        case '1':
          nrf_gpio_pin_set(LED_1);
          nrf_gpio_pin_clear(LED_0);
          break;
      }

Sendo assim, os links para acesso aos arquivos do exemplo estão aqui:

Rx_PCA10001

Tx PCA10000

Comunicação via Softdevice

O que é softdevice

O softdevice foi feito para soluções de BLE (Bluetooth Low Energy). Nele contém uma pilha de protocolos, que, se bem manipulados, podem nos servir para criar programas e soluções em BLE SOC (System on The Chip). O softdevice é fornecido em sua forma pre-compilada em formato .HEX, logo depois, a aplicação pode ser carregada.

Utilização de App Nordic e PCA10001

Após alguns procedimentos, um exemplo do SDK fornecido pela Nordic foi utilizado para fazer uma comunicação completa utilizando toda a biblioteca BLE do Softdevice. No exemplo BLE_APP_HRS podemos fazer transmissão de dados tanto do celular para a PCA10001 quanto da PCA10001 para o celular. A partir deste exemplo algumas modificações podem ser feitas visando a utilização para outros benefícios.

Obs: todos os programas fornecidos pelo SDK e o próprio Softdevice só estão disponíveis para clientes da Nordic.

Comunicação mobile e PCA10001

Para a criação de um aplicativo dedicado para detecção da placa no celular foi utilizado a ferramenta de desenvolvimento fornecida pela Google Android SDK. Esta ferramenta é uma adaptação feita pela Google da IDE Eclipse. Ela foi totalmente adaptada para desenvolvimento de aplicativos para celular com sistema operacional Android.

O processo de aprendizagem da ferramenta foi muito proveitoso, pois para criação de aplicativos nesta IDE devemos ter o conhecimento de linguagem XML e Java. Um ponto crítico do processo de desenvolvimento foi de que nem todos os dispositivos conseguem detectar a emissão de beacons da placa. Foi identificado que o aplicativo fornecido pela Nordic tem adaptações feitas que permitem a comunicação com o softdevice da placa, visto que mesmo com o aplicativo desenvolvido no Android SDK detecta qualquer dispositivo menos a placa PCA10001.

Programa Bluetooth Scan

Comunicação Wi-Fi

Referências