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:
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:
A Curiosity possui conectores para o barramento MikroBus, assim é só encaixar a BLE2 Click conforme figura a seguir:
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:
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:
- MPLAB X IDE V3.51 ou superior
- MPLAB XC8 V1.41 ou superior
- MPLAB® Code Configurator (MCC)
Para mais detalhes de utilização dessas ferramentas, acesse os artigos a seguir:
- Curiosity – Primeiros passos com MPLAB X e compilador XC8
- Curiosity – Iniciando com o MPLAB Code Configurator
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:
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:
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:
Agora vamos selecionar as ferramentas. Certifique que a placa Curiosity está plugada no computador, e a selecione na lista:
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:
Por último, vamos nomear o projeto, escolher uma pasta para salvá-lo e finalizar o assistente.
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:
Após sua abertura, o primeiro passo é configurar o sistema. Para isso acesse o System Module e faça as seguintes configurações:
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:
O RN4020 possui as seguintes características para comunicação serial:
Assim, vamos configurar a EUSART da seguinte forma:
Aproveitando, vamos configurar o TMR2 que servirá de base de tempo para envio das mensagens em nossa aplicação. Em Timer, selecione o TMR2:
Após a seleção do TMR2, fazer a seguinte configuração para o módulo do TMR2:
Por último, vamos configurar os GPIOs:
Será aberta a seguinte janela:
O Conector MikroBUS na Curiosity está ligado da seguinte forma ao PIC16F1619:
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:
Note que os pinos são atualizados no Package:
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.
#include "mcc_generated_files/mcc.h"
#define T400MS 100
void sendCMD( const char * cmd);
/*
Main application
*/
void main(void)
{
uint8_t time; // auxiliary time variable
// initialize the device
SYSTEM_Initialize();
// initialize RN4020
CMD_SetHigh(); //command mode
WAKE_SW_SetHigh(); // enter command mode
sendCMD( "SF,2"); // factory reset
sendCMD( "SS,80000000"); // service - Device Information
sendCMD( "SR,20000000"); // set features - auto advertise
sendCMD( "S-,CuriosityBLE"); //change name
sendCMD( "R,1"); // reboot with new settings
__delay_ms( 500); // wait for CMD prompt
while (1)
{
if(CONN_GetValue()){ //if connected
if ( TMR2_HasOverflowOccured()) {
time++;
if(time>=T400MS){ //400 ms
time = 0; //reset time
LED_D6_Toggle();
}
}
}
else{
LED_D6_SetLow();
}
}
}
void sendCMD( const char * cmd)
{
puts(cmd);
}
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:
Após a conexão será apresentado o serviço habilitado. No caso configuramos o device information Service:
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:
- Introdução ao Bluetooth Smart (BLE)
- Visão Técnica do Bluetooth Smart
- Bluetooth Low Energy – BLE
- Aplicações e Perfis do Bluetooth Low Energy (BLE)
Caso tenha alguma dúvida, deixe seu comentário.
























