Innehållsförteckning:

Prima - en robot som spelar piano: 13 steg
Prima - en robot som spelar piano: 13 steg

Video: Prima - en robot som spelar piano: 13 steg

Video: Prima - en robot som spelar piano: 13 steg
Video: Полный курс по Next js - Изучи Nextjs за 2 часа! | React SSR +таймкоды 2024, November
Anonim
Prima - en robot som spelar piano
Prima - en robot som spelar piano

Idén om en robot som spelar ett instrument fascinerade mig alltid, och jag ville alltid bygga en själv. Jag hade dock aldrig mycket kunskap om musik och musikinstrument, så jag kunde aldrig komma på hur jag egentligen skulle börja med det. Fram till nyligen blev jag intresserad av att göra musik, började lära mig musikproduktion, och efter att ha fått ett MIDI -tangentbord har jag insett att detta inte är ett svårt instrument att spela och jag kan faktiskt bygga en robot som kan spela det. Så, det var så att tillverka Prima började.

Jag var inte säker på om detta projekt lyckades, så jag brydde mig inte om att dokumentera det. Men eftersom det visade sig fungera bra har jag bestämt mig för att dela detaljerna med Instructables -communityn. Det här kommer inte att vara en steg-för-steg-bygglogg, snarare en riktlinje för att komma igång. Jag ska förklara hur varje del av denna robot fungerar, dela bilderna på dem och koden för Arduino. Hoppas att det kommer att räcka om du vill replikera det här projektet.

Och designen inspirerades av dessa instruktörer, ropa ut till JimRD!

Så, låt oss komma igång

Steg 1: Översikt över hela projektet

Prima är en robot som kan spela keyboard/piano eller något liknande nyckelbaserat instrument. Den har en Arduino Uno som hjärna, en LCD-skärm för visuell utmatning och en ultraljudssensor för beröringsfri start. Varje nätadapter som levererar 5 volt 2 ampere bör kunna driva den.

Den har följande funktioner -

  • Programmerbar - Kan programmeras för att spela vilken komposition som helst som är begränsad inom en oktav.
  • Justerbart tempo - Tempot det kommer att följa när du spelar instrumentet kan ställas in i koden.
  • Beröringsfri start - Användaren kan utlösa uppspelningen bara genom att dra sin hand på sensorn, vilket kommer att vara till stor hjälp om användaren är upptagen med att spela ett annat instrument och vill att Prima ska spela tillsammans med honom/henne efter en viss tid. Mänsklig spelare som fastnar med en robotspelare - även detta kan uppnås också med hjälp av denna funktion.

Steg 2: Video

Image
Image

Du kan se den spela på ett tangentbord i videon.

Steg 3: Gör 3D -modellen

Gör 3D -modellen
Gör 3D -modellen
Gör 3D -modellen
Gör 3D -modellen

Efter att ha slutfört vad den skulle kunna göra designade jag kroppen på TinkerCAD så att jag kunde börja bygga den med en klar uppfattning om vad jag gjorde.

Detta tillvägagångssätt hjälpte mig mycket att sluta med en snygg robot som fungerar exakt som den var utformad för. Även om jag var tvungen att ändra den ursprungliga designen lite medan jag byggde den, sparade 3D -modellen mig fortfarande mycket tid och ansträngning. Du kan se 3D -modellen i mer detaljer här.

Steg 4: Delar och verktyg

Delar och verktyg
Delar och verktyg
Delar och verktyg
Delar och verktyg
Delar och verktyg
Delar och verktyg

För den elektroniska delen behöver du -

  • Arduino Uno (kvantitet - 1)
  • 16x2 LCD -skärm (antal - 1)
  • I2C -adapter för LCD -skärmen (antal - 1)
  • TowerPro SG90 Micro Servo (antal - 2)
  • HC -SR04 ultraljudssensor (kvantitet - 1)
  • Toggle Push Switch (antal - 1)
  • Summer (kvantitet - 1)
  • Vero board/ Dot Board/ Perf Board
  • Manliga till manliga och manliga till kvinnliga bygeltrådar

För att göra kroppen -

  • 5 mm PVC -ark
  • Cykelekrar (antal - 2)
  • Skruvar
  • Pennpåfyllningsrör
  • Sprayfärg (om du vill måla den)

Verktygen du behöver -

  • Superlim
  • Lim pistol
  • Lödkolv
  • Anti-cutter (A. K. A Paper-cutter)

Steg 5: Kretsar

Kretsar
Kretsar
Kretsar
Kretsar
Kretsar
Kretsar

Kretsdelen var ganska lätt. Jag förklarar hur jag gjorde varje segment av det -

LCD -segment - Jag använde en I2C -adapter för LCD -skärmen så att Arduino kunde kommunicera med den via I2C, vilket inte var nödvändigt men förenklade kretsen och minskade antalet ledningar. Du kan använda en vanlig LCD genom att ändra koden lite.

Kraftsegment - Jag gjorde en enkel krets på veroboard som består av en omkopplare, en summer, en LED (som jag bestämde mig för att inte använda efteråt) och en 5V gemensam kraftbuss. Strömbuss som i, 5V och jordstift på servon, ekolodsgivaren, LCD -skärmen och Arduino är alla anslutna till varandra respektive. Ett stift på tryckknappen är anslutet till 5V+ -ledningen, och det andra stiftet är anslutet till strömförsörjningens VCC -stift. Jordledningen är direkt ansluten till strömförsörjningens jordstift. Så Prima kan slås på/av med strömbrytaren. Summern och lysdioden är parallellkopplade och VCC -stiftet går till stift 13 på Arduino. Deras mark är ansluten till den gemensamma kraftbussens mark.

Servos kontaktmodifiering - Eftersom bygelkablar ofta tenderar att koppla bort från servokontakten, klippte jag VCC och jordledningen från båda servon och lodde dem direkt till strömbussen. För signalstiften använde jag dock bygelkablar för att ansluta dem till Arduino.

Ekolodsgivare - Lödde två ledningar respektive till VCC och jordstiftet på ekolodsgivaren, som går till den gemensamma kraftbussen, och använde bygelkablar för att ansluta avtryckaren och ekostiftet till Arduino.

Arduino - Drivs genom fatuttagskontakten.

Vilket går till vilket -

Ekolodsgivarens utlösare -> Arduinos A2 -stift

Ekolodsgivarens ekolod -> Arduinos A3 -stift

I2C -adapterens SDA -stift -> Arduinos A4 -stift

I2C -adapterens SCL -stift -> Arduinos A5 -stift

Buzzer's VCC -> Arduinos D13 -stift

Knapptryckning av servos signalstift -> Arduinos D9 -stift

X -axel servos signalstift -> Arduinos D8 -stift

Alla VCC och jordstift är anslutna till den gemensamma kraftbussen.

Steg 6: Montering av ekolod

Ekolodsfäste
Ekolodsfäste

Bilden är självförklarande, bara superlimmad en L-formad hylla på "väggen" och varmlimt ekolodsgivaren på hyllan.

Steg 7: Gör X -axelskenan

Tillverkar X -axelskenan
Tillverkar X -axelskenan
Gör X Axis Rail
Gör X Axis Rail

Jag lånade konceptet med X -axelskenan från CNC -maskiner. Det är bara två cykelekrar placerade parallellt med varandra, och "väggarna" har hål genom vilka cykelekrarna går. I väggarnas andra ändar är cykelekrarna varmtlimade på väggarna så att de inte rör sig. Cykelekrarna är tillräckligt starka för att stödja plattformen för X -axeln.

Steg 8: X Axis Platform

X Axis -plattform
X Axis -plattform
X Axis -plattform
X Axis -plattform
X Axis -plattform
X Axis -plattform
X Axis -plattform
X Axis -plattform

Det är den del som går åt sidan för att nå vissa tangenter och har en servo som har en arm fäst vid den som trycker på knappen.

Den har två pennpåfyllningsrör varmlimt på undersidan av den genom vilken cykelekrarna går så att den kan glida på dem. Jag fick det här röret från en penna, du kan använda allt som passar ekrarna, till exempel att dricka halm.

Sedan, i mitten av det nedre PVC -arket, står det ett annat PVC -ark som står rakt. Den har ett hål i den nedre delen som passar servokroppen och servon sätts in genom den. Servon har säkrats med varmt lim.

Servon har en arm ansluten till den. När roboten måste trycka på en tangent, roterar servon armen nedåt vilket resulterar i en knapptryckning och vrider den till dess tidigare position efteråt.

Steg 9: Flytta X -axelplattformen

Flytta X -axelplattformen
Flytta X -axelplattformen
Flytta X -axelplattformen
Flytta X -axelplattformen
Flytta X -axelplattformen
Flytta X -axelplattformen

"X -axelflyttaren" -servern är ansluten till en förhöjd plattform som ligger på robotens vänstra sida. X -axelplattformen har en hylla på toppen där en arm fogas med en skruv. I den andra änden av armen fogas en annan arm med skruv och den här är ansluten till servohornet. Alla leder är rörliga, och servon kan driva X -axelplattformen på X -axelskenorna genom att vrida hornet åt vänster/höger vilket skulle få armarna att trycka/dra plattformen på skenorna.

Fogarna är gjorda med skruv.

Steg 10: Kod

Efter att ha byggt kroppen och kretsen, ladda upp koden på Arduino. Sätt roboten parallellt med tangentbordet/pianot X -axelplattformen börjar först röra sig mot vänster och stannar vid en viss punkt. Flytta roboten tills pianot C -tangenten möter den punkten. Detta är ett avgörande steg, för utan att placera roboten på detta sätt kommer det inte att spela melodin korrekt. Slå sedan på roboten, den ska börja spela en melodi inom några sekunder.

Koden är ganska grundläggande och har utrymme för förbättringar. Om du vill att roboten ska spela din egen melodi måste du bara lägga den i koden som är ganska lätt.

Steg 11: Måla den

Om du vill måla den som min (jag föreslår starkt att du gör det, det ser mycket bättre ut målat), gör alla kroppsdelar först, se till att de är korrekt skurna. Tvätta dem sedan med tvål så att de är fria från olja och smuts. Folk brukar slipa ytan innan de målar, men här behöver du inte. Spraya ett lager på dem först, ge det tillräckligt med tid att torka (några timmar) och måla sedan ytterligare ett lager. Du kan börja montera delarna och limma ihop dem efter att färgen torkat ut.

Jag använde sprayfärg för att måla min

Steg 12: Placera och organisera elektroniken

Placera och organisera elektroniken
Placera och organisera elektroniken
Placera och organisera elektroniken
Placera och organisera elektroniken

Jag skruvade fast Arduino på bas-PVC-arket och varmlimmade både strömkretsen och LCD-skärmen på baskortet. Organiserade trådarna med varmt lim.

Steg 13: Slutsats: Tack för att du läser instruktionerna

Så här byggde jag Prima. Hoppas att byggloggen var tydlig och lätt att förstå. Om du har några frågor, lämna dem gärna i kommentarsfältet, jag ska försöka svara så tidigt som möjligt.

Framtidsplaner med detta projekt -

  • Att göra en programvara för att programmera Prima lättare.
  • Lägger till tempotappningsfunktion så att du bara kan trycka på en knapp för att justera tempot.
  • Byt ut servon med tystare och snabbare

Om du bygger detta, lämna bilder i kommentaren, jag skulle gärna se din!:)

Rekommenderad: