Mündəricat:
- Təchizat
- Addım 1: Moruq hissəsinin təsviri:
- Addım 2: IR Uzaqdan Kodları
- Addım 3: Əsas Proqram
- Addım 4: Raspberry Part: autostart və yeni fayllar əlavə etmək
- Addım 5: Arduino Nano ilə Güc İdarəetməsi
- Addım 6: Kabel çəkmə
- Addım 7: Qutu
Video: Raspitone: İstifadəsi asan Jukebox: 7 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:45
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:
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ə
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
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ə:
Mifare Ultralight C -nin Arduino -da RC522 ilə istifadəsi: 3 addım
Arduino -da RC522 ilə Mifare Ultralight C -nin istifadəsi: Kart sahiblərini müəyyən etmək və ya bir şey etməyə icazə vermək (qapını açmaq və s.) Üçün RFID texnologiyasından istifadə etmək olduqca yaygın bir yanaşmadır. DIY tətbiqi halında RC522 modulu olduqca ucuz olduğu üçün geniş istifadə olunur və bu modul üçün çoxlu kod mövcuddur
ESP8266 ilə Analog Sensorların İstifadəsi: 5 Addım
ESP8266 ilə Analog Sensorların İstifadəsi: Analoq-rəqəmsal çevirici (ADC, A/D, A-D və ya A-to-D) analoq siqnalını rəqəmsal siqnala çevirən bir sistemdir. A/D çeviriciləri məlumatların işlənməsi üçün analoq elektrik siqnallarını tərcümə edir. Məhsullara uyğun performans, güc
Asan Jukebox: 6 addım
Asan Jukebox: Materiallar 1 yer arduino 1 protoboard 1 potensial 1 zumbador pasivo 2 botones puentes 1 pantalla LCD 16X21 planşet (MDF üçün)
GY -30 BH1750 İşıq Sensorunun (GY30 / GY302) Necə Tel Edilməsi və İstifadəsi - Asan - Arduino Layihəsi!: 7 Addım
GY -30 BH1750 İşıq Sensorunun (GY30 / GY302) Necə Tel Edilməsi və İstifadəsi - Asan - Arduino Layihəsi !: Bu dərslikdə Arduino ilə GY -30 BH1750 işıq intensivliyi sensorunu necə tez və asanlıqla istifadə edəcəyimizi öyrənəcəyik. Bir nümayiş videosuna baxın
DIY MusiLED, Bir klik Windows və Linux Tətbiqi (32 bit və 64 bit) ilə Sinxronizasiya edilmiş LEDlər. Yenidən Yaratmaq, İstifadəsi Asan, Porta Asan .: 3 Addım
DIY MusiLED, Bir klik Windows və Linux Tətbiqi (32 bit və 64 bit) ilə Sinxronizasiya edilmiş LEDlər. Yenidən Yaratmaq, İstifadəsi Kolay, Portu Asan.: Bu layihə Arduino Kartına 18 LED (6 Qırmızı + 6 Mavi + 6 Sarı) bağlamağa və kompüterinizin Səs Kartının real vaxt siqnallarını təhlil etməyə və onları Diod effektlərinə görə onları işıqlandırmaq üçün LEDlər (Tələ, Yüksək Şapka, Kick)