Indholdsfortegnelse:

Ultralyds Pi -klaver med gestus -kontrol !: 10 trin (med billeder)
Ultralyds Pi -klaver med gestus -kontrol !: 10 trin (med billeder)

Video: Ultralyds Pi -klaver med gestus -kontrol !: 10 trin (med billeder)

Video: Ultralyds Pi -klaver med gestus -kontrol !: 10 trin (med billeder)
Video: Только правда имеет значение 2023 — Prime 6 2024, Juli
Anonim
Image
Image
Ultralyds Pi -klaver med gestus -kontrol!
Ultralyds Pi -klaver med gestus -kontrol!

Dette projekt bruger billige HC-SR04 ultralydssensorer som input og genererer MIDI-noter, der kan afspilles gennem en synthesizer på Raspberry Pi for en lyd af høj kvalitet.

Projektet anvender også en grundlæggende form for gestusstyring, hvor musikinstrumentet kan ændres ved at holde dine hænder over de to yderste sensorer i et par sekunder. En anden gestus kan bruges til at lukke Raspberry Pi ned, når du er færdig.

Videoen ovenfor viser det færdige produkt i et enkelt laserskåret kabinet. Der er en mere dybtgående video senere i denne instruktør, der forklarer, hvordan projektet fungerer.

Jeg oprettede dette projekt i forbindelse med The Gizmo Dojo (mit lokale makerspace i Broomfield, CO) for at lave nogle interaktive udstillinger, som vi kan tage med til lokale STEM/STEAM -arrangementer og Maker Faires.

Se også den nyeste dokumentation og selvstudier på https://theotherandygrove.com/octasonic/, som nu indeholder oplysninger om en Python -version af dette projekt (denne instruks blev skrevet til Rust -versionen).

Trin 1: Ingredienser

Til denne instruktive skal du bruge følgende ingredienser:

  • Hindbær Pi (2 eller 3) med SD -kort
  • 8 ultralydssensorer HC-SR04
  • Octasonic Breakout Board
  • Bi-directional Logic Level Converter
  • 32 x 12 "hun-hun jumperwire til tilslutning af ultralydssensorer
  • 13 x 6 "kvindelige-hun-jumperwire til tilslutning af Raspberry Pi, Octasonic og Logic Level Converter
  • Passende strømforsyning til Raspberry Pi
  • PC -højttalere eller lignende

Jeg vil om muligt anbefale at bruge en Raspberry Pi 3, da den har mere computerkraft, hvilket resulterer i en mere lydhør og behagelig lyd. Det kan fungere fint med en Raspberry Pi 2 med lidt tweaking, men jeg ville ikke forsøge at bruge den originale Raspberry Pi til dette projekt.

HC -SR04 ultralydssensorer har 4 forbindelser - 5V, GND, Trigger og Echo. Typisk er Trigger og Echo forbundet til separate stifter på en mikrokontroller eller Raspberry Pi, men det betyder, at du skal bruge 16 ben til at forbinde 8 sensorer, og det er ikke praktisk. Det er her, Octasonic breakout -kortet kommer ind. Dette board forbinder til alle sensorerne og har en dedikeret mikrokontroller, der overvåger sensorerne og derefter kommunikerer med Raspberry Pi over SPI.

HC-SR04 kræver 5V, og Raspberry Pi er kun 3,3V, så derfor har vi også brug for den logiske niveauomformer, der forbinder Raspberry Pi til Octasonic breakout-kortet.

Trin 2: Tilslut ultralydssensorerne til Octasonic -kortet

Tilslut ultralydssensorerne til Octasonic -kortet
Tilslut ultralydssensorerne til Octasonic -kortet
Tilslut ultralydssensorerne til Octasonic -kortet
Tilslut ultralydssensorerne til Octasonic -kortet

Brug 4 hun-hun jumper-ledninger til at forbinde hver ultralydssensor til kortet, og pas på at tilslutte dem den rigtige vej. Tavlen er designet, så stifterne er i samme rækkefølge som stifterne på ultralydssensoren. Fra venstre til højre på brættet er benene GND, Trigger, Echo, 5V.

Trin 3: Tilslut Logic Level Converter til Octasonic Board

Tilslut Logic Level Converter til Octasonic Board
Tilslut Logic Level Converter til Octasonic Board

Raspberry Pi og Octasonic Board kommunikerer over SPI. SPI bruger 4 ledninger:

  • Master In, Slave Out (MISO)
  • Master Out, Slave In (MOSI)
  • Serielt ur (SCK)
  • Slave Select (SS)

Derudover skal vi tilslutte strøm (5V og GND).

Den logiske niveauomformer har to sider - en lav spænding (LV) og en høj spænding (HV). Hindbæret vil oprette forbindelse til LV -siden, da det er 3,3V. Octasonic vil oprette forbindelse til HV -siden, da den er 5V.

Dette trin er til tilslutning af Octasonic til HV -siden af den logiske niveauomformer

Se billedet vedhæftet dette trin, der viser, hvilke ben der skal tilsluttes logik -niveauomformeren.

Forbindelserne fra Octasonic til Logic Level -konverteren skal være som følger:

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

Trin 4: Tilslut Logic Level Converter til Raspberry Pi

Tilslut Logic Level Converter til Raspberry Pi
Tilslut Logic Level Converter til Raspberry Pi

Raspberry Pi og Octasonic Board kommunikerer over SPI. SPI bruger 4 ledninger:

  • Master In, Slave Out (MISO)
  • Master Out, Slave In (MOSI)
  • Serielt ur (SCK)
  • Slave Select (SS)

Derudover skal vi tilslutte strøm (3.3V og GND). Den logiske niveauomformer har to sider - en lav spænding (LV) og en høj spænding (HV). Hindbæret vil oprette forbindelse til LV -siden, da det er 3,3V. Octasonic vil oprette forbindelse til HV -siden, da den er 5V.

Dette trin er til tilslutning af Raspberry Pi til LV -siden af det logiske niveauomformer

Forbindelserne fra Raspbery Pi til Logic Level -konverteren skal være som følger:

  • 3,3V til LV
  • GPIO11 (SPI_SCLK) til LV4
  • GPIO09 (SPI_MISO) til LV3
  • GPIO10 (SPI_MOSI) til LV2
  • GPIO08 (SPI_CE0_N) SS til LV1
  • GND til GND

Brug diagrammet vedhæftet dette trin til at finde de korrekte stifter på Raspberry Pi!

Trin 5: Tilslut Raspberry Pi 5V til Octasonic 5V

Tilslut Raspberry Pi 5V til Octasonic 5V
Tilslut Raspberry Pi 5V til Octasonic 5V
Tilslut Raspberry Pi 5V til Octasonic 5V
Tilslut Raspberry Pi 5V til Octasonic 5V

Der er en sidste ledning at tilføje. Vi skal faktisk forsyne Octasonic -kortet med 5V, så vi gør det ved at forbinde en af Raspberry Pi 5V -stifterne til 5V -stiften på Octasonic AVR -headeren. Dette er den nederste venstre pin i AVR -headerblokken (dette er 2 x 3 -blokken øverst til højre på brættet). Se det vedhæftede foto, der viser, hvor AVR -blokken er.

Se det andet vedhæftede diagram for at finde 5V -stiften på Raspberry Pi.

Trin 6: Installer software

Installer Raspian

Start med en ren installation af Raspbian Jessie, og opdater den derefter til den nyeste version:

sudo apt-get opdatering

sudo apt-get opgradering

Aktiver SPI

Du skal aktivere SPI på Raspberry Pi for at dette projekt kan fungere! Brug Raspberry Pi Configuration -værktøjet til at gøre dette.

Det er også vigtigt at genstarte Pi efter aktivering af SPI, for at den kan træde i kraft

Installer FluidSynth

Fluidsynth er en fantastisk gratis software MIDI synth. Du kan installere det fra kommandolinjen med denne kommando:

sudo apt-get install fluidsynth

Installer Rust programmeringssprog

Ultrasonic Pi Piano er implementeret i Rust Programming Language fra Mozilla (det er ligesom C ++ men uden de dårlige bits). Det er hvad alle de seje børn bruger i disse dage.

Følg instruktionerne på https://rustup.rs/ for at installere Rust. For at spare dig tid er instruktionerne at køre denne ene kommando. Du kan acceptere standardsvarene på eventuelle spørgsmål under installationen.

BEMÆRK: Siden udgivelsen af dette instruerbare, er der nogle problemer med at installere Rust på Raspberry Pi. Dårlig timing:-/ men jeg har ændret kommandoen herunder for at løse problemet. Forhåbentlig vil de rette dette snart. Jeg arbejder på at skabe et billede, som folk kan downloade og brænde på et SD -kort. Hvis du vil have det, bedes du kontakte mig.

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

Download kildekoden til Ultrasonic Pi Piano

Kildekoden til Ultrasonic Pi Piano kildekoden er hostet på github. Der er to muligheder for at få koden. Hvis du kender git og github, kan du klone repoen:

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

Alternativt kan du downloade en zip -fil med den nyeste kode.

Kompilér kildekoden

cd UltrasonicPiPiano

lastbygning -frigivelse

Test koden

Inden vi går videre til at lave musik i det næste trin, lad os sikre os, at softwaren kører, og at vi kan læse gyldige data fra sensorerne.

Brug følgende kommando til at køre programmet. Dette vil læse data fra sensorerne og oversætte dem til MIDI -noter, der derefter udskrives på konsollen. Når du bevæger din hånd over sensorerne, skal du se data blive genereret. Hvis ikke, skal du gå til afsnittet om fejlfinding i slutningen af denne instruktion.

ladning -frigivelse

Hvis du er nysgerrig, fortæller "--release" -flaget til Rust at kompilere koden så effektivt som muligt i modsætning til standardindstillingen "--debug".

Trin 7: Lav noget musik

Sørg for, at du stadig er i biblioteket, hvor du downloadede kildekoden, og kør følgende kommando.

Dette script "run.sh" sørger for, at koden er blevet kompileret, og kører derefter koden, og leder output til fluidsynth.

./run.sh

Sørg for, at du har forstærkede højttalere tilsluttet 3,5 mm lydstikket på Raspberry Pi, og du skal høre musik, mens du bevæger dine hænder hen over sensorerne.

Hvis du ikke hører musik, og du har en HDMI -skærm tilsluttet, går lydudgangen sandsynligvis derhen i stedet. For at løse dette skal du blot køre denne kommando og derefter genstarte Pi Piano:

sudo amixer cset numid = 3 1

Ændring af lydstyrken

Lydstyrken (eller "gain") er angivet med parameteren "-g" til fluidsynth. Du kan ændre run.sh -scriptet og ændre denne værdi. Bemærk, at små ændringer i denne parameter resulterer i en stor ændring i volumen, så prøv at øge den med små mængder (f.eks. 0,1 eller 0,2).

Trin 8: Gesture Control

Se videoen vedhæftet dette trin for en fuld demonstration af projektet, herunder hvordan gestusstyringen fungerer.

Konceptet er meget enkelt. Softwaren holder styr på, hvilke sensorer der er dækket (inden for 10 cm), og hvilke der ikke er. Dette oversættes til 8 binære tal (1 eller 0). Dette er meget praktisk, da en sekvens på 8 binære tal laver en "byte", der kan repræsentere tal mellem 0 og 255. Hvis du ikke allerede ved om binære tal, så anbefaler jeg stærkt at søge efter en tutorial. Binære tal er en grundlæggende færdighed at lære, hvis du vil lære mere om programmering.

Softwaren kortlægger sensorernes aktuelle tilstand til en enkelt byte, der repræsenterer den aktuelle gestus. Hvis dette nummer forbliver det samme i et antal cyklusser, virker softwaren på den gestus.

Fordi ultralydssensorer ikke er super pålidelige, og der kan være interferens mellem sensorerne, skal du udvise lidt tålmodighed, når du bruger bevægelserne. Prøv at variere den afstand, du holder dine hænder fra sensorerne, samt den vinkel, du holder dine hænder. Du kold prøver også at holde noget fladt og solidt over sensorerne for bedre at afspejle lyden.

Trin 9: Lav et kabinet

Hvis du vil gøre dette til en permanent udstilling og være i stand til at vise det frem for folk, vil du sandsynligvis gerne lave en slags kabinet. Dette kan være lavet af træ, pap eller mange andre materialer. Her er en video, der viser kabinettet, vi arbejder på til dette projekt. Dette er lavet af træ, med huller boret ud for at holde ultralydssensorerne på plads.

Trin 10: Fejlfinding og næste trin

Fejlfinding

Hvis projektet ikke fungerer, skyldes det normalt en ledningsfejl. Tag dig tid til at dobbelttjekke alle forbindelser.

Et andet almindeligt problem er ikke at aktivere SPI og genstarte pi'en.

Besøg https://theotherandygrove.com/octasonic/ for fuld dokumentation, herunder fejlfindingstip, med Rust- og Python -specifikke artikler samt oplysninger om, hvordan du får support.

Næste skridt

Når du først har arbejdet med projektet, anbefaler jeg at eksperimentere med koden og prøve forskellige musikinstrumenter. MIDI -instrumentkoder er mellem 1 og 127 og er dokumenteret her.

Vil du have et enkelt musikinstrument, hvor hver sensor spiller en anden oktav? Måske vil du gerne have, at hver sensor i stedet er et separat instrument? Mulighederne er næsten ubegrænsede!

Jeg håber, at du nød dette instruerbare. Vær venlig at lide det, hvis du gjorde det, og sørg for at abonnere på mig her og på min YouTube -kanal for at se fremtidige projekter.

Anbefalede: