Sensor de palmas usando STM32 MCU

Sensor de palma usando MCU STM32

Los sistemas de seguridad funcionan midiendo diferentes parámetros físicos. Uno de estos parámetros es el sonido. Todo objeto en movimiento produce sonidos y vibraciones. Estos sonidos y vibraciones se pueden muestrear y se puede identificar el objeto. Tomar muestras de ondas sonoras y entrenar el sistema para distinguir objetos requiere mucho tiempo.

Para este tutorial, tomaremos un sensor de sonido simple y lo conectaremos con un microcontrolador STM32. El sensor de sonido reconocerá un aplauso y encenderá el LED.

El sensor que estamos utilizando es el KY-038 más popular. En el KY-038, el sensor de sonido se coloca en un circuito con otros componentes eléctricos. A saber

  • Amplificador diferencial
  • Resistencia variable (potenciómetro)

¿Por qué amplificador diferencial?

El voltaje/señal de salida del sensor de sonido es mucho más bajo que los voltajes de funcionamiento estándar del microcontrolador (3,3 o 5 voltios). Para leer la salida del sensor de sonido, se debe aumentar a 3,3 o 5 voltios, dependiendo del voltaje de funcionamiento del microcontrolador.

Hay muchas variantes de KY-038 disponibles en el mercado y en ellas están presentes varios tipos de amplificadores diferenciales. El amplificador diferencial integrado más popular es el LM-393. El Lm-393 es en realidad un comparador, pero en nuestra placa de sensor el voltaje de salida aumenta. Además, el módulo sensor puede emitir una señal digital y analógica.

Resistencia variable

Una resistencia variable establece el umbral para el reconocimiento de sonido. La salida de la resistencia variable se introduce en el amplificador diferencial. La otra entrada del amplificador diferencial es la salida del sensor de sonido.

Entonces, ¿cómo funciona esto?

Una resistencia variable alimenta un voltaje fijo (umbral) a la entrada de un comparador. Ante cualquier perturbación, el sensor de sonido emite una tensión. El comparador compara el voltaje umbral con la perturbación. Si la perturbación es mayor que el umbral, amplifica y genera salida 1. Si es menor, no hay salida.

Girando el mando de resistencia variable podemos ajustar el nivel de detección de sonido.

Circuito del proyecto:

La placa de desarrollo de descubrimiento Stm32f103 se utiliza para probar el sensor de aplausos. Un LED en la salida se iluminará durante un momento si se presiona cerca del sensor.

Para ello se necesitan dos pines GPIO del microcontrolador STM32. Uno como entrada para detectar la señal de aplauso del módulo sensor y el otro como salida para encender el LED. El diagrama de circuito del proyecto se encuentra a continuación.

Utilicé PC8 como pin de entrada y PC9 como pin de salida. El LED se coloca en serie con una resistencia de 550 ohmios. Tanto el módulo LED como el sensor se pueden alimentar a través de los pines de salida de alimentación del descubrimiento STM32. El regulador integrado del STM32 puede gestionar la potencia de los tres componentes.

Código de proyecto

El código del proyecto es simple y directo. Primero, habilite el reloj para el puerto C del stm32. Debemos habilitar el reloj porque estamos usando dos pines del puerto C en nuestra aplicación. Si se omite este paso en alguna aplicación, no se verá nada en el resultado. Así que asegúrese de habilitar los relojes para los puertos en uso.

A continuación, se declaran los pines GPIO PC8 y PC9. Necesitamos definir todos los parámetros para cada pin. El pin 8 se declara como entrada, la velocidad de muestreo se establece en 50 MHz y, finalmente, no se habilitan resistencias pull-up o down.

La única diferencia entre PC9 y PC8 es que se declara como pin de salida. Las resistencias de subida y bajada se pueden habilitar según los requisitos del circuito. Otra opción es utilizar el LED de descubrimiento STM32 integrado. Se puede descomentar una sola instrucción en el código anterior etiquetada con 3 para usar el LED integrado. Detrás de la función de declaración de LED incorporada, se ejecuta el mismo código escrito en el cuadro 2 para declarar el LED.

Luego viene el bucle while. El bucle While1 se ejecuta continuamente a menos que se desactive el descubrimiento. Primero en el bucle while si la instrucción verifica el estado de salida del sensor. Si se encuentra alto, el control ingresa al cuerpo de la declaración if.

Supongamos que el cuerpo de la declaración consta de solo dos declaraciones. La primera instrucción establece PC9 o LED en alto. La segunda declaración es un bucle for, que se repite 1000 veces. Estas 1.000 iteraciones producen un retraso de milisegundos. Este retraso es muy significativo. Permite a la persona ver el LED encendiéndose y luego apagándose visualmente. La declaración Led off está fuera de la declaración if.

Durante las pruebas, se descubrió que es imposible ver el LED encendiéndose y apagándose sin demora en el bucle. La transición de LED es muy rápida debido a la frecuencia de funcionamiento del stm32.

Si está utilizando el LED de descubrimiento stm32 incorporado, debe descomentar la instrucción STM_EVAL_LEDToggle. La conmutación de LED también se puede lograr si en lugar de GPIO_SetBits se utilizan directamente GPIOC->BSSR y BSR. BSR y BSSR son registros de salida asociados con puertos stm32. Todas las instrucciones están presentes en el código anterior.

Descargar el código completo desde Github

El concepto anterior se puede aplicar a diversas aplicaciones, como sistemas de seguridad, apertura y cierre de puertas, robo en arranque de vehículos, etc. La salida analógica del sensor proporciona un cambio de voltaje preciso en caso de una perturbación. La función analógica se puede utilizar para una diferenciación precisa del sonido. Trabajar con recursos analógicos requiere conocimientos de ADC, que aprenderemos en los próximos tutoriales.

Hagamos el proyecto de bricolaje: ¿Dónde comprar piezas?

Descubrimiento StM32: de Mouser

Sensor de sonido: De Mouser

LED: De Mouser

Resistencia: De Mouser

Volver al blog

Deja un comentario

Los comentarios deben ser aprobados antes de su publicación.