Innehållsförteckning:
- Steg 1: Ingredienser
- Steg 2: Anslut ultraljudssensorerna till Octasonic -kortet
- Steg 3: Anslut Logic Level Converter till Octasonic Board
- Steg 4: Anslut Logic Level Converter till Raspberry Pi
- Steg 5: Anslut Raspberry Pi 5V till Octasonic 5V
- Steg 6: Installera programvara
- Steg 7: Gör lite musik
- Steg 8: Gestkontroll
- Steg 9: Skapa ett hölje
- Steg 10: Felsökning och nästa steg
Video: Ultraljud Pi -piano med gestkontroller !: 10 steg (med bilder)
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:46
Detta projekt använder billiga HC-SR04 ultraljudssensorer som ingångar och genererar MIDI-noter som kan spelas via en synt på Raspberry Pi för ett högkvalitativt ljud.
Projektet använder också en grundläggande form av gestkontroll, där musikinstrumentet kan ändras genom att hålla händerna över de två yttersta sensorerna i några sekunder. En annan gest kan användas för att stänga av Raspberry Pi när du är klar.
Videon ovan visar den färdiga produkten i ett enkelt laserskuret hölje. Det finns en mer fördjupad video senare i denna instruktör som förklarar hur projektet fungerar.
Jag skapade detta projekt tillsammans med The Gizmo Dojo (min lokala makerspace i Broomfield, CO) för att göra några interaktiva utställningar som vi kan ta till lokala STEM/STEAM -evenemang och Maker Faires.
Titta också på den senaste dokumentationen och självstudierna på https://theotherandygrove.com/octasonic/ som nu innehåller information om en Python -version av detta projekt (denna instruktion skrevs för Rust -versionen).
Steg 1: Ingredienser
För denna instruerbara, behöver du följande ingredienser:
- Hallon Pi (2 eller 3) med SD -kort
- 8 ultraljudssensorer HC-SR04
- Octasonic Breakout Board
- Dubbelriktad logisk nivåomvandlare
- 32 x 12 "kvinnliga-kvinnliga bygeltrådar för anslutning av ultraljudssensorer
- 13 x 6 "kvinnliga-kvinnliga bygelkablar för anslutning av Raspberry Pi, Octasonic och Logic Level Converter
- Lämplig strömförsörjning för Raspberry Pi
- PC -högtalare eller liknande
Jag skulle rekommendera att använda en Raspberry Pi 3 om möjligt eftersom den har mer datorkraft, vilket resulterar i ett mer lyhörd och tilltalande ljud. Det kan fungera bra med en Raspberry Pi 2 med lite tweaking men jag skulle inte försöka använda den ursprungliga Raspberry Pi för detta projekt.
HC -SR04 ultraljudssensorer har 4 anslutningar - 5V, GND, Trigger och Echo. Vanligtvis är Trigger och Echo anslutna till separata stift på en mikrokontroller eller Raspberry Pi, men det betyder att du skulle behöva använda 16 stift för att ansluta 8 sensorer, och det är inte praktiskt. Det är här som Octasonic breakout -kortet kommer in. Detta kort ansluter till alla sensorer och har en dedikerad mikrokontroller som övervakar sensorerna och sedan kommunicerar med Raspberry Pi via SPI.
HC-SR04 kräver 5V och Raspberry Pi är bara 3,3V, så det är därför vi också behöver den logiska nivåomvandlaren som kommer att ansluta Raspberry Pi till Octasonic breakout-kortet.
Steg 2: Anslut ultraljudssensorerna till Octasonic -kortet
Använd fyra hona-hona-trådar för att ansluta varje ultraljudssensor till kortet, var noga med att ansluta dem på rätt sätt. Kortet är utformat så att stiften är i samma ordning som stiften på ultraljudssensorn. Från vänster till höger på brädet är stiften GND, Trigger, Echo, 5V.
Steg 3: Anslut Logic Level Converter till Octasonic Board
Raspberry Pi och Octasonic Board kommunicerar över SPI. SPI använder 4 trådar:
- Master In, Slave Out (MISO)
- Master Out, Slave In (MOSI)
- Seriell klocka (SCK)
- Slavval (SS)
Dessutom måste vi ansluta ström (5V och GND).
Den logiska nivåomvandlaren har två sidor - en lågspänning (LV) och en högspänning (HV). Hallon ansluts till LV -sidan eftersom det är 3,3V. Octasonic kommer att ansluta till HV -sidan eftersom den är 5V.
Detta steg är för att ansluta Octasonic till HV -sidan av den logiska nivåomvandlaren
Se fotot som bifogas detta steg som visar vilka stift som ska anslutas till den logiska nivåomvandlaren.
Anslutningarna från Octasonic till Logic Level -omvandlaren bör vara följande:
- 5V till HV
- SCK till HV4
- MISO till HV3
- MOSI till HV2
- SS till HV1
- GND till GND
Steg 4: Anslut Logic Level Converter till Raspberry Pi
Raspberry Pi och Octasonic Board kommunicerar över SPI. SPI använder 4 trådar:
- Master In, Slave Out (MISO)
- Master Out, Slave In (MOSI)
- Seriell klocka (SCK)
- Slavval (SS)
Dessutom måste vi ansluta ström (3.3V och GND). Den logiska nivåomvandlaren har två sidor - en lågspänning (LV) och en högspänning (HV). Hallon ansluts till LV -sidan eftersom det är 3,3V. Octasonic kommer att ansluta till HV -sidan eftersom den är 5V.
Detta steg är för att ansluta Raspberry Pi till LV -sidan av den logiska nivåomvandlaren
Anslutningarna från Raspbery Pi till Logic Level -omvandlaren ska vara följande:
- 3.3V till LV
- GPIO11 (SPI_SCLK) till LV4
- GPIO09 (SPI_MISO) till LV3
- GPIO10 (SPI_MOSI) till LV2
- GPIO08 (SPI_CE0_N) SS till LV1
- GND till GND
Använd diagrammet som bifogas detta steg för att hitta rätt stift på Raspberry Pi!
Steg 5: Anslut Raspberry Pi 5V till Octasonic 5V
Det finns en sista tråd att lägga till. Vi måste faktiskt driva Octasonic -kortet med 5V, så vi gör det genom att ansluta en av Raspberry Pi 5V -stiften till 5V -stiftet på Octasonic AVR -huvudet. Detta är den nedre vänstra stiftet i AVR -huvudblocket (detta är 2 x 3 -blocket högst upp till höger på brädet). Se det bifogade fotot som visar var AVR -blocket är.
Se det andra bifogade diagrammet för att hitta 5V -stiftet på Raspberry Pi.
Steg 6: Installera programvara
Installera Raspian
Börja med en ren installation av Raspbian Jessie och uppdatera den sedan till den senaste versionen:
sudo apt-get uppdatering
sudo apt-get uppgradering
Aktivera SPI
Du måste aktivera SPI på Raspberry Pi för att detta projekt ska fungera! Använd verktyget Raspberry Pi Configuration för att göra detta.
Det är också viktigt att starta om Pi efter att SPI har aktiverats för att den ska träda i kraft
Installera FluidSynth
Fluidsynth är en fantastisk gratis programvara MIDI synth. Du kan installera det från kommandoraden med det här kommandot:
sudo apt-get install fluidsynth
Installera rostprogrammeringsspråket
Ultrasonic Pi Piano är implementerat i Rust Programming Language från Mozilla (det är som C ++ men utan de dåliga bitarna). Det är vad alla coola barn använder dessa dagar.
Följ instruktionerna på https://rustup.rs/ för att installera Rust. För att spara tid, är instruktionerna att köra det här kommandot. Du kan acceptera standardsvar på alla frågor under installationen.
OBS: Sedan du lägger ut detta instruerbara, finns det några problem med att installera Rust på Raspberry Pi. Dålig timing:-/ men jag har ändrat kommandot nedan för att lösa problemet. Förhoppningsvis fixar de detta snart. Jag arbetar med att skapa en bild som människor kan ladda ner och bränna på ett SD -kort. Kontakta mig om du vill ha det.
export RUSTUP_USE_HYPER = 1curl https://sh.rustup.rs -sSf | sh
Ladda ner källkoden för Ultrasonic Pi Piano
Källkoden för Ultrasonic Pi Piano -källkoden finns på github. Det finns två alternativ för att få koden. Om du är bekant med git och github kan du klona repo:
git klon [email protected]: TheGizmoDojo/UltrasonicPiPiano.git
Alternativt kan du ladda ner en zip -fil med den senaste koden.
Kompilera källkoden
cd UltrasonicPiPiano
lastbyggnad -släpp
Testa koden
Innan vi går vidare till att göra musik i nästa steg, låt oss se till att programvaran körs och att vi kan läsa giltig data från sensorerna.
Använd följande kommando för att köra programmet. Detta kommer att läsa data från sensorerna och översätta dem till MIDI -anteckningar som sedan skrivs ut på konsolen. När du flyttar handen över sensorerna bör du se data genereras. Om inte, gå sedan till felsökningsavsnittet i slutet av denna instruktion.
lastkörning -släpp
Om du är nyfiken säger "--release" -flaggan till Rust att kompilera koden så effektivt som möjligt, i motsats till standardinställningen "--debug".
Steg 7: Gör lite musik
Se till att du fortfarande finns i katalogen där du laddade ner källkoden och kör följande kommando.
Detta "run.sh" -skript ser till att koden har sammanställts och kör sedan koden och leder utmatningen till fluidsynth.
./run.sh
Se till att du har förstärkta högtalare anslutna till 3,5 mm ljuduttaget på Raspberry Pi och att du ska höra musik när du flyttar händerna över sensorerna.
Om du inte hör musik och har en HDMI -bildskärm ansluten, går ljudutmatningen förmodligen dit istället. För att åtgärda detta, kör bara det här kommandot och starta sedan om Pi Piano:
sudo amixer cset numid = 3 1
Ändra volymen
Volymen (eller "förstärkning") anges med parametern "-g" till fluidsynth. Du kan ändra run.sh -skriptet och ändra detta värde. Observera att små förändringar i denna parameter resulterar i en stor förändring i volym, så försök att öka den med små mängder (som 0,1 eller 0,2).
Steg 8: Gestkontroll
Se videon som bifogas detta steg för en fullständig demonstration av projektet, inklusive hur gestkontrollerna fungerar.
Konceptet är väldigt enkelt. Programvaran håller reda på vilka sensorer som täcks (inom 10 cm) och vilka som inte är det. Detta översätter till 8 binära tal (1 eller 0). Detta är mycket bekvämt, eftersom en sekvens med 8 binära tal gör en "byte" som kan representera tal mellan 0 och 255. Om du inte redan vet om binära tal rekommenderar jag starkt att du söker efter en handledning. Binära tal är en grundläggande färdighet att lära sig om du vill lära dig mer om programmering.
Programvaran kartlägger sensornas nuvarande tillstånd till en enda byte som representerar den aktuella gesten. Om det numret förblir detsamma under ett antal cykler, fungerar programvaran på den gesten.
Eftersom ultraljudssensorer inte är superpålitliga och det kan förekomma störningar mellan sensorerna, måste du vara lite tålamod när du använder gesterna. Prova att variera avståndet som du håller dina händer från sensorerna samt vinkeln som du håller dina händer. Du kall försöker också hålla något plant och fast över sensorerna för att bättre reflektera ljudet.
Steg 9: Skapa ett hölje
Om du vill göra detta till en permanent utställning och kunna visa upp det för människor, kommer du förmodligen att vilja göra något slags hölje. Detta kan vara tillverkat av trä, kartong eller många andra material. Här är en video som visar höljet vi arbetar med för detta projekt. Detta är tillverkat av trä, med hål borrade ut för att hålla ultraljudssensorerna på plats.
Steg 10: Felsökning och nästa steg
Felsökning
Om projektet inte fungerar är det vanligtvis ett ledningsfel. Ta dig tid att dubbelkolla alla anslutningar.
Ett annat vanligt problem är att inte aktivera SPI och starta om pi.
Besök https://theotherandygrove.com/octasonic/ för fullständig dokumentation inklusive felsökningstips, med Rust- och Python -specifika artiklar, och även information om hur du får support.
Nästa steg
När du väl har arbetat med projektet rekommenderar jag att du experimenterar med koden och testar olika musikinstrument. MIDI -instrumentkoder är mellan 1 och 127 och dokumenteras här.
Vill du ha ett enda musikinstrument med varje sensor som spelar en annan oktav? Du kanske vill att varje sensor ska vara ett separat instrument istället? Möjligheterna är nästan obegränsade!
Jag hoppas att du njöt av detta instruerbara. Gilla det om du gjorde det, och var noga med att prenumerera på mig här och på min YouTube -kanal för att se framtida projekt.
Rekommenderad:
Sonografi med kropps-ultraljud med Arduino: 3 steg (med bilder)
Body-ultrasound Sonography With Arduino: Hej! Min hobby och passion är att förverkliga fysikprojekt. Ett av mina sista arbeten handlar om ultraljudssonografi. Som alltid försökte jag göra det så enkelt som möjligt med delar du kan få på ebay eller aliexpress. Så låt oss ta en titt på hur långt jag kan gå med
Flödesmätning med vattenflödesmätare (ultraljud): 5 steg (med bilder)
Flödesmätning med vattenflödesmätare (ultraljud): Vatten är en kritisk resurs för vår planet. Vi människor behöver vatten varje dag. Och vatten är nödvändigt för en mängd olika industrier och vi människor behöver det varje dag. Eftersom vatten har blivit mer värdefullt och knappt, behövs behovet av effektiv övervakning och hantering
Nivåmätare för ultraljud: 5 steg (med bilder)
Nivåmätare för ultraljud: Behöver du övervaka vätskenivån i en brunn med stor diameter, en tank eller en öppen behållare? Den här guiden visar dig hur du gör en ekolodfri vätskenivåmätare med billig elektronik! Skissen ovan visar en översikt över vad vi siktade på med t
Ultraljud regnvattentankmätare: 10 steg (med bilder)
Ultraljud regnvattentankmätare: Om du liknar mig och har lite miljövetenhet (eller bara är hudfärgade ivriga att spara några dollar - vilket också är jag …) kan du ha en regnvattentank. Jag har en tank för att skörda det ganska sällsynta regnet vi får i
Upptäcka hinder och varningar - Arduino UNO och ultraljud: 4 steg (med bilder)
Upptäcka hinder och varningar - Arduino UNO och ultraljud: Detta är handledning för att hjälpa dig att förstå ultraljud och summer och gå djupare in i att lära dig Arduino, följ dessa steg och ge mig feedback