Raspitone: ადვილი გამოსაყენებელი Jukebox: 7 ნაბიჯი
Raspitone: ადვილი გამოსაყენებელი Jukebox: 7 ნაბიჯი
Anonim
რასპიტონი: ადვილი გამოსაყენებელი Jukebox
რასპიტონი: ადვილი გამოსაყენებელი Jukebox

გამარჯობა, ჩემი შემდეგი პროექტი, როგორც ამას ვაკეთებ, არ არის ძალიან სასარგებლო პროექტი:

ეს არის ჯეკბოქსი, რომელიც დაფუძნებულია ჟოლოს 3 B+ - ზე

ვიცი, მსგავსი რამის გაკეთება მარტივად შეიძლება სმარტფონითა და Bluetooth სპიკერით.

მაგრამ ჩემი პროექტისთვის მე მქონდა ორი მძიმე წინაპირობა:

მინდოდა რაღაც "ვინტაჟი" გამეკეთებინა.

საერთო ჯამში, იმის გათვალისწინებით, რომ ჩემი ქალბატონი უიმედოა კომპიუტერისთვის ან ბლუთუსისთვის ან სხვა რამისთვის 21 -ე საუკუნიდან (და თუნდაც მე -20), მომიწია რაღაც ძალიან მარტივი გამოსაყენებელი ………

ამრიგად, სპეციფიკაციები იყო შემდეგი:

ერთი დაჭერით ღილაკი აპარატის დასაწყებად

სენსორული ეკრანი (ძალიან მარტივი) მუსიკის მართვისთვის.

ეკრანზე ერთი შეხება აპარატის შესაჩერებლად.

და კარგი ხმა რომ ჰქონდეს ………..

მარაგები

ამისათვის გამოვიყენე:

1 ჟოლო 3 B+

1 ძველი სახლის კინოთეატრი, რომელიც გამოუსადეგარი იყო DVD წამკითხველი OOS– ის გამო (ძველი Samsung 2.1 woofer– ით და 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 გადამრთველი შენარჩუნების რეჟიმში

Arduino– ზე მუშაობისთვის 1 გადამრთველი (ატვირთვის დროს arduino გადატვირთულია)

ზოგიერთი JST და Dupont კონექტორი

და ყუთისთვის

ხე და პლაივუდი (მაგრამ ღრმად არ აღვწერ ყუთის დამზადებას). მხოლოდ იმის თქმა, რომ ყუთში ბუმერთან დაკავშირებით, 10 მმ პლაივუდი და 18 მმ ხე სავალდებულოა, თუ არ გსურთ Jukebox– ის დანახვა მისაღები ოთახის თამაშისას !!!!

ნაბიჯი 1: ჟოლოს ნაწილის აღწერა:

რასპმა უნდა მართოს სხვადასხვა რამ:

1) ბრძანებები სახლის კინოთეატრზე (IR დისტანციური საშუალებით)

2) მუსიკალური ფაილები

3) სენსორული ეკრანი

4) გულისცემა არდუინოსთვის (რომელიც მართავს Wdt- ს (ყურება ძაღლის ტაიმერი))

დავიწყე Raspbian strech განაწილებით 16 G SD ბარათზე (რადგან ჩვენ მხოლოდ SD ბარათის ფაილებს წავიკითხავთ, HDD– ის გამოყენება აუცილებელი არ არის). მე არ დავხარჯავ დროს ამ ნაწილზე, რადგან ინტერნეტი სავსეა ამ თემაზე.

ვნახოთ სხვადასხვა ნაწილები შემდეგ ნაბიჯებში….

ნაბიჯი 2: IR დისტანციური კოდები

რადგან ვერ ვიპოვე სახლის კინოს სქემის გეგმა, გადავწყვიტე მისი მართვა დისტანციური ბრძანებების საშუალებით

პირველი ნაბიჯი, რომელიც უნდა დამემთავრებინა იყო ისწავლა რასპი სახლის კინოთეატრის დისტანციური მართვის კოდებისათვის. ამისათვის მე გამოვიყენე ძალიან კარგი ტუტო ინსტრუქციებში ოსტინ სტენტონის IR კოდებიდან

მე მქონდა გარკვეული განსხვავებები, ალბათ ახალი ვერსიის გამო, რადგან ინსტრუქციები საკმაოდ ძველია, hardware.conf ფაილი აღარ არსებობს (ყოველ შემთხვევაში მე ვერ ვიპოვე)

ასევე ჩანს, რომ ტუტიტორი გამოიყენება ტუტოში არის 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– თან.

ერთი მნიშვნელოვანი შენიშვნა: რასპისთვის კოდების სწავლისას სავალდებულოა გამოიყენოთ ბრძანებაში ჩამოთვლილი საკვანძო სიტყვები

შეუსწორებელი-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:

# აქვს დისტანციურ მოწყობილობას შეფუთული გადაღების მოწყობილობა ე. გ., ა

# USB დონგლი?:

# შეფუთული USB მოწყობილობებისთვის: usb გამყიდველის ID, პროდუქტის ID

# და მოწყობილობის სტრიქონი (გამოიყენეთ dmesg ან lsusb):

# მოწყობილობის ტიპი კონტროლდება

# (ტელევიზია, ვიდეო ვიდეო, აუდიო, DVD, სატელიტი, კაბელი, HTPC, …):

# მოწყობილობა (ები), რომლებიც კონტროლდება ამ დისტანციური მართვის საშუალებით:

დაიწყეთ დისტანციური

სახელი ჯუქბოქსი

ბიტი 16

დროშები SPACE_ENC | CONST_LENGTH

ეპს 30

აპი 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 ბრძანება მჭირდება სახლის კინოთეატრის მართვისთვის

დენი (ჩართული/გამორთული)

AUX => ოპტიკური შეყვანის არხზე გადასვლა (რადგან HC ყოველთვის იწყება DVD წამკითხველზე)

და ტომი +/-

დაკავშირებული ბრძანებები შესრულებულია LIRC ბრძანებების საშუალებით:

მაგალითად: "irsend SEND_ONCE jukebox KEY_VOLUMEUP"

ნაბიჯი 3: ძირითადი პროგრამა

მთავარი პროგრამა დაწერილია პითონში:

რადგან მე ახალი ვარ პითონში, ვფიქრობ, ბევრი გაუმჯობესებაა შესაძლებელი, მაგრამ ის მუშაობს….

სპეციფიკაციები:

1) მართეთ გრაფიკული ეკრანი:

ამისათვის მე გამოვიყენე APPJAR, რომელიც არის TKINTER, მაგრამ ცივილიზებულია სტუდენტებისთვის (ჩემი შემთხვევა), ეს ნიშნავს ბევრად უფრო ადვილად გამოსაყენებლად, ალბათ ნაკლები შესაძლებლობებით, მაგრამ ეს საკმარისი იყო ჩემი მიზნისთვის.

2) mp3 ფაილების დაკვრა:

მე ვიყენებ mplayer პითონს.

3) გენერირება შემთხვევითი რიცხვები სათამაშო რეჟიმში:

იმის გამო, რომ არ მინდოდა ერთი და იგივე სიმღერის მოსმენა ყოველ მეოთხედში, შევიმუშავე პატარა პროგრამა, რომ გადამემოწმებინა ნომერი არ იყო x წინა რიცხვების სიაში (x დამოკიდებულია დასაკრავი სიის ხანგრძლივობაზე).

რენტინტის ფუნქცია პითონში არ არის ისეთი "შემთხვევითი" რამდენადაც მე დავინახე.

4) გაუგზავნეთ "გულისცემა" არდუინოს

5) მართეთ ფაილების პლეერი:

რადგან Mplayer არის ასინქრონული, როდესაც ფაილი იწყება, არ არსებობს გზა იცოდეს Python– ის დასრულების შესახებ (ყოველ შემთხვევაში, მე ვერ ვიპოვე მარტივი გზა)

ამის გადასაჭრელად მე გამოვიყენე mplayer ბრძანებები, რომლებიც ასახავს ფაილის სიგრძეს და მიმდინარე ფაილს

ორივე 4 და 5 -ისთვის მე გამოვიყენე Appjar– ის მიერ მოცემული შესაძლებლობა პერიოდული დავალების შესაქმნელად (რადგან appjar არის ღონისძიების პროგრამა, ეს არის გზა პერიოდული მოვლენის შესაქმნელად). ფუნქციაა:

#******************* დაწყება taskman ********************* app.registerEvent (taskman)

p.setPollTime (1000)

დამრიგებელი "დავალების მენეჯერისთვის", რომელიც არის def პროგრამა პროგრამაში, რომელიც მართავს ყველაფერს რაც არ არის ეკრანის მოვლენები (დაკრული ფაილის დასასრული, პროგრესის ზოლის შევსება, ნანოს გულისცემის გაგზავნა …)

დაწყებისთანავე ეკრანი ასე გამოიყურება:

გამოსახულება
გამოსახულება

აქ არის პროგრამა: (შეიძლება გაიხსნას Notepad ++ ან Geany საშუალებით)

ნაბიჯი 4: ჟოლოს ნაწილი: ავტომატური დაწყება და ახალი ფაილების დამატება

თუ გადახედავთ პროგრამას, ხედავთ, რომ მე ვიყენებ რამდენიმე bash ფაილს:

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

ამ ორ bash ფაილს პითონი ეძახის os.system ბრძანებით

პითონის სკრიპტის დასაწყებად გავაკეთე პატარა ბაშო

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

cd /home /pi

პითონი 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 -არა -გაფრქვევა

@lxterminal --command = "dem_jukebox.bash"

წერტილი-რპი

ახალი mp3 ფაილების დამატება:

ახალი ფაილების დასამატებლად, მე მირჩევნია გავაკეთო პატარა გამოყოფილი პითონის სკრიპტი:

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 ჩამოსვლა. 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 Chariots.mp3

დოკუმენტების დირექტორიაში ჩვენ ვიპოვით სათამაშო ფაილების ჩამონათვალს.

pi@raspitone:/Documents $ cat list.txtFranz_Ferdinand/Michael_live.mp3

ფრანც_ფერდინანდი/ბოროტი_და_ცხელი. Mp3

ფრანც_ ფერდინანდი/Walk_Away_live.mp3

ფრანც_ფერდინანდი/სიყვარული_და_განადგურება. Mp3

ფრანც_ფერდინანდი/his_fffire.mp3

ფრანც_ფერდინანდი/eleanor_put_your_boots_on.mp3

ფრანც_ფერდინანდი/დაკარგული_ შენ. Mp3

ფრანც_ფერდინანდი/this_fire_ (playgroup_remix).mp3

ფრანც_ფერდინანდი/ჟაკლინი. Mp3

ჩვენ ასევე შეგვიძლია ვიპოვოთ დასაკრავი სიების მონაცემები (მაგრამ ეს აგებულია პითონის სკრიპტით)

პატარა პითონის სკრიპტი ამატებს მუსიკაში შენახულ ახალ სიმღერებს სიაში.

აქ არის სკრიპტი: (შეიძლება გაიხსნას Notepad ++ ან Geany საშუალებით)

ნაბიჯი 5: ენერგიის მართვა არდუინო ნანოს მეშვეობით

რადგან მინდოდა რაღაც მარტივი დამეწყო, გადავწყვიტე ეს გამეკეთებინა პატარა ნანოს მიერ:

Პრინციპული:

დაწყების ღილაკზე დაჭერისას ყველა მოწყობილობა იკვებება, ნანო იწყებს მუშაობას (1 ან 2 წამი) და იღებს ენერგიის მენეჯმენტს რელეს გააქტიურებით, რომელიც აფერხებს ღილაკზე კონტაქტებს.

შემდეგ ნანო ელოდება 35 წამს ჟოლოსგან გულისცემის მისაღებად (ეს ნიშნავს, რომ დაწყების პროცესი დასრულებულია და ჯუქბოქსის პროგრამა მუშაობს).

სანამ ნანო იღებს გულისცემას ის ინარჩუნებს სარელეოს (Watch dog timer)

თუ აღარ არის გულისცემა (ეს ნიშნავს, რომ ჯუქბოქსის პროგრამა შეჩერებულია) ნანო ელოდება 20 წამს (დარწმუნებული უნდა იყოს, რომ რასპი მთლიანად გაჩერებულია) დენის რელეს გათავისუფლებას.

Jukebox შემდეგ მთლიანად იკვებება

მე დავამატე შეცვლა ნანოს შეყვანის გასააქტიურებლად, შენარჩუნების რეჟიმის მითითების მიზნით (მე jukebox– ს ვიყენებ ჩემი სხვა raspi სერვერების მართვისთვის ssh et vnc). შემდეგ ნანო დეაქტივირებს საგუშაგო ძაღლის პროცესს

შენიშვნა:

რასპიდან გულისცემის შეყვანის შემცირებაა საჭირო (მაგრამ რასპიდან 3.3 ვ მიიჩნევა ნანოს მაღალ დონეზე)

ეს შეიძლება გაკეთდეს NE555– ით, მაგრამ მე ვარ ზარმაცი და ყოველთვის მაქვს რამდენიმე ნანო ჩემს უჯრაში !!!!

აქ არის მოკლე C პროგრამა (შეიძლება გაიხსნას Notepad ++ - ით)

ნაბიჯი 6: გაყვანილობა

კაბელირება
კაბელირება
კაბელირება
კაბელირება

ეკრანისთვის:

HDMI კაბელი და USB კაბელი გამოიყენება Raspi– ზე ეკრანის გასაძლიერებლად და მართვისთვის.

წინა პანელისთვის:

USB კაბელი ასევე არის დაკავშირებული რასპიდან, რომ შეძლოთ ახალი ფაილების ატვირთვა ან სარეზერვო ასლების შექმნა.

USB კაბელი უკავშირდება ნანოს, რომ შეძლოს რბილი წვდომა (საჭიროების შემთხვევაში მოდიფიკაციებისთვის)

მე ასევე ვამაგრებ ჟოლოს უკაბელო კლავიატურის დონგლს, რათა შევინარჩუნო ტექნიკური მომსახურება გარე USB დანამატის გამოყენების გარეშე

როგორც ჟოლო და არდუინო გამოიყენება, საკაბელო საკმაოდ მარტივია.

ყველაფერი მდებარეობს ზოლის მატრიცის დაფაზე.

ჟოლოდან 2 GPIO გამოიყენება:

Pin22 IR LED განათებისთვის

Arduino- ს მიამაგრეთ 27 გულისცემისათვის

არდუინოზე

პინ 2 გამოიყენება რასპიდან გულისცემის შეწყვეტის პინის სახით.

ქინძისთავები 3 -დან 5 -მდე გამოიყენება led– ის მართვისთვის (დაწყება, Wdt, ტექნიკური მომსახურება).

პინ 6 არის სარემონტო გადამრთველისთვის.

Pin 7 გამოდის სარელეო ფარისთვის.

აქ არის გასაოცარი ფაილი:

ნაბიჯი 7: ყუთი

Ყუთი
Ყუთი

ბევრს არ აღვწერ რა გავაკეთე, რადგან ეს დამოკიდებულია ენერგიის გამაძლიერებელზე და გამოყენებულ დინამიკებზე.

როგორც ინფორმაცია, სახლის კინოთეატრი განთავსებულია ყუთის ბოლოში.

მხოლოდ დინამიკებზე:

1 ვუფერი

2 საშუალო დინამიკი, რომელიც შევცვალე ყუთში ჩასასმელად.

თავზე:

წინა პანელი ეკრანთან, LED- ებთან, კონცენტრატორებთან და USB სანთლებით.

Ტყე:

დინამიკებისთვის, გვერდითა ზედა და ქვედა ნაწილები მე გამოვიყენე 18 მმ ხის ფიცარი.

წინა მხარე არის 10 მმ პლაივუდი 40 მმ ხრახნით.

საკაბელო და ტექნიკური მომსახურების გასაადვილებლად (საჭიროების შემთხვევაში !!!) მე წრე დავდე უჯრაზე წინა პანელის უკან

გადახურვის თავიდან ასაცილებლად დიდი ხვრელი კეთდება უკანა პანელის ბოლოში და მე დავუყენე 5 ვ ვენტილატორი (8 სმ) უკანა პანელზე, მიკროსქემის გვერდით.

ზემოთ ნაჩვენები სურათი მხოლოდ იდეის მისაცემად არის.

ასე რომ, ეს არის !!!!!!!!!

მადლობა რომ მკითხულობ

და მომავალ ჯერზე შევხვდებით ახალ თავგადასავლებს

გირჩევთ: