Мазмуну:

Raspitone: Jukeboxту колдонууга оңой: 7 кадам
Raspitone: Jukeboxту колдонууга оңой: 7 кадам

Video: Raspitone: Jukeboxту колдонууга оңой: 7 кадам

Video: Raspitone: Jukeboxту колдонууга оңой: 7 кадам
Video: Обязательно запомни эту хитрость! Как можно моментально вывести йод с одежды? #shorts 2024, Ноябрь
Anonim
Raspitone: Jukebox колдонууга оңой
Raspitone: Jukebox колдонууга оңой

Саламатсызбы, менин кийинки долбоорум, мен колдонгондой, абдан пайдалуу эмес долбоор:

Бул Raspberry 3 B+ негизделген джук кутусу

Билем, мындай нерсени смартфон жана Bluetooth колонкасы менен оңой эле жасаса болот.

Бирок менин долбоорум үчүн менде эки катуу шарт бар болчу:

Мен "винтаж" бир нерсе жасагым келди.

Жалпысынан алганда, менин айым 21 -кылымдан (жана ал тургай 20 -кылымдан) компьютерден же Bluetoothдан же башка нерселерден биротоло үмүтсүз экенин эске алганда, мен колдонуу үчүн өтө жөнөкөй нерсени жасоого туура келди.

Ошентип, спецификациялар төмөнкүдөй болгон:

Машинаны иштетүү үчүн бир гана баскыч

Музыканы башкаруу үчүн сенсордук экран (абдан жөнөкөй).

Машинаны токтотуу үчүн экранда бир тийүү.

Жана жакшы үн үчүн ………

Жабдуулар

Бул үчүн мен колдондум:

1 Малина 3 B+

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

1 HIFIBERRY DIGI+ такта (күчөткүч үчүн оптикалык чыгаруу менен)

1 дюймдук 7 сенсордук экран (меники - бул малина үчүн HDMI киргизүү жана USB аркылуу иштетилген, бирок HDMI сенсордук экраны жакшы болушу керек)

1 кубат 5V 5A

1 релелик калкан

1 Arduino нано күйгүзүү/өчүрүү процессин башкаруу үчүн

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

1 IR алгыч (долбоордун бир бөлүгүн үйрөнүп жаткан IR коддору үчүн мен алыскы буйрук менен эски мультимедиялык катуу дисктен алам)

3 лед

1 тейлөө режими үчүн которгуч

Ардуинодо иштөө үчүн 1 которгуч (жүктөө учурунда arduino баштапкы абалга келтирилет)

кээ бир JST жана Dupont бириктиргичтери

Анан куту үчүн

Жыгач жана фанера (бирок мен кутунун жасалышын терең сүрөттөп бербейм). жөн эле айта кетейин, кутунун ичиндеги бумерге байланыштуу, эгер ойноп жатып Jukeboxтун бөлмөдөн өтүп баратканын көргүңүз келбесе, 10 мм фанера жана 18 мм жыгач милдеттүү түрдө !!!!

1 -кадам: Raspberry Part Description:

Raspi ар кандай нерселерди башкарышы керек:

1) үй кинотеатрына буйруктар (IR пульту аркылуу)

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

3) сенсордук экран

4) Arduino үчүн жүрөктүн согушу (Wdtти көзөмөлдөгөн (иттердин таймери))

Мен 16 G SD картадагы Raspbian стреш бөлүштүрүүдөн баштадым (Биз SD картадан файлдарды гана окуй тургандыктан, HDDди колдонуунун кажети жок). Мен бул бөлүккө убакыт коротпойм, анткени желе бул жөнүндө тутого толгон..

Келгиле, кийинки кадамдарда ар кандай бөлүктөрдү көрөлү ….

2 -кадам: IR Remote Codes

Мен үй кинотеатрынын райондук планын таба албагандыктан, мен аны алыстан буйруктар аркылуу башкарууну чечтим

Мен аягына чыгарышым керек болгон биринчи кадам, үй кинотеатрынын алыскы командаларынын коддорун Raspiге үйрөтүү болду. Мен Остин Стэнтон IR коддорунун Instructables программасында абдан жакшы туто колдондум.

Мен кээ бир айырмачылыктарга ээ болдум, балким жаңы нускадан улам, инструкциялар эски болгондуктан, hardware.conf файлы мындан ары жок (жок дегенде мен тапкан жокмун)

Тутодо колдонулган транзистор PNP транзистору окшойт, мен NPN болгон 2N2222 колдондум, бирок натыйжасы бирдей. (Кабелден башка !!!!!!!!)

Пин тапшырма /boot/config.txt берилет:

#autorisation de lirc le 2019-07-08dtoverlay = lirc-rpi, gpio_out_pin = 22, gpio_in_pin = 23

IR LED ушунчалык Raspi pin22 менен туташат.

Бир маанилүү эскертүү: Raspiге коддорду үйрөнүүдө буйрукта көрсөтүлгөн ачкыч сөздөрдү колдонуу милдеттүү болуп саналат

irrecord-list-namespace

Мына, мен Jukebox үчүн курган файл:

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

# Алыскы түзмөктүн маркасы, колуңузда турган нерсе: # Алыскы түзмөктүн модели nr:

# Алыскы түзмөк маалыматынын url:

# Алыскы түзмөктө топтолгон тартуу түзмөгү барбы д. ж., а

# usb dongle?:

# Топтолгон USB түзмөктөрү үчүн: usb сатуучунун идентификатору, продукт id

# жана түзмөк сабы (dmesg же lsusb колдонуңуз):

# Аппараттын түрү көзөмөлдөнөт

# (Сыналгы, видеомагнитофон, аудио, DVD, спутник, кабель, HTPC,…):

Бул алыстан башкарылуучу # түзмөктөр:

алыстан баштоо

аты jukebox

бит 16

желектер SPACE_ENC | CONST_LENGTH

eps 30

aeps 100

баш 4470 4496

бир 542 1693

582

553

pre_data_bits 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 jukebox KEY_VOLUMEUP"

3 -кадам: Негизги программа

Негизги программа Pythonдо жазылган:

Мен Pythonдо жаңы болгондуктан, көп нерсени жакшыртууга болот деп ойлойм, бирок ал иштейт ….

Мүнөздөмөлөр:

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

Бул үчүн мен TKINTER болгон, бирок студент үчүн цивилизациялуу APPJAR колдондум (менин ишим), бул колдонууну бир топ жеңилирээк, мүмкүн мүмкүнчүлүктөрү азыраак, бирок бул менин максатым үчүн жетиштүү болчу.

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

Мен python үчүн mplayer колдондум.

3) аралаштыруу режиминде ойноо үчүн туш келди сандарды жаратуу:

Мен ар бир чейрек сайын бир эле ырды уккум келбегендиктен, мен кичинекей программаны түздүм, бул сан мурунку х сандар тизмесинде жокпу же жокпу, текшерүү үчүн (ойноо тизмесинин узундугуна жараша x).

Питондогу randint функциясы мен көргөндөй "туш келди" эмес.

4) "жүрөктүн согуусун" Arduinoго жөнөтүү

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

Mplayer асинхрондуу болгондуктан, файл иштей баштаганда Python үчүн ал бүткөндө билүүнүн эч кандай жолу жок (жок дегенде мен жөнөкөй жолду тапкан жокмун)

Муну чечүү үчүн мен mplayer командаларын колдонуп, файлдын узундугун жана учурдагы файлдагы прогрессти бердим

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

#******************* Taskman ********************** app.registerEvent (Taskman)

p.setPollTime (1000)

"Тапшырма менеджери" үчүн Taskman, бул экранда болбогон нерселердин бардыгын башкаруучу программанын дефиси (ойнотулган файлдын аягы, прогресс тилкесин толтуруу, Наного жүрөктүн согуусун жөнөтүү,….)

Экран башталгандан кийин мындай көрүнөт:

Сүрөт
Сүрөт

Бул жерде программа: (Notepad ++ же Geany аркылуу ачылышы мүмкүн)

4 -кадам: Raspberry Part: autostart жана New Files кошуу

Эгерде сиз программаны карасаңыз, анда мен баш файлдарын колдонуп жатканымды көрө аласыз:

1) Start_jukebox:

Чынында, максаты - үй кинотеатрын күйгүзүү жана D. IN кирүүсүнө өтүү (менин үй кинотеатрымдагы оптикалык киргизүү)

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

irsend SEND_ONCE jukebox KEY_POWER

уктоо 7

irsend SEND_ONCE jukebox KEY_AUX

уктоо 2

2) stop_jukebox:

Үй кинотеатрын өчүрүү

pi@raspitone:/bin $ cat stop_jukebox

#!/bin/bash

irsend SEND_ONCE jukebox 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 --profile LXDE-pi

@pcmanfm --desktop --profile 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 juin 30 2017 A_New_Beginning.mp3

-rwxr ----- 1 pi pi 2691736 juin 30 2017 Баруу.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 Арабалар.mp3

Документтер каталогунда биз ойной турган файлдардын курулган тизмесин таба алабыз.

pi@raspitone: ~/Документтер $ 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

Биз ошондой эле ойнотмо тизмелеринин маалыматтарын таба алабыз (бирок бул Python скрипти менен курулган)

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

Бул жерде сценарий: (Notepad ++ же Geany аркылуу ачылышы мүмкүн)

5 -кадам: Ардуино Нано аркылуу бийликти башкаруу

Мен баштоо оңой болгон нерсени каалагандыктан, мен муну кичинекей нано менен жасоону чечтим:

Принцип:

Старт баскычын басканда, бардык түзмөктөр иштейт, нано башталат (1 же 2 секунд) жана баскычтын контактыларынан алыс турган релени иштетүү менен электр энергиясын башкарууну өзүнө алат.

Андан кийин Nano Raspberryден жүрөктүн согушу үчүн 35 секунд күтөт (баштоо процесси аяктаганын жана джукебокс программасы иштей турганын билдирет).

Нано жүрөктүн согуусун кабыл алганда, ал релесин күйгүзөт (Watch dog timer)

Эгерде жүрөктүн согушу жок болсо (джукбокс программасы токтотулганын билдирет) Нано 20 секунд күтөт (raspi толугу менен токтоп калганына ишенүү үчүн), күч релесин бошотуу үчүн.

Jukebox андан кийин толугу менен өчүрүлөт

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

Эскертүү:

Raspiден жүрөктүн кагышын азайтуу керек (бирок Raspiден 3.3V Nano тарабынан жогорку деңгээл деп эсептелет)

Бул NE555 менен жасалышы мүмкүн, бирок мен жалкоомун жана менин суурмамда дайыма нанолор бар !!!!

Бул жерде кыска C программасы (Notepad ++ менен ачылышы мүмкүн)

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

Кабелдик
Кабелдик
Кабелдик
Кабелдик

Экран үчүн:

HDMI кабели жана USB кабели Raspiде экранды иштетүү жана иштетүү үчүн колдонулат.

Алдыңкы панель үчүн:

USB кабели дагы жаңы файлдарды жүктөө же камдык көчүрмөлөрдү алуу үчүн Raspiден туташкан.

Нанодон USB кабели жумшактыкка жетүү үчүн туташтырылган (эгер зарыл болсо өзгөртүү үчүн)

Тышкы USB сайгычын колдонбостон тейлөө жүргүзүү үчүн, мен малинадагы зымсыз клавиатура ключун да туташтырам

Raspberry жана Arduino колдонулгандыктан, кабелдөө абдан жөнөкөй.

Бардыгы матрицанын тактасында жайгашкан.

Малинадан 2 GPIO колдонулат:

IR LED үчүн Pin22

Ардуиного жүрөктүн согушу үчүн 27 -пин

Arduino боюнча

Pin 2 Raspiден жүрөктүн согушу үчүн үзгүлтүк пини катары колдонулат.

3 -тен 5 -ке чейин жетектерди айдоо үчүн колдонулат (Start, Wdt, Maintenance).

Pin 6 тейлөө которгуч үчүн.

7 -пин реле калканчына чыгарылат.

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

7 -кадам: кутуча

Куту
Куту

Мен эмне кылганымды көп сүрөттөп бербейм, анткени ал күчөткүчкө жана колдонулган динамиктерге байланыштуу.

Маалымат катары үй кинотеатры кутунун ылдый жагында жайгашкан.

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

1 woofer

Мен аларды кутуга салуу үчүн өзгөрткөн 2 орто динамик.

Үстүндө:

Алдыңкы панель экраны, светодиоддор, өчүргүчтөр жана USB плагиндери менен.

Жыгач:

Баяндамачылар үчүн үстүнкү жана астыңкы панелдер 18 мм жыгач тактайды колдонгон.

Алдыңкы бети 40 мм бурамалары бар 10 мм фанера.

Кабелдерди жана тейлөөнү жеңилдетүү үчүн (эгер керек болсо !!!) Мен схеманы алдыңкы панелдин артындагы суурмага койдум

Ысып кетпеш үчүн арткы панелдин түбүндө чоң тешик жасалат, мен 5В желдеткичин (8 см) арткы панелге схеманын жанына койдум.

Жогорудагы сүрөт жөн гана түшүнүк берүү үчүн.

Ошентип, бул !!!!!!!!!

Мени окуганыңыз үчүн рахмат

Жана кийинки жолу жаңы укмуштуу окуялар үчүн көрүшкөнчө

Сунушталууда: