Мазмұны:

Ретро идиот қорабы: 10 қадам
Ретро идиот қорабы: 10 қадам

Бейне: Ретро идиот қорабы: 10 қадам

Бейне: Ретро идиот қорабы: 10 қадам
Бейне: Мыналар не істеп тұр?😱😱😱 #qoslike #калаулым #бірболайық #кослайк 2024, Шілде
Anonim
Ретро идиот қорабы
Ретро идиот қорабы

Мен 1984 жылы шығарылған ескі Magnavox портативті теледидарын менің жергілікті дүкендегі сөреде отырғанын таптым. Мен ойладым: «О, НЕАТ!» Қосымша тексергенде мен оның бағасы 15 доллар болатынын байқадым, сондықтан мен оны үйге апарып, одан керемет нәрсе жасауды шештім. Менің есімде, ақ -қара түсте барлық ұлы классиктердің қайталауын көргенде, мен мұны қайтадан шындыққа айналдырғым келді.

Мәселе мынада, қазір аналогты станциялар жоқ, және бұл ATSC кодын немесе кез келген цифрлық декодтауды жүргізуге мүлде қабілетсіз. Мен бүйірінде АВ қосылымы бар екенін байқадым және бірнеше таңқурай пиін айналдыра қойдым, сондықтан мен бұған арналарды қалай апаруға болатынын түсіну үшін шытырман оқиғаға шығуды шештім. Мен де оны өткір етіп көрсеткім келеді. Мен оны 9 D ұялы аккумуляторында жұмыс істемеймін, сондықтан мен rpi-ді батарея бөлімінде басқа көптеген пайдалы заттармен жасыра аламын.

1 -қадам: жақсы IPTV тізімін алыңыз

Жақсы IPTV тізімін алыңыз
Жақсы IPTV тізімін алыңыз

Күнделікті IPTV тізімінде ел ұйымдастыратын ақысыз iptv станцияларының керемет таңдауы бар. Таңдаған елді таңдап, m3u файлын жүктеңіз.

Бұл бағдарламалық жасақтама үшін m3u - бұл қажетті формат. Пішіннің ерекшеліктері туралы толығырақ мына жерден оқи аласыз.

2 -қадам: кодтың алдын ала эксперименті

Біз жазатын питон коды m3u файлын станциялар тізіміне талдайды.

#!/usr/bin/python3

sys импорттау argv сыныптан ішкі процесті импорттау станция: def _init _ (self): self.channel = 0 self.name = '' self.address = '' channel_list = with open ('./ us-m3uplaylist-2020-08- 17-1.m3u ',' r ') m3u ішіндегі m3u: i = 0 m3u ішіндегі жол үшін: егер line.startswith ('#EXTINF '): бұл = Станция () бұл.атау = сызық. Бөлінген (', ') [1] жол = келесі (m3u) this.address = line.strip () this.channel = i channel_list.append (this) i = i + 1 процесс = ішкі процесс. Popen (['vlc', '--loop', '--intf', 'dummy', '--fullscreen', channel_list [int (argv [1])] мекен-жайы])

Мұны бөлшектейік.

#!/usr/bin/python3

Бұл bash бұл файлды түсіндіру үшін python3 қолданатынымызды айтады.

sys import argv ішкі процессінен импорттау

Бізге vlc экземплярын іске қосу үшін ішкі процесс модулі қажет болады, және біз vlc іске қосылатын арнаны таңдау үшін argv қажет болады.

сынып станция: def _init _ (өзін): self.channel = 0 self.name = «self.address =»

Бұл Station деп аталатын сыныпты анықтайды. Әр арнада m3u файлынан алынған арна нөмірі, арнаның атауы және сол каналдың ағыны қай жерде болатыны болады.

channel_list =

Бұл m3u файлынан алынған барлық арналарды сақтайтын тізім.

open ('./ us-m3uplaylist-2020-08-17-1.m3u', 'r') түрінде m3u: i = 0 m3u ішіндегі жол үшін: егер line.startswith ('#EXTINF'): бұл = станция () this.name = line.split (',') [1] line = next (m3u) this.address = line.strip () this.channel = i channel_list.append (this) i = i + 1

Бұл цикл m3u ойнату тізімін ашады және деректерді қабылдайды. Бізді қызықтыратын m3u файлдық жолдары #EXTINF -тен басталады, бұл ойнату тізімінің файлына жаңа жазбаны көрсетеді. Келесі қызығушылық мәні #EXTINF -пен бір жолда орналасқан, бірақ олардың арасында үтір бар. Осы m3u келесі жолы - ағынның мекенжайы. Қай каналдың қайсысы екенін санау үшін «i» итераторы бар. Бұл цикл барлық m3u файлын қайталайды және channel_list -ті станциялармен толтырады.

process = subprocess. Popen (['vlc', '--loop', '--intf', 'dummy', '--fullscreen', channel_list [int (argv [1])] мекен-жайы])

ішкі процесс кітапханасы python -ға процестерге (бағдарламаларға) қоңырау шалуға мүмкіндік береді және PID (Process ID) қайтарады. Бұл python -ға тарих файлын толтырмай -ақ бағдарламаларды «дұрыс» іске қосуды және жабуды басқаруға немесе жалпы «жүйелік» қоңыраулармен ерікті кодты іске қосуға мүмкіндік береді. Попенге аргумент ретінде қолданылатын массивтің әрбір элементі пәрмен жолында терілгендей болады.

vlc --loop --intf dummy -экрандағы толық адрестер

Жоғарыда көрсетілген пәрменді іске қосу қажет -келесі нұсқаулықтар жүктелетін кезде ағынды кідіртуге байланысты кейбір мәселелерді шешетін --loop опциясы (оғаш m3u8 мәселелері), --intf dummy интерфейссіз vlc іске қосады, тек экран, -толық экран бейнені толық экран режимінде іске қосады (ЖОЛ ЖОҚ!), ал адрес - ағынның мекенжайы. Сіз кодта көріп тұрғандай, біз адресті argv операторы арқылы жұмыс уақытында берілген тізімдегі арна нөмірінен береміз. Бұл файлды tv_channels.py ретінде сақтаңыз, ойнату тізіміне нұсқау үшін python файлындағы ойнату тізімінің орнын өзгертіңіз және сіз кодты келесідей іске қоса аласыз:

python tv_channels.py

3 -қадам: GPIO қосыңыз

GPIO қосыңыз
GPIO қосыңыз
GPIO қосыңыз
GPIO қосыңыз

Схемада түймелер үшін қолданылатын екі GPIO түйрегіші көрсетілген және олардың әрқайсысында түймені басқаннан кейін GPIO түйреуішін жоғары ұстап тұру үшін тартқыш резисторы бар. Бұрын анықталған кодты GPIO мүмкіндігін қосу арқылы жұмысты біршама жеңілдету үшін нақтылауға болады. Бұл бізге арнаны клавиатура мен argv операторларының орнына түймелермен өзгертуге мүмкіндік береді.

Бірінші ескеретін жайт, менде теледидар сынып ретінде анықталған. Теледидар болу үшін бізге ағымдағы арнада болу, мүмкін болатын арналардың тізімі және арналарды өзгерту мүмкіндігі болуы керек. Бұл мысалда арналарды өзгертудің жалғыз әдісі - арналар тізімін жоғарылату және арналар тізімін төмен жылжыту. Арна шешілген соң, біз көргіміз келетін арнада VLC іске қосуға тура келеді.

#!/usr/bin/python3

уақыттан импорттық ұйқы импорттаудың ішкі процесі syp импорттауынан gviozero импорттауынан түйме класы Station: def _init _ (self): self.channel = 0 self.name = '' self.address = '' self.process = '' class Television: def _init _ (өзіндік, файл атауы): self.current_channel = 0 self.channel_list = self.build_channel_list (файл атауы) self.start_channel () def build_channel_list (өзіндік, файл атауы): ашық (файл атауы, 'r') m3u: i ретінде M3u ішіндегі жол үшін = 0: 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 (): көріңіз: өзін -өзі өңдеу. kill () қоспағанда: өту басылымы (' % d' % self.current_channel бастапқы арнасы) self.process = ішкі процесс. Ашық (['vlc', '-q', '--loop', '--intf', ' муляж ',' --fullscreen ', self.channel_list [self.current_channel].adress]) this = Television ('./ us-m3uplaylist-2020-08-17-1.m3u ') channel_UP = Түйме (18) channel_DN = Түйме (23) «True» кезінде: channel_UP.when_pressed = this.channel_up channel_DN.when_pressed = this.channel_down

Бұл кодты қайталауда бірнеше жақсартулар бар. ол қазір GPIO түйреуіштерінің жұмысына оңай қол жеткізу үшін таңқурай пи талап ететін gpiozero деп аталатын модульді қолданды.

sudo apt-get python3-gpiozero орнатыңыз

немесе

sudo pip gpiozero орнатыңыз

Менің кодымда көрсетілгендей, мен сәйкесінше UP арнасы мен DOWN арнасы үшін GPIO 18 мен GPIO 23 таңдадым. Gpiozero кітапханасында батырмаларды басу, басу, ұстау және т.с.с түймелеріне арналған жақсы класс бар. Бұл оны жеңілдетеді. Мен бұл сигнал анықталған кезде іске қосылатын кері шақыру функциясына сілтеме жасайтын when_pressed таңдадым.

Соңғы үлкен өзгеріс -VLC қосалқы процессіне '-q' опциясын қосу. Бұл кодта ақпаратты басып шығару туралы мәлімдемелерді көре алу үшін терминалға кедергі келтірмеу үшін барлық шығыссыз vlc жұмыс істейді.

4 -қадам: Айқын көрінетін жабдықты біріктіріңіз

Аппараттық құралдарды интеграциялаңыз
Аппараттық құралдарды интеграциялаңыз
Аппараттық құралдарды интеграциялаңыз
Аппараттық құралдарды интеграциялаңыз
Аппараттық құралдарды интеграциялаңыз
Аппараттық құралдарды интеграциялаңыз

Мен мұны қалай жүзеге асырғым келетінін түсінбедім, және бұл әр теледидар үшін бірегей шешім болады. Мен бұл туралы көп ойлануым керек және компьютерді үлкен батарея бөлімінің ішіне кіргізгеннен кейін, пи үшін жақсы қуат көзін табу үшін теледидарды іздеуім керек. Мен арнаны таңдау үшін сағат түймелерін қолдануды қарастырдым, өйткені олар теледидарда әдемі орналастырылған, және бәрібір сағат жұмыс істемейді. Мен жақсы шешім тапқан кезде көбірек жазамын, бірақ бұл жерде менің жобам басқалардан айтарлықтай ерекшеленеді. Нағыз теледидар сияқты IPTV интеграциясын пайдаланыңыз!

5 -қадам: Pi Power

Pi қуаты
Pi қуаты

Мен тапқан теледидар үлгісі үшін оған 12 В қуат көзі қажет. Мен тақтаны айналдырдым, бірақ 5В кернеуінің анық реттегіштерін көрмедім, сондықтан тұрақты қуат көзін алудың ең айқын орны - 12В үшін бөшке қосқышы кіретін схемада. Бұл жерде айқын мәселе бар. біз пиді қуырғымыз келмейді, сондықтан бізге қуат реттегіші қажет болады. Мен MP2315 төмен түсетін қуат түрлендіргішін таңдадым. Бұл қоқыс арзан, оны қолдану оңай. Біз ПХД баррель қосқышынан 12VDC кірісін конвертердің IN+ және GND түйреуіштеріне, ал VO+ Raspberry Pi -ге 2 түйреуішке, сондай -ақ GND -ге дәнекерлейміз.

Мұны жасамас бұрын, түрлендіргішті қуаттандырып, шығудан 5В сәйкес келетініне көз жеткізіңіз. Мен реттелетін кернеуі бар қарапайым опцияны таңдадым. Триммер кернеуді реттейді, сондықтан мен бұрағышпен қайшыны реттеген кезде мультиметрмен кернеудің шығуын бақыладым.

6 -қадам: қуатты біріктіру

Күштерді біріктіру
Күштерді біріктіру
Күштерді біріктіру
Күштерді біріктіру
Күштерді біріктіру
Күштерді біріктіру

Телевизорды зерттеп болғаннан кейін, электр қуатын алудың ең жақсы орны баррель коннекторы мен теледидардың ҚОСУ/ӨШІРУ қосқышы теріс деп шешілді, демек, біз ағындарды теледидармен қосуға және өшіруге болады. баррель коннекторынан тікелей тартып пиді үнемі қуаттандырады.

Сымдар дәнекерленген және корпустың жанындағы ПХД жағымен қоректендірілген, олар құрылғының артқы жағына жеткенше, олар батарея бөлімінің артындағы тесік арқылы жіберілген. Олар қоректендірілгеннен кейін, біз кабельдің ұштарын дайындап, оларды қуат реттегішіне дәнекерлей аламыз. Мен оны 5В қуатына реттеп қойдым және оған түйреуіштерді дәнекерледік, осылайша біз қуат реттегішінен әйелге секірушіден пионың GPIO тақырыптар жиынтығына жүгіре аламыз. Әдетте бұл ұсынылмайды, өйткені pi әдетте 5В кернеуін реттейтін реттегіші бар UBS арқылы қуат алады, бірақ қуат реттеліп жатқандықтан, ол жақсы болуы керек.

Бұл әрекеттен аудио желілерде біраз шу шығады, себебі жүйеде жерге тұйықталу бар. Мен борттың барлық нүктелерінде көптеген жауаптар мен күштерді сынап көрдім, бірақ жауап таба алмадым. Мен сондай -ақ microUSB кабелін қосылатын режим реттегішіне дәнекерледім, бұл ішкі реттегіштер арқылы қуатты мәжбүрлеу мәселені реттейтінін білу үшін. Олай болмады. Шешім жерді оқшаулайтын кейбір дыбыстық трансформаторларда болады. Олар салынғаннан гөрі тапсырыс берілді, себебі олар арзан және жақсы қапталған. Сіз оларды көптеген аудио немесе дүкендерден ала аласыз. Бұл мен таңдаған нәрсе.

7 -қадам: Ұзақ мерзімді түйме шешімі

Ұзақ мерзімді түйме шешімі
Ұзақ мерзімді түйме шешімі
Ұзақ мерзімді түйме шешімі
Ұзақ мерзімді түйме шешімі

Әрине, түймелер тақтада қалмайды, сондықтан тұрақты шешім қажет. Мен сигналдарға қол жеткізуді жеңілдету үшін ескі протон тақтасын алып, тізбекті бірнеше түйреуішпен бірге лақтырдым. Бұл жерде әркім түймені бекіту немесе бекіту туралы әр түрлі пікірде болады. Мен оларды протобоардқа отырғызуды таңдап жатырмын және оларды корпусқа бекітемін, сонда экранды айналдыратын тұтқа кедергі жасамайды. Құрылғыны тегістейтін, жаңғақтар мен болттарды, сәнді желімдерді қолданатын, түпнұсқалық түймелерді біріктіретін 3D басып шығарылған қапты қосу арқылы дизайнды жаңартыңыз. Ол жұмыс істеп тұрған кезде қате жауаптар болмайды.

Олар корпустың сыртына орнатылады, ал Raspberry Pi өте кең батарея бөлімінің ішіне енеді, сондықтан кабельдердің батарея бөлімінен шығуына мүмкіндік беретін кішкене тесік болуы керек.

8 -қадам: соңғы сәйкестікті тексеру

Соңғы сәйкестікті тексеру
Соңғы сәйкестікті тексеру

Барлық жабдықтар шассиде барлық тесіктердің қай жерде жасалатынын және қандай өлшемдегі тесіктерді және т.б. жасау керектігін білу үшін соңғы рет тексерілуі керек. Қосымша қосылым мен кірудің оңтайлылығы үшін компоненттерді қайда орналастыру керектігін қарастырған жөн. Ұзын сөздің қысқасы, бәрі сіздің ойлағаныңызға сәйкес келетініне көз жеткізіңіз, осылайша сіз жобаңызға түзетілмейтін зиян келтірмес бұрын және оны алып тастауыңыз керек.

9 -қадам: соңғы интеграция

Соңғы интеграция
Соңғы интеграция
Соңғы интеграция
Соңғы интеграция
Соңғы интеграция
Соңғы интеграция

Енді барлық жабдық қажет жерде, және бәрі кілемдегі қате сияқты ыңғайлы. Бір нәрсені кесейік! Мен аккумулятор бөлімінде пластиктен кішкене шегініс арқылы AV кабельдерін шығара алатын орынды анықтадым. Мен оны орындықтармен тегістегішпен қопсыттым. Бұл өте қысқа жұмыс жасады. Мен пластмассаны ұнтақтау үшін дремельді қолданып, оны кабельдерге өте жақсы орналастырдым.

Соңғы компонент - арна таңдаушысы. Мен аккумулятор бөлімінде кішкене тесік бұрғыладым және оның үстіңгі кабельдерін бір -бірден шығардым. Түймелер қосылды, мен пластикалық шассиге протободы жабысқақ желіммен екі жартысы бекітілді. Мен мұны істеудің 1200 -ге жуық жақсы әдісі бар екенін білемін, бірақ бұл жұмыс істеді және менде қажет нәрсенің бәрі болды.

10 -қадам: Vintage IPTV -ден рахат алыңыз

Винтаждық IPTV -ден рахат алыңыз
Винтаждық IPTV -ден рахат алыңыз
Винтаждық IPTV -ден рахат алыңыз
Винтаждық IPTV -ден рахат алыңыз
Винтаждық IPTV -ден рахат алыңыз
Винтаждық IPTV -ден рахат алыңыз

Бұл туралы қорытынды жасайды. Шоуларды тауып, тамашалаңыз. Бірақ тым жақын отырмаңыз. Сіз миыңызды шірітесіз!

Бұл жобаны жақсартуға көп орын бар, сондықтан оны өзіңіз қалаған бағытта қабылдаңыз, бірақ оған жету өте қызықты болды. Мен болсам, мен мұны қайта жүктеу кезінде cronjob -дан іске қосамын, сондықтан stdout python сценарийінен хабарламаларды алмайды. Мен бұл мәселені шешкім келеді, сондықтан мен қай каналда екенімді білемін. Тағы бір жақсы қосымша - бұл сымсыз пернетақта қондырғысы. Егер сіз үйден теледидармен шықсаңыз, бұл Wi -Fi желісін өзгертуге мүмкіндік береді. Қарамастан. Бұл қызықты жоба болды, мен келесі жобаны бастауды асыға күтемін.

Ұсынылған: