Tabla de contenido:
- Paso 1: ingredientes
- Paso 2: conecte los sensores ultrasónicos a la placa octasonica
- Paso 3: conecte el convertidor de nivel lógico a la placa octasonica
- Paso 4: conecte el convertidor de nivel lógico a la Raspberry Pi
- Paso 5: Conecte Raspberry Pi 5V a Octasonic 5V
- Paso 6: Instale el software
- Paso 7: ¡Haz algo de música
- Paso 8: Control de gestos
- Paso 9: hacer un recinto
- Paso 10: Solución de problemas y próximos pasos
Video: Piano Pi ultrasónico con controles de gestos: 10 pasos (con imágenes)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:43
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
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
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
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
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:
Alarma Arduino con sensor ultrasónico: 5 pasos (con imágenes)
Alarma Arduino con sensor ultrasónico: este instructivo trata sobre cómo hacer un dispositivo de alarma fácil y barato por usted mismo.Todo lo que necesita es conocimiento básico en electrónica y programación arduino.Si tiene alguna pregunta o problema, puede contactarme en mi correo: iwx .production @ gmail.comAquí
Dispositivo ultrasónico para mejorar la navegación de personas con discapacidad visual: 4 pasos (con imágenes)
Dispositivo ultrasónico para mejorar la navegación de las personas con discapacidad visual: Nuestro corazón está con los desfavorecidos mientras usamos nuestro talento para mejorar la tecnología y las soluciones de investigación para mejorar las vidas de los que sufren. Este proyecto fue creado exclusivamente para ese propósito. Este guante electrónico utiliza detección ultrasónica para mejorar
Audio síncrono para toda la casa Raspberry Pi con controles remotos de aplicaciones de teléfono: 10 pasos (con imágenes)
Raspberry Pi Whole Home Synchronous Audio con controles remotos de aplicaciones de teléfono: el objetivo es sincronizar el audio y / o fuentes individuales en cualquier habitación, fácilmente controladas con un teléfono o tableta a través de iTunes Remote (Apple) o Retune (Android). También quiero que las zonas de audio se enciendan / apaguen automáticamente, así que encendí la Raspberry Pi y
Gesture Hawk: Robot controlado por gestos con la mano utilizando una interfaz basada en procesamiento de imágenes: 13 pasos (con imágenes)
Gesture Hawk: robot controlado por gestos con la mano que utiliza una interfaz basada en procesamiento de imágenes: Gesture Hawk se presentó en TechEvince 4.0 como una sencilla interfaz hombre-máquina basada en el procesamiento de imágenes. Su utilidad radica en el hecho de que no se requieren sensores adicionales o wearables excepto un guante para controlar el automóvil robótico que funciona en diferentes
Ratón Bluetooth con sensor ultrasónico y fotocélula: 10 pasos (con imágenes)
Ratón Bluetooth con sensor ultrasónico y fotocélula: Entonces, una pequeña introducción sobre por qué hice este proyecto. Actualmente estoy buscando adoptar un gatito en mi nueva casa. Y después de pasar por algunas cosas jugables para gatos, pensé: ¿por qué no hacer un juguete yo mismo? Entonces, hice un mouse Bluetooth. Puedes estafar