Mundarija:

Raspitone: Jukebox -dan foydalanish oson: 7 qadam
Raspitone: Jukebox -dan foydalanish oson: 7 qadam

Video: Raspitone: Jukebox -dan foydalanish oson: 7 qadam

Video: Raspitone: Jukebox -dan foydalanish oson: 7 qadam
Video: Convenience items needed in the family 2024, Noyabr
Anonim
Raspitone: Jukebox -dan foydalanish oson
Raspitone: Jukebox -dan foydalanish oson

Salom, mening keyingi loyiham, men foydalanganimdek, unchalik foydali bo'lmagan loyiha:

Bu Raspberry 3 B+ ga asoslangan musiqiy quti

Bilaman, bunday ishni smartfon va Bluetooth karnay yordamida osongina qilish mumkin.

Ammo mening loyiham uchun ikkita qiyin shart bor edi:

Men "vintage" narsa yasashni xohlardim.

Umuman olganda, mening xonim kompyuter yoki bluetooth yoki 21 -asrdan (va hatto 20 -asrdan) boshqa narsalarga mutlaqo umidsiz ekanligini hisobga olsak, men foydalanish uchun juda oddiy narsani qilishim kerak edi.

Shunday qilib, spetsifikatsiyalar quyidagicha edi:

Mashinani ishga tushirish uchun bitta tugma

Musiqani boshqarish uchun sensorli ekran (juda oddiy).

Mashinani to'xtatish uchun ekranda bir marta bosish.

Va yaxshi ovozga ega bo'lish uchun …….

Ta'minotlar

Buning uchun men foydalanardim:

1 malina 3 B+

DVD -o'quvchi OOS tufayli yaroqsiz bo'lgan 1 ta eski uy kinoteatri (eski Samsung 2.1, woofer va men 2 karnayga moslashtirdim)

1 ta HIFIBERRY DIGI+ platasi (Amp quvvat uchun optik chiqishi bilan)

1 dyuymli sig'imli 7 dyuymli ekran (meniki - HDMI usuli bilan malinali "Makeasy" va USB orqali quvvatlanadi, lekin har qanday HDMI sensorli ekrani yaxshi bo'lishi kerak)

1 ta quvvat manbai 5V 5A

1 o'rni qalqoni

Quvvatni yoqish/o'chirish jarayonini boshqarish uchun 1 Arduino nano

1 IR uy kinoteatrini boshqarishga olib keldi (2N2222 NPN tranzistorini boshqaradi)

1 ta IR qabul qilgich (loyihaning bir qismini o'rganadigan IR kodlari uchun men uzoqdan boshqariladigan eski multimediali qattiq diskdan olaman)

3 ta LED

Texnik xizmat ko'rsatish uchun 1 kalit

Arduino -da ishlash uchun 1 kalit (yuklash paytida arduino qayta tiklanadi)

ba'zi JST va Dupont ulagichlari

Va quti uchun

Yog'och va kontrplak (lekin men qutini yasashni chuqur tasvirlamayman). Shuni aytish kerakki, agar quti ichidagi bumerga kelsak, 10 mm kontrplak va 18 mm yog'ochdan yasalgan yog'och majburiydir, agar siz o'ynayotganda Jukebox yashash xonasidan o'tayotganini ko'rishni xohlamasangiz !!!!

1 -qadam: Malina qismining tavsifi:

Raspi har xil narsalarni boshqarishi kerak:

1) uy kinoteatri buyruqlari (IR masofadan boshqarish pulti orqali)

2) musiqa fayllari

3) sensorli ekran

4) Arduino -ning yurak urishi (Wdt -ni boshqaruvchi (taymer it taymeri))

Men 16 G SD kartadagi Raspbian strech tarqatishidan boshladim (biz faqat SD -kartadagi fayllarni o'qiymiz, HDD -ni ishlatish shart emas). Men bu qismga vaqt sarflamayman, chunki veb bu haqda tuto bilan to'la.

Keling, keyingi qismlarda turli qismlarni ko'rib chiqaylik ….

2 -qadam: IR masofaviy kodlari

Uy kinoteatrining rejasini topa olmaganim uchun, men uni uzoqdan buyruqlar yordamida boshqarishga qaror qildim

Men bajarishim kerak bo'lgan birinchi qadam - uy kinoteatrining masofadan boshqarish buyrug'ining kodlarini Raspi -ga o'rgatish edi, shuning uchun men Austin Stanton IR kodlaridan Instructables -da juda yaxshi tuto ishlatardim.

Menda ba'zi farqlar bor edi, ehtimol yangi versiya tufayli, ko'rsatmalari ancha eski, hardware.conf fayli endi yo'q (hech bo'lmaganda men topmadim)

Ko'rinib turibdiki, tuto -da ishlatiladigan tranzistor PNP tranzistoridir, men NPN bo'lgan 2N2222 -dan foydalandim, lekin natija bir xil (kabellardan tashqari !!!!!!!!)

Pin tayinlanishi /boot/config.txt da berilgan:

#autorisation de lirc le 2019-07-08dtoverlay = lirc-rpi, gpio_out_pin = 22, gpio_in_pin = 23

IQ LED Raspi pin22 ga ulanadi.

Bir muhim eslatma: Raspi -ga kodlarni o'rganishda buyruqda ko'rsatilgan kalit so'zlardan foydalanish majburiydir

rekord-ro'yxat nomlari maydoni

Mana, men yuklash qutisi uchun yaratgan fayl:

pi@raspitone:/etc/lirc $ cat lircd.conf

# Iltimos, bu faylni # https://sourceforge.net/p/lirc-remotes/wiki/Check… # da ta'riflanganidek tugatishga va # # ga yuborib boshqalarga taqdim etishga vaqt ajrating.

# Ushbu konfiguratsiya fayli avtomatik ravishda yaratilgan

# yordamida lirc -0.9.4c (standart) 9 -may, may 17:33:37, 2019 # Buyruqlar satri ishlatilgan: -d /dev /lirc0 /root/lircd.conf

# Yadro versiyasi (uname -r): 4.14.98 -v7+ # # Masofadagi ism (konfiguratsiya fayli bo'yicha): jukebox

# Masofaviy qurilmaning markasi, qo'lingizda ushlab turgan narsangiz: # Masofaviy qurilma modeli nr:

# Masofaviy qurilma ma'lumotlari url:

# Masofaviy qurilmada birlashtirilgan tasvirga olish moslamasi bormi e. g., a

# usb dongle?:

# Birlashtirilgan USB qurilmalari uchun: usb sotuvchisi identifikatori, mahsulot identifikatori

# va qurilma satri (dmesg yoki lsusb dan foydalaning):

# Boshqariladigan qurilma turi

# (TV, videomagnitafon, audio, DVD, sun'iy yo'ldosh, kabel, HTPC,…):

# Bu masofadan boshqarish pulti tomonidan boshqariladigan qurilmalar:

masofadan boshlash

Jukebox nomi

bitlar 16

bayroqlar SPACE_ENC | CONST_LENGTH

eps 30

aeps 100

sarlavha 4470 4496

bitta 542 1693

nol 542 581

553 -qadam

oldindan_data_bits 16

oldingi ma'lumotlar 0xC2CA

bo'shliq 107863

toggle_bit_mask 0x0

chastota 38000

kodlarni boshlang

KEY_POWER 0x807F

KEY_AUX 0x8877

KEY_VOLUMEUP 0xCC33

KEY_VOLUMEDOWN 0xDC23

tugatish kodlari

masofadan boshqarish pulti

Ko'rib turganingizdek, menga uy kinoteatrini boshqarish uchun 4 ta buyruq kerak

Quvvat (ON/OFF)

AUX => optik kirish kanaliga o'tish uchun (HC har doim DVD o'quvchida boshlanadi)

Va hajmi +/-

Tegishli buyruqlar LIRC buyruqlari orqali bajariladi:

masalan: "irsend SEND_ONCE" KUK_VOLUMEUP jukebox"

3 -qadam: Asosiy dastur

Asosiy dastur Pythonda yozilgan:

Men Python -da yangi bo'lganim uchun, ko'p yaxshilanishlarni amalga oshirish mumkin deb o'ylayman, lekin u ishlaydi ….

Xususiyatlar:

1) grafik ekranni boshqarish:

Buning uchun men TKINTER bo'lgan, lekin talabalar uchun madaniyatli bo'lgan APPJAR -dan foydalandim (mening ishim), demak, undan foydalanish juda oson, ehtimol imkoniyatlar kam, lekin bu mening maqsadim uchun etarli edi.

2) mp3 fayllarni ijro etish:

Men python uchun mplayer dan foydalanardim.

3) aralashtirish rejimida o'ynash uchun tasodifiy sonlarni yarating:

Men har chorakda bir xil qo'shiqni eshitishni xohlamaganim uchun, men avvalgi x sonlar ro'yxatida yo'qligini tekshirish uchun kichik dastur tuzdim (pleylist uzunligiga qarab x).

Pythondagi randint funktsiyasi men ko'rganimdek "tasodifiy" emas.

4) "yurak urishi" ni Arduino -ga yuboring

5) pleer fayllarini boshqarish:

Mplayer asenkron bo'lgani uchun, fayl ishga tushirilganda, Python tugagandan so'ng bilishning hech qanday usuli yo'q (hech bo'lmaganda men oddiy yo'l topmadim)

Buni hal qilish uchun mplayer buyruqlaridan foydalanib, faylning uzunligini va joriy fayldagi jarayonni ko'rsatdim

4 va 5 uchun men Appjar tomonidan berilgan davriy vazifani yaratish imkoniyatidan foydalandim (appjar - bu voqealar dasturi, bu davriy hodisani yaratish usuli). funktsiya bu:

#******************* vazifachini ishga tushirish ********************** app.registerEvent (taskman)

p.setPollTime (1000)

"Vazifa menejeri" uchun vazifalar dasturi - bu ekranning barcha hodisalarini boshqarmaydigan dastur (defektning oxiri, harakatlanish satrini to'ldirish, Nanoga yurak urishini yuborish …).

Ishga tushgandan so'ng, ekran quyidagicha ko'rinadi:

Rasm
Rasm

Bu erda dastur: (Notepad ++ yoki Geany orqali ochilishi mumkin)

4 -qadam: Malinali qism: avtomatik ishga tushirish va yangi fayllarni qo'shish

Agar siz dasturga qarasangiz, men ba'zi bash fayllarini ishlatayotganimni ko'rasiz:

1) Start_jukebox:

Aslida maqsad - uy kinoteatrini yoqish va D. IN kirishiga o'tish (mening uy kinoteatrimdagi optik kirish)

pi@raspitone:/bin $ cat start_jukebox#!/bin/bash

irsend SEND_ONCE yuklash qutisi KEY_POWER

uxlash 7

irsend SEND_ONCE yuklash qutisi KEY_AUX

uxlash 2

2) stop_jukebox:

Uy kinoteatrini o'chirish

pi@raspitone:/bin $ cat stop_jukebox

#!/bin/bash

irsend SEND_ONCE yuklash qutisi KEY_POWER

Bu ikkita bash fayllari Python tomonidan os.system buyrug'i bilan chaqiriladi

Python skriptini ishga tushirish uchun men kichik bash yasadim

pi@raspitone: ~ $ cat dem_jukebox.bash#!/bin/bash

cd /home /pi

python jukebox_gui.py

GUI rejimida avtomatik ishga tushirish uchun men faqat/etc/xdg/lxsession/LXDE-pi da avtomatik ishga tushirish faylini o'zgartirdim.

pi@raspitone:/etc/xdg/lxsession/LXDE-pi $ cat autostart@lxpanel-profili LXDE-pi

@pcmanfm-ish stoli-LXDE-pi profili

@xscreensaver -yo'q

@lxterminal --command = "dem_jukebox.bash"

nuqta-rpi

Yangi mp3 fayllarni qo'shish:

Yangi fayllarni qo'shish uchun kichik Python skriptini yaratishni afzal ko'rdim:

new_song_file.py

Men avval tizim fayllarini tashkil qilishni tushuntiraman:

Barcha fayllar /home /pi ichida

mp3 fayllar/home/pi/Musiqa katalogida mustahkamlangan

Har bir ijrochining tegishli mp3 fayllarini o'z shaxsiy katalogi bor

pi@raspitone: ~/Musiqa/Mayk_oldfild $ ls -jami 760516

-rwxr ----- 1 pi pi 2254923 juin 30 2017 A_New_Beginning.mp3

-rwxr ----- 1 pi pi 2691736 juin 30 2017 kelishi.mp3

-rwxr ----- 1 pi pi 8383244 juin 30 2017 Ascension.mp3

-rwxr ----- 1 pi pi 5410816 juin 30 2017 Blue_Night.mp3

-rwxr ----- 1 pi pi 13125199 juin 30 2017 Castaway_ (Instrumental).mp3

-rwxr ----- 1 pi pi 12903583 juin 30 2017 Castaway.mp3

-rwxr ----- 1 pi pi 2969869 juin 30 2017 Celt.mp3

-rwxr ----- 1 pi pi 9047745 juin 30 2017 Chariots_ (Instrumental).mp3

-rwxr ----- 1 pi pi 9403263 juin 30 2017 Aravalar.mp3

Hujjatlar katalogida biz o'ynaydigan fayllar ro'yxatini topamiz.

pi@raspitone: ~/Hujjatlar $ mushuklar ro'yxati.txtFranz_Ferdinand/Michael_live.mp3

Frants_Ferdinand/yomon_ va_a_heathen.mp3

Franz_Ferdinand/Walk_Away_live.mp3

Franz_Ferdinand/love_and_destroy.mp3

Franz_Ferdinand/his_fffire.mp3

Franz_Ferdinand/eleanor_put_your_boots_on.mp3

Franz_Ferdinand/yo'qolgan_siz.mp3

Franz_Ferdinand/this_fire_ (playgroup_remix).mp3

Frants_Ferdinand/Jaklin.mp3

Biz pleylist ma'lumotlarini ham topa olamiz (lekin bu Python skriptida qurilgan)

Kichik Python skripti UNIX formatidagi titllarni formatlagandan so'ng, list.txt da Musiqada saqlangan yangi qo'shiqlarni qo'shib qo'yadi.

Bu erda skript: (Notepad ++ yoki Geany orqali ochilishi mumkin)

5 -qadam: Arduino Nano orqali quvvatni boshqarish

Men boshlashni osonlashtirmoqchi bo'lganim uchun, men buni kichik nano bilan bajarishga qaror qildim:

Printsip:

Ishga tushirish tugmachasini bosganda, barcha qurilmalar quvvatlanadi, nano ishga tushadi (1 yoki 2 soniya) va tugma kontaktlarini chetlab o'tadigan o'rni ishga tushadi va quvvatni boshqaradi.

Keyin Nano Raspberry -dan yurak urishini olish uchun 35 soniya kutadi (ishga tushirish jarayoni tugaganini va jukebox dasturi ishga tushishini bildiradi).

Nano yurak urishini qabul qilganda, u o'z o'rni saqlanadi (it taymerini tomosha qiling)

Agar boshqa yurak urish bo'lmasa (musiqa qutisi dasturi to'xtatilgan degan ma'noni anglatadi) Nano quvvat rölesini bo'shatish uchun 20 soniya kutadi (raspi to'liq to'xtatilganligiga ishonch hosil qilish uchun).

Musiqa qutisi to'liq o'chirilgan

Men texnik rejimni ko'rsatish uchun nanoning kirishini faollashtirish uchun kalit qo'shdim (men ssh et vnc orqali boshqa raspi serverlarimni boshqarish uchun jukeboxdan foydalanaman). Keyin Nano qo'riqchi it jarayonini o'chiradi

Izoh:

Raspi -dan yurak urishi uchun kirishni to'xtatish kerak (lekin Raspi -dan 3.3V Nano tomonidan yuqori darajali deb hisoblanadi)

Buni NE555 bilan qilish mumkin edi, lekin men dangasa va tortmasimda doim nano bor !!!!

Mana qisqa C dasturi (Notepad ++ yordamida ochish mumkin)

6 -qadam: kabel yotqizish

Kabel
Kabel
Kabel
Kabel

Ekran uchun:

HDMI kabeli va USB kabeli Raspi -da ekranni quvvatlantirish va haydash uchun ishlatiladi.

Old panel uchun:

Yangi fayllarni yuklash yoki zaxiralash uchun Raspi -dan USB kabeli ham ulangan.

Nano -dan USB kabeli ulanib, dasturiy ta'minotga kirishi mumkin (agar kerak bo'lsa o'zgartirishlar uchun).

Men tashqi USB vilkasidan foydalanmasdan texnik xizmat ko'rsatish uchun malinaning simsiz klaviaturasini ham ulayman

Raspberry va Arduino ishlatilganligi sababli, kabel yotqizish juda oddiy.

Hammasi chiziqli matritsa taxtasida joylashgan.

Malinali 2 dan GPIO ishlatiladi:

IR LED uchun pin22

Arduino uchun yurak urishi uchun 27 -pin

Arduino -da

2 -pin Raspi -ning yurak urishi uchun uzilish pimi sifatida ishlatiladi.

3 -dan 5 -gachasi pinlar haydash uchun ishlatiladi (Boshlash, Wdt, Xizmat).

6 -pin, xizmat ko'rsatish tugmachasi uchun.

7 -pin o'rni qalqoniga chiqariladi.

Mana, jirkanch fayl:

7 -qadam: quti

Quti
Quti

Men nima qilganimni ko'p ta'riflamayman, chunki bu quvvat kuchaytirgichiga va ishlatiladigan karnaylarga bog'liq.

Ma'lumot sifatida uy kinoteatri qutining pastki qismida joylashgan.

Karnay ustidan:

1 woofer

Men ularni qutiga kiritish uchun o'zgartirgan 2 ta o'rta dinamik.

Yuqorida:

Old panelda ekran, svetodiodlar, kalitlar va USB vilkalari joylashgan.

Yog'och:

Karnaylar uchun yon panellar yuqori va pastki qismida 18 mm yog'och taxta ishlatilgan.

Old tomoni 40 mm vintli 10 mm kontrplak.

Kabelni va parvarish qilishni osonlashtirish uchun (agar kerak bo'lsa !!!) men sxemani old panel orqasidagi tortmasiga qo'ydim.

Haddan tashqari qizib ketishining oldini olish uchun orqa panelning pastki qismida katta teshik qilingan va men 5Vli fanatni (8 sm) orqa panelga sxemaning yoniga qo'yganman.

Yuqoridagi rasm shunchaki fikr berish uchun.

Shunday qilib, bu !!!!!!!!!

Meni o'qiganingiz uchun tashakkur

Va keyingi safar yangi sarguzashtlarda ko'rishguncha

Tavsiya: