STM32F0Discovery + LCD + Bluetooth

STM32F0Discovery + LCD + Bluetooth
Este post faz parte da série STM32F0DISCOVERY. Leia também os outros posts da série:

Objetivo

O objetivo deste artigo é realizar uma comunicação wireless entre um setup controlado por uma STM32F0Discovery e um PC, o primeiro composto por um módulo Bluetooth HC-05 e o último por um HC-06.

Pré-requisitos

Para acompanhar este projeto, serão necessários:

  • Conhecer o STM32CubeMX e o uVision 5;
  • Entendimento de estrutura de dados e ponteiro de função em linguagem C.

Materiais

Materiais necessários:

Configurações de hardware

Como premissa, aproveitaremos o projeto do STM32CubeMX do artigo anterior para esta aplicação, assim abra o projeto citado e realize as seguintes configurações:

  • No periférico USART2, modifique o estado de Mode para Asynchronous. Feito isto, verá que os pinos PA2 (USART2_TX) e PA3 (USAT2_RX) ficarão em “verde escuro” (visualizando a figura do microcontrolador);
  • Assim, gere os arquivos necessários para o uVision 5. 

Conexões dos hardwares

Antes de mais nada, o PC nesta aplicação funcionará como um slave device, ou seja, receberá mensagens (strings) da Discovery, assim o hardware para o device será:

USB HC06
Figura 1

O esquema de conexão da Discovery é visto a seguir:

STM32F0Discovery + LCD + Bluetooth
Figura 2

Código

Com o mesmo projeto (.uvprojx) do uVision 5 do artigo anterior, abra e realize a escrita do código a seguir:

Como podemos ver, foi criada uma estrutura de dados com as variáveis relacionadas ao módulo Bluetooth, bem como um vetor de ponteiro que conterá os endereços dos comandos AT a serem enviados e também um vetor de ponteiro de função, o qual conterá os endereços das funções que farão a inicialização do dito hardware. Além disso, esta estrutura foi instanciada com BtData.

Na função vInitBlueTooth(BT_TypeDef* Bt) é feita a inicialização da estrutra (carrega as variáveis, vetores de ponteiro e função com os respectivos endereços) e também do módulo por meio de uma máquina de estados finitos (FSM). Dentro desta máquina, é enviado cada comando AT (vide os vetores CmdAt1 até CmdAt8), levando em consideração que para cada comando enviado deve-se receber um OK, confirmado que a configuração foi realizada com sucesso. Além disso, foi implementado um Timeout em que: se houver algum erro no envio de algum comando, o algoritmo envia novamente o comando em questão, porém se houver um segundo erro, haverá o timeout (indicando no display a falha). 

A variável BtData.State funcionará como indexador do vetor de ponteiro de função, como também o indicador do estado da máquina para ajudar no processo de depuração.

A interação do módulo com a Discovery é feita serialmente utilizando as funções: HAL_UART_Receive() HAL_UART_Transmit(), ambas possuem timeout de 10ms.

Finalizando todo o setup com a Discovery, escrita do código, compilada a aplicação sem erros e gravado o microcontrolador do kit, falta agora realizar a configuração do device (conexão realizada conforme esquema e conversor UART/USB conectado ao PC). A configuração deste pode ser realizada conforme o artigo do Wenderson Oliveira: Comunicação entre módulos Bluetooth HC-05 e HC-06, claro, considerando o HC-06, os mesmos parâmetros e, se preferir, o mesmo terminal que ele utilizou, ou seja, o RealTerm.

Realizada a configuração do device, o LED deste ficará piscando, indicando falta emparelhamento com outro dispositivo ou o mestre, assim como o LED do HC-05. Além disso, no display será vista a mensagem: “Bluetooh Fail! Reset the board!”. Não se preocupe, pois para iniciar corretamente e realizar o emparelhamento correto, deve-se segurar a tact switch deste módulo e pressionar o Reset da Discovery e depois soltando a tact switch. Logo, o emparelhamento será indicado pelo piscar dos dois LEDs (1Hz) do kit (vide main), a mensagem: “STM32F0DISCO + Bluetooth – Msg: EMBARCADOS!”, o LED do device aceso e o do HC-05 piscando a 2Hz com intervalos longos.

No terminal do PC, pode ser vista a seguinte imagem: 

STM32F0Discovery + LCD + Bluetooth
Figura 3

Funcionamento

O funcionamento da aplicação pode ser visto no vídeo a seguir:

Outros artigos da série

<< STM32F0DISCOVERY + LCD
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Comentários:
Notificações
Notificar
guest
0 Comentários
Inline Feedbacks
View all comments
Talvez você goste:

Séries



Outros da Série

Menu