Expert - Bluetooth - RTOS
Nesse laboratório iremos trabalhar com:
- Comunicação Bluetooth serial utilizando o módulo HC-06
- Integração de tarefas (tasks) via FreeRTOS em Raspberry Pi Pico
- Troca de dados entre tasks usando filas e notificações RTOS
- Desenvolvimento e teste de sistemas embarcados com múltiplas portas seriais
Antes de começar o lab, rode e entenda os materiais de referência abaixo:
Exemplo 1
Exemplo 2
A ideia deste laboratório é implementar um sistema interativo de pareamento do módulo HC-06, utilizando as bases dos exemplos acima para aplicar a seguinte ordem de utilização:
- Apertar botão para gerar um PIN randômico
- Um botão físico no circuito é pressionado para que o dispositivo gere um novo PIN para pareamento Bluetooth.
- Configuração do HC-06
- O microcontrolador configura automaticamente o HC-06 com o novo PIN gerado usando comandos AT.
- Exibição do PIN no display OLED
- O PIN atual será mostrado no display OLED.
- Pareamento via PC
- O usuário deve parear o computador ao HC-06 utilizando o PIN mostrado na tela do display.
Funcionalidades adicionais:
- O status de conexão Bluetooth deve ser indicado por um LED controlado por PWM:
- Enquanto aguardando conexão: LED pisca (fade in/out)
- Quando conectado: LED permanece aceso
Entrega

Você deverá integrar a aplicação desenvolvida neste laboratório ao projeto do Lab 6. ADC e PWM, criando assim um mouse wireless (com iluminação RGB) utilizando Bluetooth.
O projeto final deverá obrigatoriamente possuir:
O sistema de sincronização Bluetooth desenvolvido neste laboratório
- Geração do PIN randômico através do botão, exibindo no display OLED
- O computador deverá parear com o módulo hc-06 através do PIN gerado
Um programa em Python rodando no computador, responsável por:
- Receber os dados enviados pela Pico e converter em movimento do mouse
- Enviar dados de configuração do LED RGB, alterando os padrões para as cores Vermelho, Verde ou Azul, como por exemplo:
Botões+ / - para aumentar e diminuir o brilho de cada corSlidersem que seja possível controlar a frequência de piscada de cada cor
Dicas
Geração do PIN randômico
- Utilize funções de geração de números aleatórios como utilizado na APS - 1 - Genius
- Certifique-se de atualizar o PIN apenas quando o botão for pressionado, evitando acionamentos múltiplos acidentais (debounce).
Configuração dinâmica do HC-06
- Programe o envio dos comandos AT para configurar o PIN logo após a geração do novo valor.
- Aguarde a resposta “OK” do HC-06 antes de atualizar o display — isso confirma que o módulo aceitou a configuração.
Exibição do PIN no OLED
- Inicialize o display antes de exibir o PIN.
- Atualize o valor sempre que um novo PIN for configurado, garantindo que não haja "resíduos" de valores antigos na tela.
Pareamento via computador
- Após criar um novo PIN, faça o pareamento do computador.
- Se o PC não encontrar o módulo, tente remover emparelhamentos antigos e busque novamente.
Lógica do LED PWM para status
- Para efeito de fade, incremente/decremente gradualmente o duty cycle dentro de uma task periódica.
- Ceritique-se que o módulo está conectado, usando o pino STATE do HC-06 ou fazer com que o python envie via protocolo, uma indicação de que o módulo está conectado (xQueueRX do exemplo), para alternar entre animar o LED ou mantê-lo aceso.
Modificar o python
- Modificar a interface do python utilizado no lab Lab 6. ADC e PWM.
- Defina um protocolo simples para envio das mensagens, facilitando a interpretação dos comandos pela Pico.
- Adicione componentes (Botões / Sliders) para enviar os comandos de configuração das cores do LED RGB.
Pareado x Conectado
Pareado significa que o dispositivo Bluetooth já foi autenticado anteriormente e as credenciais (PIN/senha) foram salvas. Ou seja, o computador “conhece” o módulo HC-06 (com o NAME que foi definido) e pode se conectar a ele sem precisar informar o PIN novamente, desde que ele não tenha sido alterado.
Conectado significa que existe uma comunicação ativa naquele momento entre o dispositivo e o HC-06. Após o pareamento, a conexão ainda precisa ser estabelecida para que dados possam ser enviados e recebidos.