Spisu treści:
- Kieszonkowe dzieci
- Krok 1: Opis części Raspberry:
- Krok 2: Kody pilota na podczerwień
- Krok 3: Program główny
- Krok 4: Część Raspberry: autostart i dodawanie nowych plików
- Krok 5: Zarządzanie energią przez Arduino Nano
- Krok 6: Okablowanie
- Krok 7: Pudełko
Wideo: Raspitone: łatwy w użyciu Jukebox: 7 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:29
Witam, mój następny projekt jest, jak zwykle, niezbyt przydatnym projektem:
To szafa grająca oparta na Raspberry 3 B+
Wiem, coś takiego można łatwo zrobić za pomocą smartfona i głośnika Bluetooth.
Ale w przypadku mojego projektu miałem dwa trudne warunki wstępne:
Chciałem zrobić coś „vintage”.
I ogólnie biorąc, biorąc pod uwagę fakt, że moja pani jest definitywnie beznadziejna dla komputera, bluetooth lub czegokolwiek innego z XXI wieku (a nawet XX), musiałem zrobić coś bardzo prostego w obsłudze…
Tak więc specyfikacje były następujące:
Jeden pojedynczy przycisk do uruchomienia maszyny
Ekran dotykowy (bardzo prosty) do zarządzania muzyką.
Jedno dotknięcie ekranu, aby zatrzymać maszynę.
I mieć dobry dźwięk ………
Kieszonkowe dzieci
Do tego użyłem:
1 Malina 3 B+
1 stare kino domowe, które było bezużyteczne ze względu na czytnik DVD OOS (stary Samsung 2.1 z głośnikiem niskotonowym i 2 głośnikami, które zmodyfikowałem tak, aby pasowały do pudełka)
1 płyta HIFIBERRY DIGI+ (z wyjściem optycznym dla wzmacniacza mocy)
1 pojemnościowy ekran dotykowy 7 (mój to Makeasy for Raspberry z wejściem HDMI i zasilaniem przez USB, ale każdy ekran dotykowy HDMI powinien być w porządku)
1 zasilacz 5V 5A
1 osłona przekaźnika
1 Arduino nano do zarządzania procesem włączania/wyłączania zasilania
1 dioda IR do sterowania kinem domowym (doprowadzona przez tranzystor NPN 2N2222)
1 odbiornik IR (do nauki kodów IR w ramach projektu otrzymuję swój ze starego multimedialnego dysku twardego z pilotem)
3 diody
1 przełącznik trybu konserwacji
1 przełącznik do pracy na arduino (podczas wgrywania arduino jest resetowane)
niektóre złącza JST i Dupont
I za pudełko
Drewno i sklejka (ale nie będę szczegółowo opisywał wykonania pudełka). wystarczy powiedzieć, że jeśli chodzi o boomer wewnątrz pudełka, 10 mm sklejki i 18 mm drewna są obowiązkowe, jeśli nie chcesz widzieć Jukeboxa przechodzącego przez salon podczas gry!!!!
Krok 1: Opis części Raspberry:
Raspi musi zarządzać różnymi rzeczami:
1) komendy do kina domowego (za pomocą pilota IR)
2) pliki muzyczne
3) ekran dotykowy
4) Bicie serca Arduino (które zarządza Wdt (zegarem zegarka))
Zacząłem od dystrybucji Raspbian strech na karcie SD 16G (ponieważ będziemy czytać tylko pliki z karty SD, użycie HDD nie jest konieczne). Nie będę spędzał czasu na tej części, ponieważ sieć jest pełna korepetycji na ten temat..
Zobaczmy różne części w kolejnych krokach….
Krok 2: Kody pilota na podczerwień
Ponieważ nie mogłem znaleźć planu obwodu kina domowego, postanowiłem sterować nim za pomocą zdalnych poleceń
Pierwszym krokiem, który musiałem wykonać, było nauczenie się Raspi kodów zdalnego polecenia kina domowego. W tym celu użyłem bardzo dobrego samouczka w Instruktażach z kodów IR Austina Stantona
Miałem pewne różnice, prawdopodobnie z powodu nowej wersji, ponieważ instrukcje są dość stare, plik hardware.conf już nie istnieje (przynajmniej go nie znalazłem)
Wydaje się również, że tranzystor użyty w tuto jest tranzystorem PNP, ze swojej strony użyłem 2N2222, który jest NPN, ale wynik jest taki sam (z wyjątkiem okablowania !!!!!!!)
Przypisanie pinów jest podane w /boot/config.txt:
#autoryzacja lirc le 2019-07-08dtoverlay=lirc-rpi, gpio_out_pin=22, gpio_in_pin=23
Dioda podczerwieni zostanie tak podłączona do pinu 22 Raspi.
Jedna ważna uwaga: podczas nauki kodów Raspi obowiązkowe jest użycie słów kluczowych wymienionych w poleceniu
irrecord --list-namespace
Oto plik, który zbudowałem dla mojej szafy grającej:
pi@raspitone:/etc/lirc $ cat lircd.conf
# Poświęć trochę czasu na ukończenie tego pliku, jak opisano w # https://sourceforge.net/p/lirc-remotes/wiki/Check… # i udostępnij go innym, wysyłając go do # #
# Ten plik konfiguracyjny został wygenerowany automatycznie
# używanie lirc-0.9.4c(default) w czwartek 9 maja 17:33:37 2019 # Użyta linia poleceń: -d /dev/lirc0 /root/lircd.conf
# Wersja jądra (uname -r): 4.14.98-v7+ # # Zdalna nazwa (od pliku konfiguracyjnego): jukebox
# Marka zdalnego urządzenia, rzecz, którą trzymasz w dłoni: # Model zdalnego urządzenia nr:
# Adres URL informacji o zdalnym urządzeniu:
# Czy zdalne urządzenie ma dołączone urządzenie przechwytujące? g., a
# klucz USB?:
# W przypadku dołączonych urządzeń USB: identyfikator dostawcy USB, identyfikator produktu
# i ciąg urządzenia (użyj dmesg lub lsusb):
# Rodzaj kontrolowanego urządzenia
# (TV, magnetowid, audio, DVD, satelita, kabel, HTPC, …):
# Urządzenia sterowane za pomocą tego pilota:
zacznij zdalnie
nazwa szafy grającej
bity 16
flagi SPACE_ENC|CONST_LENGTH
eps 30
aeps 100
nagłówek 4470 4496
jeden 542 1693
zero 542 581
ptrail 553
pre_data_bits 16
pre_data 0xC2CA
przerwa 107863
toggle_bit_mask 0x0
częstotliwość 38000
rozpocznij kody
KEY_POWER 0x807F
KEY_AUX 0x8877
KEY_VOLUMEUP 0xCC33
KEY_VOLUMEDOWN 0xDC23
kody końcowe
koniec pilota
Jak widać, do kierowania kinem domowym wystarczą 4 polecenia
Zasilanie włącz / wyłącz)
AUX => przełączanie na optyczny kanał wejściowy (ponieważ HC zawsze uruchamia się na czytniku DVD)
I głośność +/-
Powiązane polecenia są wykonywane za pomocą poleceń LIRC:
na przykład: "irsend SEND_ONCE jukebox KEY_VOLUMEUP"
Krok 3: Program główny
Główny program jest napisany w Pythonie:
Ponieważ jestem nowy w Pythonie, myślę, że można zrobić wiele ulepszeń, ale działa….
Specyfikacja:
1) zarządzać ekranem graficznym:
Do tego wykorzystałem APPJAR czyli TKINTER ale cywilizowany dla studenta (mój przypadek) oznacza to dużo łatwiejszy w obsłudze, prawdopodobnie z mniejszymi możliwościami, ale do moich celów wystarczył.
2) odtwarzać pliki mp3:
Użyłem mplayera dla Pythona.
3) generuj losowe liczby do gry w trybie losowym:
Ponieważ nie chciałem słyszeć tej samej piosenki co kwartał, zbudowałem mały program do sprawdzania, czy numer nie występuje na liście x poprzednich numerów (x w zależności od długości playlisty).
Funkcja randint w Pythonie nie jest tak "losowa", o ile widziałem.
4) wyślij "bicie serca" do Arduino
5) zarządzać odtwarzaczem plików:
Ponieważ Mplayer jest asynchroniczny, kiedy plik jest uruchamiany, nie ma możliwości sprawdzenia, czy Python jest gotowy (przynajmniej nie znalazłem prostego sposobu)
Aby rozwiązać ten problem, użyłem poleceń mplayer podających długość pliku i postęp w bieżącym pliku
Zarówno w przypadku 4, jak i 5 wykorzystałem daną przez Appjara możliwość wygenerowania zadania okresowego (ponieważ appjar jest programem zdarzeń, jest to sposób na utworzenie zdarzenia okresowego). funkcja to:
#******************** uruchom Taskmana **********************app.registerEvent(taskman)
p.setPollTime(1000)
Taskman dla "menedżera zadań", który jest def w programie zarządzającym wszystkim, co nie jest zdarzeniami ekranowymi (koniec odtwarzanego pliku, wypełnianie paska postępu, wysyłanie bicia serca do Nano, ….)
Po uruchomieniu ekran wygląda tak:
Oto program: (można go otworzyć za pomocą Notepad ++ lub Geany)
Krok 4: Część Raspberry: autostart i dodawanie nowych plików
Jeśli spojrzysz na program, zobaczysz, że używam kilku plików bash:
1) Start_jukebox:
W rzeczywistości celem jest włączenie kina domowego i przejście na wejście D. IN (wejście optyczne w moim kinie domowym)
pi@raspitone:/bin $ cat start_jukebox#!/bin/bash
irsend SEND_ONCE szafa grająca KEY_POWER
spać 7
irsend SEND_ONCE szafa grająca KEY_AUX
spać 2
2) stop_jukebox:
Aby wyłączyć kino domowe
pi@raspitone:/bin $ kot stop_jukebox
#!/kosz/bash
irsend SEND_ONCE szafa grająca KEY_POWER
Te dwa pliki bash są wywoływane przez Pythona za pomocą polecenia os.system
Aby uruchomić skrypt Pythona zrobiłem mały bash
pi@raspitone:~ $ kot dem_jukebox.bash#!/bin/bash
cd /home/pi
python jukebox_gui.py
Do auto startu w trybie GUI właśnie zmodyfikowałem plik autostartu w /etc/xdg/lxsession/LXDE-pi
pi@raspitone:/etc/xdg/lxsession/LXDE-pi $ cat autostart@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver - bez powitania
@lxterminal --command="dem_jukebox.bash"
punkt-rpi
Dodawanie nowych plików mp3:
Aby dodać nowe pliki, wolałem zrobić mały dedykowany skrypt Pythona:
nowa_piosenka_plik.py
Najpierw wyjaśnię organizację plików systemowych:
Wszystkie pliki znajdują się w /home/pi
Pliki mp3 są przechowywane w katalogu /home/pi/Music
Każdy artysta ma swój własny podkatalog, w którym znajdują się powiązane pliki mp3
pi@raspitone:~/Muzyka/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 Rozbitek_(Instrumental).mp3
-rwxr----- 1 pi pi 12903583 30 czerwca 2017 Rozbitek.mp3
-rwxr----- 1 pi pi 2969869 juin 30 2017 Celt.mp3
-rwxr----- 1 pi pi 9047745 juin 30 2017 Rydwany_(Instrumental).mp3
-rwxr----- 1 pi pi 9403263 juin 30 2017 Chariots.mp3
W katalogu Dokumenty możemy znaleźć zbudowaną listę plików do odtworzenia.
pi@raspitone:~/Dokumenty $ lista kotów.txtFranz_Ferdinand/Michael_live.mp3
Franz_Ferdinand/zło_i_pogan.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
Możemy również znaleźć dane list odtwarzania (ale są one tworzone przez skrypt Pythona)
Mały skrypt Pythona dodaje nowe utwory zapisane w Muzyce w pliku list.txt po sformatowaniu tytułów w formacie UNIX
Oto skrypt: (można go otworzyć za pomocą Notepad ++ lub Geany)
Krok 5: Zarządzanie energią przez Arduino Nano
Ponieważ chciałem mieć coś łatwego na start, postanowiłem zrobić to małym nano:
Zasada:
Po naciśnięciu przycisku start wszystkie urządzenia są zasilane, nano uruchamia się (1 lub 2 sekundy) i przejmuje zarządzanie energią poprzez wyzwolenie przekaźnika, który bocznikuje styki przycisku.
Następnie Nano czeka przez 35 sekund na otrzymanie bicia serca z Raspberry (oznacza to, że proces uruchamiania został zakończony i program jukebox działa).
Dopóki nano odbiera bicie serca, utrzymuje przekaźnik włączony (zegar Watch dog)
Jeśli nie ma już bicia serca (oznacza to, że program szafy grającej jest zatrzymany) Nano czeka przez 20 sekund (aby mieć pewność, że raspi jest całkowicie zatrzymany), aby zwolnić przekaźnik mocy.
Szafa grająca jest wtedy całkowicie wyłączona
Dodałem przełącznik, aby aktywować wejście nano, aby wskazać tryb konserwacji (używam szafy grającej do zarządzania moimi innymi serwerami raspi przez ssh et vnc). Nano następnie dezaktywuje proces Watch Dog
Uwaga:
wejście dla bicia serca z Raspi musi zostać ściągnięte (ale 3,3 V z Raspi jest uważane za wysoki poziom przez Nano)
Dałoby się to zrobić z NE555, ale jestem leniwy i zawsze mam w szufladzie trochę nano !!!!
Oto krótki program w C (można go otworzyć za pomocą Notepad ++)
Krok 6: Okablowanie
Na ekranie:
Kabel HDMI i kabel USB są używane w Raspi do zasilania i obsługi ekranu.
Dla panelu przedniego:
Kabel USB jest również podłączony do Raspi, aby móc przesyłać nowe pliki lub tworzyć kopie zapasowe.
Kabel USB jest podłączony z Nano, aby móc uzyskać dostęp do oprogramowania (w razie potrzeby do modyfikacji)
Podłączam również klucz sprzętowy klawiatury bezprzewodowej do maliny, aby móc dokonywać konserwacji bez użycia zewnętrznej wtyczki USB
Ponieważ używane są Raspberry i Arduino, okablowanie jest dość proste.
Całość znajduje się na płycie matrycy paskowej.
Z malin 2 GPIO stosowane są:
Pin22 dla diody podczerwieni
Pin 27 dla bicia serca do Arduino
na Arduino
Pin 2 jest używany jako pin przerwania dla bicia serca z Raspi.
Piny 3 do 5 służą do sterowania diodami (Start, Wdt, Konserwacja).
Pin 6 jest dla przełącznika serwisowego.
Pin 7 jest wyprowadzony na ekran przekaźnika.
Oto skręcający się plik:
Krok 7: Pudełko
Nie będę dużo opisywał, co zrobiłem, ponieważ zależy to od wzmacniacza mocy i użytych głośników.
Informacyjnie kino domowe znajduje się w dolnej części pudełka.
Tuż nad głośnikami:
1 głośnik niskotonowy
2 średnie głośniki, które zmodyfikowałem, aby wstawić je do pudełka.
Na szczycie:
Panel przedni z ekranem, diodami LED, przełącznikami i wtyczkami USB.
Drewno:
W przypadku głośników, paneli bocznych górną i dolną użyłem deski drewnianej 18 mm.
Przód to sklejka 10 mm z wkrętami 40 mm.
Aby ułatwić okablowanie i konserwację (w razie potrzeby!!!) położyłem obwody na szufladzie za panelem przednim
Aby uniknąć przegrzania, w dolnej części tylnego panelu zrobiono duży otwór, a na tylnym panelu, tuż obok obwodów, umieściłem wentylator 5V (8 cm).
Powyższy obrazek ma tylko dać pomysł.
Więc to jest to !!!!!!!!!
Dziękuję za przeczytanie mnie
I do zobaczenia następnym razem na nowe przygody
Zalecana:
Łatwy uchwyt baterii na papier: 5 kroków
Łatwy uchwyt na baterię papierową: Jeśli masz trudności ze znalezieniem uchwytu na baterię pastylkową podczas robienia małych projektów z dziećmi lub studentami, takimi jak ja, to te instrukcje są właśnie dla Ciebie. Ten uchwyt baterii ma również pozycję ON lub OFF w zależności od tego, jak zamykasz
Łatwy BLE o bardzo niskim poborze mocy w Arduino Część 2 -- Monitor temperatury / wilgotności -- Rev 3: 7 kroków
Easy Very Low Power BLE w Arduino Część 2 -- Monitor temperatury / wilgotności -- Wersja 3: Aktualizacja: 23 listopada 2020 r. – Pierwsza wymiana 2 baterii AAA od 15 stycznia 2019 r., tj. 22 miesiące na 2 baterie alkaliczne AAA Aktualizacja: 7 kwietnia 2019 r. – Wersja 3 z lp_BLE_TempHumidity, dodaje wykresy Data/Czas, używając pfodApp V3.0.362+ i auto throttling
Oświetlenie kubków z pianki DIY - Łatwy i tani pomysł na wystrój Diwali przy użyciu piankowych kubków: 4 kroki
Oświetlenie kubków z pianki DIY | Łatwy i tani pomysł na wystrój Diwali przy użyciu piankowych kubków: W tym poście porozmawiamy o projekcie obchodów Diwali z ograniczonym budżetem. Mam nadzieję, że spodoba ci się ten samouczek
Neopixel Ws2812 Rainbow LED Glow z M5stick-C - Uruchamianie Rainbow na Neopixel Ws2812 przy użyciu M5stack M5stick C przy użyciu Arduino IDE: 5 kroków
Neopixel Ws2812 Rainbow LED Glow z M5stick-C | Uruchamianie Rainbow na Neopixel Ws2812 Używając M5stack M5stick C Używając Arduino IDE: Cześć chłopaki, w tej instrukcji dowiemy się, jak używać neopikselowych ws2812 LED lub taśmy LED lub matrycy LED lub pierścienia LED z płytką rozwojową m5stack m5stick-C z Arduino IDE i zrobimy wzór tęczy z nim
PiTextReader - łatwy w użyciu czytnik dokumentów dla osób z dysfunkcją wzroku: 8 kroków (ze zdjęciami)
PiTextReader - łatwy w użyciu czytnik dokumentów dla osób niedowidzących: PrzeglądAktualizacja: Krótkie demo wideo: https://youtu.be/n8-qULZp0GoPiTextReader umożliwia osobom z wadami wzroku „czytanie” tekstu z kopert, listów i innych przedmiotów. Wykonuje migawkę obrazu przedmiotu, konwertuje na zwykły tekst za pomocą OCR (znak optyczny