Isi kandungan:

Raspitone: senang digunakan Jukebox: 7 Langkah
Raspitone: senang digunakan Jukebox: 7 Langkah

Video: Raspitone: senang digunakan Jukebox: 7 Langkah

Video: Raspitone: senang digunakan Jukebox: 7 Langkah
Video: Голубая стрела (1958) фильм 2024, November
Anonim
Raspitone: senang digunakan Jukebox
Raspitone: senang digunakan Jukebox

Halo, projek saya yang seterusnya adalah, seperti biasa, projek yang tidak begitu berguna:

Kotak jukebox berdasarkan Raspberry 3 B +

Saya tahu, perkara seperti ini dapat dilakukan dengan mudah dengan telefon pintar dan pembesar suara Bluetooth.

Tetapi untuk projek saya, saya mempunyai dua prasyarat sukar:

Saya mahu membuat sesuatu yang "vintage".

Dan secara keseluruhan, memandangkan wanita saya pasti putus asa untuk komputer atau bluetooth atau yang lain dari abad ke-21, (dan bahkan ke-20), saya harus melakukan sesuatu yang sangat mudah digunakan ………

Oleh itu, spesifikasi adalah seperti berikut:

Satu butang tekan tunggal untuk memulakan mesin

Skrin sentuh (sangat mudah) untuk menguruskan muzik.

Sentuhan sekali pada skrin untuk menghentikan mesin.

Dan mempunyai suara yang baik ………

Bekalan

Untuk ini saya menggunakan:

1 Raspberry 3 B +

1 pawagam rumah lama yang tidak berguna kerana pembaca DVD OOS (Samsung 2.1 lama dengan woofer dan 2 pembesar suara yang saya ubah suai agar sesuai dengan kotak)

1 papan HIFIBERRY DIGI + (dengan output optik untuk Amp kuasa)

1 skrin sentuh kapasitif 7 (milik saya adalah Makeasy untuk raspberry dengan input HDMI dan dikuasakan melalui USB tetapi mana-mana skrin sentuh HDMI mestilah OK)

1 bekalan kuasa 5V 5A

1 pelindung geganti

1 Arduino nano untuk menguruskan proses ON / OFF kuasa

1 IR membawa untuk memandu pawagam rumah (dipimpin oleh transistor 2N2222 NPN)

1 penerima IR (untuk bahagian pembelajaran kod IR dari projek ini, saya mendapatkannya dari cakera keras Multimedia lama dengan arahan jauh)

3 diketuai

1 suis untuk mod penyelenggaraan

1 suis untuk mengerjakan arduino (semasa memuat naik arduino diset semula)

beberapa penyambung JST dan Dupont

Dan untuk kotak itu

Kayu dan papan lapis (tetapi saya tidak akan menerangkan secara mendalam pembuatan kotak itu). hanya untuk mengatakan bahawa, mengenai boomer di dalam kotak, papan lapis 10 mm dan kayu 18 mm adalah wajib jika anda tidak mahu melihat Jukebox melintasi ruang tamu sambil bermain !!!!

Langkah 1: Penerangan Bahagian Raspberry:

Raspi harus menguruskan pelbagai perkara:

1) arahan ke pawagam rumah (melalui remote IR)

2) fail muzik

3) skrin sentuh

4) Denyutan jantung ke Arduino (yang menguruskan Wdt (menonton pemasa anjing))

Saya bermula dari pengedaran strech Raspbian pada kad SD 16 G (Oleh kerana kami hanya akan membaca fail dari kad SD, penggunaan HDD tidak diperlukan). Saya tidak akan menghabiskan masa di bahagian ini kerana web penuh dengan tuto mengenainya..

Mari lihat bahagian yang berlainan pada langkah seterusnya….

Langkah 2: Kod Jauh IR

Oleh kerana saya tidak dapat menemui rancangan litar pawagam rumah, saya memutuskan untuk memandu melalui arahan jarak jauh

Langkah pertama yang harus saya selesaikan adalah dengan mempelajari Raspi kod arahan jauh home cinema. Untuk itu saya menggunakan tuto yang sangat baik dalam Instructables dari kod IR Austin Stanton

Saya mempunyai beberapa perbezaan, mungkin kerana versi baru kerana instruksinya agak lama, fail hardware.conf tidak lagi wujud (sekurang-kurangnya saya tidak menjumpainya)

Nampaknya transistor yang digunakan dalam tuto adalah transistor PNP, bagi saya saya menggunakan 2N2222 yang NPN tetapi hasilnya sama. (Kecuali kabel !!!!!!!!)

Tugasan pin diberikan dalam /boot/config.txt:

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

LED IR akan disambungkan ke pin22 Raspi.

Satu pernyataan penting: semasa mempelajari kod untuk Raspi, wajib menggunakan kata kunci yang disenaraikan dalam perintah

irrecord - senarai nama-ruang

Berikut adalah fail yang saya buat untuk jukebox saya:

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

# Luangkan masa untuk menyelesaikan fail ini seperti yang dijelaskan dalam # https://sourceforge.net/p/lirc-remotes/wiki/Check… # dan sediakan untuk orang lain dengan mengirimkannya ke # #

# Fail konfigurasi ini dihasilkan secara automatik

# menggunakan lirc-0.9.4c (lalai) pada 9 Mei 17:33:37 2019 # Baris arahan digunakan: -d / dev / lirc0 /root/lircd.conf

# Versi kernel (uname -r): 4.14.98-v7 + # # Nama jauh (seperti fail konfigurasi): jukebox

# Jenama peranti jarak jauh, barang yang anda pegang di tangan anda: # Model peranti jarak jauh:

# Url maklumat peranti jauh:

# Adakah alat jarak jauh mempunyai peranti penangkap bundle e. g., a

# usb dongle?:

# Untuk peranti USB yang digabungkan: id vendor usb, id produk

# dan rentetan peranti (gunakan dmesg atau lsusb):

# Jenis peranti yang dikawal

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

# Peranti yang dikendalikan oleh alat kawalan jauh ini:

mula jauh

namakan jukebox

bit 16

bendera SPACE_ENC | CONST_LENGTH

eps 30

aeps 100

pengepala 4470 4496

satu 542 1693

sifar 542 581

ptrail 553

pre_data_bits 16

pra_data 0xC2CA

jurang 107863

toggle_bit_mask 0x0

kekerapan 38000

kod permulaan

KEY_POWER 0x807F

KEY_AUX 0x8877

KEY_VOLUMEUP 0xCC33

KEY_VOLUMEDOWN 0xDC23

kod akhir

tamat jauh

Seperti yang anda lihat, saya hanya memerlukan 4 arahan untuk memandu Home Cinema

Kuasa (ON / OFF)

AUX => untuk beralih ke saluran input optik (kerana HC selalu bermula pada pembaca DVD)

Dan Jilid +/-

Perintah yang berkaitan dilaksanakan melalui arahan LIRC:

contohnya: "irendend SEND_ONCE jukebox KEY_VOLUMEUP"

Langkah 3: Program Utama

Program utama ditulis dalam Python:

Oleh kerana saya baru di Python saya rasa ada banyak peningkatan yang dapat dilakukan, tetapi ia berjalan….

Spesifikasi:

1) menguruskan skrin grafik:

Untuk ini, saya menggunakan APPJAR yang TKINTER tetapi beradab untuk pelajar (kes saya), ini bermaksud lebih mudah digunakan, mungkin dengan kemungkinan yang kurang, tetapi itu cukup untuk tujuan saya.

2) mainkan fail mp3:

Saya menggunakan mplayer untuk python.

3) menjana nombor rawak untuk bermain dalam mod shuffle:

Oleh kerana saya tidak mahu mendengar lagu yang sama setiap suku tahun, saya membina program kecil untuk memeriksa sama ada nombor itu tidak terdapat dalam senarai nombor x sebelumnya (x bergantung pada panjang senarai main).

Fungsi randint dalam python tidak begitu "rawak" sejauh yang saya lihat.

4) hantarkan "degupan jantung" ke Arduino

5) menguruskan pemain fail:

Oleh kerana Mplayer tidak segerak, semasa fail dimulakan, tidak ada cara untuk mengetahui Python apabila sudah selesai (sekurang-kurangnya saya tidak menemui cara mudah)

Untuk menyelesaikannya, saya menggunakan arahan mplayer yang memberikan panjang fail dan kemajuan dalam fail semasa

Untuk kedua-dua 4 dan 5 saya menggunakan kemungkinan yang diberikan oleh Appjar untuk menghasilkan tugas berkala (kerana appjar adalah program acara ini adalah cara untuk membuat acara berkala). fungsinya adalah:

# ******************* mulakan taskman ********************** app.registerEvent (taskman)

p.setPollTime (1000)

Taskman untuk "task manager" yang merupakan def dalam program yang menguruskan semua peristiwa bukan skrin (akhir fail yang dimainkan, mengisi bar kemajuan, mengirim degup jantung ke Nano,….)

Sebaik sahaja memulakan skrin seperti ini:

Imej
Imej

Inilah programnya: (boleh dibuka melalui Notepad ++ atau Geany)

Langkah 4: Bahagian Raspberry: mulakan secara automatik dan Menambah Fail Baru

Sekiranya anda melihat program ini, anda dapat melihat bahawa saya menggunakan beberapa fail bash:

1) Start_jukebox:

Sebenarnya tujuannya adalah untuk menghidupkan home cinema dan beralih ke input D. IN (input optik di pawagam Home saya)

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

hantar HANTAR_ONCE jukebox KEY_POWER

tidur 7

hantar SEND_ONCE jukebox KEY_AUX

tidur 2

2) stop_jukebox:

Untuk mematikan pawagam Rumah

pi @ raspitone: / bin $ cat stop_jukebox

#! / bin / bash

hantar HANTAR_ONCE jukebox KEY_POWER

Kedua-dua fail bash ini dipanggil oleh Python dengan perintah os.system

Untuk memulakan skrip Python, saya membuat bash kecil

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

cd / rumah / pi

python jukebox_gui.py

Untuk permulaan automatik dalam mod GUI saya baru sahaja mengubah suai fail autostart di / etc / xdg / lxsession / LXDE-pi

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

@pcmanfm - desktop --profil LXDE-pi

@xscreensaver -no-splash

@lxterminal --command = "dem_jukebox.bash"

titik-rpi

Menambah fail mp3 baru:

Untuk menambah fail baru, saya lebih suka membuat skrip Python khusus:

new_song_file.py

Saya akan menerangkan terlebih dahulu organisasi fail sistem:

Semua fail ada di / home / pi

Fail mp3 disimpan dalam direktori / home / pi / Music

Setiap artis mempunyai subdirektori sendiri yang menghosting fail mp3 yang berkaitan

pi @ raspitone: ~ / Muzik / Mike_oldfield $ ls -ltotal 760516

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

-rwxr ----- 1 pi pi 2691736 juin 30 2017 Ketibaan.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 Chariots.mp3

Dalam direktori Dokumen kita dapat mencari senarai fail yang dibina untuk dimainkan.

pi @ raspitone: ~ / Dokumen $ 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 / lost_you.mp3

Franz_Ferdinand / this_fire_ (playgroup_remix).mp3

Franz_Ferdinand / Jacqueline.mp3

Kami juga dapat mencari data senarai main (tetapi ini dibina oleh skrip Python)

Skrip Python kecil menambah lagu-lagu baru, disimpan dalam Muzik, dalam list.txt setelah memformat lagu dalam format UNIX

Inilah skripnya: (boleh dibuka melalui Notepad ++ atau Geany)

Langkah 5: Pengurusan Kuasa Melalui Arduino Nano

Oleh kerana saya ingin memulakan sesuatu yang mudah, saya memutuskan untuk menyelesaikannya dengan nano kecil:

Prinsip:

Semasa menekan butang mula, semua peranti dihidupkan, nano bermula (1 atau 2 saat) dan mengambil alih pengurusan kuasa dengan mencetuskan geganti yang menjauhkan kenalan butang tekan.

Kemudian Nano menunggu selama 35 saat untuk menerima degupan jantung dari Raspberry (bermaksud proses permulaan selesai dan program jukebox berjalan).

Selagi nano menerima degup jantung, ia akan terus menyalakan relay (Watch timer dog)

Sekiranya tiada degupan jantung lagi (bermaksud program jukebox dihentikan) Nano menunggu selama 20 saat (untuk memastikan bahawa raspi dihentikan sepenuhnya) untuk melepaskan relay kuasa.

Kotak jukebox kemudian dimatikan sepenuhnya

Saya menambah suis untuk mengaktifkan input nano untuk menunjukkan mod penyelenggaraan (saya menggunakan jukebox untuk menguruskan pelayan raspi saya yang lain melalui ssh et vnc). Nano kemudian menyahaktifkan proses menonton anjing

Catatan:

input untuk degupan jantung dari Raspi perlu diturunkan (tetapi 3.3V dari Raspi dianggap sebagai tahap tinggi oleh Nano)

Ia boleh dilakukan dengan NE555 tetapi saya malas dan selalu mempunyai beberapa nano di laci saya !!!!

Inilah program C pendek (boleh dibuka dengan Notepad ++)

Langkah 6: Kabel

Kabel
Kabel
Kabel
Kabel

Untuk Skrin:

Kabel HDMI dan kabel USB digunakan pada Raspi untuk menghidupkan dan menggerakkan skrin.

Untuk panel depan:

Kabel USB juga disambungkan dari Raspi untuk dapat memuat naik fail baru atau membuat sandaran.

Kabel USB disambungkan dari Nano untuk dapat mengakses lembut (untuk pengubahsuaian jika perlu)

Saya pasangkan juga dongle papan kekunci tanpa wayar pada raspberry untuk membuat penyelenggaraan tanpa menggunakan palam USB luaran

Oleh kerana Raspberry dan Arduino digunakan, pemasangan kabel agak mudah.

Semua terletak di papan matriks jalur.

Dari raspberry 2 GPIO digunakan:

Pin22 untuk LED IR

Pin 27 untuk degupan jantung ke Arduino

pada Arduino

Pin 2 digunakan sebagai pin gangguan untuk degup jantung dari Raspi.

Pin 3 hingga 5 digunakan untuk mengemudi led (Start, Wdt, Maintenance).

Pin 6 adalah untuk suis penyelenggaraan.

Pin 7 adalah output ke pelindung relay.

Berikut adalah fail fritzing:

Langkah 7: Kotak

Kotak itu
Kotak itu

Saya tidak akan menerangkan banyak perkara yang saya lakukan kerana ia bergantung pada power amp dan pembesar suara yang digunakan.

Sebagai maklumat pawagam rumah terletak di bahagian bawah kotak.

Hanya di atas pembesar suara:

1 woofer

2 pembesar suara sederhana, yang saya ubah untuk memasukkannya ke dalam kotak.

Di bahagian atas:

Panel depan dengan skrin, LED, suis dan palam USB.

Kayu:

Untuk pembesar suara, panel sisi atas dan bawah saya menggunakan papan kayu 18 mm.

Bahagian depan adalah papan lapis 10 mm dengan skru 40 mm.

Untuk memudahkan pemasangan kabel dan penyelenggaraan (jika diperlukan !!!) saya meletakkan litar di laci di belakang panel depan

Untuk mengelakkan terlalu panas, lubang besar dilakukan di bahagian bawah panel belakang dan saya meletakkan kipas 5V (8 cm) di panel belakang tepat di sebelah litar.

Gambar di atas hanya untuk memberi idea.

Jadi, itu sahaja !!!!!!!!!

Terima kasih kerana membaca saya

Dan sampai jumpa lagi untuk pengembaraan baru

Disyorkan: