Tabla de contenido:

Piano Pi ultrasónico con controles de gestos: 10 pasos (con imágenes)
Piano Pi ultrasónico con controles de gestos: 10 pasos (con imágenes)

Video: Piano Pi ultrasónico con controles de gestos: 10 pasos (con imágenes)

Video: Piano Pi ultrasónico con controles de gestos: 10 pasos (con imágenes)
Video: The Grefg muestra el chat y sale un p*to💀 xD Casi baneo 😂 2024, Noviembre
Anonim
Image
Image
¡Piano Pi ultrasónico con controles de gestos!
¡Piano Pi ultrasónico con controles de gestos!

Este proyecto utiliza sensores ultrasónicos HC-SR04 económicos como entradas y genera notas MIDI que se pueden reproducir a través de un sintetizador en la Raspberry Pi para obtener un sonido de alta calidad.

El proyecto también utiliza una forma básica de control por gestos, donde el instrumento musical se puede cambiar colocando las manos sobre los dos sensores más externos durante unos segundos. Se puede usar otro gesto para apagar la Raspberry Pi una vez que haya terminado.

El video de arriba muestra el producto terminado en un gabinete simple cortado con láser. Hay un video más detallado más adelante en este instructivo que explica cómo funciona el proyecto.

Creé este proyecto junto con The Gizmo Dojo (mi espacio de creación local en Broomfield, CO) para hacer algunas exhibiciones interactivas que podamos llevar a eventos STEM / STEAM locales y Maker Faires.

Consulte también la documentación y los tutoriales más recientes en https://theotherandygrove.com/octasonic/, que ahora incluye información sobre una versión Python de este proyecto (este instructivo fue escrito para la versión Rust).

Paso 1: ingredientes

Para este instructable, necesitará los siguientes ingredientes:

  • Raspberry Pi (2 o 3) con tarjeta SD
  • 8 sensores ultrasónicos HC-SR04
  • Tablero de ruptura octasonico
  • Convertidor de nivel lógico bidireccional
  • Cables de puente hembra-hembra de 32 x 12 "para conectar los sensores ultrasónicos
  • Cables de puente hembra-hembra de 13 x 6 "para conectar Raspberry Pi, Octasonic y Logic Level Converter
  • Fuente de alimentación adecuada para Raspberry Pi
  • Altavoces para PC o similares

Recomendaría usar una Raspberry Pi 3 si es posible, ya que tiene más potencia de cálculo, lo que da como resultado un sonido más receptivo y agradable. Puede funcionar bien con una Raspberry Pi 2 con algunos ajustes, pero no intentaría usar la Raspberry Pi original para este proyecto.

Los sensores ultrasónicos HC-SR04 tienen 4 conexiones: 5V, GND, Trigger y Echo. Normalmente, Trigger y Echo están conectados a pines separados en un microcontrolador o Raspberry Pi, pero eso significa que necesitaría utilizar 16 pines para conectar 8 sensores, y esto no es práctico. Aquí es donde entra en juego la placa de ruptura Octasonic. Esta placa se conecta a todos los sensores y tiene un microcontrolador dedicado que monitorea los sensores y luego se comunica con la Raspberry Pi a través de SPI.

HC-SR04 requiere 5V y la Raspberry Pi solo tiene 3.3V, por eso también necesitamos el convertidor de nivel lógico que conectará la Raspberry Pi a la placa de conexión Octasonic.

Paso 2: conecte los sensores ultrasónicos a la placa octasonica

Conecte los sensores ultrasónicos a la placa octasonica
Conecte los sensores ultrasónicos a la placa octasonica
Conecte los sensores ultrasónicos a la placa octasonica
Conecte los sensores ultrasónicos a la placa octasonica

Utilice 4 cables de puente hembra-hembra para conectar cada sensor ultrasónico a la placa, teniendo cuidado de conectarlos de la forma correcta. La placa está diseñada para que los pines estén en el mismo orden que los pines del sensor ultrasónico. De izquierda a derecha en la placa, los pines son GND, Trigger, Echo, 5V.

Paso 3: conecte el convertidor de nivel lógico a la placa octasonica

Conecte el convertidor de nivel lógico a la placa Octasonic
Conecte el convertidor de nivel lógico a la placa Octasonic

La Raspberry Pi y la placa Octasonic se comunican a través de SPI. SPI usa 4 cables:

  • Maestro de entrada, esclavo de salida (MISO)
  • Master Out, Slave In (MOSI)
  • Reloj serial (SCK)
  • Selección de esclavo (SS)

Además, necesitamos conectar la energía (5V y GND).

El convertidor de nivel lógico tiene dos lados: un voltaje bajo (LV) y un voltaje alto (HV). La Raspberry se conectará al lado LV ya que es 3.3V. El Octasonic se conectará al lado HV ya que es de 5V.

Este paso es para conectar el Octasonic al lado HV del convertidor de nivel lógico

Vea la foto adjunta a este paso que muestra qué pines deben conectarse al convertidor de nivel lógico.

Las conexiones del Octasonic al convertidor de nivel lógico deben ser las siguientes:

  • 5V a HV
  • SCK a HV4
  • MISO a HV3
  • MOSI a HV2
  • SS a HV1
  • GND a GND

Paso 4: conecte el convertidor de nivel lógico a la Raspberry Pi

Conecte el convertidor de nivel lógico a la Raspberry Pi
Conecte el convertidor de nivel lógico a la Raspberry Pi

La Raspberry Pi y la placa Octasonic se comunican a través de SPI. SPI usa 4 cables:

  • Maestro de entrada, esclavo de salida (MISO)
  • Master Out, Slave In (MOSI)
  • Reloj serial (SCK)
  • Selección de esclavo (SS)

Además, necesitamos conectar la energía (3.3V y GND). El convertidor de nivel lógico tiene dos lados: un voltaje bajo (LV) y un voltaje alto (HV). La Raspberry se conectará al lado LV ya que es 3.3V. El Octasonic se conectará al lado HV ya que es de 5V.

Este paso es para conectar la Raspberry Pi al lado LV del convertidor de nivel lógico

Las conexiones del Raspbery Pi al convertidor de nivel lógico deben ser las siguientes:

  • 3.3V a LV
  • GPIO11 (SPI_SCLK) a LV4
  • GPIO09 (SPI_MISO) a LV3
  • GPIO10 (SPI_MOSI) a LV2
  • GPIO08 (SPI_CE0_N) SS a LV1
  • GND a GND

Utilice el diagrama adjunto a este paso para ubicar los pines correctos en la Raspberry Pi.

Paso 5: Conecte Raspberry Pi 5V a Octasonic 5V

Conecte Raspberry Pi 5V a Octasonic 5V
Conecte Raspberry Pi 5V a Octasonic 5V
Conecte Raspberry Pi 5V a Octasonic 5V
Conecte Raspberry Pi 5V a Octasonic 5V

Hay un cable final para agregar. En realidad, necesitamos alimentar la placa Octasonic con 5V, por lo que lo hacemos conectando uno de los pines de 5V de la Raspberry Pi al pin de 5V en el cabezal del AVR Octasonic. Este es el pin inferior izquierdo en el bloque de encabezado del AVR (este es el bloque de 2 x 3 en la parte superior derecha de la placa). Vea la foto adjunta que muestra dónde está el bloque AVR.

Consulte el otro diagrama adjunto para encontrar el pin de 5V en la Raspberry Pi.

Paso 6: Instale el software

Instalar Raspian

Comience con una instalación limpia de Raspbian Jessie, luego actualícela a la última versión:

sudo apt-get update

sudo apt-get upgrade

Habilitar SPI

¡Debe habilitar SPI en la Raspberry Pi para que este proyecto funcione! Utilice la utilidad de configuración Raspberry Pi para hacer esto.

También es importante reiniciar la Pi después de habilitar SPI para que surta efecto

Instalar FluidSynth

Fluidsynth es un increíble sintetizador MIDI de software gratuito. Puede instalarlo desde la línea de comandos con este comando:

sudo apt-get install fluidsynth

Instalar el lenguaje de programación Rust

El Ultrasonic Pi Piano está implementado en el lenguaje de programación Rust de Mozilla (es como C ++ pero sin los bits malos). Es lo que todos los niños geniales están usando en estos días.

Siga las instrucciones en https://rustup.rs/ para instalar Rust. Para ahorrarle tiempo, las instrucciones son ejecutar este comando. Puede aceptar las respuestas predeterminadas a cualquier pregunta durante la instalación.

NOTA: Desde la publicación de este instructivo, existen algunos problemas con la instalación de Rust en la Raspberry Pi. Mal momento: - / pero he modificado el siguiente comando para solucionar el problema. Ojalá lo solucionen pronto. Estoy trabajando para crear una imagen que la gente pueda descargar y grabar en una tarjeta SD. Si lo desea, comuníquese conmigo.

exportar RUSTUP_USE_HYPER = 1curl https://sh.rustup.rs -sSf | sh

Descargue el código fuente de Ultrasonic Pi Piano

El código fuente del código fuente de Ultrasonic Pi Piano está alojado en github. Hay dos opciones para obtener el código. Si está familiarizado con git y github, puede clonar el repositorio:

git clone [email protected]: TheGizmoDojo / UltrasonicPiPiano.git

Alternativamente, puede descargar un archivo zip con el código más reciente.

Compila el código fuente

cd UltrasonicPiPiano

construcción de carga - liberación

Prueba el código

Antes de pasar a hacer música en el siguiente paso, asegurémonos de que el software se ejecute y de que podamos leer datos válidos de los sensores.

Utilice el siguiente comando para ejecutar la aplicación. Esto leerá los datos de los sensores y los traducirá en notas MIDI que luego se imprimen en la consola. A medida que mueve la mano sobre los sensores, debería ver que se generan datos. De lo contrario, vaya a la sección de solución de problemas al final de este instructivo.

carga ejecutada - liberación

Si tiene curiosidad, el indicador "--release" le dice a Rust que compile el código de la manera más eficiente posible, a diferencia de la configuración predeterminada "--debug".

Paso 7: ¡Haz algo de música

Asegúrese de estar todavía en el directorio donde descargó el código fuente y ejecute el siguiente comando.

Este script "run.sh" asegura que el código ha sido compilado y luego ejecuta el código, canalizando la salida a fluidsynth.

./run.sh

Asegúrese de tener altavoces amplificados conectados al conector de audio de 3,5 mm en la Raspberry Pi y debería escuchar música mientras mueve las manos sobre los sensores.

Si no escuchas música y tienes un monitor HDMI conectado, es probable que la salida de audio vaya allí. Para solucionar esto, simplemente ejecute este comando y luego reinicie el Pi Piano:

sudo amixer cset numid = 3 1

Cambiar el volumen

El volumen (o "ganancia") se especifica con el parámetro "-g" de fluidsynth. Puede modificar el script run.sh y cambiar este valor. Tenga en cuenta que los pequeños cambios en este parámetro dan como resultado un gran cambio en el volumen, así que intente aumentarlo en pequeñas cantidades (como 0,1 o 0,2).

Paso 8: Control de gestos

Vea el video adjunto a este paso para una demostración completa del proyecto, incluyendo cómo funcionan los controles de gestos.

El concepto es muy simple. El software realiza un seguimiento de qué sensores están cubiertos (dentro de los 10 cm) y cuáles no. Esto se traduce en 8 números binarios (1 o 0). Esto es muy conveniente, ya que una secuencia de 8 números binarios forma un "byte" que puede representar números entre 0 y 255. Si aún no conoce los números binarios, le recomiendo que busque un tutorial. Los números binarios son una habilidad fundamental que debe aprender si desea aprender más sobre programación.

El software asigna el estado actual de los sensores a un solo byte que representa el gesto actual. Si ese número permanece igual durante varios ciclos, entonces el software actúa sobre ese gesto.

Debido a que los sensores ultrasónicos no son muy confiables y puede haber interferencia entre los sensores, deberá tener algo de paciencia al usar los gestos. Intente variar la distancia a la que sostiene las manos de los sensores, así como el ángulo en el que sostiene las manos. También intente sostener algo plano y sólido sobre los sensores para reflejar mejor el sonido.

Paso 9: hacer un recinto

Si desea hacer de esta una exhibición permanente y poder mostrársela a la gente, probablemente querrá hacer algún tipo de recinto. Esto podría estar hecho de madera, cartón o muchos otros materiales. Aquí hay un video que muestra el cerramiento en el que estamos trabajando para este proyecto. Está hecho de madera, con agujeros perforados para mantener los sensores ultrasónicos en su lugar.

Paso 10: Solución de problemas y próximos pasos

Solución de problemas

Si el proyecto no funciona, generalmente se debe a un error de cableado. Tómese su tiempo para verificar todas las conexiones.

Otro problema común es no habilitar SPI y reiniciar el pi.

Visite https://theotherandygrove.com/octasonic/ para obtener toda la documentación que incluye sugerencias para la resolución de problemas, con artículos específicos de Rust y Python, y también información sobre cómo obtener soporte.

Próximos pasos

Una vez que tengas el proyecto funcionando, te recomiendo experimentar con el código y probar diferentes instrumentos musicales. Los códigos de instrumentos MIDI están entre 1 y 127 y se documentan aquí.

¿Quieres un solo instrumento musical con cada sensor tocando una octava diferente? ¿Quizás le gustaría que cada sensor fuera un instrumento separado en su lugar? ¡Las posibilidades son casi ilimitadas!

Espero que hayas disfrutado de este instructivo. Por favor, dale me gusta si lo hiciste, y asegúrate de suscribirte a mí aquí y a mi canal de YouTube para ver proyectos futuros.

Recomendado: