Talaan ng mga Nilalaman:

Ultrasonic Pi Piano Na May Mga Kontrol sa Kilos !: 10 Hakbang (na may Mga Larawan)
Ultrasonic Pi Piano Na May Mga Kontrol sa Kilos !: 10 Hakbang (na may Mga Larawan)

Video: Ultrasonic Pi Piano Na May Mga Kontrol sa Kilos !: 10 Hakbang (na may Mga Larawan)

Video: Ultrasonic Pi Piano Na May Mga Kontrol sa Kilos !: 10 Hakbang (na may Mga Larawan)
Video: Штукатурка стен - самое полное видео! Переделка хрущевки от А до Я. #5 2024, Nobyembre
Anonim
Image
Image
Ultrasonic Pi Piano Na May Mga Kontrol sa Kilos!
Ultrasonic Pi Piano Na May Mga Kontrol sa Kilos!

Gumagamit ang proyektong ito ng murang HC-SR04 ultrasonic sensors bilang mga input at bumubuo ng mga tala ng MIDI na maaaring i-play sa pamamagitan ng isang synthesizer sa Raspberry Pi para sa isang mataas na kalidad ng tunog.

Gumagamit din ang proyekto ng isang pangunahing anyo ng pagkontrol sa kilos, kung saan ang instrumentong pangmusika ay maaaring mabago sa pamamagitan ng paghawak ng iyong mga kamay sa dalawang pinakamalabas na sensor sa loob ng ilang segundo. Ang isa pang kilos ay maaaring magamit upang isara ang Raspberry Pi sa sandaling tapos ka na.

Ipinapakita ng video sa itaas ang natapos na produkto sa isang simpleng enclosure ng laser-cut. Mayroong isang mas malalim na video sa paglaon sa itinuturo na ito na nagpapaliwanag kung paano gumagana ang proyekto.

Nilikha ko ang proyektong ito kasabay ng The Gizmo Dojo (aking lokal na makerspace sa Broomfield, CO) upang makagawa ng mga interactive na eksibit na maaari naming dalhin sa mga lokal na kaganapan sa STEM / STEAM at Maker Faires.

Mangyaring suriin din ang pinakabagong dokumentasyon at mga tutorial sa https://theotherandygrove.com/octasonic/ na kasama ngayon ang impormasyon sa isang bersyon ng Python ng proyektong ito (ang itinuturo na ito ay isinulat para sa bersyon ng Rust).

Hakbang 1: Mga Sangkap

Para sa pagtuturo na ito, kakailanganin mo ang mga sumusunod na sangkap:

  • Raspberry Pi (2 o 3) na may SD card
  • 8 HC-SR04 ultrasonic sensors
  • Oktubre ng Breakout Board
  • Bi-Directional Logic Level Converter
  • 32 x 12 "Mga Babae-Babae na Jumper Wires para sa pagkonekta ng mga ultrasonic sensor
  • 13 x 6 "Mga Wire ng Jumper ng Babae-Babae para sa pagkonekta sa Raspberry Pi, Octasonic, at Logic Level Converter
  • Angkop na supply ng kuryente para sa Raspberry Pi
  • Mga nagsasalita ng PC o katulad

Inirerekumenda ko ang paggamit ng isang Raspberry Pi 3 kung maaari dahil mayroon itong higit na lakas sa computing, na nagreresulta sa isang mas tumutugon at nakalulugod na tunog. Maaari itong gumana nang maayos sa isang Raspberry Pi 2 na may kaunting pag-aayos ngunit hindi ko susubukan na gamitin ang orihinal na Raspberry Pi para sa proyektong ito.

Ang mga HC-SR04 ultrasonic sensor ay may 4 na koneksyon - 5V, GND, Trigger, at Echo. Karaniwan, ang Trigger at Echo ay konektado sa magkakahiwalay na mga pin sa isang microcontroller o Raspberry Pi ngunit nangangahulugan ito na kakailanganin mong gumamit ng 16 na mga pin upang ikonekta ang 8 sensor, at hindi ito praktikal. Dito pumapasok ang board ng breakout ng Octasonic. Ang board na ito ay kumokonekta sa lahat ng mga sensor at mayroong isang nakalaang microcontroller na sinusubaybayan ang mga sensor at pagkatapos ay nakikipag-usap sa Raspberry Pi sa paglipas ng SPI.

Ang HC-SR04 ay nangangailangan ng 5V at ang Raspberry Pi ay 3.3V lamang, kaya ito rin ang dahilan kung bakit kailangan din namin ang converter ng antas ng lohika na magkokonekta sa Raspberry Pi sa board ng breakout ng Octonics.

Hakbang 2: Ikonekta ang Mga Ultrasonikong Sensor sa Lupon ng Oktubre

Ikonekta ang Mga Ultrasonikong Sensor sa Lupon ng Octasonic
Ikonekta ang Mga Ultrasonikong Sensor sa Lupon ng Octasonic
Ikonekta ang Mga Ultrasonikong Sensor sa Lupon ng Octasonic
Ikonekta ang Mga Ultrasonikong Sensor sa Lupon ng Octasonic

Gumamit ng 4 na mga babaeng babaeng lumulukso upang ikonekta ang bawat ultrasonic sensor sa board, maingat na ikonekta ang mga ito nang wastong paraan. Ang board ay idinisenyo upang ang mga pin ay nasa parehong pagkakasunud-sunod ng mga pin sa ultrasonic sensor. Mula kaliwa hanggang kanan sa pisara, ang mga pin ay GND, Trigger, Echo, 5V.

Hakbang 3: Ikonekta ang Converter ng Antas ng Logic sa Lupon ng Octasonic

Ikonekta ang Converter ng Antas ng Logic sa Lupon ng Octasonic
Ikonekta ang Converter ng Antas ng Logic sa Lupon ng Octasonic

Ang Raspberry Pi at Octonics Board ay nakikipag-usap sa SPI. Gumagamit ang SPI ng 4 na wires:

  • Master In, Slave Out (MISO)
  • Master Out, Slave In (MOSI)
  • Serial Clock (SCK)
  • Piliin ang Alipin (SS)

Bilang karagdagan, kailangan naming ikonekta ang lakas (5V at GND).

Ang converter ng antas ng lohika ay may dalawang panig - isang mababang boltahe (LV) at isang mataas na boltahe (HV). Ang Raspberry ay kumokonekta sa panig ng LV dahil ito ay 3.3V. Ang Octasonic ay kumokonekta sa panig ng HV dahil ito ay 5V.

Ang hakbang na ito ay para sa pagkonekta sa Octasonic sa panig ng HV ng converter ng antas ng lohika

Tingnan ang larawan na nakakabit sa hakbang na ito na ipinapakita kung aling mga pin ang dapat na konektado sa converter ng antas ng lohika.

Ang mga koneksyon mula sa Octasonic sa converter ng Antas ng Logic ay dapat na ang mga sumusunod:

  • 5V sa HV
  • SCK to HV4
  • MISO sa HV3
  • MOSI sa HV2
  • SS hanggang HV1
  • GND sa GND

Hakbang 4: Ikonekta ang Logic Level Converter sa Raspberry Pi

Ikonekta ang Logic Level Converter sa Raspberry Pi
Ikonekta ang Logic Level Converter sa Raspberry Pi

Ang Raspberry Pi at Octonics Board ay nakikipag-usap sa SPI. Gumagamit ang SPI ng 4 na wires:

  • Master In, Slave Out (MISO)
  • Master Out, Slave In (MOSI)
  • Serial Clock (SCK)
  • Piliin ang Alipin (SS)

Bilang karagdagan, kailangan naming ikonekta ang lakas (3.3V at GND). Ang converter ng antas ng lohika ay may dalawang panig - isang mababang boltahe (LV) at isang mataas na boltahe (HV). Ang Raspberry ay kumokonekta sa panig ng LV dahil ito ay 3.3V. Ang Octasonic ay kumokonekta sa panig ng HV dahil ito ay 5V.

Ang hakbang na ito ay para sa pagkonekta sa Raspberry Pi sa LV na bahagi ng converter ng antas ng lohika

Ang mga koneksyon mula sa Raspbery Pi sa Logic Level converter ay dapat na tulad ng sumusunod:

  • 3.3V sa LV
  • GPIO11 (SPI_SCLK) hanggang LV4
  • GPIO09 (SPI_MISO) hanggang LV3
  • GPIO10 (SPI_MOSI) hanggang LV2
  • GPIO08 (SPI_CE0_N) SS hanggang LV1
  • GND sa GND

Gamitin ang diagram na nakakabit sa hakbang na ito upang hanapin ang tamang mga pin sa Raspberry Pi!

Hakbang 5: Ikonekta ang Raspberry Pi 5V sa Octasonic 5V

Ikonekta ang Raspberry Pi 5V sa Octasonic 5V
Ikonekta ang Raspberry Pi 5V sa Octasonic 5V
Ikonekta ang Raspberry Pi 5V sa Octasonic 5V
Ikonekta ang Raspberry Pi 5V sa Octasonic 5V

Mayroong isang pangwakas na kawad upang idagdag. Kailangan naming aktwal na i-power ang board ng Octasonic na may 5V, kaya ginagawa namin iyon sa pamamagitan ng pagkonekta sa isa sa mga Raspberry Pi 5V na pin sa 5V pin sa header ng Octasonic AVR. Ito ang ibabang kaliwang pin sa block ng header ng AVR (ito ang bloke ng 2 x 3 sa kanang tuktok ng board). Tingnan ang nakalakip na larawan na nagpapakita kung nasaan ang AVR block.

Tingnan ang iba pang naka-attach na diagram upang hanapin ang 5V pin sa Raspberry Pi.

Hakbang 6: I-install ang Software

I-install ang Raspian

Magsimula sa isang malinis na pag-install ng Raspbian Jessie, pagkatapos ay i-update ito sa pinakabagong bersyon:

sudo apt-get update

sudo apt-get upgrade

Paganahin ang SPI

Dapat mong paganahin ang SPI sa Raspberry Pi para gumana ang proyektong ito! Gamitin ang utility na Pag-configure ng Raspberry Pi upang magawa ito.

Mahalaga rin na i-reboot ang Pi pagkatapos paganahin ang SPI upang magkabisa ito

I-install ang FluidSynth

Ang Fluidsynth ay isang kamangha-manghang libreng software MIDI synth. Maaari mong mai-install ito mula sa linya ng utos kasama ang utos na ito:

sudo apt-get install fluidsynth

I-install ang Wika sa Programming ng Rust

Ang Ultrasonic Pi Piano ay ipinatupad sa Rust Programming Language mula sa Mozilla (parang C ++ ngunit wala ang mga masamang piraso). Ito ang ginagamit ng lahat ng mga cool na bata sa mga panahong ito.

Sundin ang mga tagubilin sa https://rustup.rs/ upang mai-install ang Rust. Upang makatipid ng oras sa iyo, ang mga tagubilin ay upang patakbuhin ang isang utos na ito. Maaari mong tanggapin ang mga default na sagot sa anumang mga katanungan sa panahon ng pag-install.

TANDAAN: Dahil nai-post ang itinuturo na ito, maraming mga isyu sa pag-install ng Rust sa Raspberry Pi. Masamang tiyempo: - / ngunit binago ko ang utos sa ibaba upang maisaayos ang isyu. Sana ayusin nila ito sa lalong madaling panahon. Nagtatrabaho ako sa paglikha ng isang imahe na maaaring ma-download at masunog ng mga tao sa isang SD card. Kung nais mo iyan, mangyaring makipag-ugnay sa akin.

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

I-download ang source code ng Ultrasonic Pi Piano

Ang source code para sa source code ng Ultrasonic Pi Piano ay naka-host sa github. Mayroong dalawang mga pagpipilian para sa pagkuha ng code. Kung pamilyar ka sa git at github, maaari mong i-clone ang repo:

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

Bilang kahalili, maaari kang mag-download ng isang zip file ng pinakabagong code.

Compile ang source code

cd UltrasonicPiPiano

pagtatayo ng kargamento - palabasin

Subukan ang code

Bago kami magpatuloy sa paggawa ng musika sa susunod na hakbang, tiyakin na tumatakbo ang software at mababasa natin ang wastong data mula sa mga sensor.

Gamitin ang sumusunod na utos upang patakbuhin ang application. Magbabasa ito ng data mula sa mga sensor at isasalin ang mga ito sa mga tala ng MIDI na pagkatapos ay nai-print sa console. Habang inililipat mo ang iyong kamay sa mga sensor, dapat mong makita ang pagbuo ng data. Kung hindi, pagkatapos ay lumaktaw sa seksyon ng pag-troubleshoot sa dulo ng pagtuturo na ito.

pagpapatakbo ng kargamento - palabasin

Kung ikaw ay nagtataka, ang flag na "--release" ay nagsasabi sa Rust na ipagsama ang code nang mahusay hangga't maaari, taliwas sa default na setting na "--debug".

Hakbang 7: Gumawa ng Ilang Musika

Tiyaking nasa direktoryo ka pa rin kung saan mo na-download ang source code at patakbuhin ang sumusunod na utos.

Tinitiyak ng script na "run.sh" na ang code ay naipon at pagkatapos ay tatakbo ang code, piping ang output sa fluidsynth.

./run.sh

Tiyaking na-amplify mo ang mga speaker na konektado sa 3.5mm audio jack sa Raspberry Pi at dapat mong pakinggan ang musika habang igagalaw mo ang iyong mga kamay sa mga sensor.

Kung hindi ka nakakarinig ng musika at mayroon kang naka-attach na HDMI monitor, kung gayon ang audio output ay marahil ay pupunta doon sa halip. Upang ayusin ito, patakbuhin lamang ang utos na ito at pagkatapos ay muling simulan ang Pi Piano:

sudo amixer cset numid = 3 1

Pagbabago ng lakas ng tunog

Ang dami (o "makakuha") ay tinukoy na may parameter na "-g" sa fluidsynth. Maaari mong baguhin ang run.sh script at baguhin ang halagang ito. Mangyaring tandaan na ang maliliit na pagbabago sa parameter na ito ay nagreresulta sa isang malaking pagbabago sa dami, kaya subukang dagdagan ito ng maliit na halaga (tulad ng 0.1 o 0.2).

Hakbang 8: Pagkontrol sa Kilos

Tingnan ang video na naka-attach sa hakbang na ito para sa isang buong pagpapakita ng proyekto, kasama ang kung paano gumagana ang mga pagkontrol sa kilos.

Napaka-simple ng konsepto. Sinusubaybayan ng software kung aling mga sensor ang sakop (sa loob ng 10cm) at alin ang hindi. Isinalin ito sa 8 mga binary na numero (1 o 0). Ito ay napaka-maginhawa, dahil sa isang pagkakasunud-sunod ng 8 mga binary na numero ay gumagawa ng isang "byte" na maaaring kumatawan sa mga numero sa pagitan ng 0 at 255. Kung hindi mo pa alam ang tungkol sa mga binary number kung gayon inirerekumenda kong maghanap ng isang tutorial. Ang mga binary number ay isang pangunahing kasanayan upang malaman kung nais mong matuto nang higit pa tungkol sa programa.

Inilalagay ng software ang kasalukuyang estado ng mga sensor sa isang solong byte na kumakatawan sa kasalukuyang kilos. Kung ang numerong iyon ay mananatiling pareho para sa isang bilang ng mga cycle, pagkatapos ay kumikilos ang software sa kilos na iyon.

Dahil ang mga ultrasonic sensor ay hindi masyadong maaasahan at maaaring magkaroon ng pagkagambala sa pagitan ng mga sensor, kakailanganin mong magpakita ng ilang pasensya kapag gumagamit ng mga kilos. Subukang ibahin ang distansya na hawak mo ang iyong mga kamay mula sa mga sensor pati na rin ang anggulo na hinahawakan mo ang iyong mga kamay. Sinubukan mo ding malamig na humawak ng isang bagay na flat at solid sa mga sensor upang mas mahusay na maipakita ang tunog.

Hakbang 9: Paggawa ng isang Enclosure

Kung nais mong gawin itong isang permanenteng eksibit at maipakita ito sa mga tao, malamang na nais mong gumawa ng isang uri ng enclosure. Maaari itong gawin mula sa kahoy, karton, o maraming iba pang mga materyales. Narito ang isang video na ipinapakita ang enclosure na aming pinagtatrabahuhan para sa proyektong ito. Ginawa ito mula sa kahoy, na may mga butas na na-drill upang mailagay sa lugar ang mga ultrasonic sensor.

Hakbang 10: Pag-troubleshoot at Mga Susunod na Hakbang

Pag-troubleshoot

Kung hindi gumagana ang proyekto, kadalasang bumababa sa isang error sa mga kable. Dalhin ang iyong oras upang i-double check ang lahat ng mga koneksyon.

Ang isa pang karaniwang isyu ay ang pagkabigo upang paganahin ang SPI at muling pag-reboot ang pi.

Mangyaring bisitahin ang https://theotherandygrove.com/octasonic/ para sa buong dokumentasyon kabilang ang mga tip sa pagto-troubleshoot, kasama ang mga tiyak na artikulo ng Rust at Python, at impormasyon din kung paano makakuha ng suporta.

Mga Susunod na Hakbang

Kapag mayroon kang proyekto na gumagana, inirerekumenda kong mag-eksperimento sa code at subukan ang iba't ibang mga instrumentong pangmusika. Ang mga code ng instrumento ng MIDI ay nasa pagitan ng 1 at 127 at naidodokumento dito.

Nais mo ba ng isang solong instrumentong pangmusika sa bawat sensor na tumutugtog ng ibang oktave? Marahil ay nais mo ang bawat sensor na maging isang hiwalay na instrumento sa halip? Ang mga posibilidad ay halos walang hanggan!

Inaasahan kong nasiyahan ka sa pagtuturo na ito. Mangyaring magustuhan ito kung nagawa mo ito, at tiyaking mag-subscribe sa akin dito at sa aking channel sa YouTube upang makita ang mga proyekto sa hinaharap.

Inirerekumendang: