Daftar Isi:

Raspitone: Jukebox yang mudah Digunakan: 7 Langkah
Raspitone: Jukebox yang mudah Digunakan: 7 Langkah

Video: Raspitone: Jukebox yang mudah Digunakan: 7 Langkah

Video: Raspitone: Jukebox yang mudah Digunakan: 7 Langkah
Video: Угрюм-река (1969) (1 серия) фильм 2024, November
Anonim
Raspitone: Jukebox yang mudah Digunakan
Raspitone: Jukebox yang mudah Digunakan

Halo, proyek saya berikutnya adalah, seperti yang biasa saya lakukan, proyek yang tidak terlalu berguna:

Ini jukebox berdasarkan Raspberry 3 B+

Saya tahu, hal seperti ini dapat dengan mudah dilakukan dengan smartphone dan speaker Bluetooth.

Tetapi untuk proyek saya, saya memiliki dua prasyarat yang sulit:

Saya ingin membuat sesuatu yang "vintage".

Dan secara keseluruhan, mengingat fakta bahwa wanita saya benar-benar putus asa untuk komputer atau bluetooth atau apa pun dari abad ke-21, (dan bahkan ke-20), saya harus melakukan sesuatu yang sangat sederhana untuk digunakan………

Jadi, spesifikasinya adalah sebagai berikut:

Satu tombol tekan untuk memulai mesin

Layar sentuh (sangat sederhana) untuk mengatur musik.

Satu sentuhan pada layar untuk menghentikan mesin.

Dan untuk memiliki suara yang bagus ………

Perlengkapan

Untuk ini saya menggunakan:

1 Raspberry 3 B+

1 bioskop rumah lama yang tidak berguna karena DVD reader OOS (Samsung 2.1 lama dengan woofer dan 2 speaker yang saya modifikasi agar pas dengan kotaknya)

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

1 layar sentuh kapasitif 7 (milik saya Makeasy untuk raspberry dengan input HDMI dan ditenagai melalui USB tetapi layar sentuh HDMI apa pun harus OK)

1 catu daya 5V 5A

1 perisai relai

1 Arduino nano untuk mengelola proses ON/OFF daya

1 IR led untuk menggerakkan home cinema (dipimpin oleh transistor NPN 2N2222)

1 penerima IR (untuk bagian pembelajaran kode IR dari proyek, saya mendapatkan milik saya dari hard disk Multimedia lama dengan perintah jarak jauh)

3 led

1 sakelar untuk mode perawatan

1 saklar untuk bekerja pada arduino (selama upload arduino direset)

beberapa konektor JST dan Dupont

Dan untuk kotaknya

Kayu dan triplek (tapi saya tidak akan menjelaskan secara mendalam pembuatan kotaknya). sekedar untuk mengatakan bahwa, mengenai boomer di dalam kotak, kayu lapis 10 mm dan kayu 18 mm adalah wajib jika Anda tidak ingin melihat Jukebox melintasi ruang tamu sambil bermain !!!!

Langkah 1: Deskripsi Bagian Raspberry:

Raspi harus mengelola berbagai hal:

1) perintah ke bioskop rumah (melalui remote IR)

2) file musik

3) layar sentuh

4) Detak jantung ke Arduino (yang mengelola Wdt (pengatur waktu anjing))

Saya mulai dari distribusi strech Raspbian pada kartu SD 16 G (Karena kami hanya akan membaca file dari kartu SD, penggunaan HDD tidak diperlukan). Saya tidak akan menghabiskan waktu di bagian ini karena web penuh dengan tuto tentang itu..

Mari kita lihat bagian yang berbeda di langkah selanjutnya….

Langkah 2: Kode Jarak Jauh IR

Karena saya tidak dapat menemukan rencana sirkuit bioskop rumah, saya memutuskan untuk mengendarainya melalui perintah jarak jauh

Langkah pertama yang harus saya selesaikan adalah mempelajari Raspi kode perintah jarak jauh Home cinema. Untuk itu saya menggunakan tuto yang sangat bagus dalam Instructables dari Austin Stanton kode IR

Saya memiliki beberapa perbedaan, mungkin karena versi baru karena instruksinya agak lama, file hardware.conf tidak ada lagi (setidaknya saya tidak menemukannya)

Sepertinya transistor yang digunakan pada tuto adalah transistor PNP, untuk bagian saya menggunakan 2N2222 yang NPN tapi hasilnya sama. (kecuali kabel !!!!!!!!)

Penetapan pin diberikan di /boot/config.txt:

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

LED IR akan terhubung ke pin22 dari Raspi.

Satu catatan penting: ketika mempelajari kode ke Raspi, wajib menggunakan kata kunci yang tercantum dalam perintah

irrecord --list-namespace

Ini file yang saya buat untuk jukebox saya:

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

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

# File konfigurasi ini dibuat secara otomatis

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

# Versi kernel (uname -r): 4.14.98-v7+ # # Nama jarak jauh (pada file konfigurasi): jukebox

# Merek perangkat jarak jauh, benda yang Anda pegang di tangan Anda: # Model perangkat jarak jauh nr:

# Url info perangkat jarak jauh:

# Apakah perangkat jarak jauh memiliki perangkat penangkap yang dibundel e. g., a

# dongle usb?:

# Untuk perangkat USB yang dibundel: id vendor usb, id produk

# dan string perangkat (gunakan dmesg atau lsusb):

# Jenis perangkat yang dikendalikan

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

# Perangkat yang dikendalikan oleh remote ini:

mulai jarak jauh

nama jukebox

bit 16

bendera SPACE_ENC|CONST_LENGTH

eps 30

aep 100

tajuk 4470 4496

satu 542 1693

nol 542 581

ptrail 553

pra_data_bit 16

pra_data 0xC2CA

celah 107863

toggle_bit_mask 0x0

frekuensi 38000

mulai kode

KEY_POWER 0x807F

KEY_AUX 0x8877

KEY_VOLUMEUP 0xCC33

KEY_VOLUMEDOWN 0xDC23

kode akhir

akhiri jarak jauh

Seperti yang Anda lihat, saya hanya perlu 4 perintah untuk menjalankan Home Cinema

Daya (ON/OFF)

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

Dan Volume +/-

Perintah terkait dijalankan melalui perintah LIRC:

misalnya: "irsend SEND_ONCE jukebox KEY_VOLUMEUP"

Langkah 3: Program Utama

Program utama ditulis dengan Python:

Karena saya baru di Python, saya kira ada banyak perbaikan yang bisa dilakukan, tetapi itu berjalan….

Spesifikasi:

1) mengelola layar grafis:

Untuk ini, saya menggunakan APPJAR yang merupakan TKINTER tetapi beradab untuk siswa (kasus saya), ini berarti lebih mudah digunakan, mungkin dengan kemungkinan yang lebih sedikit, tetapi itu sudah cukup untuk tujuan saya.

2) memutar file mp3:

Saya menggunakan mplayer untuk python.

3) menghasilkan angka acak untuk bermain dalam mode acak:

Karena saya tidak ingin mendengar lagu yang sama setiap kuartal, saya membuat program kecil untuk memeriksa apakah nomor tersebut tidak ada dalam x daftar nomor sebelumnya (x tergantung pada panjang daftar putar).

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

4) kirim "detak jantung" ke Arduino

5) mengelola pemutar file:

Karena Mplayer tidak sinkron, ketika file dimulai, tidak ada cara untuk mengetahui Python ketika sudah selesai (setidaknya saya tidak menemukan cara sederhana)

Untuk mengatasinya saya menggunakan perintah mplayer yang memberikan panjang file dan kemajuan dalam file saat ini

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

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

p.setPollTime(1000)

Taskman untuk "task manager" yang merupakan def dalam program yang mengelola semua yang bukan acara layar (akhir file yang diputar, mengisi bilah kemajuan, mengirim detak jantung ke Nano, ….)

Setelah mulai layar terlihat seperti ini:

Gambar
Gambar

Ini programnya:(bisa dibuka lewat Notepad++ atau Geany)

Langkah 4: Bagian Raspberry: mulai otomatis dan Menambahkan File Baru

Jika Anda melihat programnya, Anda dapat melihat bahwa saya menggunakan beberapa file bash:

1) Start_jukebox:

Sebenarnya tujuannya adalah untuk menyalakan bioskop Rumah dan beralih ke input D. IN (input optik di bioskop Rumah saya)

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

irsend SEND_ONCE jukebox KEY_POWER

tidur 7

irsend SEND_ONCE jukebox KEY_AUX

tidur 2

2) stop_jukebox:

Untuk mematikan bioskop Rumah

pi@raspitone:/bin $ cat stop_jukebox

#!/bin/bash

irsend SEND_ONCE jukebox KEY_POWER

Kedua file bash ini dipanggil oleh Python dengan perintah os.system

Untuk memulai skrip Python saya membuat bash kecil

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

cd /home/pi

python jukebox_gui.py

Untuk memulai otomatis dalam mode GUI, saya baru saja memodifikasi file autostart di /etc/xdg/lxsession/LXDE-pi

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

@pcmanfm --desktop --profile LXDE-pi

@xscreensaver -tidak ada percikan

@lxterminal --command="dem_jukebox.bash"

titik-rpi

Menambahkan file mp3 baru:

Untuk menambahkan file baru, saya lebih suka membuat skrip Python kecil khusus:

file_lagu_baru.py

Pertama-tama saya akan menjelaskan organisasi file sistem:

Semua file ada di /home/pi

file mp3 disimpan di direktori /home/pi/Music

Setiap artis memiliki sub direktori sendiri yang menampung file mp3 terkait

pi@raspitone:~/Musik/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 Arrival.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

Di direktori Documents kita dapat menemukan daftar file bawaan untuk dimainkan.

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

Kami juga dapat menemukan data daftar putar (tetapi ini dibangun oleh skrip Python)

Skrip Python kecil menambahkan lagu baru, disimpan di Musik, di list.txt setelah memformat judul dalam format UNIX

Ini scriptnya:(bisa dibuka lewat Notepad++ atau Geany)

Langkah 5: Manajemen Daya Melalui Arduino Nano

Karena saya ingin memulai sesuatu yang mudah, saya memutuskan untuk membuatnya dengan nano kecil:

Prinsip:

Saat menekan tombol mulai, semua perangkat dihidupkan, nano mulai (1 atau 2 detik) dan mengambil alih manajemen daya dengan memicu relai yang mematikan kontak tombol tekan.

Kemudian Nano menunggu selama 35 detik untuk menerima detak jantung dari Raspberry (berarti proses start selesai dan program jukebox berjalan).

Selama nano menerima detak jantung, relai tetap menyala (Watch dog timer)

Jika tidak ada detak jantung lagi (berarti program jukebox dihentikan) Nano menunggu selama 20 detik (untuk memastikan raspi benar-benar berhenti) untuk melepaskan relai daya.

Jukebox kemudian dimatikan total

Saya menambahkan sakelar untuk mengaktifkan input nano untuk menunjukkan mode pemeliharaan (saya menggunakan jukebox untuk mengelola server raspi saya yang lain melalui ssh et vnc). Nano kemudian menonaktifkan proses anjing penjaga

Komentar:

input untuk detak jantung dari Raspi perlu ditarik ke bawah (tetapi 3.3V dari Raspi dianggap sebagai level tinggi oleh Nano)

Itu bisa dilakukan dengan NE555 tetapi saya malas dan selalu memiliki beberapa nano di laci saya !!!!

Berikut adalah program C singkat (bisa dibuka dengan Notepad++)

Langkah 6: Pengkabelan

Pengkabelan
Pengkabelan
Pengkabelan
Pengkabelan

Untuk Layar:

Kabel HDMI dan kabel USB digunakan pada Raspi untuk memberi daya dan menggerakkan layar.

Untuk panel depan:

Kabel USB juga terhubung dari Raspi untuk dapat mengunggah file baru atau membuat cadangan.

Kabel USB terhubung dari Nano untuk dapat mengakses soft (untuk modifikasi jika perlu)

Saya pasang juga dongle keyboard nirkabel pada raspberry untuk dapat melakukan perawatan tanpa menggunakan colokan USB eksternal

Karena Raspberry dan Arduino digunakan, pengkabelan agak sederhana.

Semua terletak di papan matriks strip.

Dari raspberry 2 GPIO digunakan:

Pin22 untuk IR LED

Pin 27 untuk detak jantung ke Arduino

di Arduino

Pin 2 digunakan sebagai pin interupsi untuk detak jantung dari Raspi.

Pin 3 sampai 5 digunakan untuk menggerakkan led (Start, Wdt, Maintenance).

Pin 6 adalah untuk sakelar perawatan.

Pin 7 adalah output ke perisai relay.

Ini file fritzingnya:

Langkah 7: Kotak

Kotak
Kotak

Saya tidak akan menjelaskan banyak apa yang saya lakukan karena itu tergantung pada power amp dan pada speaker yang digunakan.

Sekedar informasi home cinema terletak di bagian bawah box.

Tepat di atas speaker:

1 woofer

2 speaker sedang, yang saya modifikasi untuk dimasukkan ke dalam kotak.

Di atas:

Panel depan dengan layar, LED, sakelar, dan colokan USB.

Kayu:

Untuk speaker, panel samping atas dan bawah saya menggunakan papan kayu 18 mm.

Sisi depan adalah kayu lapis 10 mm dengan sekrup 40 mm.

Untuk memudahkan pemasangan kabel dan perawatan (jika diperlukan!!!) Saya meletakkan sirkuit di laci di belakang panel depan

Untuk menghindari panas berlebih, lubang besar dibuat di bagian bawah panel belakang dan saya memasang kipas 5V (8 cm) di panel belakang tepat di samping sirkuit.

Gambar di atas hanya untuk memberikan gambaran.

Jadi, itu dia!!!!!!!!!

Terima kasih telah membaca saya

Dan sampai jumpa lagi di petualangan baru

Direkomendasikan: