Mündəricat:

Raspitone: İstifadəsi asan Jukebox: 7 addım
Raspitone: İstifadəsi asan Jukebox: 7 addım

Video: Raspitone: İstifadəsi asan Jukebox: 7 addım

Video: Raspitone: İstifadəsi asan Jukebox: 7 addım
Video: Консультант от бога Tg: cadrolikk 2024, Iyul
Anonim
Raspitone: İstifadəsi asan Jukebox
Raspitone: İstifadəsi asan Jukebox

Salam, növbəti layihəm, istifadə etdiyim kimi, çox da faydalı olmayan bir layihədir:

Bu Raspberry 3 B+ əsasında hazırlanmış bir musiqi qutusu

Bilirəm, belə bir işi bir smartfon və Bluetooth dinamiklə asanlıqla etmək olar.

Ancaq layihəm üçün iki çətin şərtim var idi:

"Vintage" bir şey etmək istədim.

Və ümumilikdə, xanımımın 21 -ci əsrdən (və hətta 20 -ci əsrə aid) kompüterdən, bluetoothdan və ya başqa bir şeydən qəti şəkildə ümidsiz olduğunu nəzərə alsaq, istifadə etmək üçün çox sadə bir şey etməli oldum ………

Beləliklə, spesifikasiyalar aşağıdakı kimidir:

Maşını işə salmaq üçün bir tək düymə

Musiqini idarə etmək üçün toxunma ekranı (çox sadə).

Maşını dayandırmaq üçün ekranda bir toxunuş.

Və yaxşı bir səsə sahib olmaq üçün …….

Təchizat

Bunun üçün istifadə etdim:

1 Moruq 3 B+

DVD oxuyucusu OOS səbəbiylə yararsız olan 1 köhnə ev kinoteatri (köhnəlmiş Samsung 2.1 woofer və qutuya uyğun olaraq dəyişdirdiyim 2 dinamik)

1 HIFIBERRY DIGI+ lövhəsi (güc Amp üçün optik çıxışı ilə)

1 düymlük 7 düymlük toxunma ekranı (mənimki HDMI girişi olan və USB vasitəsilə işləyən moruq üçün Makeasy -dir, lakin hər hansı bir HDMI sensor ekranı yaxşı olmalıdır)

1 güc 5V 5A

1 röle qalxanı

Gücün ON/OFF prosesini idarə etmək üçün 1 Arduino nano

1 IR ev kinoteatrını idarə etdi (2N2222 NPN tranzistorla idarə olunur)

1 IR qəbuledicisi (layihənin bir hissəsini öyrənən IR kodları üçün, uzaqdan əmrli köhnə Multimedia sabit diskindən alıram)

3 led

Baxım rejimi üçün 1 keçid

Arduino üzərində işləmək üçün 1 keçid (yükləmə zamanı arduino sıfırlanır)

bəzi JST və Dupont bağlayıcıları

Və qutu üçün

Ağac və kontrplak (amma qutunun hazırlanmasını dərindən təsvir etməyəcəyəm). sadəcə, qutunun içindəki bumer ilə əlaqədar olaraq, oynayarkən Jukeboxun qonaq otağından keçdiyini görmək istəmirsinizsə, 10 mm kontrplak və 18 mm taxta məcburidir !!!!

Addım 1: Moruq hissəsinin təsviri:

Raspi fərqli şeyləri idarə etməlidir:

1) ev kinoteatrına əmrlər (IR uzaqdan idarəetmə vasitəsi ilə)

2) musiqi faylları

3) toxunma ekranı

4) Arduinonun ürək döyüntüsü (Wdt -i idarə edən (it it taymer))

16 G SD kartda Raspbian strech paylamasından başladım (Yalnız SD kartdakı faylları oxuyacağımız üçün HDD istifadə etmək lazım deyil). Veb bu mövzuda tuto ilə dolu olduğu üçün bu hissəyə vaxt ayırmayacağam.

Növbəti addımlarda fərqli hissələri görək ….

Addım 2: IR Uzaqdan Kodları

Ev kinoteatrının dairə planını tapa bilmədiyim üçün uzaqdan əmrlərlə idarə etməyə qərar verdim

Tamamlamalı olduğum ilk addım Ev kinoteatrının uzaqdan idarəetmə kodlarını öyrənməyi öyrənmək idi. Bunun üçün Austin Stanton IR kodlarından Instructables -da çox yaxşı tuto istifadə etdim.

Bəzi fərqlərim var idi, ehtimal ki, təlimatlar olduqca köhnə olduğundan hardware.conf faylı artıq yoxdur (ən azından tapmadım)

Tuto'da istifadə olunan tranzistorun PNP tranzistoru olduğu görünür, mənim üçün NPN olan 2N2222 istifadə etdim, amma nəticə eynidir. (Kabellər istisna olmaqla !!!!!!!!)

Pin təyinatı /boot/config.txt -də verilir:

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

IR LED, Raspi -nin pin 22 -nə belə bağlı olacaq.

Bir vacib qeyd: kodları Raspi -yə öyrənərkən əmrdə göstərilən açar sözlərdən istifadə etmək məcburidir

qeyd-siyahı adları

Jukebox üçün qurduğum fayl budur:

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

# Zəhmət olmasa bu faylı # https://sourceforge.net/p/lirc-remotes/wiki/Check… # də göstərildiyi kimi bitirmək və # # ünvanına göndərərək başqalarına təqdim etmək üçün vaxt ayırın.

# Bu konfiqurasiya faylı avtomatik olaraq yaradıldı

# istifadə edərək lirc -0.9.4c (standart) 9 May Perşembe 17:33:37 2019 # İstifadə olunan əmr xətti: -d /dev /lirc0 /root/lircd.conf

# Kernel versiyası (uname -r): 4.14.98 -v7+ # # Uzaqdan adı (konfiqurasiya faylına görə): jukebox

# Uzaqdan cihaz markası, əlinizdə tutduğunuz şey: # Uzaqdan cihaz modeli nr:

# Uzaqdan cihaz məlumatı url:

# Uzaq cihazda paketli bir çəkmə cihazı varmı e. g., a

# usb kilidi?:

# Paket USB cihazları üçün: usb satıcı id, məhsul id

# və cihaz sətri (dmesg və ya lsusb istifadə edin):

# Nəzarət olunan cihaz növü

# (TV, VCR, Audio, DVD, Peyk, Kabel, HTPC,…):

# Bu uzaqdan idarə olunan cihaz (lar):

uzaqdan başlayın

Jukebox adı

bit 16

bayraqlar SPACE_ENC | CONST_LENGTH

eps 30

aeps 100

başlıq 4470 4496

biri 542 1693

sıfır 542 581

Səhifə 553

pre_data_bits 16

pre_data 0xC2CA

boşluq 107863

toggle_bit_mask 0x0

tezlik 38000

kodları başlayın

KEY_POWER 0x807F

KEY_AUX 0x8877

KEY_VOLUMEUP 0xCC33

KEY_VOLUMEDOWN 0xDC23

bitiş kodları

uzaqdan bitir

Gördüyünüz kimi, ev kinoteatrını idarə etmək üçün sadəcə 4 əmrə ehtiyacım var

Güc (ON/OFF)

AUX => optik giriş kanalına keçmək üçün (HC həmişə DVD oxuyucudan başladığı üçün)

Və həcmi +/-

Əlaqəli əmrlər LIRC əmrləri ilə yerinə yetirilir:

məsələn: "irsend SEND_ONCE jukebox KEY_VOLUMEUP"

Addım 3: Əsas Proqram

Əsas proqram Pythonda yazılmışdır:

Python -da yeniyəm deyə düşünürəm ki, bir çox yaxşılaşma ola bilər, amma işləyir ….

Xüsusiyyətlər:

1) qrafik ekranı idarə edin:

Bunun üçün TKINTER olan, lakin tələbə üçün mədəni olan APPJAR -dan istifadə etdim (mənim vəziyyətim), bu istifadə etmək daha asan, ehtimal ki, imkanları az olsa da, məqsədim üçün kifayət idi.

2) mp3 fayllarını oxudun:

Python üçün mplayer istifadə etdim.

3) qarışdırma rejimində oynamaq üçün təsadüfi ədədlər yaradın:

Hər rübdə eyni mahnını eşitmək istəmədiyim üçün nömrənin əvvəlki əvvəlki x siyahılarda olmadığını yoxlamaq üçün kiçik bir proqram qurdum (çalğı siyahısının uzunluğundan asılı olaraq x).

Pythondakı randint funksiyası gördüyüm qədər "təsadüfi" deyil.

4) "ürək döyüntüsünü" Arduinoya göndərin

5) faylları idarə etmək:

Mplayer asinxron olduğu üçün, fayl başladıqda Python üçün bitdikdə bunu bilmək üçün heç bir yol yoxdur (heç olmasa sadə bir yol tapa bilmədim)

Bunu həll etmək üçün faylın uzunluğunu və cari sənəddəki irəliləyişi göstərən mplayer əmrlərindən istifadə etdim

Həm 4 -də, həm də 5 -də Appjar tərəfindən verilən dövri bir vəzifə yaratmaq imkanından istifadə etdim (appjar bir hadisə proqramı olduğu üçün bu, dövri bir hadisə yaratmaq üçün bir yoldur). funksiyası belədir:

#******************* Taskmenə başla ********************** app.registerEvent (taskman)

p.setPollTime (1000)

Proqramda ekran hadisələri olmayan hər şeyi idarə edən bir defol olan "vəzifə meneceri" üçün Taskman (oxunan faylın sonu, irəliləyiş çubuğunu doldurun, Nanoya ürək döyüntüsü göndərin …).

Başladıqdan sonra ekran belə görünür:

Şəkil
Şəkil

Budur proqram: (Notepad ++ və ya Geany vasitəsilə açıla bilər)

Addım 4: Raspberry Part: autostart və yeni fayllar əlavə etmək

Proqrama baxsanız, bəzi bash fayllarından istifadə etdiyimi görə bilərsiniz:

1) Start_jukebox:

Əslində məqsəd Ev kinoteatrını işə salmaq və D. IN girişinə keçməkdir (Ev kinoteatrımdakı optik giriş)

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

irsend SEND_ONCE jukebox KEY_POWER

yuxu 7

irsend SEND_ONCE jukebox KEY_AUX

yatmaq 2

2) stop_jukebox:

Ev kinoteatrını söndürmək üçün

pi@raspitone:/bin $ cat stop_jukebox

#!/bin/bash

irsend SEND_ONCE jukebox KEY_POWER

Bu iki bash faylı Python tərəfindən os.system əmri ilə çağırılır

Python skriptinə başlamaq üçün kiçik bir bash etdim

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

cd /ev /pi

python jukebox_gui.py

GUI rejimində avtomatik başlanğıc üçün/etc/xdg/lxsession/LXDE-pi-də avtomatik başlatma faylını dəyişdirdim.

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

@pcmanfm-masaüstü-LXDE-pi profili

@xscreensaver -yoxdur

@lxterminal --command = "dem_jukebox.bash"

nöqtə-rpi

Yeni mp3 faylları əlavə edin:

Yeni fayllar əlavə etmək üçün kiçik bir Python skriptini yaratmağı üstün tutdum:

new_song_file.py

Əvvəlcə sistem faylları təşkilatını izah edəcəyəm:

Bütün fayllar /home /pi -dədir

mp3 faylları/home/pi/Musiqi qovluğunda qeyd olunur

Hər bir sənətçinin əlaqədar mp3 fayllarını yerləşdirən öz alt qovluğu var

pi@raspitone: ~/Musiqi/Mike_oldfield $ ls -ümumilikdə 760516

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

-rwxr ----- 1 pi pi 2691736 juin 30 2017 Gəliş.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 Arabalar.mp3

Sənədlər qovluğunda oynanılacaq faylların siyahısını tapa bilərik.

pi@raspitone: ~/Documents $ cat list.txtFranz_Ferdinand/Michael_live.mp3

Franz_Ferdinand/evil_and_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/missing_you.mp3

Franz_Ferdinand/this_fire_ (playgroup_remix).mp3

Franz_Ferdinand/Jacqueline.mp3

Çalğı siyahıları məlumatlarını da tapa bilərik (lakin bu Python skripti ilə qurulmuşdur)

Kiçik Python skripti UNIT formatında tittlləri formatladıqdan sonra List.txt -də Music -də saxlanılan yeni mahnıları əlavə edir.

Ssenari budur: (Notepad ++ və ya Geany vasitəsilə açıla bilər)

Addım 5: Arduino Nano ilə Güc İdarəetməsi

Başlamağı asanlaşdırmaq istədiyim üçün bunu kiçik bir nano ilə etməyə qərar verdim:

Prinsip:

Başlanğıc düyməsinə basıldıqda bütün cihazlara enerji verilir, nano işə düşür (1 və ya 2 saniyə) və düyməni basaraq kontaktları bağlayan bir röleyi işə salaraq güc idarəetməsini öz üzərinə götürür.

Sonra Nano, Raspberry -dən ürək döyüntüsünü almaq üçün 35 saniyə gözləyir (başlanğıc prosesinin tamamlandığını və jukebox proqramının işlədiyini bildirir).

Nano ürək döyüntüsünü aldığı müddətdə röleyi davam etdirir (itin sayğacına baxın)

Artıq ürək döyüntüsü yoxdursa (Jukebox proqramının dayandırıldığını bildirir) Nano, güc rölesini buraxmaq üçün 20 saniyə (raspinin tamamilə dayandırıldığından əmin olmaq üçün) gözləyir.

Jukebox daha sonra tamamilə söndürülür

Baxım rejimini göstərmək üçün nanonun girişini aktivləşdirmək üçün bir keçid əlavə etdim (ssh et vnc vasitəsilə digər raspi serverlərimi idarə etmək üçün musiqi qutusundan istifadə edirəm). Nano daha sonra gözətçi prosesini deaktiv edir

Qeyd:

Raspi -dən ürək döyüntüsü üçün girişin aşağı salınması lazımdır (lakin Raspi -dən 3.3V Nano tərəfindən yüksək səviyyəli hesab olunur)

Bu NE555 ilə edilə bilər, amma tənbələm və həmişə çekmecemde bir nano var !!!!

Budur qısa C proqramı (Notepad ++ ilə açıla bilər)

Addım 6: Kabel çəkmə

Kabel
Kabel
Kabel
Kabel

Ekran üçün:

Ekranı gücləndirmək və idarə etmək üçün Raspi -də bir HDMI kabeli və bir USB kabeli istifadə olunur.

Ön panel üçün:

Yeni faylları yükləmək və ya ehtiyat nüsxələrini çıxarmaq üçün Raspi -dən USB kabeli də qoşulur.

Yumşağa daxil olmaq üçün Nano'dan bir USB kabeli bağlanmışdır (lazım olduqda dəyişikliklər üçün)

Xarici USB fişindən istifadə etmədən qulluq etmək üçün moruğa simsiz bir klaviatura bağlayıram

Raspberry və Arduino istifadə edildiyi üçün kabel çəkilməsi olduqca sadədir.

Hamısı bir şerit matris lövhəsində yerləşir.

Moruqdan 2 GPIO istifadə olunur:

IR LED üçün pin22

Arduino ürək döyüntüsü üçün 27 pin

Arduino üzərində

Pin 2, Raspi -dən ürək döyüntüsü üçün bir kəsici pin olaraq istifadə olunur.

3 -dən 5 -ə qədər sancaqlar ledləri idarə etmək üçün istifadə olunur (Start, Wdt, Maintenance).

Pin 6 təmir açarı üçündür.

Pin 7 röle qalxanına çıxır.

Budur sarsıdıcı fayl:

Addım 7: Qutu

Qutu
Qutu

Nə etdiyimi çox izah etməyəcəyəm, çünki güc gücləndiricisindən və istifadə olunan dinamiklərdən asılıdır.

Məlumat üçün ev kinoteatrı qutunun altındadır.

Dinamiklərin üzərində:

1 woofer

Qutuya daxil etmək üçün dəyişdirdiyim 2 orta dinamik.

Üst:

Ekranı, LEDləri, açarları və USB fişləri olan ön panel.

Ağac:

Dinamiklər üçün yan panellər üst və alt panellərdə 18 mm taxta taxta istifadə etdim.

Ön tərəfi 40 mm vintli 10 mm kontrplakdır.

Kabelləşməni və istismarı asanlaşdırmaq üçün (lazım gələrsə !!!) Dövrəti ön panelin arxasındakı bir çekmece üzərinə qoydum.

Aşırı ısınmanın qarşısını almaq üçün arxa panelin altındakı böyük bir çuxur edilir və arxa panelə sxemin yanındakı 5V fan (8 sm) qoydum.

Yuxarıdakı şəkil sadəcə fikir vermək üçündür.

Deməli, budur !!!!!!!!!

Məni oxuduğunuz üçün təşəkkür edirəm

Və növbəti dəfə yeni macəralar üçün görüşərik

Tövsiyə: