Sisukord:

Retro Idioot Box: 10 sammu
Retro Idioot Box: 10 sammu

Video: Retro Idioot Box: 10 sammu

Video: Retro Idioot Box: 10 sammu
Video: Кавказская пленница, или Новые приключения Шурика (FullHD, комедия, реж. Леонид Гайдай, 1966 г.) 2024, Juuli
Anonim
Retro idioot kast
Retro idioot kast

Leidsin vana Magnavoxi kaasaskantava teleri aastast 1984, istudes oma kohaliku tarbekaupade riiulilt. Mõtlesin endamisi: "oh NEAT!" Edasisel kontrollimisel märkasin sellel 15 -dollarist hinnasilti, nii et otsustasin selle koju viia ja sellest midagi säravat teha. Mäletan, et vaatasin lapsena kõigi suurepäraste mustvalgete klassikute kordusi ja tahtsin selle taas reaalsuseks muuta.

Probleem on selles, et seal pole enam analoogjaamu ja see ei ole täielikult võimeline tegema ühtegi ATSC või digitaalset dekodeerimist. Märkasin, et küljel on AV -ühendus ja mul oli paar vaarika pi -d, nii et otsustasin seiklusele asuda, et välja selgitada, kuidas saaksin kanaleid selleni voogesitada. Ma tahan, et see näeks ka terav välja. Ma ei tööta seda 9 D-elemendiga patareidega, nii et saan varjata akupesa rpi koos paljude teiste maiustustega.

Samm: hankige hea IPTV loend

Hankige hea IPTV nimekiri
Hankige hea IPTV nimekiri

Igapäevases IPTV loendis on fantastiline valik tasuta iptv -jaamu, mis on korraldatud riikide kaupa. Valige soovitud riik ja laadige alla m3u -fail.

Selle tarkvara jaoks on m3u vajalik vorming. Vormingu eripära kohta saate täpsemalt lugeda siit.

2. etapp: esialgne koodikatse

Kirjutatav püütoni kood parsib m3u faili jaamade loendisse.

#!/usr/bin/python3

impordi alamprotsess sys importi argv klassi jaam: def _init _ (ise): self.channel = 0 self.name = '' self.address = '' channel_list = avatud ('./ us-m3uplaylist-2020-08- 17-1.m3u ',' r ') kui m3u: i = 0 rea kohta m3u: if line.startswith ('#EXTINF '): this = Station () this.name = line.split (', ') [1] rida = järgmine (m3u) this.address = line.strip () this.channel = i channel_list.append (this) i = i + 1 process = alamprotsess. Avatud (['vlc', '--loop', '--intf', 'dummy', '--fullscreen', channel_list [int (argv [1])]. aadress])

Lõhkeme selle.

#!/usr/bin/python3

See ütleb bashile, et selle faili tõlgendamiseks kasutame python3.

impordi alamprotsess sys impordi argv

Meil on vaja vlc eksemplari käivitamiseks alamprotsessi moodulit ja argv, et valida, millisesse kanalisse vlc käivitame.

klassi jaam: def _init _ (ise): self.channel = 0 self.name = "self.address ="

See määratleb klassi nimega Station. Igal kanalil on kanali number, kanali nimi, mis on võetud m3u -failist, ja aadress, kust kanal voogesitab.

channel_list =

See on loend, mis salvestab kõik kanalid, mis on parsitud m3u -failist.

avatud ('./ us-m3uplaylist-2020-08-17-1.m3u', 'r') kui m3u: i = 0 rea puhul m3u: if line.startswith ('#EXTINF'): this = Station () this.name = line.split (',') [1] rida = järgmine (m3u) this.address = line.strip () this.channel = i channel_list.append (this) i = i + 1

See tsükkel avab m3u esitusloendi ja neelab andmed. meid huvitavad m3u failiridad algavad tähega #EXTINF. See näitab esitusloendi faili uut sisestust. Järgmine huvipakkuv väärtus on nimi, mis on #EXTINFiga samal real, kuid nende vahel on koma. Selle konkreetse m3u järgmine rida on voo aadress. Kasutatakse iteraatorit "i", et loendada, milline kanal on. See tsükkel kordab kogu m3u faili ja täidab kanalite loendi jaamadega.

protsess = alamprotsess. Ava (['vlc', '--loop', '--intf', 'dummy', '--fullscreen', channel_list [int (argv [1])]. aadress])

alamprotsessi teek võimaldab pythonil helistada protsessidele (programmidele) ja tagastab PID (protsessi ID). See võimaldab pythonil hallata programmide käivitamist ja sulgemist "õigesti" ilma ajaloofaili täitmata või lubades suvalisemate koodide käivitamist üldiste "süsteemikõnedega". Kõik massiivi elemendid, mida Popenile argumendina kasutatakse, sisestatakse käsureale.

vlc --loop --intf dummy -täisekraani aadressid

Ülaltoodud käsk on see, mida soovitakse käivitada, valik --loop lahendab mõned probleemid voo peatamisega järgmiste tükkide laadimisel (imelikud m3u8 probleemid), --intf dummy käivitab vlc ilma liideseta, lihtsalt ekraan, -täisekraan käivitab video täisekraanirežiimis (NO WAY!) ja aadress on voo aadress. Nagu koodist näha, pakume aadressi loendi kanalinumbrilt, mis esitatakse käitusajal argv -lause kaudu. Salvestage see fail nimega tv_channels.py, muutke esitusloendi asukoht pythoni failis nii, et see osutaks teie esitusloendile, ja saate koodi käivitada järgmiselt.

python tv_channels.py

Samm: lisage GPIO

Lisage GPIO
Lisage GPIO
Lisage GPIO
Lisage GPIO

Skeemil on näidatud nuppude jaoks kasutatavad kaks GPIO -tihvti ja igal neist on tõmbetakistus, mis hoiab GPIO -tihvti pärast nupuvajutust kõrgel tõmmatud. Varem määratletud koodi saab täiustada, et muuta toiming pisut sujuvamaks, lisades GPIO võimaluse. See võimaldab meil kanalit vahetada nuppude, mitte klaviatuuri ja argv -lausete abil, nagu reaaltelerite puhul.

Esimene asi, mida tuleb tähele panna, on see, et televiisor on klass. Televisiooniks olemiseks peame olema praegusel kanalil, omama võimalike kanalite loendit ja suutma kanaleid vahetada. Selles näites on ainus kanalite vahetamise meetod kanalite loendis ülespoole liikumine ja kanalite loendis allapoole liikumine. Kui kanal on otsustatud, peame VLC käivitama sellel kanalil, mida soovime näha.

#!/usr/bin/python3

ajast importimise unerežiimi importimise alamprotsess sys impordi argv gpiozero importimisest Nupuklass Jaam: def _init _ (ise): self.channel = 0 self.name = "self.address =" self.process = "class Television: def _init _ (ise, failinimi): self.current_channel = 0 self.channel_list = self.build_channel_list (failinimi) self.start_channel () def build_channel_list (ise, failinimi): avatud (failinimi, 'r') kui m3u: i = 0 rea jaoks m3u -s: if line.startswith ('#EXTINF'): this = Station () this.name = line.split (',') [1] line = next (m3u) this.address = line. strip () this.channel = i self.channel_list.append (this) i = i + 1 def channel_up (self): self.current_channel = self.current_channel + 1 if self.current_channel> len (self.channel_list): self. current_channel = len (self.channel_list) self.start_channel () def channel_down (self): self.current_channel = self.current_channel - 1 if self.current_channel <0: self.current_channel = 0 self.start_channel () def start_channel (ise): try: self.process. kill () välja arvatud: pass print ('algkanal % d' % self.current_channel) self.process = alamprotsess. Ava (['vlc', '-q', '--loop', '--intf', ' dummy ',' --fullscreen ', self.channel_list [self.current_channel].address]) this = Televisioon ('./ us-m3uplaylist-2020-08-17-1.m3u ') channel_UP = Nupp (18) channel_DN = Nupp (23), kuigi tõene: channel_UP.when_pressed = this.channel_up channel_DN.when_pressed = this.channel_down

Sellel koodi kordamisel on üsna palju parandusi. nüüd kasutas see moodulit nimega gpiozero, mida vaarika pi vajab, et hõlpsasti juurde pääseda GPIO tihvtide funktsioonidele

sudo apt-get install python3-gpiozero

või

sudo pip install gpiozero

Nagu minu koodist näha, olen valinud kanalite UP ja DOWN jaoks vastavalt GPIO 18 ja GPIO 23. Gpiozero raamatukogul on kena klass nuppude funktsioonide jaoks, kui vajutada, vajutada, vajutada, hoida jne. See muudab selle üsna lihtsaks. Valisin if_pressed, mis viitab tagasihelistamisfunktsioonile, mis käivitatakse selle signaali tuvastamisel.

Viimane suurem muudatus on valiku „-q“kaasamine VLC alamprotsessi kutsesse. See lihtsalt käivitab vlc ilma kogu terminali väljundita, et see ei jääks segamini, nii et näeme koodis olevaid informatiivseid printimislauseid.

Samm: integreerige riistvara, et see näeks terav välja

Integreerige riistvara teravamaks
Integreerige riistvara teravamaks
Integreerige riistvara teravamaks
Integreerige riistvara teravamaks
Integreerige riistvara teravamaks
Integreerige riistvara teravamaks

Ma pole aru saanud, kuidas ma seda saavutada tahan ja see on ainulaadne lahendus iga kasutatava televiisormudeli jaoks. Pean selle üle hästi järele mõtlema ja televiisori ümber uurima, et leida pi jaoks hea toiteallikas, kui ma arvuti massiivse akupesa sisse topin. Olen kaalunud ka kanalite valimiseks kellanuppude kasutamist, kuna need on juba ilusti televiisorisse paigutatud ja kell ei tööta niikuinii. Postitan rohkem, kui leian hea lahenduse, kuid siin erineb Minu projekt suuresti kõigist teistest. Nautige tõelise televiisori sarnast IPTV integratsiooni!

Samm: Pi Power

Pi Power
Pi Power

Leitud mudelteleri jaoks on vaja 12 V toiteallikat. Uurisin plaati ringi, kuid ei näinud ilmselgeid 5 V toiteregulaatoreid, nii et kõige ilmsem koht stabiilse toiteallika saamiseks on trükkplaadil, kus on 12 V silindripistik. Sellega on ilmne probleem. me ei taha pi praadida, seega vajame võimsuse regulaatorit. Olen valinud MP2315 astmelise võimsusmuunduri. See on odav ja lihtne kasutada. Jootame 12 V alalisvoolu sisendi PCB tünnipistikust muunduri IN+ ja GND tihvtidesse ning VO+ Raspberry Pi kontakti 2, samuti GND.

ENNE seda teha, lülitage muundur kindlasti sisse ja veenduge, et väljundist väljub õige 5V. Valisin lihtsaima variandiga reguleeritava pingega variandi. Trimmer reguleerib pinget, nii et ma jälgisin multimeetriga väljundpinget, kui ma trimmerit kruvikeerajaga reguleerisin.

6. samm: toite integreerimine

Võimu integreerimine
Võimu integreerimine
Võimu integreerimine
Võimu integreerimine
Võimu integreerimine
Võimu integreerimine

Pärast televiisori ümber kaevamist otsustati, et parim koht toite väljavõtmiseks on silindri pistiku miinus ja teleri ON/OFF lüliti, mis tähendab, et saame teleriga voogusid sisse ja välja lülitada, pigem pidevalt toites pi, tõmmates otse silindri pistikust.

Juhtmed joodeti sisse ja söödeti mööda korpuse kõrval asuvat trükkplaadi külge, kuni need jõudsid seadme tagaküljele, kus need söödeti läbi auku, mis oli patareipesa tagaosas. Kui need on läbi söödetud, saame kaabelduse otsad ette valmistada ja joota need toiteregulaatorini. Ma häälestasin selle 5 V jaoks, et toita pi ja joodetud päise nööpnõelad selle külge, et saaksime naissoost naissoost džempritega toiteregulaatorist otse pi GPIO päise komplekti joosta. Seda tavaliselt ei soovitata, kuna pi saab tavaliselt toite läbi UBS -i, millel on regulaator 5V konditsioneerimiseks, kuid kuna võimsust juba reguleeritakse, peaks see olema korras.

Seda tehes on heliliinidel müra, sest süsteemis on maandusahel. Proovisin lihtsat vastust lootes kogu vooluvõrku ja maapinda, kuid ei leidnud ühtegi. Samuti jootsin lülitatud režiimi regulaatori juurde microUSB -kaabli, et näha, kas toite sundimine pi sisemiste regulaatorite kaudu lahendaks probleemi. Seda ei tehtud. Lahendus saab olema mõnes heli maandustrafoga. Neid telliti, mitte ehitati, sest need on odavad ja kenasti pakitud. Saate need kätte saada enamikust autoheli kauplustest või osakondadest. Selle ma valisin.

7. samm: pikaajalise nupu lahendus

Pikaajaline nuppude lahendus
Pikaajaline nuppude lahendus
Pikaajaline nuppude lahendus
Pikaajaline nuppude lahendus

Kahtlemata ei jää nupud leivalauale, seega peab olema püsivam lahendus. Haarasin vana protoboardi ja viskasin vooluringi koos mõne päisepoldiga, et oleks lihtne signaalidele juurde pääseda. See on koht, kus kõigil on nuppude kinnitamise või kinnitamise osas eriarvamus. Ma valin nende protoboondimise ja lihtsalt kinnitan need šassiile nii, et käepide, mis liigub üle ekraani, ei segaks. Julgelt kujundust täiendada, lisades 3D trükitud ümbrise, mis silub paigaldamist, kasutage mutreid ja polte, uhkeid liime, integreerige originaalseid nuppe. Niikaua kui see töötab, pole valesid vastuseid.

Need paigaldatakse korpuse välisküljele ja Raspberry Pi asetatakse väga mahukasse akupesasse, nii et kaablite akupesast väljumiseks tuleb puurida väike auk.

8. samm: lõplik sobivuse kontroll

Lõplik sobivuse kontroll
Lõplik sobivuse kontroll

Kõik seadmed tuleb viimast korda sobivaks kontrollida, et näha täpselt, kuhu kõik šassii augud tuleb teha ja millise suurusega augud jne tuleb teha. Lisaks tuleks kaaluda, kuhu komponendid paigutada, et ühendamine ja juurdepääs oleks võimalikult mugav. Lühidalt, veenduge, et kõik mahuks sinna, kuhu te arvate, enne kui kahjustate oma projekti parandamatult ja peate selle välja saama.

9. samm: lõplik integreerimine

Lõplik integreerimine
Lõplik integreerimine
Lõplik integreerimine
Lõplik integreerimine
Lõplik integreerimine
Lõplik integreerimine

Nüüd on kogu riistvara seal, kus ta peab olema, ja see kõik sobib täpselt nii hästi kui vaip. Lõikame asju! Tuvastasin patareipesal koha, kust saaksin AV -kaablid plastikust väikese taande abil välja suunata. Maandasin selle pingiveskiga maha. See tegi sellest üsna lühikese töö. Kasutasin dremeli abil rohkem plastikut, et see kaablitele päris hästi sobiks.

Viimane komponent on kanalivalija. Puurisin patareisahtlisse väikese augu ja vedasin sealt ükshaaval välja päisekaablid. Nupud olid ühendatud ja ma kinnitasin protoboardi plastikust šassii külge kahe poolse kleepuva takjapaelaga. Ma saan aru, et selleks oli umbes 1200 paremat viisi, kuid see töötas ja mul oli kõik vajalik käepärast.

Samm: nautige oma vintage IPTV -d

Nautige oma vintage IPTV -d
Nautige oma vintage IPTV -d
Nautige oma vintage IPTV -d
Nautige oma vintage IPTV -d
Nautige oma vintage IPTV -d
Nautige oma vintage IPTV -d

See võtab asja kokku. Leidke saateid ja nautige vaatamist. Ärge istuge siiski liiga lähedal. Sa mädad oma aju!

Selle projekti täiustamiseks on palju ruumi, nii et viige see soovitud suunas, kuid lõbus oli nii kaugele jõuda. Mis puudutab mind, siis käivitan selle taaskäivitamisel cronjobist, nii et stdout ei salvesta kirju pythoni skriptist. Tahaksin selle parandada, et ma teaksin, mis kanalil ma olen. Teine hea lisand on juhtmevaba klaviatuuri dong Pi -l. See võimaldaks teil WiFi -võrku muuta, kui lahkute kodust teleriga. Olenemata sellest. see oli lõbus projekt ja ma ei jõua ära oodata, millal saan järgmisega alustada.

Soovitan: