Mundarija:

Imo -ishorali boshqaruvli ultratovushli pianino!: 10 qadam (rasmlar bilan)
Imo -ishorali boshqaruvli ultratovushli pianino!: 10 qadam (rasmlar bilan)

Video: Imo -ishorali boshqaruvli ultratovushli pianino!: 10 qadam (rasmlar bilan)

Video: Imo -ishorali boshqaruvli ultratovushli pianino!: 10 qadam (rasmlar bilan)
Video: All robot transformer cats version #transformers #shorts 2024, Noyabr
Anonim
Image
Image
Imo -ishorali boshqaruvli Ultrasonik Pi pianino!
Imo -ishorali boshqaruvli Ultrasonik Pi pianino!

Ushbu loyiha arzon HC-SR04 ultratovushli datchiklarni kirish sifatida ishlatadi va yuqori sifatli ovoz uchun Raspberry Pi sintezatori orqali ijro etilishi mumkin bo'lgan MIDI yozuvlarini yaratadi.

Loyihada, shuningdek, imo -ishorani boshqarishning asosiy shakli qo'llaniladi, bunda musiqa asbobini qo'llaringizni bir necha soniya davomida eng tashqi sensorlar ustida ushlab turish orqali o'zgartirish mumkin. Ishingiz tugagandan so'ng, Raspberry Pi -ni o'chirish uchun boshqa imo -ishoradan foydalanish mumkin.

Yuqoridagi videoda tayyor mahsulot lazer bilan kesilgan oddiy korpusda ko'rsatilgan. Loyihaning qanday ishlashini tushuntirib beradigan, keyinchalik bu ko'rsatmali batafsilroq video bor.

Men ushbu loyihani Gizmo Dojo (Broomfield, CO, mening mahalliy ishlab chiqaruvchilar makonim) bilan birgalikda STEM/STEAM mahalliy tadbirlari va Maker yarmarkalarida olib borishimiz mumkin bo'lgan interaktiv eksponatlarni yaratish uchun yaratdim.

Iltimos, https://theotherandygrove.com/octasonic/ saytidagi so'nggi hujjatlar va o'quv qo'llanmalari bilan tanishib chiqing, u hozirda ushbu loyihaning Python versiyasi haqidagi ma'lumotlarni o'z ichiga oladi (bu ko'rsatma Rust versiyasi uchun yozilgan).

1 -qadam: ingredientlar

Bu ko'rsatma uchun sizga quyidagi ingredientlar kerak bo'ladi.

  • Raspberry Pi (2 yoki 3) SD -karta bilan
  • 8 ta HC-SR04 ultratovushli sensorlar
  • Octasonic Breakout Board
  • Ikki tomonlama mantiqiy darajali konvertor
  • Ultrasonik datchiklarni ulash uchun 32 x 12 dyuymli ayol-ayol o'tish simlari
  • Raspberry Pi, Octasonic va Logic Level Converter-ni ulash uchun 13 x 6 dyuymli ayol-jumper simlari
  • Raspberry Pi uchun mos keladigan quvvat manbai
  • Kompyuter dinamiklari yoki shunga o'xshashlar

Iloji bo'lsa, Raspberry Pi 3 -dan foydalanishni tavsiya qilaman, chunki u ko'proq hisoblash quvvatiga ega, natijada ovoz yanada sezgir va yoqimli bo'ladi. U Raspberry Pi 2 bilan yaxshi ishlashi mumkin, lekin men bu loyiha uchun Raspberry Pi -ni ishlatishga urinmayman.

HC -SR04 ultratovushli sensorlar 4 ta ulanishga ega - 5V, GND, Trigger va Echo. Odatda, Trigger va Echo mikrokontroller yoki Raspberry Pi -ning alohida pinlariga ulanadi, lekin bu shuni anglatadiki, siz 8 ta sensorni ulash uchun 16 ta pinni ishlatishingiz kerak bo'ladi va bu amaliy emas. Bu erda sakkiz qirrali taxtali keladi. Bu platada barcha sensorlar ulanadi va sensorlarni kuzatib turuvchi maxsus mikrokontroler mavjud, so'ng SPI orqali Raspberry Pi bilan aloqa o'rnatiladi.

HC-SR04 uchun 5V kerak, Raspberry Pi esa atigi 3,3V, shuning uchun bizga Raspberry Pi ni sakkizinchi panelga ulash uchun mantiq darajasidagi konvertor kerak.

2 -qadam: Ultrasonik sensorlarni sakkizinchi kartaga ulang

Ultrasonik sensorlarni sakkizinchi plataga ulang
Ultrasonik sensorlarni sakkizinchi plataga ulang
Ultrasonik sensorlarni sakkizinchi plataga ulang
Ultrasonik sensorlarni sakkizinchi plataga ulang

Har bir ultrasonik sensorni taxtaga ulash uchun 4 ta ayol-ayol o'tish simlaridan foydalaning va ularni to'g'ri ulashga ehtiyot bo'ling. Kengash, pinlar ultratovush sensori pinlari bilan bir xil tartibda bo'lishi uchun mo'ljallangan. Bortda chapdan o'ngga, pinlar GND, Trigger, Echo, 5V.

3 -qadam: Mantiqiy darajali konvertorni sakkizinchi kartaga ulang

Mantiqiy darajali konvertorni sakkizinchi plataga ulang
Mantiqiy darajali konvertorni sakkizinchi plataga ulang

Raspberry Pi va Octasonic Board SPI orqali muloqot qiladi. SPI 4 ta simdan foydalanadi:

  • Boshqaruv, qullik (MISO)
  • Usta chiqish, qullik (MOSI)
  • Seriyali soat (SCK)
  • Qul tanlash (SS)

Bundan tashqari, biz quvvatni ulashimiz kerak (5V va GND).

Mantiqiy darajadagi konvertor ikki tomonga ega - past kuchlanish (LV) va yuqori kuchlanish (HV). Raspberry LV tomoniga ulanadi, chunki u 3,3V. Octasonic 5V bo'lgani uchun HV tomonga ulanadi.

Bu qadam Octasonic -ni mantiqiy darajadagi konvertorning HV tomoniga ulash uchun mo'ljallangan

Mantiqiy darajadagi konvertorga qaysi pinlarni ulash kerakligini ko'rsatadigan ushbu bosqichga biriktirilgan rasmga qarang.

Octasonic -dan Logic Level konverteriga ulanishlar quyidagicha bo'lishi kerak:

  • 5V dan VVgacha
  • SCVdan HV4gacha
  • MISO dan HV3gacha
  • MOSIdan HV2gacha
  • SS dan HV1gacha
  • GND dan GNDgacha

4 -qadam: Logic Level Converter -ni Raspberry Pi -ga ulang

Logic Level Converter -ni Raspberry Pi -ga ulang
Logic Level Converter -ni Raspberry Pi -ga ulang

Raspberry Pi va Octasonic Board SPI orqali muloqot qiladi. SPI 4 ta simdan foydalanadi:

  • Boshqaruv, qullik (MISO)
  • Usta chiqish, qullik (MOSI)
  • Seriyali soat (SCK)
  • Qul tanlash (SS)

Bundan tashqari, biz quvvatni ulashimiz kerak (3.3V va GND). Mantiqiy darajadagi konvertor ikki tomonga ega - past kuchlanish (LV) va yuqori kuchlanish (HV). Raspberry LV tomoniga ulanadi, chunki u 3,3V. Octasonic 5V bo'lgani uchun HV tomonga ulanadi.

Bu qadam Raspberry Pi -ni mantiqiy darajadagi konvertorning LV tomoniga ulash uchun

Raspbery Pi -dan Logic Level konvertoriga ulanishlar quyidagicha bo'lishi kerak:

  • 3.3V dan LVgacha
  • GPIO11 (SPI_SCLK) dan LV4gacha
  • GPIO09 (SPI_MISO) dan LV3gacha
  • GPIO10 (SPI_MOSI) dan LV2 gacha
  • GPIO08 (SPI_CE0_N) SSdan LV1gacha
  • GND dan GNDgacha

Raspberry Pi -da to'g'ri pimlarni topish uchun ushbu bosqichga biriktirilgan sxemadan foydalaning!

5 -qadam: Raspberry Pi 5V ni Octasonic 5V ga ulang

Raspberry Pi 5V ni Octasonic 5V ga ulang
Raspberry Pi 5V ni Octasonic 5V ga ulang
Raspberry Pi 5V ni Octasonic 5V ga ulang
Raspberry Pi 5V ni Octasonic 5V ga ulang

Qo'shish uchun bitta oxirgi sim bor. Biz haqiqatan ham Octasonic platasini 5V bilan quvvatlantirishimiz kerak, shuning uchun biz Raspberry Pi 5V pinlaridan birini Octasonic AVR sarlavhasidagi 5V piniga ulash orqali qilamiz. Bu AVR sarlavha blokining pastki chap pimi (bu taxtaning o'ng yuqori qismidagi 2 x 3 blok). AVR bloki qaerda ekanligini ko'rsatadigan ilova qilingan rasmga qarang.

Raspberry Pi -dagi 5V pinni topish uchun boshqa biriktirilgan diagramaga qarang.

6 -qadam: Dasturiy ta'minotni o'rnating

Raspian dasturini o'rnating

Raspbian Jessie -ni toza o'rnatishdan boshlang, so'ng uni oxirgi versiyasiga yangilang:

sudo apt-get yangilanishi

sudo apt-get upgrade

SPIni yoqish

Ushbu loyiha ishlashi uchun siz Raspberry Pi -da SPI -ni yoqishingiz kerak! Buning uchun Raspberry Pi Configuration yordam dasturidan foydalaning.

Bundan tashqari, SPI kuchga kirishi uchun uni ishga tushirgandan so'ng, Pi -ni qayta ishga tushirish kerak

FluidSynth -ni o'rnating

Fluidsynth - bu ajoyib bepul MIDI synth dasturi. Siz uni buyruq satridan quyidagi buyruq bilan o'rnatishingiz mumkin:

sudo apt-get install fluidsynth

Rust dasturlash tilini o'rnating

Ultrasonik Pi pianino Mozilla -dan Rust dasturlash tilida amalga oshiriladi (u C ++ ga o'xshaydi, lekin yomon bitlarsiz). Hozirgi kunda hamma zo'r bolalar foydalanmoqda.

Rustni o'rnatish uchun https://rustup.rs/ saytidagi ko'rsatmalarga amal qiling. Vaqtni tejash uchun ko'rsatmalar bitta buyruqni bajarishdir. O'rnatish paytida siz har qanday savollarga standart javoblarni qabul qilishingiz mumkin.

QAYD: Ushbu ko'rsatmalarni joylashtirgandan so'ng, Raspberry Pi -ga Rustni o'rnatishda ba'zi muammolar mavjud. Yomon vaqt:-/ lekin men muammoni hal qilish uchun quyidagi buyruqni o'zgartirdim. Umid qilamizki, ular buni tez orada tuzatadilar. Men odamlar SD -kartaga yuklab olishlari mumkin bo'lgan tasvirni yaratish ustida ishlayapman. Agar xohlasangiz, men bilan bog'laning.

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

Ultrasonik Pi Piano manba kodini yuklab oling

Ultrasonik Pi Pianoning manba kodi github -da joylashgan. Kodni olishning ikkita varianti mavjud. Agar siz git va github bilan tanish bo'lsangiz, repo -ni klonlashingiz mumkin:

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

Shu bilan bir qatorda, eng yangi kodning zip faylini yuklab olishingiz mumkin.

Manba kodini kompilyatsiya qiling

CD UltrasonikPiPiano

yuk ishlab chiqarish -chiqarish

Kodni sinab ko'ring

Keyingi bosqichda musiqa yaratishga o'tishdan oldin, keling, dasturiy ta'minot ishlayotganiga va sensorlardan to'g'ri ma'lumotlarni o'qishimizga ishonch hosil qilaylik.

Ilovani ishga tushirish uchun quyidagi buyruqdan foydalaning. Bu sensorlar ma'lumotlarini o'qiydi va ularni MIDI yozuvlariga tarjima qiladi, so'ngra konsolda chop etiladi. Qo'lingizni datchiklar ustida siljitganda, siz ma'lumot yaratilishini ko'rishingiz kerak. Agar yo'q bo'lsa, unda ko'rsatma oxiridagi muammolarni bartaraf qilish bo'limiga o'ting.

yuk tashish -ozod qilish

Agar siz qiziqmoqchi bo'lsangiz, "-reliz" bayrog'i Rustga kodni iloji boricha samarali kompilyatsiya qilishni buyuradi, aksincha "-debug" standartidan farqli o'laroq.

7 -qadam: Musiqa qiling

Hali ham manba kodini yuklagan katalogda ekanligingizga ishonch hosil qiling va quyidagi buyruqni bajaring.

Bu "run.sh" skripti kodning tuzilganligiga ishonch hosil qiladi va keyin kodni ishga tushiradi va chiqishni fluidsynth -ga o'tkazadi.

./run.sh

Raspberry Pi -dagi 3,5 mm audio raz'emga ulangan dinamiklar o'rnatilganligiga ishonch hosil qiling va qo'llaringizni datchiklar ustida harakatlantirayotganda musiqa eshitishingiz kerak.

Agar siz musiqa eshitmasangiz va sizda HDMI monitor o'rnatilgan bo'lsa, u holda ovoz chiqishi u erga borishi mumkin. Buni tuzatish uchun shunchaki ushbu buyruqni bajaring va keyin Pi Pianino-ni qayta ishga tushiring:

sudo amixer cset numid = 3 1

Ovoz balandligini o'zgartirish

Ovoz (yoki "daromad") "-g" parametri bilan fluidsynth uchun belgilanadi. Run.sh skriptini o'zgartirishingiz va bu qiymatni o'zgartirishingiz mumkin. Shuni esda tutingki, bu parametrdagi kichik o'zgarishlar ovozning katta o'zgarishiga olib keladi, shuning uchun uni kichik hajmlarda (0,1 yoki 0,2 kabi) oshirishga harakat qiling.

8 -qadam: Imo -ishora nazorati

Loyihaning to'liq namoyishi, shu jumladan imo -ishoralar qanday ishlashini bilish uchun ushbu bosqichga biriktirilgan videoni ko'ring.

Kontseptsiya juda oddiy. Dastur qaysi sensorlar yopilganligini (10 sm ichida) va qaysi biri yopilmaganligini kuzatib boradi. Bu 8 ta ikkilik raqamga (1 yoki 0) aylanadi. Bu juda qulay, chunki 8 ta ikkilik raqamlar ketma -ketligi 0 dan 255 gacha bo'lgan raqamlarni ifodalovchi "bayt" ni tashkil qiladi. Agar siz ikkilik raqamlar haqida bilmasangiz, men sizga darslik qidirishni tavsiya qilaman. Agar siz dasturlash haqida ko'proq bilmoqchi bo'lsangiz, ikkilik raqamlar o'rganish uchun asosiy qobiliyatdir.

Dastur sensorlarning hozirgi holatini bitta imo -ishorani ifodalovchi bitta baytda aks ettiradi. Agar bu raqam bir qator tsikllar uchun bir xil bo'lib qolsa, dasturiy ta'minot bu imo -ishoraga amal qiladi.

Ultrasonik sensorlar juda ishonchli emasligi va sensorlar o'rtasida shovqin bo'lishi mumkinligi uchun, imo -ishoralarni ishlatishda biroz sabr -toqatli bo'lishingiz kerak bo'ladi. Sensorlardan qo'llaringizni ushlab turgan masofani va qo'llaringizni ushlab turgan burchakni o'zgartirishga harakat qiling. Ovozni yaxshiroq aks ettirish uchun siz ham datchiklar ustida tekis va qattiq narsalarni ushlab turishga harakat qilasiz.

9 -qadam: muhofaza qilish

Agar siz buni doimiy eksponat qilib, uni odamlarga ko'rsata olmoqchi bo'lsangiz, ehtimol siz qandaydir to'siq yasashni xohlaysiz. Bu yog'och, karton yoki boshqa materiallardan tayyorlanishi mumkin. Bu erda biz ushbu loyiha uchun ishlayotgan korpusni ko'rsatadigan video. Bu yog'ochdan qilingan, ultratovushli datchiklarni ushlab turish uchun teshiklari ochilgan.

10 -qadam: Muammolarni bartaraf etish va keyingi qadamlar

Muammolarni bartaraf qilish; nosozliklarni TUZATISH

Agar loyiha ishlamayotgan bo'lsa, u odatda simlar xatosidan kelib chiqadi. Barcha ulanishlarni qayta tekshirishga vaqt ajrating.

Yana bir keng tarqalgan muammo - SPIni yoqish va pi -ni qayta yuklash.

Iltimos, to'liq hujjatlarni olish uchun https://theotherandygrove.com/octasonic/ saytiga tashrif buyuring, shu jumladan Rust va Python -ga tegishli maqolalarni o'z ichiga olgan muammolarni bartaraf etish bo'yicha maslahatlar va qo'llab -quvvatlash to'g'risida ma'lumot.

Keyingi qadamlar

Loyihani ishga tushirganingizdan so'ng, men kod bilan tajriba o'tkazishni va turli xil musiqa asboblarini sinab ko'rishni maslahat beraman. MIDI asbob kodlari 1 dan 127 gacha va bu erda hujjatlashtirilgan.

Har bir sensori boshqa oktavada o'ynaydigan bitta musiqa asbobini xohlaysizmi? Balki siz har bir sensorning alohida asbob bo'lishini xohlaysizmi? Imkoniyatlar deyarli cheksiz!

Umid qilamanki, sizga bu ko'rsatma yoqdi. Agar yoqtirgan bo'lsangiz, iltimos, menga yoqing va kelajakdagi loyihalarni ko'rish uchun bu erda va mening YouTube kanalimga obuna bo'ling.

Tavsiya: