Desenvolva aplicações BLE na Curiosity

BLE Curiosity destaque

Apresentamos anteriormente o módulo RN4020 da Microchip, uma solução integrada de baixo consumo para soluções BLE. Neste artigo vamos conhecer a placa BLE2 click da MikroElektronika, e configurar o módulo RN4020 para aplicações BLE na placa Curiosity da Microchip.

Módulo BLE2 click

O placa BLE2 click permite a utilização do módulo RN4020 em diversas plataformas que possuem o barramento MikroBUS. A figura a seguir exibe a BLE2 click:

Figura 1 – BLE2 click

A BLE2 click disponibiliza os principais pinos do RN4020 no padrão MikroBUS, possibilitando a interface do módulo com diversos microcontroladores. A figura a seguir exibe o esquemático da placa:

Figura 2 – Esquemático da BLE2 Click

A Curiosity possui conectores para o barramento MikroBus, assim é só encaixar a BLE2 Click conforme figura a seguir:

Figura 3 – BLE2 click na Curiosity Board

Obs: A Curiosity possui pads para o RN4020, porém alguns pinos de controle não estão ligados diretamente ao microcontrolador e nem possui jumpers de seleção. Para o uso do módulo RN4020, soldado diretamente na placa, há a necessidade fazer ligações elétricas através de fios externos. Dessa forma, para testar o RN4020 na Curiosity é mais interessante usar placas como a BLE2 click ou desenvolver sua própria placa de expansão. A figura a seguir exibe as ligações para uso do RN4020 soldado na placa Curiosity:

Figura 4 – Usando o RN4020 na Curiosity

Criando um projeto para interface com o RN4020 no MPLAB X

Os passos a seguir exibirão como criar um projeto para interface com o RN4020. Você precisará dos seguintes softwares: 

Para mais detalhes de utilização dessas ferramentas, acesse os artigos a seguir:

Com os programas instalados, abra o MPLAB X IDE, vamos criar um novo projeto. Para isso, acesse File-> New Project. Será aberta a seguinte janela:

Figura 5 – Escolhendo o tipo de projeto

Escolher a categoria Microchip Embedded e Standalone Project. Clicando em Next, será exibida a janela a seguir. Selecione na lista o PIC16F1619, microcontrolador presente na placa Curiosity:

Figura 6 – Selecionando o microcontrolador

Após a seleção do microcontrolador, clicar em NEXT. Na tela de seleção de Header não é necessário nenhuma alteração, apenas clicar em NEXT:

Figura 7 – Seleção do Header

Agora vamos selecionar as ferramentas. Certifique que a placa Curiosity está plugada no computador, e a selecione na lista:

Figura 8 – Seleção das ferramentas

Após a seleção da ferramenta e clicando em NEXT, será aberta a janela para escolha do compilador. Para esse laboratório iremos utilizar o XC8 V1.41:

Figura 9 – Seleção do Compilador

Por último, vamos nomear o projeto, escolher uma pasta para salvá-lo e finalizar o assistente.

Figura 10 – Nomeando o projeto e selecionando a pasta

Utilizando o MCC para configurações do Microcontrolador

Para auxiliar na configuração do microcontrolador e seus periféricos, vamos utilizar o MPLAB Code Configurator. Para abri-lo, acesse Tool->Embedded->MPLAB Code Configurator:

Figura 11 – Iniciando o MCC

Após sua abertura, o primeiro passo é configurar o sistema. Para isso acesse o System Module e faça as seguintes configurações:

Figura 12 – Configuração do sistema

Como a comunicação com o RN4020 é feita através da UART, precisamos configurar o periférico de comunicação EUSART. Para isso, é só dar duplo clique no EUSART Assynchronous(NRZ), presente na lista de Device Resources:

Figura 13 – Acessando o periférico EUSART

O RN4020 possui as seguintes características para comunicação serial:


Assim, vamos configurar a EUSART da seguinte forma:

Figura 14 – Configurando a EUSART

Aproveitando, vamos configurar o TMR2 que servirá de base de tempo para envio das mensagens em nossa aplicação. Em Timer, selecione o TMR2:

Figura 15 – Selecionando o TMR2

Após a seleção do TMR2, fazer a seguinte configuração para o módulo do TMR2:

Figura 16 – Configuração do TMR2

Por último, vamos configurar os GPIOs:

Figura 17 – Acessado o GPIO

Será aberta a seguinte janela:

Figura 18 – Janela de configuração do GPIO

O Conector MikroBUS na Curiosity está ligado da seguinte forma ao PIC16F1619:

Figura 19 – Esquema de ligação do conector MikroBUS

Através do esquemático da BLE2 click, apresentado na Figura 2, chegamos às seguintes ligações da BLE2 click ao PIC16F1619:

PIC16F16198

BLE2 Click

RA4

SWAKE

RB5

RX

RB7

TX

RC2

CONN

RC5

CMD/MLDP

Dessa forma, iremos configurar os pinos da seguinte forma:

Figura 20 – Seleção dos pinos
Figura 21 – Configuração dos pinos

Note que os pinos são atualizados no Package:

Figura 22 – Exibição dos pinos usados

As configurações dos periféricos estão prontas. Agora é só clicar no botão Generate Code. O MCC irá gerar os arquivos automaticamente:

O MCC perguntará se deseja criar o arquivo main.c. Clique em Yes.

Note que foram gerados diversos arquivos e inclusive o arquivo main.c, onde se encontra a função main.

Com a estrutura do projeto pronta, vamos fazer uma aplicação para configuração do RN4020 e ler as informações do módulo através de aplicativo no celular. Porém, antes do desenvolvimento da aplicação, vamos entender como configurar o  RN4020.

O RN4020 pode funcionar no modo comando (CMD) ou modo de dados (MLDP). Vamos trabalhar com o envio de comandos para o módulo. Sendo assim, o pino CM/MLDP do RN4020 deve ser colocado em nível 1. Além disso é necessário habilitar o módulo colocando o pino WAKE_SW em nível 1. A tabela a seguir explica sobre a configuração desses pinos de controle:


O envio de comandos é feito através de caracteres ASCII. A Microchip disponibiliza um documento para Referência de comandos.

Com o módulo configurado para comando e ativo, é necessário dar um reset através do comando SF,2. Esse comando executa um reset de fábrica, trazendo as configurações iniciais do módulo. 

Após o reset, vamos configurar o módulo. Primeiro vamos configurar qual serviço será habilitado no módulo usando o comando SS. A tabela a seguir exibe os serviços disponíveis:

 

Para esse exemplo, vamos configurar apenas o Device Information: 0x80000000.

Em seguida deve-se configurar as características do módulo através do comando SR. Para a nossa aplicação vamos apenas configurar o auto advertise: 0x2000000:

Agora vamos nomear o dispositivo através do comando S-,<string>. Esse comando atribui um nome amigável e coloca ao final do nome os 2 últimos bytes do MAC.

Para efetivar as alterações é necessário um reboot usando o comando R,1.

Pronto agora é só aguardar a conexão.

A seguir, o código da aplicação. As linhas estão comentadas conforme as explicações acima sobre a configuração do módulo.

Você pode abrir o projeto na IDE on-line  MPLAB Xpress: https://mplabxpress.microchip.com/mplabcloud/Example/Details/285#

Compile o código e grave na placa.

Vamos utilizar o aplicativo Smart Discovery no celular para interface com o módulo. Esse aplicativo fornecido pela Microchip possui versão para Android e IOS.

Abra o aplicativo Smart Discovery no celular. Procure pelo nome configurado e conecte ao dispositivo:

Figura 24 – Smart Discovery encontrando o módulo

Após a conexão será apresentado o serviço habilitado. No caso configuramos o device information Service:

Figura 25 – Lendo as informações do dispositivo

Pronto, fizemos nossa primeira aplicação para configuração do RN4020. Nos próximos artigos iremos explorar alguns serviços presentes no módulo.

Para aprender mais sobre BLE eu recomendo os seguintes artigos:

Caso tenha alguma dúvida, deixe seu comentário.