Sisällysluettelo:

Raspitone: helppokäyttöinen Jukebox: 7 vaihetta
Raspitone: helppokäyttöinen Jukebox: 7 vaihetta

Video: Raspitone: helppokäyttöinen Jukebox: 7 vaihetta

Video: Raspitone: helppokäyttöinen Jukebox: 7 vaihetta
Video: Tee kodistasi helposti älykoti 2024, Marraskuu
Anonim
Raspitone: helppokäyttöinen Jukebox
Raspitone: helppokäyttöinen Jukebox

Hei, seuraava projektini on, kuten ennenkin, ei kovin hyödyllinen projekti:

Tämä jukeboksi perustuu Raspberry 3 B+: een

Tiedän, että jotain tällaista voidaan helposti tehdä älypuhelimella ja Bluetooth -kaiuttimella.

Mutta projektilleni minulla oli kaksi kovaa edellytystä:

Halusin tehdä jotain "vintagea".

Ja kaiken kaikkiaan, kun otetaan huomioon, että rouva on ehdottomasti toivoton tietokoneen tai bluetoothin tai muun 21. vuosisadan (ja jopa 20. vuosisadan) suhteen, minun piti tehdä jotain hyvin yksinkertaista käyttää ………

Eritelmät olivat siis seuraavat:

Yksi painike käynnistää koneen

Kosketusnäyttö (erittäin yksinkertainen) hallita musiikkia.

Pysäytä kone yhdellä kosketuksella näytöllä.

Ja hyvä ääni …….

Tarvikkeet

Tätä varten käytin:

1 Vadelma 3 B+

1 vanha kotiteatteri, joka oli hyödytön OOS -DVD -lukijan vuoksi (vanha Samsung 2.1, jossa bassokaiutin ja 2 kaiutinta, jotka muutin sopivaksi laatikkoon)

1 HIFIBERRY DIGI+ -kortti (optisella ulostulolla tehovahvistimelle)

1 kapasitiivinen kosketusnäyttö 7 (omani on Makeasy for vadelma, jossa on HDMI -tulo ja virtaa USB: n kautta, mutta minkä tahansa HDMI -kosketusnäytön pitäisi olla kunnossa)

1 virtalähde 5V 5A

1 releen suojus

1 Arduino nano virran kytkemiseksi päälle/pois päältä

1 IR -LED johti kotiteatterin ohjaamiseen (johti 2N2222 NPN -transistori)

1 IR -vastaanotin (hankkeen IR -koodien oppimisosaa varten saan omani vanhalta multimedia -kiintolevyltä, jossa on etäkomento)

3 lediä

1 huoltokytkin

1 kytkin arduino -työskentelyyn (latauksen aikana arduino nollataan)

joitakin JST- ja Dupont -liittimiä

Ja laatikolle

Puu ja vaneri (mutta en kerro syvällisesti laatikon valmistusta). sanon vain, että laatikon sisällä olevan boomerin osalta 10 mm vaneri ja 18 mm puu ovat pakollisia, jos et halua nähdä Jukeboxin ylittävän olohuonetta pelatessasi !!!!

Vaihe 1: Vadelma -osan kuvaus:

Raspin on hallittava erilaisia asioita:

1) komennot kotiteatterille (IR -kaukosäätimen kautta)

2) musiikkitiedostot

3) kosketusnäyttö

4) Arduinon sydämenlyönti (joka hallitsee Wdt: tä (vahtikoiran ajastin))

Aloitin Raspbian -strech -jakelusta 16 G: n SD -kortilla (Koska luemme vain tiedostoja SD -kortilta, kiintolevyn käyttö ei ole välttämätöntä). En vietä aikaa tähän osaan, koska verkko on täynnä tutoria siitä.

Katsotaan eri osia seuraavissa vaiheissa….

Vaihe 2: IR -etäkoodit

Koska en löytänyt kotiteatterin piirisuunnitelmaa, päätin ajaa sitä etäkomentojen avulla

Ensimmäinen askel, joka minun täytyi suorittaa, oli oppia Raspille kotiteatterin kaukokomennon koodit. Tätä varten käytin erittäin hyvää tutoria Austin Stantonin IR -koodien Instructables -ohjelmassa

Minulla oli joitain eroja, luultavasti uuden version takia, koska ohjeet ovat melko vanhoja, hardware.conf -tiedostoa ei ole enää olemassa (en ainakaan löytänyt sitä)

Näyttää myös siltä, että tutossa käytetty transistori on PNP -transistori, omalta osaltani käytin 2N2222, joka on NPN, mutta tulos on sama. (Paitsi kaapelointi !!!!!!!!)

Nastamääritys annetaan tiedostossa /boot/config.txt:

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

IR -LED liitetään niin Raspin nastaan 22.

Yksi tärkeä huomautus: kun opit koodeja Raspille, on pakollista käyttää komennossa lueteltuja avainsanoja

irrecord-list-namespace

Tässä on tiedosto, jonka rakensin jukeboksiini varten:

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

# Ota aikaa tämän tiedoston viimeistelemiseen kohdassa # https://sourceforge.net/p/lirc-remotes/wiki/Check… # kuvatulla tavalla ja aseta se muiden saataville lähettämällä se numeroon # #

# Tämä määritystiedosto luotiin automaattisesti

# using lirc -0.9.4c (oletus) to 9. toukokuuta 17:33:37 2019 # Käytetty komentorivi: -d /dev /lirc0 /root/lircd.conf

# Ytimen versio (uname -r): 4.14.98 -v7+ # # Etänimi (määritystiedoston mukaan): jukebox

# Etälaitteen merkki, mitä pidät kädessäsi: # Etälaitteen malli nro:

# Etälaitteen tietojen URL -osoite:

# Onko etälaitteessa kaapattu kaappauslaite e. esim. a

# usb -sovitin?:

# Pakkauksessa olevat USB -laitteet: USB -toimittajan tunnus, tuotetunnus

# ja laitejono (käytä dmesg tai lsusb):

# Ohjattavan laitteen tyyppi

# (TV, videonauhuri, ääni, DVD, satelliitti, kaapeli, HTPC,…):

# Tällä kauko -ohjaimella ohjattavat laitteet:

aloita etäkäyttö

nimi jukebox

bittiä 16

liput SPACE_ENC | CONST_LENGTH

eps 30

aeps 100

otsikko 4470 4496

yksi 542 1693

nolla 542581

ptrail 553

16

pre_data 0xC2CA

aukko 107863

toggle_bit_mask 0x0

taajuus 38000

aloita koodit

AVAINTEHO 0x807F

KEY_AUX 0x8877

KEY_VOLUMEUP 0xCC33

KEY_VOLUMEDOWN 0xDC23

lopetuskoodit

lopeta kaukosäädin

Kuten näette, tarvitsen vain 4 komentoa kotiteatterin ajamiseen

Virta (ON/OFF)

AUX => siirtyminen optiseen tulokanavaan (koska HC käynnistyy aina DVD -lukijasta)

Ja äänenvoimakkuus +/-

Liittyvät komennot suoritetaan LIRC -komentojen kautta:

esimerkiksi: "irsend SEND_ONCE -jukeboksi KEY_VOLUMEUP"

Vaihe 3: Pääohjelma

Pääohjelma on kirjoitettu Pythonilla:

Koska olen uusi Pythonissa, luulen, että parannettavaa on paljon, mutta se toimii….

Tekniset tiedot:

1) hallita graafista näyttöä:

Tätä varten käytin APPJARia, joka on TKINTER, mutta sivistynyt opiskelijalle (minun tapaukseni), mikä tarkoittaa paljon helpompaa käyttää, luultavasti vähemmän mahdollisuuksia, mutta se riitti tarkoitukseeni.

2) toista mp3 -tiedostot:

Käytin mplayeria pythonille.

3) Luo satunnaislukuja toistoa varten:

Koska en halunnut kuulla samaa kappaletta neljännesvuosittain, rakensin pienen ohjelman, jolla tarkistin, ettei numero ollut x edellisen numeron luettelossa (x riippuen soittolistan pituudesta).

Randyt -funktio pythonissa ei ole niin "satunnainen" kuin olen nähnyt.

4) lähetä "sydämenlyönti" Arduinolle

5) hallita tiedostojen soitinta:

Koska Mplayer on asynkroninen, kun tiedosto käynnistetään, Pythonille ei voi tietää milloin se on valmis (ainakaan en löytänyt yksinkertaista tapaa)

Päätin ratkaista sen käyttämällä mplayer -komentoja, jotka ilmoittavat tiedoston pituuden ja nykyisen tiedoston edistymisen

Sekä 4 että 5 käytin Appjarin antamaa mahdollisuutta luoda jaksollinen tehtävä (koska appjar on tapahtumaohjelma, tämä on tapa luoda jaksollinen tapahtuma). toiminto on:

#******************* aloita tehtävämies

p.setPollTime (1000)

Taskman "tehtävienhallinnalle", joka on ohjelman def, joka hallitsee kaikki muut kuin näytön tapahtumat (toistetun tiedoston loppu, edistymispalkki täytetään, sydämenlyönti lähetetään Nanolle …)

Kun näyttö käynnistyy, se näyttää tältä:

Kuva
Kuva

Tässä on ohjelma: (voidaan avata Notepad ++: n tai Geanyn kautta)

Vaihe 4: Vadelma -osa: automaattinen käynnistys ja uusien tiedostojen lisääminen

Jos katsot ohjelmaa, näet, että käytän joitain bash -tiedostoja:

1) Start_jukebox:

Itse asiassa tarkoitus on kytkeä kotiteatteri päälle ja siirtyä D. IN -tuloon (optinen tulo kotiteatterissani)

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

irsend SEND_ONCE -jukeboksi KEY_POWER

nukkua 7

irsend SEND_ONCE -jukeboksi KEY_AUX

nukkua 2

2) stop_jukebox:

Kotiteatterin sammuttaminen

pi@raspitone:/bin $ cat stop_jukebox

#!/bin/bash

irsend SEND_ONCE -jukeboksi KEY_POWER

Näitä kahta bash -tiedostoa kutsuu Python os.system -komennolla

Python -komentosarjan käynnistämiseksi tein pienen bashin

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

cd /koti /pi

python jukebox_gui.py

Automaattista käynnistystä varten GUI-tilassa muutin juuri automaattisen käynnistyksen tiedostoa/etc/xdg/lxsession/LXDE-pi

pi@raspitone:/etc/xdg/lxsession/LXDE-pi $ cat automaattinen käynnistys@lxpanel --profiili LXDE-pi

@pcmanfm --desktop --profile LXDE-pi

@xscreensaver -no -splash

@lxterminal --command = "dem_jukebox.bash"

point-rpi

Uusien mp3 -tiedostojen lisääminen:

Uusien tiedostojen lisäämiseksi mieluummin tein pienen omistetun Python -komentosarjan:

new_song_file.py

Selitän ensin järjestelmätiedostojen organisaation:

Kaikki tiedostot ovat hakemistossa /home /pi

mp3 -tiedostoja etsitään hakemistosta/home/pi/Music

Jokaisella artistilla on oma alihakemisto, joka isännöi aiheeseen liittyviä mp3 -tiedostoja

pi@raspitone: ~/Musiikki/Mike_oldfield $ ls -yhteensä 760516

-rwxr ----- 1 pi pi 2254923 30. heinäkuuta 2017 A_New_Beginning.mp3

-rwxr ----- 1 pi pi 2691736 30. heinäkuuta 2017 Arrival.mp3

-rwxr ----- 1 pi pi 8383244 heinäkuu 30 2017 Ascension.mp3

-rwxr ----- 1 pi pi 5410816 heinäkuu 30, 2017 Blue_Night.mp3

-rwxr ----- 1 pi pi 13125199 heinäkuu 30 2017 Castaway_ (Instrumental).mp3

-rwxr ----- 1 pi pi 12903583 heinäkuu 30 2017 Castaway.mp3

-rwxr ----- 1 pi pi 2969869 heinäkuu 30 2017 Celt.mp3

-rwxr ----- 1 pi pi 9047745 heinäkuu 30 2017 Chariots_ (Instrumental).mp3

-rwxr ----- 1 pi pi 9403263 heinäkuu 30 2017 Chariots.mp3

Dokumentit -hakemistosta löydät rakennetun luettelon toistettavista tiedostoista.

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

Löydämme myös soittolistatiedot (mutta tämä on rakennettu Python -komentosarjan avulla)

Pieni Python -skripti lisää uudet musiikkiin tallennetut kappaleet list.txt -tiedostoon sen jälkeen, kun tekstit on muotoiltu UNIX -muodossa

Tässä on komentosarja: (voidaan avata Notepad ++: n tai Geanyn kautta)

Vaihe 5: Virranhallinta Arduino Nanon kautta

Koska halusin saada jotain helppoa aloittaa, päätin tehdä sen pienellä nanolla:

Periaate:

Kun käynnistyspainiketta painetaan, kaikki laitteet saavat virtaa, nano käynnistyy (1 tai 2 sekuntia) ja ottaa virranhallinnan käyttöön laukaisemalla releen, joka siirtää painikkeen koskettimet.

Sitten Nano odottaa 35 sekuntia saadakseen sykkeen Vadelmalta (tarkoittaa, että käynnistysprosessi on valmis ja jukeboksi -ohjelma suoritetaan).

Niin kauan kuin nano vastaanottaa sydämenlyönnin, se pitää releen päällä (Watch dog ajastin)

Jos sydämenlyöntiä ei enää tapahdu (tarkoittaa, että jukeboksi -ohjelma on pysäytetty), Nano odottaa 20 sekuntia (varmistaakseen, että raspi on pysähtynyt kokonaan) vapauttaakseen virtareleen.

Jukeboksi sammutetaan tällöin kokonaan

Lisäsin kytkimen aktivoimaan nano -tulon huoltotilan osoittamiseksi (käytän jukeboksia hallitsemaan muita raspi -palvelimiani ssh et vnc: n kautta). Nano deaktivoi sitten vahtikoiraprosessin

Huomautus:

Raspin sydämenlyönnin tulo on vedettävä alas (mutta Rasin 3,3 V: n katsotaan olevan Nanon korkealla tasolla)

Se voitaisiin tehdä NE555: llä, mutta olen laiska ja minulla on aina joitain nanoja laatikossani !!!!

Tässä on lyhyt C -ohjelma (voidaan avata Notepad ++: lla)

Vaihe 6: Kaapelointi

Kaapelointi
Kaapelointi
Kaapelointi
Kaapelointi

Näytölle:

Raspissa käytetään HDMI -kaapelia ja USB -kaapelia näytön virran kytkemiseen ja käyttämiseen.

Etupaneeli:

Raspista on myös liitetty USB -kaapeli uusien tiedostojen lataamiseen tai varmuuskopiointiin.

Nano -laitteeseen on liitetty USB -kaapeli, jotta ohjelmisto voidaan käyttää (tarvittaessa muutoksia varten)

Liitän vadelmaan myös langattoman näppäimistösovittimen, jotta voin tehdä huoltotöitä ilman ulkoista USB -liitintä

Koska Vadelma ja Arduino ovat käytössä, kaapelointi on melko yksinkertaista.

Kaikki sijaitsee nauhamatriisilevyllä.

Raspberry 2 GPIO: sta käytetään:

Pin22 IR -LEDille

Pin 27 sydämenlyönnille Arduinolle

Arduinolla

Nasta 2 toimii keskeytysnappina Raspin sydämenlyönnille.

Tappeja 3–5 käytetään ledien ohjaamiseen (Start, Wdt, Maintenance).

Nasta 6 on huoltokytkimelle.

Nasta 7 lähetetään releen suojaan.

Tässä on fritzing -tiedosto:

Vaihe 7: Laatikko

Laatikko
Laatikko

En kuvaile paljon mitä tein, koska se riippuu tehovahvistimesta ja käytetyistä kaiuttimista.

Tiedoksi kotiteatteri sijaitsee laatikon pohjassa.

Hieman kaiuttimien yläpuolella:

1 bassokaiutin

2 keskikokoista kaiutinta, joita muutin lisätäkseni ne laatikkoon.

Päällä:

Etupaneeli, jossa on näyttö, LEDit, kytkimet ja USB -pistokkeet.

Puu:

Kaiuttimissa sivupaneelit kanavat ylhäältä ja alhaalta 18 mm puulautaa.

Etupuoli on 10 mm vaneria ja 40 mm ruuveja.

Kaapeloinnin ja huollon helpottamiseksi (tarvittaessa !!!) Laitoin piirin etupaneelin takana olevaan laatikkoon

Ylikuumenemisen välttämiseksi tehdään suuri reikä takapaneelin pohjalle ja laitoin 5 V tuulettimen (8 cm) takapaneeliin aivan piirin viereen.

Yllä oleva kuva on vain idea.

Joten se siitä !!!!!!!!!

Kiitos, että luit minut

Ja nähdään seuraavalla kerralla uusilla seikkailuilla

Suositeltava: