Բովանդակություն:

Raspitone: հեշտ օգտագործման Jukebox: 7 քայլ
Raspitone: հեշտ օգտագործման Jukebox: 7 քայլ

Video: Raspitone: հեշտ օգտագործման Jukebox: 7 քայլ

Video: Raspitone: հեշտ օգտագործման Jukebox: 7 քայլ
Video: Угрюм-река (1969) (1 серия) фильм 2024, Սեպտեմբեր
Anonim
Raspitone. Հեշտ օգտագործման Jukebox
Raspitone. Հեշտ օգտագործման Jukebox

Բարև, իմ հաջորդ նախագիծը, ինչպես անում էի, ոչ այնքան օգտակար նախագիծ է.

Սա ջուկբոքս է ՝ հիմնված Raspberry 3 B+ - ի վրա

Գիտեմ, նման բան հեշտությամբ կարելի է անել սմարթֆոնով և Bluetooth բարձրախոսով:

Բայց իմ նախագծի համար ես ունեի երկու ծանր նախապայման.

Ես ուզում էի ինչ -որ «վինտաժ» անել:

Եվ ընդհանրապես, հաշվի առնելով այն փաստը, որ տիկինս վերջնականապես անհույս է 21 -րդ դարից (և նույնիսկ 20 -րդ դարից) համակարգչից կամ bluetooth- ից կամ որևէ այլ բանից, ես ստիպված էի անել մի շատ պարզ բան, որն օգտագործվում էր ………

Այսպիսով, տեխնիկական բնութագրերը հետևյալն էին.

Մեքենան գործարկելու համար մեկ կոճակ

Սենսորային էկրան (շատ պարզ) երաժշտությունը կառավարելու համար:

Էկրանի վրա մեկ հպում `մեքենան կանգնեցնելու համար:

Եվ լավ ձայն ունենալու համար ………

Պարագաներ

Դրա համար ես օգտագործել եմ

1 Ազնվամորի 3 B+

1 հին տնային կինոթատրոն, որն անօգուտ էր DVD ընթերցող OOS- ի պատճառով (հին Samsung 2.1 ՝ վուֆերով և 2 բարձրախոսով, որոնք ես փոփոխեցի, որպեսզի տեղավորվեն տուփի մեջ)

1 HIFIBERRY DIGI+ տախտակ (հզորության հզորության օպտիկական ելքով)

1 տարողունակ սենսորային էկրան 7 դյույմ (իմը պատրաստում է ազնվամորիի համար HDMI մուտքով և սնուցվում է USB- ով, բայց ցանկացած HDMI սենսորային էկրան պետք է լավ լինի)

1 սնուցման աղբյուր 5V 5A

1 ռելե վահան

1 Arduino nano ՝ միացնելու/անջատելու գործընթացը կառավարելու համար

1 IR- ն հանգեցրեց տնային կինոթատրոն վարելուն (որը ղեկավարում էր 2N2222 NPN տրանզիստորը)

1 IR ընդունիչ (նախագծի մի մասը սովորող IR կոդերի համար ես իմը ստանում եմ հին մուլտիմեդիա կոշտ սկավառակից ՝ հեռակա հրամանով)

3 առաջնորդարան

1 անջատիչ սպասարկման ռեժիմի համար

1 անջատիչ arduino- ի վրա աշխատելու համար (բեռնման ընթացքում arduino- ն վերակայվում է)

որոշ JST և Dupont միակցիչներ

Եվ տուփի համար

Փայտ և նրբատախտակ (բայց խորը չեմ նկարագրի տուփի պատրաստումը): միայն ասելու համար, որ տուփի ներսում բումերի դեպքում 10 մմ նրբատախտակն ու 18 մմ փայտը պարտադիր են, եթե չես ուզում տեսնել, որ keուկբոքսը խաղում է հատել հյուրասենյակը !!!!

Քայլ 1: Ազնվամորու մասի նկարագրություն

Raspi- ն պետք է կառավարի տարբեր բաներ

1) տնային կինոթատրոնի հրամաններ (IR հեռակառավարման վահանակի միջոցով)

2) երաժշտական ֆայլերը

3) սենսորային էկրան

4) Arduino- ի սրտի բաբախյունը (որը կառավարում է Wdt- ն (ժամացույցի շան ժամաչափ))

Ես սկսեցի Raspbian strech բաշխումից 16 G SD քարտի վրա (քանի որ մենք միայն SD քարտից ֆայլեր կկարդանք, HDD- ի օգտագործումը պարտադիր չէ): Ես ժամանակ չեմ ծախսի այս մասի վրա, քանի որ համացանցը լի է դրա մասին ուսուցմամբ:

Եկեք տեսնենք տարբեր մասերը հաջորդ քայլերում….

Քայլ 2: IR հեռակառավարման կոդերը

Քանի որ ես չկարողացա գտնել տնային կինոյի սխեման, ես որոշեցի այն վարել հեռակա հրամանների միջոցով

Առաջին քայլը, որը ես պետք է ավարտեի, Ռասպիին սովորելն էր Տնային կինոյի հեռակառավարման կոդերը: դրա համար ես օգտագործել եմ շատ լավ ուսուցումը Օսթին Սթենթոնի IR կոդերի Instructables- ում:

Ես որոշ տարբերություններ ունեի, հավանաբար նոր տարբերակի պատճառով, քանի որ հրահանգները բավականին հին են, hardware.conf ֆայլն այլևս գոյություն չունի (համենայն դեպս, ես այն չգտա)

Թվում է նաև, որ tuto- ում օգտագործվող տրանզիստորը PNP տրանզիստոր է, իմ կողմից ես օգտագործել եմ 2N2222, որը NPN է, բայց արդյունքը նույնն է: (բացառությամբ մալուխի !!!!!!!!)

Քոր առաջադրանքը տրված է /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- ին ծածկագրեր սովորելիս պարտադիր է օգտագործել հրամանում նշված հիմնաբառերը

անկանոն-list-namespace

Ահա այն ֆայլը, որը ես կառուցել եմ իմ ջուքբոքսի համար.

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:

# Արդյո՞ք հեռակառավարվող սարքն ունի փաթեթավորված գրավման սարք e. գ., ա

# USB dongle?:

# Միավորված USB սարքերի համար `USB վաճառողի id, ապրանքի ID

# և սարքի տող (օգտագործեք dmesg կամ lsusb) ՝

# Կառավարվող սարքի տեսակը

# (TV, VCR, Audio, DVD, Satellite, Cable, HTPC,…):

# Սարքը (սարքերը), որոնք վերահսկվում են այս հեռակառավարման վահանակի միջոցով.

սկսել հեռակա

անուն jukebox

բիթ 16

դրոշներ SPACE_ENC | CONST_LENGTH

եփ 30

aeps 100

վերնագիր 4470 4496

մեկը `542 1693

զրո 542 581

ptrail 553

16_

նախնական_տվյալներ 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 ջուկբոքս KEY_VOLUMEUP»

Քայլ 3: Հիմնական ծրագիր

Հիմնական ծրագիրը գրված է Python- ում.

Քանի որ ես նոր եմ Python- ում, ենթադրում եմ, որ շատ բարելավումներ կան, որոնք կարելի է անել, բայց այն աշխատում է…

Տեխնիկական պայմաններ.

1) կառավարել գրաֆիկական էկրանը.

Դրա համար ես օգտագործեցի APPJAR- ը, որը TKINTER է, բայց ուսանողի համար քաղաքակիրթ (իմ դեպքում), սա նշանակում է շատ ավելի հեշտ օգտագործել, հավանաբար ավելի քիչ հնարավորություններով, բայց դա բավարար էր իմ նպատակի համար:

2) նվագարկել mp3 ֆայլերը.

Ես օգտագործել եմ mplayer- ը պիթոնի համար:

3) պատահական թվեր առաջացնել խառնաշփոթ ռեժիմում խաղալու համար.

Քանի որ ես չէի ուզում լսել նույն երգը ամեն եռամսյակ, ես կառուցեցի մի փոքրիկ ծրագիր `ստուգելու համարը, թե արդյոք թիվը չկա x նախորդ թվերի ցուցակում (x կախված երգացանկի երկարությունից):

Պիթոնում randint գործառույթը այնքան էլ «պատահական» չէ, որքան ես տեսա:

4) ուղարկեք «սրտի բաբախյունը» Արդուինոյին

5) կառավարել ֆայլերի նվագարկիչը.

Քանի որ Mplayer- ը անհամաժամ է, երբ ֆայլը սկսվում է, ոչ մի կերպ հնարավոր չէ իմանալ Python- ի համար, երբ այն ավարտվի (համենայն դեպս, ես պարզ միջոց չգտա)

Դա լուծելու համար ես օգտագործեցի mplayer- ի հրամանները ՝ տալով ֆայլի երկարությունը և ընթացիկ ֆայլում առաջընթացը

4 -ի և 5 -ի դեպքում ես օգտագործեցի Appjar- ի ընձեռած հնարավորությունը ՝ պարբերական առաջադրանք ստեղծելու համար (քանի որ appjar- ը իրադարձությունների ծրագիր է, սա պարբերական իրադարձություն ստեղծելու միջոց է): գործառույթը հետևյալն է.

#******************* գործարկել Tasmanman ********************** app.registerEvent (Tasmanman)

p.setPollTime (1000)

Taskman «առաջադրանքի մենեջերի» համար, որը ծրագրում միանշանակ է, որը կառավարում է էկրանի ոչ ամեն ինչ

Գործարկելուց հետո էկրանն ունի հետևյալ տեսքը.

Պատկեր
Պատկեր

Ահա ծրագիրը. (Կարող է բացվել Notepad ++ կամ Geany- ի միջոցով)

Քայլ 4: Ազնվամորու մաս. Ինքնագործարկում և նոր ֆայլերի ավելացում

Եթե նայեք ծրագրին, կտեսնեք, որ ես օգտագործում եմ որոշ բաշ ֆայլեր.

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

Այս երկու bash ֆայլերը կոչվում են Python- ի կողմից os.system հրամանով

Python- ի սցենարը սկսելու համար ես փոքր բաշ արեցի

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

cd /home /pi

python jukebox_gui.py

GUI ռեժիմում ավտոմատ մեկնարկի համար ես պարզապես փոփոխեցի autostart ֆայլը/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"

կետ-րփի

Նոր mp3 ֆայլերի ավելացում.

Նոր ֆայլեր ավելացնելու համար ես նախընտրեցի պատրաստել փոքր նվիրված Python սցենար.

new_song_file.py

Սկզբում ես կբացատրեմ համակարգի ֆայլերի կազմակերպումը.

Բոլոր ֆայլերը գտնվում են /home /pi- ում

mp3 ֆայլերը ներթափանցված են/home/pi/Երաժշտական գրացուցակում

Յուրաքանչյուր արտիստ ունի իր ենթաօրենսդրական գրացուցակը, որը պահում է համապատասխան mp3 ֆայլերը

pi@raspitone:/Երաժշտություն/Mike_oldfield $ ls -ընդհանուր 760516

-rwxr ----- 1 pi pi 2254923 juin 30 2017 A_New_Beginning.mp3

-rwxr ----- 1 pi pi 2691736 juin 30 2017 riամանում. mp3

-rwxr ----- 1 pi pi 8383244 juin 30 2017 Համբարձում. mp3

-rwxr ----- 1 pi pi 5410816 juin 30 2017 Blue_Night.mp3

-rwxr ----- 1 pi pi 13125199 juin 30 2017 Castaway_ (գործիքային).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 Chariots.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

Ֆրանց_Ֆերդինանդ/quակլին. Mp3

Մենք կարող ենք գտնել նաև տեսացանկերի տվյալները (բայց սա կառուցված է Python սցենարով)

Փիթոնի փոքր սցենարը ավելացնում է երաժշտության մեջ պահվող նոր երգերը: տեքստը ՝ UNIX ֆորմատով վերնագրերը

Ահա սցենարը. (Կարող է բացվել Notepad ++ կամ Geany- ի միջոցով)

Քայլ 5. Էլեկտրաէներգիայի կառավարում Արդուինո Նանոյի միջոցով

Քանի որ ես ցանկանում էի ինչ -որ հեշտ բան ունենալ, ես որոշեցի դա անել մի փոքրիկ նանոյի կողմից.

Սկզբունքը.

Մեկնարկի կոճակը սեղմելիս սարքերը միացված են, նանոն սկսում է (1 կամ 2 վայրկյան) և ստանձնում էներգիայի կառավարումը ՝ գործարկելով ռելե, որը շեղում է սեղմման կոճակի կոնտակտները:

Այնուհետև Նանոն սպասում է 35 վայրկյան ՝ ազնվամորուից սրտի բաբախյուն ստանալու համար (նշանակում է, որ մեկնարկի գործընթացն ավարտված է և ջուկբոքս ծրագիրը գործարկվում է):

Քանի դեռ նանոն ստանում է սրտի բաբախյունը, այն պահում է ռելեը (Watch dog timer)

Եթե այլևս սրտի բաբախում չկա (նկատի ունի ջուքբոքսի ծրագիրը դադարեցված է) Նանոն սպասում է 20 վայրկյան (համոզվելու համար, որ ռասպին ամբողջությամբ դադարեցվել է) էներգիայի ռելեվը բաց թողնելու համար:

Այնուհետև ջուկբոքսը ամբողջովին անջատված է

Ես ավելացրի անջատիչ ՝ նանոյի մուտքն ակտիվացնելու համար ՝ սպասարկման ռեժիմը նշելու համար (ես օգտագործում եմ jukebox- ը ՝ իմ մյուս raspi սերվերները ssh et vnc- ի միջոցով կառավարելու համար): Նանոն այնուհետեւ անջատում է ժամացույցի շների գործընթացը

Նշում.

Raspi- ից սրտի բաբախյունի մուտքը պետք է իջեցվի (բայց Raspi- ի 3.3V- ը Նանոն բարձր մակարդակ է համարում)

Դա կարելի էր անել NE555- ի միջոցով, բայց ես ծույլ եմ և միշտ իմ դարակում ինչ -որ նանո կա !!!!

Ահա կարճ C ծրագիրը (կարող է բացվել Notepad ++ - ով)

Քայլ 6: Մալուխը

The Cabling
The Cabling
The Cabling
The Cabling

Էկրանի համար.

Էկրանը սնուցելու և վարելու համար Raspi- ում օգտագործվում են HDMI մալուխ և USB մալուխ:

Առջեւի վահանակի համար.

Raspi- ից միացված է նաև USB մալուխ, որպեսզի կարողանաք նոր ֆայլեր վերբեռնել կամ պահուստավորել:

USB մալուխը միացված է Նանոյից, որպեսզի կարողանա մուտք գործել փափուկ (անհրաժեշտության դեպքում փոփոխությունների համար)

Ազնվամորու վրա միացնում եմ նաև անլար ստեղնաշարի հանգույց, որպեսզի կարողանամ սպասարկում կատարել ՝ առանց արտաքին USB վարդակից օգտվելու

Քանի որ ազնվամորին և Arduino- ն օգտագործվում են, մալուխը բավականին պարզ է:

Բոլորը տեղակայված են շերտի մատրիցային տախտակի վրա:

Ազնվամորու 2 GPIO- ից օգտագործվում են.

Pin22 IR LED- ի համար

Arduino- ին ամրացրեք 27 սրտի բաբախման համար

Արդուինոյի վրա

Պին 2 -ը օգտագործվում է որպես Raspi- ից սրտի բաբախյունների ընդհատման քորոց:

3 -ից 5 -րդ կապումներն օգտագործվում են led- երը վարելու համար (Start, Wdt, Maintenance):

Պին 6 -ը սպասարկման անջատիչի համար է:

Պին 7 -ը թողարկվում է ռելեի վահանի համար:

Ահա ցնցող ֆայլը.

Քայլ 7: Տուփը

Տուփը
Տուփը

Ես շատ չեմ նկարագրի, թե ինչ եմ արել, քանի որ դա կախված է հզորության ուժեղացուցիչից և օգտագործվող բարձրախոսներից:

Տեղեկատվության համար տնային կինոթատրոնը գտնվում է տուփի ներքևում:

Ուղղակի բարձրախոսների վրա.

1 վուֆեր

2 միջին բարձրախոս, որոնք ես փոփոխեցի ՝ դրանք տուփի մեջ տեղադրելու համար:

Գագաթին:

Առջևի վահանակը ՝ էկրանով, LED- ով, անջատիչներով և USB խցաններով:

Փայտ:

Բարձրախոսների համար կողային հատվածը վերևում և ներքևում ես օգտագործել եմ 18 մմ փայտե տախտակ:

Առջեւի կողմը 10 մմ նրբատախտակ է `40 մմ պտուտակներով:

Մալուխների տեղադրումն ու սպասարկումը հեշտացնելու համար (անհրաժեշտության դեպքում !!!) ես սխեման դրեցի առջևի վահանակի հետևի գզրոցի վրա

Գերտաքացումից խուսափելու համար մեծ անցք է կատարվում հետևի վահանակի ներքևի մասում, և ես մի 5V օդափոխիչ (8 սմ) տեղադրում եմ հետևի վահանակի վրա ՝ միացման կողքին:

Վերևի նկարը պարզապես գաղափար տալու համար է:

Այսպիսով, դա այն է !!!!!!!!!

Շնորհակալություն ինձ կարդալու համար

Եվ հաջորդ անգամ կհանդիպենք նոր արկածների համար

Խորհուրդ ենք տալիս: