Բովանդակություն:

Ուլտրաձայնային Pi դաշնամուր `ժեստերի վերահսկմամբ: 10 քայլ (նկարներով)
Ուլտրաձայնային Pi դաշնամուր `ժեստերի վերահսկմամբ: 10 քայլ (նկարներով)

Video: Ուլտրաձայնային Pi դաշնամուր `ժեստերի վերահսկմամբ: 10 քայլ (նկարներով)

Video: Ուլտրաձայնային Pi դաշնամուր `ժեստերի վերահսկմամբ: 10 քայլ (նկարներով)
Video: Շոպենի լավագույնը `ամբողջական Nocturnes 432 Hz- ում 2024, Նոյեմբեր
Anonim
Image
Image
Ուլտրաձայնային Pi դաշնամուր ժեստերի վերահսկմամբ
Ուլտրաձայնային Pi դաշնամուր ժեստերի վերահսկմամբ

Այս նախագիծը որպես էժան օգտագործում է էժան HC-SR04 ուլտրաձայնային տվիչներ և առաջացնում MIDI գրառումներ, որոնք բարձրորակ ձայնի համար կարող են հնչել Raspberry Pi- ի սինթեզատորով:

Նախագիծը նաև օգտագործում է ժեստերի կառավարման հիմնական ձևը, որտեղ երաժշտական գործիքը կարող է փոխվել ՝ ձեռքերը մի քանի վայրկյան պահելով երկու ծայրահեղ սենսորների վրա: Մեկ այլ ժեստ կարող է օգտագործվել Raspberry Pi- ն ավարտելուց հետո փակելու համար:

Վերոնշյալ տեսանյութը ցույց է տալիս պատրաստի արտադրանքը լազերային կտրված պարզ պատյանում: Ավելի ուշ այս ուսանելի նյութում կա ավելի խորը տեսանյութ, որը բացատրում է, թե ինչպես է աշխատում նախագիծը:

Ես ստեղծեցի այս նախագիծը The Gizmo Dojo- ի (Broomfield, CO) իմ տեղական արտադրողի հետ համատեղ `որոշ ինտերակտիվ ցուցանմուշներ պատրաստելու համար, որոնք մենք կարող ենք տանել տեղական STEM/STEAM միջոցառումներին և Maker Faires- ին:

Խնդրում ենք նաև ծանոթանալ վերջին փաստաթղթերին և ձեռնարկներին ՝ https://theotherandygrove.com/octasonic/, որը այժմ պարունակում է տեղեկատվություն այս նախագծի Python տարբերակի վերաբերյալ (այս հրահանգը գրվել է Rust տարբերակի համար):

Քայլ 1: Բաղադրությունը

Այս հրահանգի համար ձեզ հարկավոր են հետևյալ բաղադրիչները.

  • Raspberry Pi (2 կամ 3) SD քարտով
  • 8 HC-SR04 ուլտրաձայնային տվիչներ
  • Octasonic Breakout տախտակ
  • Երկկողմանի տրամաբանական մակարդակի փոխարկիչ
  • 32 x 12 "Իգական-իգական Jumper լարեր` ուլտրաձայնային տվիչների միացման համար
  • 13 x 6 "Իգական-իգական Jumper լարեր` Raspberry Pi, Octasonic և Logic Level Converter միացնելու համար
  • Հարմար սնուցման աղբյուր Raspberry Pi- ի համար
  • ԱՀ բարձրախոսներ կամ նմանատիպ

Ես խորհուրդ կտամ հնարավորության դեպքում օգտագործել Raspberry Pi 3 -ը, քանի որ այն ունի ավելի շատ հաշվողական հզորություն, ինչը կհանգեցնի ավելի արձագանքող և հաճելի ձայնի: Այն կարող է լավ աշխատել Raspberry Pi 2 -ի հետ ՝ մի փոքր շտկելով, բայց ես չէի փորձի օգտագործել բնօրինակ Raspberry Pi- ն այս նախագծի համար:

HC -SR04 ուլտրաձայնային տվիչները ունեն 4 միացում `5V, GND, Trigger և Echo: Սովորաբար, Trigger- ը և Echo- ն միացված են միկրոկառավարիչի կամ Raspberry Pi- ի առանձին կապում, բայց դա նշանակում է, որ 8 սենսոր միացնելու համար անհրաժեշտ կլինի օգտագործել 16 կապում, և դա գործնական չէ: Այստեղ է, որ գալիս է Octasonic breakout տախտակը: Այս տախտակը միանում է բոլոր տվիչներին և ունի հատուկ միկրոկոնտրոլեր, որը վերահսկում է սենսորները, այնուհետև շփվում է Raspberry Pi- ի հետ SPI- ով:

HC-SR04- ը պահանջում է 5V, իսկ Raspberry Pi- ն ՝ ընդամենը 3.3V, ուստի դրա համար մեզ նաև տրամաբանական մակարդակի փոխարկիչ է պետք, որը Raspberry Pi- ին կմիացնի Octasonic breakout տախտակին:

Քայլ 2. Միացրեք Ուլտրաձայնային տվիչները Octasonic Board- ին

Միացրեք Ուլտրաձայնային տվիչները Octasonic Board- ին
Միացրեք Ուլտրաձայնային տվիչները Octasonic Board- ին
Միացրեք Ուլտրաձայնային տվիչները Octasonic Board- ին
Միացրեք Ուլտրաձայնային տվիչները Octasonic Board- ին

Յուրաքանչյուր ուլտրաձայնային տվիչ տախտակին միացնելու համար օգտագործեք 4 կին-կին թռիչքային լարեր, զգույշ եղեք դրանք ճիշտ շրջելիս: Տախտակը նախագծված է այնպես, որ քորոցները նույն կարգի են, ինչպես ուլտրաձայնային տվիչի քորոցները: Տախտակի վրա ձախից աջ, կապում են GND, Trigger, Echo, 5V:

Քայլ 3. Միացրեք տրամաբանական մակարդակի փոխարկիչը Octasonic տախտակին

Միացրեք տրամաբանական մակարդակի փոխարկիչը Octasonic տախտակին
Միացրեք տրամաբանական մակարդակի փոխարկիչը Octasonic տախտակին

Raspberry Pi- ն և Octasonic Board- ը շփվում են SPI- ի միջոցով: SPI- ն օգտագործում է 4 լար:

  • Master In, Slave Out (MISO)
  • Master Out, Slave In (MOSI)
  • Սերիական ժամացույց (SCK)
  • Ստրուկի ընտրություն (SS)

Բացի այդ, մենք պետք է միացնենք հոսանքը (5V և GND):

Տրամաբանական մակարդակի փոխարկիչն ունի երկու կողմ `ցածր լարման (LV) և բարձր լարման (HV): Ազնվամորին կկապվի LV կողմին, քանի որ այն 3.3 Վ է: Octasonic- ը միանալու է HV կողմին, քանի որ այն 5V է:

Այս քայլը նախատեսված է Octasonic- ը տրամաբանական մակարդակի փոխարկիչի HV կողմին միացնելու համար:

Տեսեք այս քայլին կցված լուսանկարը, որը ցույց է տալիս, թե որ կապերն են պետք միացված լինել տրամաբանական մակարդակի փոխարկիչին:

Octasonic- ից Logic Level փոխարկիչին միացումները պետք է լինեն հետևյալը.

  • 5V դեպի HV
  • SCK- ից HV4
  • MISO- ից HV3- ին
  • MOSI- ից HV2- ին
  • SS- ից HV1
  • GND- ից GND

Քայլ 4. Տրամաբանական մակարդակի փոխարկիչը միացրեք Raspberry Pi- ին

Միացրեք տրամաբանական մակարդակի փոխարկիչը Raspberry Pi- ին
Միացրեք տրամաբանական մակարդակի փոխարկիչը Raspberry Pi- ին

Raspberry Pi- ն և Octasonic Board- ը շփվում են SPI- ի միջոցով: SPI- ն օգտագործում է 4 լար:

  • Master In, Slave Out (MISO)
  • Master Out, Slave In (MOSI)
  • Սերիական ժամացույց (SCK)
  • Ստրուկի ընտրություն (SS)

Բացի այդ, մենք պետք է միացնենք հոսանքը (3.3V և GND): Տրամաբանական մակարդակի փոխարկիչն ունի երկու կողմ `ցածր լարման (LV) և բարձր լարման (HV): Ազնվամորին կկապվի LV կողմին, քանի որ այն 3.3 Վ է: Octasonic- ը միանալու է HV կողմին, քանի որ այն 5V է:

Այս քայլը նախատեսված է Raspberry Pi- ն տրամաբանական մակարդակի փոխարկիչի LV կողմին միացնելու համար:

Raspbery Pi- ից Logic Level փոխարկիչին միացումները պետք է լինեն հետևյալը.

  • 3.3V դեպի LV
  • GPIO11 (SPI_SCLK) դեպի LV4
  • GPIO09 (SPI_MISO) դեպի LV3
  • GPIO10 (SPI_MOSI) դեպի LV2
  • GPIO08 (SPI_CE0_N) SS- ից LV1
  • GND- ից GND

Օգտագործեք այս քայլին կցված դիագրամը ՝ Raspberry Pi- ի ճիշտ կապերը գտնելու համար:

Քայլ 5. Միացրեք Raspberry Pi 5V- ը Octasonic 5V- ին

Միացրեք Raspberry Pi 5V- ը Octasonic 5V- ին
Միացրեք Raspberry Pi 5V- ը Octasonic 5V- ին
Միացրեք Raspberry Pi 5V- ը Octasonic 5V- ին
Միացրեք Raspberry Pi 5V- ը Octasonic 5V- ին

Կա մեկ վերջնական մետաղալար ավելացնելու համար: Մենք իրականում պետք է սնուցենք Octasonic տախտակը 5V- ով, այնպես որ մենք դա անում ենք ՝ միացնելով Raspberry Pi 5V կապումներից մեկը Octasonic AVR վերնագրի 5V կապին: Սա AVR վերնագրի բլոկի ներքևի ձախ կապն է (սա 2 x 3 բլոկն է տախտակի վերևի աջ մասում): Տեսեք կից լուսանկարը, որը ցույց է տալիս, թե որտեղ է գտնվում AVR բլոկը:

Տես Raspberry Pi- ի 5V կապը գտնելու համար տես մյուս կցված դիագրամը:

Քայլ 6: Տեղադրեք ծրագրակազմ

Տեղադրեք Raspian- ը

Սկսեք Raspbian Jessie- ի մաքուր տեղադրմամբ, այնուհետև թարմացրեք այն վերջին տարբերակին.

sudo apt-get թարմացում

sudo apt-get բարելավում

Միացնել SPI- ն

Այս նախագծի աշխատանքի համար դուք պետք է միացնեք SPI- ն Raspberry Pi- ի վրա: Դա անելու համար օգտագործեք Raspberry Pi Configuration ծրագիրը:

Կարևոր է նաև, որ SPI- ն ուժի մեջ մտնելուց հետո վերագործարկեք Pi- ն:

Տեղադրեք FluidSynth- ը

Fluidsynth- ը զարմանալի անվճար ծրագրակազմի MIDI սինթեզ է: Դուք կարող եք այն տեղադրել հրամանի տողից այս հրամանով.

sudo apt-get տեղադրել fluidsynth

Տեղադրեք Rust ծրագրավորման լեզուն

Ուլտրաձայնային Pi դաշնամուրն իրականացվում է Mozilla- ի Rust ծրագրավորման լեզվով (այն նման է C ++ - ին, բայց առանց վատ բիթերի): Դա այն է, ինչ այս օրերին օգտագործում են բոլոր զով երեխաները:

Հետևեք https://rustup.rs/ հրահանգներին ՝ Rust- ը տեղադրելու համար: Ձեր ժամանակը խնայելու համար հրահանգներն են `գործարկել այս մեկ հրամանը: Տեղադրման ընթացքում կարող եք ընդունել ցանկացած հարցի կանխադրված պատասխան:

ՈEՇԱԴՐՈԹՅՈՆ. Այս հրահանգը տեղադրելուց հետո, Raspberry Pi- ի վրա Rust- ի տեղադրման հետ կապված որոշ խնդիրներ կան: Վատ ժամանակաշրջան. Հուսանք, որ նրանք շուտով դա կշտկեն: Ես աշխատում եմ պատկերի ստեղծման վրա, որը մարդիկ կարող են ներբեռնել և այրել SD քարտի վրա: Եթե ցանկանում եք դա, խնդրում եմ կապվեք ինձ հետ:

արտահանել RUSTUP_USE_HYPER = 1 պտույտ https://sh.rustup.rs -sSf | շ

Ներբեռնեք ուլտրաձայնային Pi Piano- ի աղբյուրի կոդը

Ուլտրաձայնային Pi Piano աղբյուրի կոդի սկզբնաղբյուրը տեղակայված է github- ում: Կոդ ստանալու երկու տարբերակ կա. Եթե ծանոթ եք git- ին և github- ին, կարող եք կլոնավորել repo- ն ՝

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

Այլապես, կարող եք ներբեռնել վերջին կոդի փոստային ֆայլ:

Կազմեք աղբյուրի կոդը

cd Ուլտրաձայնային PiPiano

բեռների կառուցում -թողարկում

Փորձարկեք կոդը

Նախքան հաջորդ քայլին երաժշտություն պատրաստելը, եկեք համոզվենք, որ ծրագրակազմն աշխատում է, և որ մենք կարող ենք կարդալ տվիչների վավերական տվյալները:

Օգտագործեք հետևյալ հրամանը `ծրագիրը գործարկելու համար: Սա կարդալու է տվիչների տվյալները և դրանք թարգմանելու է MIDI նշումների, որոնք այնուհետև տպվում են վահանակի վրա: Սենսորների վրա ձեր ձեռքը տեղափոխելիս պետք է տեսնեք, թե ինչպես են տվյալները ստեղծվում: Եթե ոչ, ապա այս հրահանգի վերջում անցեք անսարքությունների վերացման բաժին:

բեռների վազք -թողարկում

Եթե դուք հետաքրքրասեր եք, «-ազատ արձակել» դրոշը Rust- ին ասում է, որ հնարավորինս արդյունավետ կազմի ծածկագիրը ՝ ի տարբերություն «-վրիպազերծման» կանխադրված պարամետրի:

Քայլ 7: Ստեղծեք երաժշտություն:

Համոզվեք, որ դեռ գտնվում եք այն գրացուցակում, որտեղ ներբեռնել եք սկզբնական կոդը և գործարկել հետևյալ հրամանը:

Այս «run.sh» սցենարը համոզվում է, որ ծածկագիրը կազմված է, այնուհետև գործարկում է կոդը ՝ ելքը հոսելով հոսքի մեջ:

./run.sh

Համոզվեք, որ Raspberry Pi- ի 3.5 մմ աուդիո խցիկին միացված ուժեղացված բարձրախոսներ ունեք և պետք է երաժշտություն լսել սենսորների վրա ձեռքերը շարժելիս:

Եթե երաժշտություն չեք լսում և կցված եք HDMI մոնիտոր, ապա դրա փոխարեն, հավանաբար, ձայնի ելքը գնում է այնտեղ: Դա շտկելու համար պարզապես գործարկեք այս հրամանը և նորից վերագործարկեք Pi Piano- ն.

sudo amixer cset numid = 3 1

Ձայնի փոփոխություն

Theավալը (կամ «շահույթը») նշվում է «-g» պարամետրով մինչև fluidsynth: Կարող եք փոփոխել run.sh սցենարը և փոխել այս արժեքը: Խնդրում ենք նկատի ունենալ, որ այս պարամետրի փոքր փոփոխությունները հանգեցնում են ծավալի մեծ փոփոխության, ուստի փորձեք այն փոքր քանակությամբ ավելացնել (օրինակ ՝ 0.1 կամ 0.2):

Քայլ 8: Gեստերի վերահսկում

Stepրագրի ամբողջական ցուցադրման համար տեսեք այս քայլին կից տեսանյութը, ներառյալ, թե ինչպես են աշխատում ժեստերի կառավարման տարրերը:

Հայեցակարգը շատ պարզ է: Softwareրագիրը հետևում է, թե որ սենսորներն են ծածկված (10 սմ -ի սահմաններում), և որոնք `ոչ: Սա թարգմանվում է 8 երկուական թվերի (1 կամ 0): Սա շատ հարմար է, քանի որ 8 երկուական թվերի հաջորդականությունը կազմում է «բայթ», որը կարող է ներկայացնել թվեր 0 -ից 255 -ի միջև: Եթե դեռ չգիտեք երկուական թվերի մասին, ապա խորհուրդ եմ տալիս ձեռնարկ փնտրել: Երկուական թվերը սովորելու հիմնարար հմտություն են, եթե ցանկանում եք ավելին իմանալ ծրագրավորման մասին:

Theրագիրը քարտեզագրում է սենսորների ներկա վիճակը մեկ բայթին, որը ներկայացնում է ընթացիկ ժեստը: Եթե մի շարք ցիկլերի ընթացքում այդ թիվը մնում է նույնը, ապա ծրագրաշարը գործում է այդ ժեստի վրա:

Քանի որ ուլտրաձայնային տվիչները չափազանց հուսալի չեն և կարող են միջամտություն լինել սենսորների միջև, դուք պետք է որոշ համբերություն ցուցաբերեք ժեստերն օգտագործելիս: Փորձեք տարբերել սենսորներից ձեր ձեռքերը պահող հեռավորությունը, ինչպես նաև ձեր ձեռքերը պահելու անկյունը: Դուք նույնպես փորձում եք սենսորների վրա պահել ինչ -որ հարթ և ամուր բան ՝ ձայնն ավելի լավ արտացոլելու համար:

Քայլ 9: Պատյան պատրաստելը

Եթե ցանկանում եք սա դարձնել մշտական ցուցադրություն և կարողանաք այն ցուցադրել մարդկանց, հավանաբար կցանկանաք ինչ -որ պարիսպ պատրաստել: Սա կարող է պատրաստվել փայտից, ստվարաթղթից կամ շատ այլ նյութերից: Ահա մի տեսանյութ, որը ցույց է տալիս այն պարիսպը, որի վրա մենք աշխատում ենք այս նախագծի համար: Սա պատրաստված է փայտից, ուլտրաձայնային տվիչները տեղում պահելու համար բացված անցքերով:

Քայլ 10: Խնդիրների վերացում և հաջորդ քայլեր

Անսարքությունների վերացում

Եթե նախագիծը չի աշխատում, ապա դա սովորաբար կապված է էլեկտրագծերի սխալի հետ: Մի շտապեք կրկնակի ստուգել բոլոր կապերը:

Մեկ այլ ընդհանուր խնդիր է SPI- ի միացումը և pi- ի վերագործարկումը:

Խնդրում ենք այցելել https://theotherandygrove.com/octasonic/ ամբողջական փաստաթղթերի համար, ներառյալ անսարքությունների վերացման խորհուրդները, Rust և Python- ի հատուկ հոդվածներով, ինչպես նաև տեղեկատվություն, թե ինչպես ստանալ աջակցություն:

Հաջորդ քայլերը

Երբ նախագիծն աշխատի, խորհուրդ եմ տալիս փորձարկել ծածկագիրը և փորձել տարբեր երաժշտական գործիքներ: MIDI գործիքի կոդերը 1 -ից 127 են և փաստաթղթավորված են այստեղ:

Wantանկանու՞մ եք մեկ երաժշտական գործիք, որի յուրաքանչյուր սենսոր նվագի տարբեր օկտավա: Գուցե կցանկանայի՞ք, որ յուրաքանչյուր սենսոր դրա փոխարեն առանձին գործիք լիներ: Հնարավորությունները գրեթե անսահմանափակ են:

Հուսով եմ, որ ձեզ դուր եկավ այս ուսանելի ծրագիրը: Հավանեք, եթե հավանեցիք, և անպայման բաժանորդագրվեք ինձ այստեղ և իմ YouTube ալիքին ՝ ապագա նախագծերը տեսնելու համար:

Խորհուրդ ենք տալիս: