Sensor de palmas usando STM32 MCU

Os sistemas de segurança funcionam medindo diferentes parâmetros físicos. Um desses parâmetros é o som. Todo objeto em movimento produz sons e vibrações. Esses sons e vibrações podem ser amostrados e o objeto pode ser identificado. A amostragem de ondas sonoras e o treinamento do sistema para distinguir objetos requerem muito tempo.

Para este tutorial, vamos pegar um sensor de som simples e fazer a interface com um microcontrolador STM32. O sensor de som reconhecerá um som de palmas e acenderá o LED.

O sensor que estamos usando é o KY-038 mais popular. No KY-038, o sensor de som é colocado em um circuito com outros componentes elétricos. Nomeadamente

  • Amplificador diferencial
  • Resistor variável (potenciômetro)

Por que amplificador diferencial?

A tensão/sinal de saída do sensor de som é muito inferior às tensões operacionais padrão do microcontrolador (3,3 ou 5 volts). Para ler a saída do sensor de som, ela deve ser aumentada para 3,3 ou 5 volts, dependendo da tensão de operação do microcontrolador.

Muitas variantes do KY-038 estão disponíveis no mercado e vários tipos de amplificadores diferenciais estão presentes nelas. O amplificador diferencial mais popular integrado é o LM-393. Lm-393 é na verdade um comparador, mas em nossa placa de sensor a tensão de saída aumenta. Além disso, o módulo do sensor pode emitir um sinal digital e analógico.

Resistor variável

Um resistor variável define o limite para reconhecimento de som. A saída do resistor variável é entrada no amplificador diferencial. A outra entrada do amplificador diferencial é a saída do sensor de som.

Então, como isso funciona?

Uma tensão fixa (limiar) é alimentada a uma entrada do comparador por um resistor variável. Em qualquer perturbação, o sensor de som emite uma tensão. O comparador compara o limite de tensão versus perturbação. Se a perturbação for maior que o limite, amplifique e emita 1. Se for menor que nenhuma saída.

Girando o botão do resistor variável, podemos ajustar o nível de detecção de som.

Circuito do projeto:

A placa de desenvolvimento de descoberta Stm32f103 é usada para testar o sensor de palmas. Um led na saída acenderá por algum tempo se for pressionado próximo ao sensor.

Dois pinos GPIO do microcontrolador STM32 são necessários para esta finalidade. Um como entrada para detectar o sinal de palmas do módulo sensor e outro como saída para ligar o led. O diagrama do circuito do projeto está abaixo.

Usei PC8 como pino de entrada e PC9 como pino de saída. O LED é puxado para alto em série com um resistor de 550 ohms. Tanto o módulo de led quanto o sensor podem ser alimentados por meio dos pinos de saída de energia de descoberta stm32. O regulador integrado do stm32 pode gerenciar a energia de todos os três componentes.

Código do projeto

O Código do projeto é simples e direto. Primeiro, habilite o relógio para a porta C do stm32. Devemos habilitar o relógio porque estamos usando dois pinos da porta C em nossa aplicação. Se esta etapa for perdida em algum aplicativo, nada será visto na saída. Portanto, certifique-se de habilitar os relógios para as portas em uso.

A seguir, os pinos GPIO PC8 e PC9 são declarados. Precisamos definir todos os parâmetros para cada pino. O pino 8 é declarado como entrada, a velocidade de amostragem é definida para 50 MHz e, por fim, nenhum resistor pull-up ou down está habilitado.

A única diferença do PC9 em relação ao PC8 é que ele é declarado como um pino de saída. Os resistores push up e down podem ser habilitados dependendo dos requisitos do circuito. Outra opção é usar o led integrado de descoberta STM32. Uma única instrução no código acima rotulada como 3 pode ser descomentada para usar o led integrado. Por trás da função de declaração do led integrado, o mesmo código escrito na caixa 2 é executado para declarar o led.

Em seguida vem o loop while. O loop While1 é executado continuamente, a menos que a descoberta esteja desligada. Primeiro no loop while, se a instrução estiver verificando o status da saída do sensor. Se for encontrado alto, o controle entra no corpo da instrução if.

Suponha que o corpo da instrução seja composto por apenas duas instruções. A primeira instrução define o PC9 ou led como alto. A segunda instrução é um loop for, que itera 1000 vezes. Essas 1.000 iterações produzem um atraso em milissegundos. Este atraso é muito significativo. Ele permite que a pessoa veja o led ligando e depois apagando visualmente. A instrução Led off está fora da instrução if.

Durante os testes, constatou-se que é impossível ver o led ligando e desligando sem atraso no loop. A transição do LED é tão rápida por causa da frequência de operação do stm32.

Se você estiver usando o led integrado da descoberta stm32, deverá descomentar a instrução STM_EVAL_LEDToggle . A alternância de LED também pode ser alcançada se, em vez de GPIO_SetBits diretamente, GPIOC->BSSR e BSR forem usados. BSR e BSSR são registradores de saída associados às portas stm32. Todas as instruções estão presentes no código acima.

Baixe o código completo do Github

O conceito acima pode ser aplicado em diversas aplicações, como sistemas de segurança, abertura e fechamento de portas, roubo de partida de veículos, etc. A saída analógica do sensor fornece mudança precisa de tensão em caso de perturbação. O recurso analógico pode ser usado para diferenciação precisa do som. Trabalhar com recursos analógicos requer conhecimento de ADC, que aprenderemos nos próximos tutoriais.

Vamos fazer o projeto DIY: Onde comprar peças?

Descoberta StM32: da Mouser

Sensor de som: Da Mouser

LED: Da Mouser

Resistor: Da Mouser

Conteúdo Relacionado

Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.