İçindekiler:
- Gereçler
- Adım 1: Ahududu Parça Açıklaması:
- Adım 2: IR Uzaktan Kodları
- Adım 3: Ana Program
- Adım 4: Ahududu Bölümü:otomatik başlatma ve Yeni Dosya Ekleme
- Adım 5: Arduino Nano Üzerinden Güç Yönetimi
- Adım 6: Kablolama
- 7. Adım: Kutu
Video: Raspitone: Kullanımı Kolay Müzik Kutusu: 7 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
Merhaba, bir sonraki projem, eskiden yaptığım gibi pek kullanışlı olmayan bir proje:
Bu, Raspberry 3 B+ tabanlı bir müzik kutusu
Biliyorum, böyle bir şey bir akıllı telefon ve Bluetooth hoparlör ile kolayca yapılabilir.
Ancak projem için iki zor ön şartım vardı:
"Eski" bir şey yapmak istedim.
Ve genel olarak, leydimin 21. yüzyıldan (ve hatta 20. yüzyıldan) bilgisayar, bluetooth veya başka bir şey için kesinlikle umutsuz olduğu gerçeği göz önüne alındığında, kullanımı çok basit bir şey yapmak zorunda kaldım………
Yani, özellikler aşağıdaki gibiydi:
Makineyi başlatmak için tek bir basma düğmesi
Müziği yönetmek için bir dokunmatik ekran (çok basit).
Makineyi durdurmak için ekrana tek bir dokunuş.
Ve iyi bir sese sahip olmak için ………
Gereçler
Bunun için kullandım:
1 Ahududu 3 B+
DVD okuyucu OOS nedeniyle işe yaramayan 1 eski ev sineması (woofer'lı eski bir Samsung 2.1 ve kutuya sığacak şekilde değiştirdiğim 2 hoparlör)
1 HIFIBERRY DIGI+ kartı (güç Amplifikatörü için optik çıkışlı)
1 kapasitif dokunmatik ekran 7 (benimki HDMI girişli ahududu için Makeasy'dir ve USB ile çalışır, ancak herhangi bir HDMI dokunmatik ekran sorunsuz olmalıdır)
1 güç kaynağı 5V 5A
1 röle kalkanı
Güç AÇMA/KAPAMA sürecini yönetmek için 1 Arduino nano
1 IR, ev sinemasını sürmek için yol açtı (2N2222 NPN transistörü tarafından yönlendirilir)
1 IR alıcısı (projenin IR kodlarını öğrenme kısmı için, benimkini uzaktan komutla eski bir Multimedya sabit diskinden alıyorum)
3 led
Bakım modu için 1 anahtar
Arduino üzerinde çalışmak için 1 anahtar (yükleme sırasında arduino sıfırlanır)
bazı JST ve Dupont konektörleri
Ve kutu için
Ahşap ve kontrplak (ancak kutunun yapımını derinlemesine anlatmayacağım). Sadece kutunun içindeki boomer ile ilgili olarak, oyun oynarken Jukebox'ın oturma odasını geçmesini istemiyorsanız 10 mm kontrplak ve 18 mm ahşap zorunludur !!!!
Adım 1: Ahududu Parça Açıklaması:
Raspi'nin farklı şeyleri yönetmesi gerekiyor:
1) ev sinemasına giden komutlar (IR uzaktan kumanda aracılığıyla)
2) müzik dosyaları
3) dokunmatik ekran
4) Arduino'nun kalp atışı (Wdt'yi yöneten (izleme köpeği zamanlayıcı))
16 G SD kartta Raspbian strech dağıtımından başladım (Sadece SD karttan dosya okuyacağımız için HDD kullanımı gerekli değildir). Web bu konuda eğitimlerle dolu olduğu için bu kısımda zaman harcamayacağım..
Sonraki adımlarda farklı bölümleri görelim….
Adım 2: IR Uzaktan Kodları
Ev sinemasının devre planını bulamadığım için uzaktan kumanda ile sürmeye karar verdim.
Tamamlamam gereken ilk adım, Ev sineması uzaktan kumandasının kodlarını Raspi'ye öğrenmekti. Bunun için Austin Stanton IR kodlarından Instructables'taki çok iyi öğreticiyi kullandım.
Talimatlar oldukça eski olduğundan, muhtemelen yeni sürüm nedeniyle bazı farklılıklar vardı, Hardware.conf dosyası artık mevcut değil (en azından ben bulamadım)
Ayrıca öğreticide kullanılan transistör bir PNP transistörü gibi görünüyor, benim açımdan NPN olan bir 2N2222 kullandım ama sonuç aynı.(kablo hariç !!!!!!!!)
Pin ataması /boot/config.txt dosyasında verilmiştir:
#autorisation de lirc le 2019-07-08dtoverlay=lirc-rpi, gpio_out_pin=22, gpio_in_pin=23
IR LED'i Raspi'nin pin22'sine bağlanacaktır.
Önemli bir not: Raspi kodlarını öğrenirken komutta listelenen anahtar kelimeleri kullanmak zorunludur
kayıt dışı --list-ad alanı
Müzik kutum için oluşturduğum dosya:
pi@raspitone:/etc/lirc $ kedi lircd.conf
# Lütfen bu dosyayı # https://sourceforge.net/p/lirc-remotes/wiki/Check… # içinde açıklandığı gibi bitirmek için zaman ayırın ve # # adresine göndererek başkalarının kullanımına açın.
# Bu yapılandırma dosyası otomatik olarak oluşturuldu
# kullanarak lirc-0.9.4c(varsayılan) 9 Mayıs Perşembe 17:33:37 2019 # Kullanılan komut satırı: -d /dev/lirc0 /root/lircd.conf
# Çekirdek sürümü (uname -r): 4.14.98-v7+ # # Uzak ad (yapılandırma dosyası itibariyle): jukebox
# Uzak cihazın markası, elinizde tuttuğunuz şey: # Uzak cihazın model numarası:
# Uzak cihaz bilgisi url'si:
# Uzak cihazda paketlenmiş bir yakalama cihazı var mı e. g., bir
#usb dongle'ı?:
# Birlikte verilen USB cihazları için: usb satıcı kimliği, ürün kimliği
# ve aygıt dizesi (dmesg veya lsusb kullanın):
# Kontrol edilen cihaz tipi
# (TV, VCR, Ses, DVD, Uydu, Kablo, HTPC, …):
# Bu uzaktan kumandayla kontrol edilen cihaz(lar):
uzaktan başla
isim müzik kutusu
bit 16
bayraklar SPACE_ENC|CONST_LENGTH
eps 30
aeps 100
başlık 4470 4496
bir 542 1693
sıfır 542 581
ptrail 553
pre_data_bits 16
pre_data 0xC2CA
boşluk 107863
toggle_bit_mask 0x0
frekans 38000
kodları başlat
KEY_POWER 0x807F
KEY_AUX 0x8877
KEY_VOLUMEUP 0xCC33
KEY_VOLUMEDOWN 0xDC23
bitiş kodları
uzaktan kumandayı sonlandır
Gördüğünüz gibi, Ev Sinemasını sürmek için sadece 4 komuta ihtiyacım var
Güç açık / kapalı)
AUX => optik giriş kanalına geçmek için (HC her zaman DVD okuyucuda başladığından)
Ve Hacim +/-
İlgili komutlar LIRC komutları aracılığıyla yürütülür:
örneğin: "SEND_ONCE müzik kutusunu KEY_VOLUMEUP irsend"
Adım 3: Ana Program
Ana program Python'da yazılmıştır:
Python'da yeni olduğum için yapılabilecek çok fazla iyileştirme olduğunu tahmin ediyorum, ancak çalışıyor….
Özellikler:
1) grafik ekranı yönetin:
Bunun için TKINTER olan ancak öğrenci için uygar olan APPJAR'ı kullandım (benim durumum) bu, kullanımı çok daha kolay, muhtemelen daha az imkanla, ancak amacıma yetti.
2) mp3 dosyalarını oynatın:
Python için mplayer kullandım.
3) karışık modda oynamak için rastgele sayılar oluşturun:
Her üç ayda bir aynı şarkıyı duymak istemediğimden, numaranın önceki x numaralar listesinde olup olmadığını kontrol etmek için küçük bir program oluşturdum (x çalma listesinin uzunluğuna bağlı olarak).
Python'daki randint işlevi, gördüğüm kadar "rastgele" değil.
4) "kalp atışını" Arduino'ya gönderin
5) dosya oynatıcısını yönetin:
Mplayer eşzamansız olduğundan, dosya başlatıldığında Python'un bittiğini bilmenin bir yolu yoktur (en azından basit bir yol bulamadım)
Bunu çözmek için dosyanın uzunluğunu ve mevcut dosyadaki ilerlemeyi veren mplayer komutlarını kullandım.
Hem 4 hem de 5 için, periyodik bir görev oluşturmak için Appjar tarafından verilen olasılığı kullandım (appjar bir olay programı olduğundan, bu, periyodik bir olay yaratmanın bir yoludur). işlev:
#*********************** görev adamını başlat *************************app.registerEvent(görev adamı)
p.setPollTime(1000)
Ekranda olmayan tüm olayları yöneten programda bir tanım olan "görev yöneticisi" için Görev Adamı (oynatılan dosyanın sonu, ilerleme çubuğunu doldurma, Nano'ya kalp atışı gönderme, ….)
Başladıktan sonra ekran şöyle görünür:
İşte program:(Notepad++ veya Geany ile açılabilir)
Adım 4: Ahududu Bölümü:otomatik başlatma ve Yeni Dosya Ekleme
Programa bakarsanız, bazı bash dosyalarını kullandığımı görebilirsiniz:
1) Start_jukebox:
Aslında amaç Ev sinemasını açmak ve D. IN girişine geçmektir (Ev sinemamdaki optik giriş)
pi@raspitone:/bin $ kedi start_jukebox#!/bin/bash
SEND_ONCE müzik kutusunu gönder KEY_POWER
uyku 7
SEND_ONCE müzik kutusunu KEY_AUX gönder
uyku 2
2) stop_jukebox:
Ev sinemasını kapatmak için
pi@raspitone:/bin $ kedi stop_jukebox
#!/bin/bash
SEND_ONCE müzik kutusunu gönder KEY_POWER
Bu iki bash dosyası Python tarafından os.system komutuyla çağrılır.
Python betiğini başlatmak için küçük bir bash yaptım
pi@raspitone:~ $ kedi dem_jukebox.bash#!/bin/bash
cd /ev/pi
python jukebox_gui.py
GUI modunda otomatik başlatma için /etc/xdg/lxsession/LXDE-pi içindeki otomatik başlatma dosyasını değiştirdim
pi@raspitone:/etc/xdg/lxsession/LXDE-pi $ cat autostart@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profil LXDE-pi
@xscreensaver -sıçrama yok
@lxterminal --command="dem_jukebox.bash"
nokta-rpi
Yeni mp3 dosyaları ekleme:
Yeni dosyalar eklemek için küçük bir Python betiği oluşturmayı tercih ettim:
new_song_file.py
Önce sistem dosyalarının organizasyonunu anlatacağım:
Tüm dosyalar /home/pi dizinindedir
mp3 dosyaları /home/pi/Music dizininde saklanır
Her sanatçının ilgili mp3 dosyalarını barındıran kendi alt dizini vardır.
pi@raspitone:~/Music/Mike_oldfield $ ls -ltoplam 760516
-rwxr----- 1 pi pi 2254923 haziran 30 2017 A_New_Beginning.mp3
-rwxr----- 1 pi pi 2691736 haziran 30 2017 Arrival.mp3
-rwxr----- 1 pi pi 8383244 haziran 30 2017 Ascension.mp3
-rwxr----- 1 pi pi 5410816 haziran 30 2017 Blue_Night.mp3
-rwxr----- 1 pi pi 13125199 haziran 30 2017 Castaway_(Instrumental).mp3
-rwxr----- 1 pi pi 12903583 haziran 30 2017 Castaway.mp3
-rwxr----- 1 pi pi 2969869 haziran 30 2017 Celt.mp3
-rwxr----- 1 pi pi 9047745 haziran 30 2017 Chariots_(Instrumental).mp3
-rwxr----- 1 pi pi 9403263 haziran 30 2017 Chariots.mp3
Belgeler dizininde oynatılacak dosyaların yerleşik listesini bulabiliriz.
pi@raspitone:~/Belgeler $ kedi listesi.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
Çalma listesi verilerini de bulabiliriz (ancak bu Python betiği tarafından oluşturulmuştur)
Küçük Python betiği, başlıkları UNIX biçiminde biçimlendirdikten sonra, Müzik'e kaydedilen yeni şarkıları list.txt dosyasına ekler.
İşte betik:(Notepad++ veya Geany ile açılabilir)
Adım 5: Arduino Nano Üzerinden Güç Yönetimi
Başlaması kolay bir şeye sahip olmak istediğim için küçük bir nano ile yapmaya karar verdim:
İlke:
Başlat düğmesine basıldığında tüm cihazlara güç sağlanır, nano başlatılır (1 veya 2 saniye) ve düğme kontaklarını şöntleyen bir röleyi tetikleyerek güç yönetimini devralır.
Ardından Nano, Raspberry'den kalp atışını almak için 35 saniye bekler (başlatma işleminin tamamlandığı ve müzik kutusu programının çalıştığı anlamına gelir).
Nano kalp atışını aldığı sürece röleyi açık tutar (Watch dog timer)
Artık kalp atışı yoksa (müzik kutusu programının durduğu anlamına gelir) Nano, güç rölesini serbest bırakmak için 20 saniye (raspi'nin tamamen durduğundan emin olmak için) bekler.
Müzik kutusu daha sonra tamamen kapatılır
Bakım modunu belirtmek için nano girişini etkinleştirmek için bir anahtar ekledim (diğer raspi sunucularımı ssh et vnc aracılığıyla yönetmek için müzik kutusunu kullanıyorum). Nano daha sonra bekçi köpeği sürecini devre dışı bırakır
Açıklama:
Raspi'den gelen kalp atışı girişinin aşağı çekilmesi gerekiyor (ancak Raspi'den gelen 3.3V, Nano tarafından yüksek seviye olarak kabul ediliyor)
NE555 ile yapılabilir ama tembelim ve çekmecemde her zaman biraz nano var !!!!
İşte kısa C programı (Notepad++ ile açılabilir)
Adım 6: Kablolama
Ekran için:
Raspi'de ekranı çalıştırmak ve çalıştırmak için bir HDMI kablosu ve bir USB kablosu kullanılır.
Ön panel için:
Yeni dosyalar yükleyebilmek veya yedekleme yapabilmek için Raspi'den bir USB kablosu da bağlanır.
Yazılıma erişebilmek için Nano'dan bir USB kablosu bağlanır (gerekirse değişiklikler için)
Ayrıca harici USB fişini kullanmadan bakım yapabilmek için ahududuya kablosuz klavye dongle takıyorum.
Raspberry ve Arduino kullanıldığı için kablolama oldukça basittir.
Hepsi bir şerit matris kartında bulunur.
Ahudududan 2 GPIO kullanılır:
IR LED için Pin22
Arduino'ya kalp atışı için Pin 27
Arduino'da
Pin 2, Raspi'den gelen kalp atışı için bir kesme pini olarak kullanılır.
3 ila 5 arası pinler ledleri sürmek için kullanılır (Start, Wdt, Maintenance).
Pim 6 bakım anahtarı içindir.
Pin 7, röle kalkanına çıkıştır.
İşte fritzing dosyası:
7. Adım: Kutu
Güç amplifikatörüne ve kullanılan hoparlörlere bağlı olduğu için ne yaptığımı çok fazla açıklamayacağım.
Bilgi olarak ev sineması kutunun altında bulunur.
Hoparlörlerin hemen üzerinde:
1 woofer
Kutuya yerleştirmek için değiştirdiğim 2 orta boy hoparlör.
Yukarıda:
Ekranlı ön panel, LED'ler, anahtarlar ve USB fişleri.
Odun:
Hoparlörler için yan paneller üstte ve altta 18 mm ahşap tahta kullandım.
Ön taraf 40 mm vidalı 10 mm kontrplaktır.
Kablolama ve bakımı kolaylaştırmak için (gerekirse!!!) Devreyi ön panelin arkasındaki bir çekmeceye koydum.
Aşırı ısınmayı önlemek için arka panelin altına büyük bir delik açıldı ve arka panele devrenin hemen yanına 5V'luk bir fan (8 cm) koydum.
Yukarıdaki resim sadece fikir vermek içindir.
Yani bu kadar !!!!!!!!!
beni okuduğunuz için teşekkür ederim
Ve bir dahaki sefere yeni maceralarda görüşmek üzere
Önerilen:
Kolay Müzik Kutusu: 6 Adım
Easy Jukebox: Malzemeler 1 placa arduino 1 protokol 1 potenciómetro 1 zumbador pasivo 2 botones puentes 1 pantalla LCD 16X21 plancha de MDF(para la caja)
DIY Köpük Bardak Işıkları - Köpük Bardak Kullanımı Kolay ve Ucuz Diwali Dekor Fikri: 4 Adım
DIY Köpük Bardak Işıkları | Köpük Bardak Kullanarak Kolay ve Ucuz Diwali Dekor Fikri: Bu yazımızda, bütçeye uygun bir Diwali Kutlamaları projesinden bahsedeceğiz. Umarım bu öğreticiyi beğenirsiniz
PiTextReader - Görme Bozukluğu için Kullanımı Kolay Belge Okuyucu: 8 Adım (Resimlerle)
PiTextReader - Görme Bozukluğu için Kullanımı Kolay bir Belge Okuyucu: Genel BakışGüncelleme: Kısa video demosu: https://youtu.be/n8-qULZp0GoPiTextReader, görme engelli birinin zarflardan, harflerden ve diğer öğelerden metin "okumasına" olanak tanır. Öğenin anlık görüntüsünü alır, OCR (Optik Karakter
DIY MusiLED, Tek Tıkla Windows ve Linux Uygulaması ile Müzik Senkronize LED'ler (32-bit ve 64-bit). Yeniden Oluşturması Kolay, Kullanımı Kolay, Taşıması Kolay.: 3 Adım
DIY MusiLED, Tek Tıkla Windows ve Linux Uygulaması ile Müzik Senkronize LED'ler (32-bit ve 64-bit). Yeniden Oluşturması Kolay, Kullanımı Kolay, Portu Kolay.: Bu proje, Arduino Board'unuza 18 LED (6 Kırmızı + 6 Mavi + 6 Sarı) bağlamanıza ve bilgisayarınızın Ses Kartının gerçek zamanlı sinyallerini analiz etmenize ve bunları aktarmanıza yardımcı olacaktır. Vuruş efektlerine göre onları aydınlatmak için LED'ler (Snare, High Hat, Kick)
El Tipi 6 Notalı Müzik Kutusu / Enstrüman (Yapımı ve Geliştirmesi Kolay!): 5 Adım (Resimlerle)
El Tipi 6 Notalı Müzik Kutusu / Enstrüman (Yapımı ve Geliştirmesi Kolay!): Merhaba! Wintergatan adlı İsveçli bir grubun üyesi olan Martin Molin'den ilham alarak müzik kutularına ve onlarla ilgili her şeye aşık oldum. Müzik kutuları için şarkı yapan insanlar hala eski moda bir şarkıyı delme yöntemini kullanıyorlar