Taula de continguts:

Piano Pi ultrasònic amb controls de gest !: 10 passos (amb imatges)
Piano Pi ultrasònic amb controls de gest !: 10 passos (amb imatges)

Vídeo: Piano Pi ultrasònic amb controls de gest !: 10 passos (amb imatges)

Vídeo: Piano Pi ultrasònic amb controls de gest !: 10 passos (amb imatges)
Vídeo: 8 инструментов в Excel, которыми каждый должен уметь пользоваться 2024, De novembre
Anonim
Image
Image
Piano Pi ultrasònic amb controls de gest!
Piano Pi ultrasònic amb controls de gest!

Aquest projecte utilitza sensors d’ultrasons HC-SR04 com a entrades i genera notes MIDI que es poden reproduir a través d’un sintetitzador al Raspberry Pi per obtenir un so d’alta qualitat.

El projecte també utilitza una forma bàsica de control de gestos, on es pot canviar l'instrument musical mantenint les mans sobre els dos sensors més externs durant uns segons. Es pot utilitzar un altre gest per apagar el Raspberry Pi un cop hàgiu acabat.

El vídeo anterior mostra el producte acabat en un recinte senzill tallat amb làser. Més endavant, en aquest instructiu, hi ha un vídeo més profund que explica com funciona el projecte.

Vaig crear aquest projecte conjuntament amb The Gizmo Dojo (el meu espai de creació local a Broomfield, CO) per fer algunes exposicions interactives que podem portar a esdeveniments locals STEM / STEAM i Maker Fires.

Consulteu també la documentació i els tutorials més recents a https://theotherandygrove.com/octasonic/, que ara inclou informació sobre la versió Python d’aquest projecte (aquest instructiu s’ha escrit per a la versió Rust).

Pas 1: Ingredients

Per a aquesta instrucció, necessitareu els ingredients següents:

  • Raspberry Pi (2 o 3) amb targeta SD
  • 8 sensors d'ultrasons HC-SR04
  • Taula Octasonic Breakout
  • Convertidor de nivell de lògica bidireccional
  • Filferros de pont femella-femella de 32 x 12 "per connectar els sensors d'ultrasons
  • Cables de pont femení-femella de 13 x 6 "per connectar el convertidor de nivell Raspberry Pi, Octasonic i Logic
  • Font d'alimentació adequada per al Raspberry Pi
  • Altaveus de PC o similars

Si és possible, recomanaria utilitzar un Raspberry Pi 3, ja que té més potència informàtica, donant com a resultat un so més sensible i agradable. Pot funcionar bé amb un Raspberry Pi 2 amb una mica de modificació, però no intentaria fer servir el Raspberry Pi original per a aquest projecte.

Els sensors ultrasònics HC-SR04 tenen 4 connexions: 5V, GND, Trigger i Echo. Normalment, Trigger i Echo es connecten a pins separats d’un microcontrolador o Raspberry Pi, però això vol dir que haureu d’utilitzar 16 pins per connectar 8 sensors, i això no és pràctic. Aquí és on entra la placa de sortida Octasonic. Aquesta placa es connecta a tots els sensors i té un microcontrolador dedicat que supervisa els sensors i es comunica amb el Raspberry Pi mitjançant SPI.

L'HC-SR04 requereix 5V i el Raspberry Pi només és de 3,3V, per això és per això que també necessitem el convertidor de nivell lògic que connecti el Raspberry Pi a la placa de sortida d'Octasonic.

Pas 2: connecteu els sensors d'ultrasons a la placa Octasonic

Connecteu els sensors d'ultrasons a la placa Octasonic
Connecteu els sensors d'ultrasons a la placa Octasonic
Connecteu els sensors d'ultrasons a la placa Octasonic
Connecteu els sensors d'ultrasons a la placa Octasonic

Utilitzeu 4 cables femella-femella per connectar cada sensor d'ultrasons a la placa, tenint cura de connectar-los de la manera correcta. La placa està dissenyada de manera que els pins estiguin en el mateix ordre que els pins del sensor d'ultrasons. D'esquerra a dreta al tauler, els passadors són GND, Trigger, Echo, 5V.

Pas 3: connecteu el convertidor de nivell lògic a la placa Octasonic

Connecteu el convertidor de nivell lògic a la placa Octasonic
Connecteu el convertidor de nivell lògic a la placa Octasonic

La placa Raspberry Pi i Octasonic es comuniquen mitjançant SPI. SPI utilitza 4 cables:

  • Master In, Slave Out (MISO)
  • Master Out, Slave In (MOSI)
  • Rellotge en sèrie (SCK)
  • Selecció esclau (SS)

A més, hem de connectar l'alimentació (5V i GND).

El convertidor de nivell lògic té dues cares: una de baixa tensió (VT) i una alta tensió (HV). El gerd es connectarà al costat BT, ja que és de 3,3 V. L’Octasonic es connectarà al costat de l’alta tensió ja que és de 5 V.

Aquest pas serveix per connectar l'Octasonic al costat HV del convertidor de nivell lògic

Vegeu la foto adjunta a aquest pas que mostra quins pins s’haurien de connectar al convertidor de nivell lògic.

Les connexions des del convertidor Octasonic al nivell lògic haurien de ser les següents:

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

Pas 4: connecteu el convertidor de nivell lògic al Raspberry Pi

Connecteu el convertidor de nivell lògic al Raspberry Pi
Connecteu el convertidor de nivell lògic al Raspberry Pi

La placa Raspberry Pi i Octasonic es comuniquen mitjançant SPI. SPI utilitza 4 cables:

  • Master In, Slave Out (MISO)
  • Master Out, Slave In (MOSI)
  • Rellotge en sèrie (SCK)
  • Selecció esclau (SS)

A més, hem de connectar l'alimentació (3,3 V i GND). El convertidor de nivell lògic té dues cares: una de baixa tensió (VT) i una alta tensió (HV). El gerd es connectarà al costat BT, ja que és de 3,3 V. L’Octasonic es connectarà al costat de l’alta tensió ja que és de 5 V.

Aquest pas serveix per connectar el Raspberry Pi al costat BT del convertidor de nivell lògic

Les connexions des del Raspbery Pi al convertidor de nivell lògic han de ser les següents:

  • 3,3 V a BT
  • 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

Utilitzeu el diagrama adjunt a aquest pas per localitzar els pins correctes al Raspberry Pi.

Pas 5: connecteu Raspberry Pi 5V a Octasonic 5V

Connecteu Raspberry Pi 5V a Octasonic 5V
Connecteu Raspberry Pi 5V a Octasonic 5V
Connecteu Raspberry Pi 5V a Octasonic 5V
Connecteu Raspberry Pi 5V a Octasonic 5V

Hi ha un cable final per afegir. En realitat, hem d’alimentar la placa Octasonic amb 5V, de manera que ho fem connectant un dels pins Raspberry Pi de 5V al pin de 5V de la capçalera AVR d’Otasonic. Aquest és el pin inferior esquerre del bloc de capçalera AVR (aquest és el bloc de 2 x 3 a la part superior dreta del tauler). Vegeu la foto adjunta on es troba el bloc AVR.

Consulteu l’altre diagrama adjunt per trobar el pin de 5V al Raspberry Pi.

Pas 6: Instal·leu el programari

Instal·leu Raspian

Comenceu amb una instal·lació neta de Raspbian Jessie i actualitzeu-la a la versió més recent:

sudo apt-get update

sudo apt-get upgrade

Activa SPI

Heu d’habilitar SPI al Raspberry Pi perquè aquest projecte funcioni. Utilitzeu la utilitat Configuració de Raspberry Pi per fer-ho.

També és important reiniciar el Pi després d’habilitar SPI perquè tingui efecte

Instal·leu FluidSynth

Fluidsynth és un increïble sintetitzador MIDI de programari lliure. Podeu instal·lar-lo des de la línia d'ordres amb aquesta ordre:

sudo apt-get install fluidsynth

Instal·leu el llenguatge de programació Rust

Ultrasonic Pi Piano s’implementa en el llenguatge de programació Rust de Mozilla (és com C ++ però sense els bits dolents). És el que fan servir tots els nens divertits en aquests dies.

Seguiu les instruccions a https://rustup.rs/ per instal·lar Rust. Per estalviar temps, les instruccions són executar aquesta ordre. Podeu acceptar les respostes predeterminades a qualsevol pregunta durant la instal·lació.

NOTA: Des que es publica aquest document instructiu, hi ha alguns problemes relacionats amb la instal·lació de Rust al Raspberry Pi. Mal temps: - / però he modificat l'ordre següent per solucionar el problema. Esperem que ho solucionin aviat. Estic treballant en la creació d’una imatge que la gent pugui descarregar i gravar en una targeta SD. Si voleu això, poseu-vos en contacte amb mi.

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

Baixeu-vos el codi font d'Ultrasonic Pi Piano

El codi font del codi font Ultrasonic Pi Piano està allotjat a github. Hi ha dues opcions per obtenir el codi. Si esteu familiaritzat amb git i github, podeu clonar la reposició:

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

Com a alternativa, podeu descarregar un fitxer zip del darrer codi.

Compileu el codi font

cd UltrasonicPiPiano

construcció de càrrega - alliberament

Proveu el codi

Abans de començar a fer música al següent pas, assegurem-nos que el programari s’executa i que podem llegir dades vàlides dels sensors.

Utilitzeu l'ordre següent per executar l'aplicació. Això llegirà les dades dels sensors i les traduirà a notes MIDI que després s’imprimiran a la consola. En moure la mà sobre els sensors, hauríeu de veure que es generen dades. Si no és així, aneu a la secció de resolució de problemes al final d’aquest instructiu.

càrrega de càrrega - alliberament

Si teniu curiositat, el senyalador "--release" indica a Rust que compili el codi de la manera més eficaç possible, a diferència de la configuració predeterminada "--debug".

Pas 7: Feu música

Assegureu-vos que encara esteu al directori on heu baixat el codi font i executeu l'ordre següent.

Aquest script "run.sh" assegura que el codi s'ha compilat i, a continuació, executa el codi, canalitzant la sortida en fluidsynth.

./run.sh

Assegureu-vos que teniu altaveus amplificats connectats a la presa d’àudio de 3,5 mm del Raspberry Pi i que heu d’escoltar música mentre passeu les mans pels sensors.

Si no escolteu música i teniu connectat un monitor HDMI, és probable que la sortida d'àudio hi vagi. Per solucionar-ho, simplement executeu aquesta ordre i reinicieu el Pi Piano:

sudo amixer cset numid = 3 1

Canvi de volum

El volum (o "guany") s'especifica amb el paràmetre "-g" a fluidsynth. Podeu modificar l'script run.sh i canviar aquest valor. Tingueu en compte que els petits canvis en aquest paràmetre comporten un gran canvi de volum, així que intenteu augmentar-lo en petites quantitats (com ara 0,1 o 0,2).

Pas 8: control de gestos

Vegeu el vídeo adjunt a aquest pas per obtenir una demostració completa del projecte, inclòs el funcionament dels controls gestuals.

El concepte és molt senzill. El programari fa un seguiment de quins sensors estan coberts (a menys de 10 cm) i quins no. Això es tradueix en 8 nombres binaris (1 o 0). Això és molt convenient, ja que una seqüència de 8 nombres binaris fa un "byte" que pot representar nombres entre 0 i 255. Si encara no coneixeu els nombres binaris, us recomano buscar un tutorial. Els números binaris són una habilitat fonamental per aprendre si voleu obtenir més informació sobre la programació.

El programari assigna l’estat actual dels sensors a un sol byte que representa el gest actual. Si aquest nombre es manté durant diversos cicles, el programari actua sobre aquest gest.

Com que els sensors d'ultrasons no són molt fiables i hi pot haver interferències, caldrà que tingueu paciència quan utilitzeu els gestos. Proveu de variar la distància que manteniu a les mans dels sensors, així com l'angle que manteniu a les mans. També freda, intenteu mantenir alguna cosa plana i sòlida sobre els sensors per reflectir millor el so.

Pas 9: fer un recinte

Si voleu que aquesta sigui una exposició permanent i pugueu mostrar-la a la gent, probablement voldreu fer algun tipus de recinte. Això es podria fer de fusta, cartró o molts altres materials. Aquí teniu un vídeo que mostra el recinte en què estem treballant per a aquest projecte. Està fet de fusta, amb forats forçats per mantenir els sensors d'ultrasons al seu lloc.

Pas 10: resolució de problemes i passos següents

Resolució de problemes

Si el projecte no funciona, normalment es deu a un error de cablejat. Preneu-vos el temps per comprovar totes les connexions.

Un altre problema habitual és que no s’activa l’SPI i es reinicia el pi.

Visiteu https://theotherandygrove.com/octasonic/ per obtenir documentació completa que inclou consells de resolució de problemes, amb articles específics de Rust i Python, i també informació sobre com obtenir assistència.

Propers passos

Un cop tingueu el projecte en funcionament, us recomano experimentar amb el codi i provar diferents instruments musicals. Els codis d’instruments MIDI es troben entre l’1 i el 127 i es documenten aquí.

Voleu un sol instrument musical amb cada sensor que toqui una octava diferent? Potser voldríeu que cada sensor fos un instrument independent? Les possibilitats són gairebé il·limitades.

Espero que us hagi agradat aquest instructiu. Si us plau, agradi i assegureu-vos de subscriure-m'hi aquí i al meu canal de YouTube per veure futurs projectes.

Recomanat: