Isi kandungan:
- Bekalan
- Langkah 1: Penerangan Bahagian Raspberry:
- Langkah 2: Kod Jauh IR
- Langkah 3: Program Utama
- Langkah 4: Bahagian Raspberry: mulakan secara automatik dan Menambah Fail Baru
- Langkah 5: Pengurusan Kuasa Melalui Arduino Nano
- Langkah 6: Kabel
- Langkah 7: Kotak
Video: Raspitone: senang digunakan Jukebox: 7 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:08
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:
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
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
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:
Polargraph Gondola (senang Peasy): 4 Langkah
Polargraph Gondola (senang Peasy): Ini gondola Polargraph (robot gambar gantung) yang sangat mudah dan cepat. Saya membina polargraph sendiri dan dengan cepat menyedari, jika seseorang ingin membuatnya di rumah, mereka memerlukan pencetak 3D untuk membuatnya. Saya melihat versi yang serupa di internet dan
Litar Belajar NANO: Satu PCB. Senang dipelajari. Kemungkinan Tidak Terbatas: 12 Langkah (dengan Gambar)
Litar Belajar NANO: Satu PCB. Senang dipelajari. Kemungkinan Tidak Terbatas: Bermula dalam dunia elektronik dan robotik pada awalnya boleh menjadi sangat menakutkan. Terdapat banyak perkara yang perlu dipelajari pada awalnya (reka bentuk litar, pematerian, pengaturcaraan, memilih komponen elektronik yang tepat, dan lain-lain) dan apabila ada yang salah
Bubut CNC Menghias Telur (senang Dibina): 7 Langkah (dengan Gambar)
Bubut CNC Menghias Telur (senang Dibina): Saya telah melihat beberapa mesin menghias telur yang sangat canggih, tetapi semuanya memerlukan komponen kedudukan yang tepat, jadi ia tidak mudah dibina. Lebih lagi kreativiti anda tidak lagi terlibat dalam lukisan itu. Dengan penyelesaian saya, anda
Cara Bersenang-senang Dengan Arduino (dan Menjadi Geek dalam Prosesnya): 12 Langkah
Bagaimana Bersenang-senang Dengan Arduino (dan Menjadi Geek dalam Prosesnya): Adakah anda ingin mendapatkan kad geek - pronto? Mari kita mulakan! Panduan ini akan memulakan anda ke arah gelap menggunakan platform pengembangan dan prototaip Arduino sumber terbuka. Ini akan memperkenalkan anda kepada pengawal mikro, memulakan anda dengan
Sebenarnya Bersenang-senang Dengan Google Earth: 4 Langkah
Sebenarnya Bersenang-senang Dengan Google Earth: google earth. tempat untuk melihat sesuatu dan bermain permainan?