Sisukord:

Raspitone: lihtne kasutada Jukeboxi: 7 sammu
Raspitone: lihtne kasutada Jukeboxi: 7 sammu

Video: Raspitone: lihtne kasutada Jukeboxi: 7 sammu

Video: Raspitone: lihtne kasutada Jukeboxi: 7 sammu
Video: Леон впитывает как нерпа ► 4 Прохождение Resident Evil 4 (Remake) 2024, November
Anonim
Raspitone: lihtne kasutada Jukeboxi
Raspitone: lihtne kasutada Jukeboxi

Tere, minu järgmine projekt on, nagu ma tegin, mitte eriti kasulik projekt:

See on Raspberry 3 B+ põhinev jukebox

Ma tean, midagi sellist saab hõlpsasti teha nutitelefoni ja Bluetooth -kõlariga.

Kuid minu projekti jaoks oli mul kaks rasket eeldust:

Tahtsin teha midagi "vintage".

Ja üldiselt, pidades silmas asjaolu, et mu daam on lõplikult lootusetu arvuti, bluetoothi või muu 21. sajandi (ja isegi 20. sajandi) suhtes, pidin kasutama midagi väga lihtsat …….

Seega olid spetsifikatsioonid järgmised:

Üks nupp masina käivitamiseks

Puuteekraan (väga lihtne) muusika haldamiseks.

Masina peatamiseks ekraanil üks puudutus.

Ja hea heli saamiseks …….

Tarvikud

Selleks kasutasin:

1 vaarikas 3 B+

1 vana kodukino, mis oli DVD -lugeja OOS tõttu kasutu (vana Samsungi 2.1 bassikõlari ja 2 kõlariga, mida ma karbile sobivaks muutsin)

1 HIFIBERRY DIGI+ plaat (optilise väljundiga võimendi jaoks)

1 mahtuvuslik 7 -tolline puutetundlik ekraan (minu oma on Makeasy vaarikale, millel on HDMI -sisend ja mis töötab USB kaudu, kuid mis tahes HDMI -puuteekraan peaks olema korras)

1 toiteallikas 5V 5A

1 releekilp

1 Arduino nano toite ON/OFF protsessi juhtimiseks

1 IR juhtis kodukino (juhtis 2N2222 NPN transistor)

1 IR -vastuvõtja (projekti IR -koodide õppimise osa jaoks saan oma vana multimeedia kõvakettalt kaugjuhtimisega)

3 LED -i

1 lüliti hooldusrežiimi jaoks

1 lüliti arduinoga töötamiseks (üleslaadimise ajal lähtestatakse arduino)

mõned JST ja Dupont pistikud

Ja kasti jaoks

Puit ja vineer (aga ma ei kirjelda sügavalt karbi valmistamist). Lihtsalt öeldes, et karbis oleva buumi osas on 10 mm vineer ja 18 mm puit kohustuslikud, kui te ei taha mängides Jukeboxi elutuba ületada !!!!

1. samm: vaarika osa kirjeldus:

Raspi peab juhtima erinevaid asju:

1) kodukino käsud (IR -puldi kaudu)

2) muusikafailid

3) puuteekraan

4) Arduino südamelöögid (mis haldavad Wdt -d (valvekoera taimer))

Alustasin Raspbian strech levitamisest 16 G SD -kaardil (Kuna me loeme ainult SD -kaardilt faile, pole kõvaketta kasutamine vajalik). Ma ei kuluta sellele osale aega, kuna veeb on selle kohta õpetusi täis..

Vaatame järgmisi samme erinevates osades….

2. samm: IR -kaugkoodid

Kuna ma ei leidnud kodukino skeemi, otsustasin seda juhtida kaugkäskude abil

Esimene samm, mille ma pidin lõpetama, oli õppida kodukino kaugjuhtimispuldi Raspi koode. Selleks kasutasin Austin Stantoni IR -koodide Instructables väga head õpetust

Mul oli mõningaid erinevusi, ilmselt uue versiooni tõttu, kuna juhised on üsna vanad, faili hardware.conf pole enam olemas (vähemalt ma ei leidnud seda)

Tundub samuti, et juhendis kasutatav transistor on PNP -transistor, omalt poolt kasutasin 2N2222, mis on NPN, kuid tulemus on sama. (Välja arvatud kaabeldus !!!!!!!!)

Tihvti määramine on antud failis /boot/config.txt:

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

IR -LED ühendatakse nii Raspi tihvtiga 22.

Üks oluline märkus: Raspile koodide õppimisel on kohustuslik kasutada käsus loetletud märksõnu

irrecord-list-nimeruum

Siin on fail, mille ehitasin oma jukeboxi jaoks:

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

# Palun leidke aega selle faili lõpetamiseks, nagu on kirjeldatud jaotises # https://sourceforge.net/p/lirc-remotes/wiki/Check… # ja tehke see teistele kättesaadavaks, saates selle aadressile # #

# See konfiguratsioonifail loodi automaatselt

# kasutades lirc -0.9.4c (vaikimisi) neljapäeval, 9. mail 17:33:37 2019 # Kasutatud käsurea: -d /dev /lirc0 /root/lircd.conf

# Kerneli versioon (uname -r): 4.14.98 -v7+ # # Kaugnimi (konfiguratsioonifaili seisuga): jukebox

# Kaugseadme kaubamärk, mida hoiate käes: # Kaugseadme mudel nr:

# Kaugseadme teabe URL:

# Kas kaugseadmel on komplektis salvestusseade e. g., a

# usb dongle?:

# Komplekti kuuluvate USB -seadmete puhul: USB -müüja ID, toote ID

# ja seadme string (kasutage dmesg või lsusb):

# Juhitava seadme tüüp

# (TV, videomakk, heli, DVD, satelliit, kaabel, HTPC jne):

# Selle kaugjuhtimispuldiga juhitavad seadmed:

alustada kaugjuhtimist

nimi jukebox

bitti 16

lipud SPACE_ENC | CONST_LENGTH

eps 30

aep 100

päis 4470 4496

üks 542 1693

null 542 581

ptrail 553

eelandmed_bitid 16

eelandmed 0xC2CA

vahe 107863

toggle_bit_mask 0x0

sagedus 38000

alustada koode

VÕTMEVÕIM 0x807F

KEY_AUX 0x8877

VÕTTE_VOLUMEUP 0xCC33

KEY_VOLUMEDOWN 0xDC23

lõppkoodid

lõpp pult

Nagu näete, vajan kodukino juhtimiseks vaid 4 käsku

Toide (ON/OFF)

AUX => optilisele sisendkanalile üleminekuks (kuna HC käivitub alati DVD -lugejal)

Ja helitugevus +/-

Seotud käsud täidetakse LIRC -käskude kaudu:

näiteks: "irsend SEND_ONCE jukebox KEY_VOLUMEUP"

Samm: põhiprogramm

Põhiprogramm on kirjutatud Pythonis:

Kuna olen Pythonis uus, arvan, et saab palju parandada, kuid see töötab….

Spetsifikatsioonid:

1) hallata graafilist ekraani:

Selleks kasutasin APPJAR -i, mis on TKINTER, kuid üliõpilase jaoks tsiviliseeritud (minu puhul), see tähendab, et seda on palju lihtsam kasutada, tõenäoliselt vähemate võimalustega, kuid see oli minu jaoks piisav.

2) mängida mp3 -faile:

Pythoniks kasutasin mplayerit.

3) genereerige juhuslikud numbrid segamisrežiimis mängimiseks:

Kuna ma ei tahtnud iga kvartali sama laulu kuulda, koostasin väikese programmi, et kontrollida, kas numbrit pole x eelmiste numbrite loendis (x olenevalt esitusloendi pikkusest).

Randoni funktsioon pythonis pole minu arvates nii "juhuslik".

4) saatke "südamelöögid" Arduinole

5) hallata failimängijat:

Kuna Mplayer on asünkroonne, ei saa faili käivitamisel Pythoni jaoks teada, millal see on lõpetatud (vähemalt ma ei leidnud lihtsat viisi)

Selle lahendamiseks kasutasin mplayeri käske, mis andsid faili pikkuse ja praeguse faili edenemise

Nii 4 kui ka 5 puhul kasutasin Appjari antud võimalust perioodilise ülesande genereerimiseks (kuna appjar on sündmuste programm, on see võimalus perioodilise sündmuse loomiseks). funktsioon on:

#******************* käivita tegija ********************** app.registerEvent (tegum)

p.setPollTime (1000)

Taskman "ülesannete haldurile", mis on programmis def, mis haldab kõike, mis pole ekraanisündmusi (esitatava faili lõpp, edenemisriba täitmine, südamelöökide saatmine nanole …)

Pärast käivitamist näeb ekraan välja selline:

Pilt
Pilt

Siin on programm: (saab avada Notepad ++ või Geany kaudu)

4. samm: Vaarika osa: automaatne käivitamine ja uute failide lisamine

Programmi vaadates näete, et kasutan mõnda bash -faili:

1) Start_jukebox:

Tegelikult on eesmärk kodukino sisse lülitada ja minna D. IN sisendile (optiline sisend minu kodukinos)

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

irsend SEND_ONCE jukebox KEY_POWER

magama 7

irsend SEND_ONCE jukebox KEY_AUX

magama 2

2) stop_jukebox:

Kodukino väljalülitamiseks

pi@raspitone:/bin $ cat stop_jukebox

#!/bin/bash

irsend SEND_ONCE jukebox KEY_POWER

Neid kahte bash -faili kutsub Python käsuga os.system

Pythoni skripti käivitamiseks tegin väikese bashi

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

cd /kodu /pi

python jukebox_gui.py

GUI-režiimis automaatseks käivitamiseks muutsin äsja automaatse käivitamise faili kaustas/etc/xdg/lxsession/LXDE-pi

pi@raspitone:/etc/xdg/lxsession/LXDE-pi $ kass autostart@lxpanel-profiil LXDE-pi

@pcmanfm --desktop --profiil LXDE-pi

@xscreensaver -no -pritsmed

@lxterminal --command = "dem_jukebox.bash"

point-rpi

Uute mp3 -failide lisamine:

Uute failide lisamiseks eelistasin teha väikese spetsiaalse Pythoni skripti:

new_song_file.py

Esmalt selgitan süsteemifailide korraldust:

Kõik failid on kataloogis /home /pi

mp3 -faile otsitakse kataloogist/home/pi/Music

Igal kunstnikul on oma alamkataloog, mis majutab seotud mp3 -faile

pi@raspitone: ~/Muusika/Mike_oldfield $ ls -kokku 760516

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

-rwxr ----- 1 pi pi 2691736 juuni 30 2017 Saabumine.mp3

-rwxr ----- 1 pi pi 8383244 juuni 30 2017 Ülestõusmine.mp3

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

-rwxr ----- 1 pi pi 13125199 juuni 30 2017 Castaway_ (Instrumental).mp3

-rwxr ----- 1 pi pi 12903583 juun 30 2017 Castaway.mp3

-rwxr ----- 1 pi pi 2969869 juun 30 2017 Celt.mp3

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

-rwxr ----- 1 pi pi 9403263 juin 30 2017 Chariots.mp3

Kataloogist Dokumendid leiame esitatavate failide loendi.

pi@raspitone: ~/Documents $ 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

Leiame ka esitusloendite andmed (kuid see on loodud Pythoni skripti järgi)

Väike Pythoni skript lisab uued tiitlid muusikasse salvestatud lood list.txt -sse pärast seda, kui on vormindanud tiitlid UNIX -vormingus

Siin on skript: (saab avada Notepad ++ või Geany kaudu)

Samm: toitehaldus Arduino Nano kaudu

Kuna ma tahtsin midagi lihtsat alustada, otsustasin selle teha väikese nano abil:

Põhimõte:

Kui käivitusnupule vajutada, on kõik seadmed toiteallikad, nano käivitub (1 või 2 sekundit) ja võtab üle toitehalduse, käivitades relee, mis surub nuppude kontakte.

Seejärel ootab Nano 35 sekundit, et saada Raspberrylt südamelööke (tähendab, et käivitusprotsess on lõpule viidud ja jukeboxi programm töötab).

Niikaua kui nano saab südamelööke, hoiab relee sisselülitatud (valvekoera taimer)

Kui südamelööke enam ei ole (tähendab, et jukeboxi programm on peatatud), ootab Nano 20 sekundit (veendumaks, et raspi on täielikult peatatud), et vabastada toiterelee.

Jukebox lülitatakse seejärel täielikult välja

Lisasin lüliti, et aktiveerida nano sisend hooldusrežiimi näitamiseks (kasutan jukeboksi oma teiste raspi serverite haldamiseks ssh et vnc kaudu). Seejärel deaktiveerib Nano valvekoera protsessi

Märkus:

Raspi südamelöögi sisend tuleb alla tõmmata (kuid Raspi 3,3 V peetakse Nano kõrgeks tasemeks)

Seda saaks teha NE555 -ga, kuid ma olen laisk ja mul on alati sahtlis mõni nano !!!!

Siin on lühike C -programm (saab avada Notepad ++ abil)

6. samm: kaabeldus

Kaabeldus
Kaabeldus
Kaabeldus
Kaabeldus

Ekraani jaoks:

Ekraani toiteks ja juhtimiseks kasutatakse Raspi HDMI -kaablit ja USB -kaablit.

Esipaneeli jaoks:

Samuti on Raspist ühendatud USB -kaabel, et saaksite uusi faile üles laadida või varukoopiaid teha.

Nano külge on ühendatud USB -kaabel, et pääseda juurde pehmele (vajadusel muudatuste tegemiseks)

Ma ühendan ka vaarika traadita klaviatuuri dongli, et saaksin hooldust teha ilma välist USB -pistikut kasutamata

Kuna kasutatakse vaarikat ja Arduinot, on kaabeldus üsna lihtne.

Kõik asub ribamaatriksplaadil.

Vaarikast 2 kasutatakse GPIO -d:

Pin22 IR -LED jaoks

Pin 27 südamelöökide jaoks Arduinole

Arduino peal

Tihvti 2 kasutatakse Raspi südamelöögi katkestamiseks.

Tihvte 3 kuni 5 kasutatakse LED -ide juhtimiseks (Start, Wdt, Hooldus).

Tihvt 6 on hoolduslüliti jaoks.

Pin 7 väljastatakse releekilbile.

Siin on fritzeeriv fail:

7. samm: kast

Kast
Kast

Ma ei kirjelda palju, mida ma tegin, kuna see sõltub võimsusvõimendist ja kasutatavatest kõlaritest.

Teabena asub kodukino kasti allosas.

Veidi kõlarite kohal:

1 bassikõlar

2 keskmist kõlarit, mida ma muutsin, et need kasti sisestada.

Peal:

Esipaneel koos ekraaniga, LED -id, lülitid ja USB -pistikud.

Puit:

Kõlarite puhul pani külgpaneelid ülemise ja alumise osa 18 mm puitplaati.

Esikülg on 10 mm vineer 40 mm kruvidega.

Kaabelduse ja hoolduse hõlbustamiseks (kui vaja !!!) panin vooluringi esipaneeli taha sahtlile

Ülekuumenemise vältimiseks tehakse tagumise paneeli põhjale suur auk ja panen 5V ventilaatori (8 cm) tagumisele paneelile otse vooluringi kõrvale.

Ülaltoodud pilt on lihtsalt ettekujutuse andmiseks.

Nii, see ongi !!!!!!!!!

Aitäh, et mind lugesite

Ja kohtume järgmisel korral uute seikluste jaoks

Soovitan: