Мазмұны:

Распитон: қолдануға оңай Jukebox: 7 қадам
Распитон: қолдануға оңай Jukebox: 7 қадам

Бейне: Распитон: қолдануға оңай Jukebox: 7 қадам

Бейне: Распитон: қолдануға оңай Jukebox: 7 қадам
Бейне: Majestic, Boney M. - Rasputin (Lyrics) he was big and strong in his eyes a flaming glow 2024, Қараша
Anonim
Raspitone: Jukebox қолдануға оңай
Raspitone: Jukebox қолдануға оңай

Сәлеметсіз бе, менің келесі жобам, мен қолданатындай, өте пайдалы емес жоба:

Бұл Raspberry 3 B+ негізіндегі джукбокс

Мен білемін, мұндай нәрсені смартфон мен Bluetooth динамигінің көмегімен оңай жасауға болады.

Бірақ менің жобам үшін менде екі қиын алғышарт болды:

Мен «винтаж» нәрсе жасағым келді.

Жалпы алғанда, менің ханым 21 -ші ғасырдан (және тіпті 20 -шы ғасырдан) компьютерге немесе блютузға немесе кез келген нәрсеге түбегейлі үмітсіз екенін ескере отырып, мен өте қарапайым нәрсені қолдануға мәжбүр болдым …….

Сонымен, сипаттамалар келесідей болды:

Машинаны іске қосу үшін бір ғана түйме

Музыканы басқаруға арналған сенсорлық экран (өте қарапайым).

Машинаны тоқтату үшін экранда бір рет түрту.

Ал жақсы дыбысқа ие болу үшін …….

Жабдықтар

Ол үшін мен қолдандым:

1 таңқурай 3 B+

DVD оқитын OOS арқасында пайдасыз болған 1 ескі үй кинотеатры (ескі Samsung 2.1 вуфері мен 2 динамигі бар, мен оны қорапқа сыйғызды)

1 HIFIBERRY DIGI+ тақтасы (Amp қуатына арналған оптикалық шығысы бар)

1 дюйм сыйымдылықтағы сенсорлы экран 7 «(менікі HDMI кірісі бар таңқурайға арналған және USB арқылы жұмыс істейді, бірақ кез келген HDMI сенсорлық экраны жақсы болуы керек)

1 қуаты 5В 5А

1 реле қалқаны

Қуатты қосу/өшіру процесін басқару үшін 1 Arduino нано

1 IR үй кинотеатрын басқаруға алып келді (2N2222 NPN транзисторымен басқарылады)

1 IR қабылдағыш (жобаның инфрақызыл кодтары үшін мен қашықтан басқарылатын ескі мультимедиялық қатты дискіні аламын)

3 жарықдиодты

Техникалық қызмет көрсету режимі үшін 1 қосқыш

Arduino -да жұмыс істеуге арналған 1 қосқыш (жүктеу кезінде arduino қалпына келтіріледі)

кейбір JST және Dupont қосқыштары

Және қорап үшін

Ағаш пен фанера (бірақ мен қораптың жасалуын терең сипаттамаймын). Қораптың ішіндегі бумерге қатысты 10 мм фанера мен 18 мм ағаш міндетті болып табылады, егер сіз ойын кезінде қонақ бөлмеден өтіп бара жатқан Jukebox -ты көргіңіз келмесе !!!!

1 -қадам: Таңқурай бөлігінің сипаттамасы:

Raspi әр түрлі нәрселерді басқаруы керек:

1) үй кинотеатрына командалар (IR қашықтан басқару пульті арқылы)

2) музыкалық файлдар

3) сенсорлық экран

4) Arduino -ның жүрек соғысы (Wdt -ты басқарады (ит таймері))

Мен 16 G SD картасында Raspbian strech таратылымынан бастадым (өйткені біз тек SD картадан файлдарды оқимыз, HDD пайдалану қажет емес). Мен бұл бөлімге уақыт жұмсамаймын, өйткені веб бұл туралы толығырақ.

Келесі қадамдарда әр түрлі бөліктерді көрейік ….

2 -қадам: IR қашықтағы кодтары

Мен үй кинотеатрының схемасын таба алмағандықтан, мен оны қашықтағы командалар арқылы басқаруды шештім

Мен аяқтауым керек болатын бірінші қадам - үй кинотеатрының қашықтан басқару командасының кодтарын Распиге үйрену болды, сондықтан мен Остин Стэнтонның IR кодтарынан Instructables бағдарламасында өте жақсы репетиторды қолдандым.

Менде кейбір айырмашылықтар болды, бәлкім, нұсқаулықтар ескі болғандықтан, hardware.conf файлы енді жоқ (мен оны таппадым)

Менің ойымша, тутода қолданылатын транзистор - бұл PNP транзисторы, мен NPN болып табылатын 2N2222 қолдандым, бірақ нәтиже бірдей. (Кабельден басқа !!!!!!!!)

PIN тағайындау /boot/config.txt ішінде берілген:

#Авторизация de lirc le 2019-07-08dtoverlay = lirc-rpi, gpio_out_pin = 22, gpio_in_pin = 23

IR жарық диоды Raspi -дің pin 22 -ге осылайша қосылады.

Бір маңызды ескерту: кодтарды Raspi -ге үйрену кезінде пәрменде көрсетілген кілт сөздерді қолдану міндетті болып табылады

жазба-тізім-аттар кеңістігі

Міне, мен джукбокс үшін құрастырған файл:

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

# Бұл файлды # https://sourceforge.net/p/lirc-remotes/wiki/Check… # сипатталғандай аяқтауға және оны # # жіберу арқылы басқаларға қол жетімді етуге уақыт бөліңіз.

# Бұл конфигурация файлы автоматты түрде жасалды

# lirc -0.9.4c қолдану (әдепкі) 9 мамыр, жұма 17:33:37 2019 # Қолданылған пәрмен жолы: -d /dev /lirc0 /root/lircd.conf

# Ядро нұсқасы (uname -r): 4.14.98 -v7+ # # Қашықтағы атау (конфигурациялық файл бойынша): jukebox

# Қашықтағы құрылғының маркасы, қолыңызда: # Қашықтағы құрылғы үлгісі:

# Қашықтағы құрылғы туралы ақпарат url:

# Қашықтағы құрылғыда жинақталған түсіру құрылғысы бар ма e. г., а

# usb кілті?:

# Жинақталған USB құрылғылары үшін: usb жеткізушісінің идентификаторы, өнімнің идентификаторы

# және құрылғы жолы (dmesg немесе lsusb пайдаланыңыз):

# Басқарылатын құрылғы түрі

№ (теледидар, бейнемагнитофон, аудио, DVD, спутник, кабель, HTPC,…):

# Бұл пультпен басқарылатын құрылғылар:

қашықтан бастау

Jukebox атауы

бит 16

жалаулар SPACE_ENC | CONST_LENGTH

eps 30

100

тақырып 4470 4496

бір 542 1693

582

553

16

pre_data 0xC2CA

107863

toggle_bit_mask 0x0

жиілігі 38000

кодтарды бастаңыз

KEY_POWER 0x807F

KEY_AUX 0x8877

KEY_VOLUMEUP 0xCC33

KEY_VOLUMEDOWN 0xDC23

аяқталатын кодтар

қашықтан басқару құралы

Көріп отырғаныңыздай, маған үй кинотеатрын жүргізу үшін 4 команда қажет

Қуат (ON/OFF)

AUX => оптикалық кіріс каналына ауысу үшін (HC әрқашан DVD оқу құралында басталады)

Және көлемі +/-

Байланысты командалар LIRC командалары арқылы орындалады:

мысалы: «irsend SEND_ONCE» KUK_VOLUMEUP «джукебоксы»

3 -қадам: Негізгі бағдарлама

Негізгі бағдарлама Python тілінде жазылған:

Мен Python -да жаңадан болғандықтан, оны жақсартуға болады деп ойлаймын, бірақ ол жұмыс істейді ….

Ерекшеліктер:

1) графикалық экранды басқару:

Бұл үшін мен TKINTER болып табылатын APPJAR қолдандым, бірақ студент үшін өркениетті (менің жағдайым), бұл пайдалану мүмкіндігін әлдеқайда жеңіл, мүмкін мүмкіндіктері аз, бірақ бұл менің мақсатым үшін жеткілікті болды.

2) mp3 файлдарын ойнату:

Мен python үшін mplayer қолдандым.

3) аралас режимде ойнау үшін кездейсоқ сандар шығарады:

Мен әр тоқсан сайын бір әнді естігім келмейтіндіктен, мен осы санның алдыңғы x санында жоқтығын тексеру үшін шағын бағдарлама жасадым (ойнату тізімінің ұзындығына байланысты х).

Питондағы randint функциясы мен көргендей «кездейсоқ» емес.

4) «жүрек соғысын» Ардуиноға жіберіңіз

5) файлдарды ойнатқышты басқару:

Mplayer асинхронды болғандықтан, файл іске қосылған кезде Python үшін ол аяқталғанын білуге ешқандай мүмкіндік жоқ (кем дегенде мен қарапайым жолды таппадым)

Мұны шешу үшін мен mplayer пәрмендерін қолданып, файлдың ұзындығын және ағымдағы файлдағы прогресті қолдандым

4 -те де, 5 -те де мен мерзімді тапсырманы жасау үшін Appjar берген мүмкіндікті қолдандым (appjar оқиғалар бағдарламасы болғандықтан, бұл кезеңдік оқиғаны құру әдісі). функция - бұл:

#******************* taskman бастау ********************** app.registerEvent (taskman)

p.setPollTime (1000)

«Экран оқиғалары» емес барлық нәрсені басқаратын бағдарламадағы кемшілік болып табылатын «тапсырмалар менеджеріне» арналған тапсырма адамы (ойнатылған файлдың соңы, прогресс жолағын толтыру, Наноға жүрек соғуын жіберу …).

Басталғаннан кейін экран келесідей болады:

Кескін
Кескін

Міне, бағдарлама: (Notepad ++ немесе Geany арқылы ашуға болады)

4 -қадам: Таңқурай бөлігі: автоматты түрде іске қосу және жаңа файлдарды қосу

Егер сіз бағдарламаға қарасаңыз, менің кейбір bash файлдарын қолданатынымды көресіз:

1) Start_jukebox:

Негізгі мақсат - үй кинотеатрын қосу және D. IN кірісіне ауысу (менің үй кинотеатрындағы оптикалық кіріс)

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

irsend SEND_ONCE джукебоксы KEY_POWER

ұйықтау 7

irsend SEND_ONCE KEY_AUX джукобоксы

ұйықтау 2

2) stop_jukebox:

Үй кинотеатрын өшіру

pi@raspitone:/bin $ cat stop_jukebox

#!/bin/bash

irsend SEND_ONCE джукебоксы KEY_POWER

Бұл екі файлды Python os.system командасымен шақырады

Python сценарийін бастау үшін мен кішкене штрих жасадым

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

cd /home /pi

python jukebox_gui.py

GUI режимінде автоматты түрде іске қосу үшін мен/etc/xdg/lxsession/LXDE-pi ішіндегі автоматты түрде бастау файлын өзгерттім.

pi@raspitone:/etc/xdg/lxsession/LXDE-pi $ cat autostart@lxpanel-профиль LXDE-pi

@pcmanfm-жұмыс үстелі-LXDE-pi профилі

@xscreensaver -no -splash

@lxterminal --command = «dem_jukebox.bash»

нүкте-rpi

Жаңа mp3 файлдарын қосу:

Жаңа файлдарды қосу үшін мен кішкене арнайы Python сценарийін жасауды жөн көрдім:

new_song_file.py

Мен алдымен жүйелік файлдардың ұйымдастырылуын түсіндіремін:

Барлық файлдар /home /pi ішінде

mp3 файлдары/home/pi/Music каталогында қорғалған

Әр суретшінің тиісті mp3 файлдарын орналастыратын өзінің ішкі каталогы бар

pi@raspitone: ~/Музыка/Майк_олдфилд $ ls -барлығы 760516

-rwxr ----- 1 pi pi 2254923 шілде 30 2017 A_New_Beginning.mp3

-rwxr ----- 1 pi pi 2691736 шілде 30 2017 Келу.mp3

-rwxr ----- 1 pi pi 8383244 шілде 30 2017 Ascension.mp3

-rwxr ----- 1 pi pi 5410816 шілде 30 2017 Blue_Night.mp3

-rwxr ----- 1 pi pi 13125199 шілде 30 2017 Castaway_ (Аспаптық).mp3

-rwxr ----- 1 pi pi 12903583 шілде 30 2017 Castaway.mp3

-rwxr ----- 1 pi pi 2969869 шілде 30 2017 Celt.mp3

-rwxr ----- 1 pi pi 9047745 juin 30 2017 Chariots_ (Instrumental).mp3

-rwxr ----- 1 pi pi 9403263 juin 30 2017 Арбалар.mp3

Құжаттар каталогында біз ойнатуға болатын файлдардың тізімін таба аламыз.

pi@raspitone: ~/Құжаттар $ cat list.txtFranz_Ferdinand/Michael_live.mp3

Франц_Фердинанд/зұлымдық_және.mp3

Франц_Фердинанд/Walk_Away_live.mp3

Франц_Фердинанд/love_and_destroy.mp3

Франц_Фердинанд/his_fffire.mp3

Франц_Фердинанд/eleanor_put_your_boots_on.mp3

Франц_Фердинанд/хабарсыз_сің.mp3

Франц_Фердинанд/this_fire_ (playgroup_remix).mp3

Франц_Фердинанд/Жаклин.mp3

Біз сондай -ақ ойнату тізімдерінің деректерін таба аламыз (бірақ бұл Python сценарийімен салынған)

Кішкентай Python сценарийі UNIX форматында титттерді пішімдеуден кейін list.txt тізімінде Музыкада сақталған жаңа әндерді қосады.

Міне сценарий: (Notepad ++ немесе Geany арқылы ашуға болады)

5 -қадам: Arduino Nano арқылы қуатты басқару

Мен оңай басталатын нәрсені алғым келгендіктен, мен оны кішкене нано арқылы жасауға шешім қабылдадым:

Принципі:

Іске қосу түймесін басқанда, барлық құрылғыларға қуат беріледі, нано іске қосылады (1 немесе 2 секунд) және түйменің түйіспелерінен бас тартатын реле іске қосу арқылы қуатты басқарады.

Содан кейін Nano Raspberry -ден жүрек соғуын алу үшін 35 секунд күтеді (іске қосу процесі аяқталғанын және jukebox бағдарламасы жұмыс істейтінін білдіреді).

Нано жүрек соғуын қабылдағанша, ол эстафетаны қосады (ит таймерін қадағалаңыз)

Егер енді жүрек соғысы болмаса (джукбокс бағдарламасы тоқтатылғанын білдіреді) Нано қуат релесін босату үшін 20 секунд күтеді (распи толығымен тоқтатылғанына сенімді болу үшін).

Джукбокс толығымен өшіріледі

Мен қызмет көрсету режимін көрсету үшін нано кірісін белсендіру үшін қосқышты қостым (мен ssh et vnc арқылы басқа raspi серверлерімді басқару үшін джукбоксты қолданамын). Нано күзетші процесін сөндіреді

Ескерту:

Raspi -дің жүрек соғу жиілігін төмендету керек (бірақ Raspi -ден 3.3 В -ты нано жоғары деңгейлі деп есептейді)

Мұны NE555 көмегімен жасауға болады, бірақ мен жалқаумын және менің тартпамда әрқашан нано бар !!!!

Міне қысқа С бағдарламасы (Notepad ++ көмегімен ашуға болады)

6 -қадам: кабель

Кабель
Кабель
Кабель
Кабель

Экран үшін:

HDMI кабелі мен USB кабелі Raspi -де экранды қуаттандыру және басқару үшін қолданылады.

Алдыңғы панель үшін:

Жаңа файлдарды жүктеу немесе сақтық көшірмелерді жасау үшін USB кабелі Raspi -ден де қосылған.

Нанодан USB кабелі жалғанған (қажет болған жағдайда өзгерту үшін).

Мен сыртқы USB штепсельін пайдаланбай техникалық қызмет көрсету үшін таңқурайға сымсыз пернетақтаны қосамын

Raspberry мен Arduino қолданылатындықтан, кабельдеу өте қарапайым.

Барлығы матрицалық тақтада орналасқан.

Таңқурайдан 2 GPIO қолданылады:

IR LED үшін PIN22

Ардуиноға жүрек соғысы үшін 27 түйреуіш

Arduino -да

2 -түйреуіш Raspi -дің жүрек соғысы үшін үзіліс түйреуіші ретінде қолданылады.

3 -тен 5 -ге дейінгі түйреуіштер светодиодты басқару үшін қолданылады (Бастау, Втт, Техникалық қызмет көрсету).

6 түйреуіш қосқышқа арналған.

7 -пин реле қалқанына шығарылады.

Міне фритинг файлы:

7 -қадам: қорап

Қорап
Қорап

Мен не істегенімді көп сипаттамаймын, себебі ол күшейткіш пен қолданылатын динамиктерге байланысты.

Ақпарат ретінде үй кинотеатры қораптың төменгі жағында орналасқан.

Динамиктердің үстінде:

1 вуфер

Мен оларды қорапқа енгізу үшін өзгерткен 2 орташа динамик.

Жоғарғы жағында:

Экран, жарық диоды, қосқыштар мен USB штепсельдері бар алдыңғы панель.

Ағаш:

Динамиктер үшін бүйірлік панельдер жоғарғы және төменгі жағында 18 мм ағаш тақтайшаны қолданды.

Алдыңғы жағы 40 мм бұрандалары бар 10 мм фанера.

Кабельді және техникалық қызмет көрсетуді жеңілдету үшін (қажет болса !!!) мен тізбекті алдыңғы панельдің артындағы тартпаның үстіне қойдым.

Қызып кетпеу үшін артқы панельдің түбінде үлкен тесік жасалады, мен 5В желдеткішті (8 см) артқы панельге схеманың қасына қойдым.

Жоғарыдағы сурет тек түсінік беру үшін.

Сонымен, бұл !!!!!!!!!

Мені оқығаныңыз үшін рахмет

Ал келесі жолы жаңа оқиғаларға кездескенше

Ұсынылған: