Isi kandungan:

Kotak Idiot Retro: 10 Langkah
Kotak Idiot Retro: 10 Langkah

Video: Kotak Idiot Retro: 10 Langkah

Video: Kotak Idiot Retro: 10 Langkah
Video: 【Multi Sub】《我的弟子遍布诸天万界》第1~91集 | 史上最强老祖不死不灭,被困百万年后觉醒,以凡人之躯在各大门派中扮猪吃虎! #热血 #修仙 #玄幻 #重生 2024, November
Anonim
Kotak Idiot Retro
Kotak Idiot Retro

Saya menjumpai televisyen mudah alih lama Magnavox dari 1984 yang duduk di rak di kedai barang bekas tempatan saya. Saya berfikir sendiri, "oh PERLU!" Setelah diperiksa lebih lanjut, saya melihat tanda harga $ 15 di atasnya, jadi saya memutuskan untuk membawanya pulang dan membuat sesuatu yang tidak sedap. Saya masih ingat menonton semula sebagai anak-anak dari semua kelas klasik yang hebat dalam warna hitam dan putih yang gemilang, dan ingin menjadikan ini kenyataan lagi.

Masalahnya adalah bahawa tidak ada stesen analog di luar sana lagi, dan ini sama sekali tidak dapat melakukan penyahkodan ATSC, atau penyahkodan digital apa pun. Saya menyedari adanya sambungan AV di sisi, dan ada beberapa raspberry pi berbaring, jadi saya memutuskan untuk memulakan pengembaraan untuk mengetahui bagaimana saya dapat mengalirkan saluran ke ini. Saya juga mahu menjadikannya kelihatan tajam. Saya tidak akan menggunakannya pada bateri sel 9-D, jadi saya dapat menyembunyikan rpi di ruang bateri dengan pelbagai barang lain.

Langkah 1: Dapatkan Senarai IPTV yang Baik

Dapatkan Senarai IPTV yang Baik
Dapatkan Senarai IPTV yang Baik

Senarai IPTV Harian mempunyai pilihan stesen iptv percuma yang hebat yang diatur oleh negara. Pilih negara pilihan, dan muat turun fail m3u.

Untuk perisian yang ada di dalamnya, m3u adalah format yang diperlukan. Anda boleh membaca lebih lanjut mengenai spesifikasi format di sini.

Langkah 2: Eksperimen Kod Permulaan

Kod python yang akan kita tulis menguraikan fail m3u ke dalam senarai stesen.

#! / usr / bin / ular sawa3

subproses import dari sys import argv class Station: def _init _ (self): self.channel = 0 self.name = '' self.address = '' channel_list = with open ('./ us-m3uplaylist-2020-08- 17-1.m3u ',' r ') sebagai m3u: i = 0 untuk garis dalam m3u: if line.startswith (' # EXTINF '): this = Station () this.name = line.split (', ') [1] line = next (m3u) this.address = line.strip () this.channel = i channel_list.append (this) i = i + 1 proses = subproses. Buka (['vlc', '--loop', '--intf', 'dummy', '--fullscreen', channel_list [int (argv [1])]. alamat])

Mari pecahkan ini.

#! / usr / bin / ular sawa3

Ini memberitahu bash bahawa kita akan menggunakan python3 untuk mentafsirkan fail ini.

subproses import dari sys import argv

Kami memerlukan modul subproses untuk melancarkan instance vlc kami, dan kami memerlukan argv untuk memilih saluran yang akan kami lancarkan vlc.

kelas Stesen: def _init _ (diri): self.channel = 0 self.name = "" self.address ="

Ini menentukan kelas yang dipanggil Stesen. Setiap saluran akan mempunyai nombor saluran, nama saluran seperti yang diambil dari fail m3u, dan alamat dari mana saluran itu dialirkan.

senarai_ saluran =

Ini adalah senarai yang akan menyimpan semua saluran yang dihuraikan dari fail m3u.

dengan terbuka ('./ us-m3uplaylist-2020-08-17-1.m3u', 'r') sebagai m3u: i = 0 untuk garis dalam m3u: if line.startswith ('# EXTINF'): ini = Stesen () this.name = line.split (',') [1] line = next (m3u) this.address = line.strip () this.channel = i channel_list.append (ini) i = i + 1

Gelung ini membuka senarai main m3u, dan mengambil data. baris fail m3u yang kami minati bermula dengan #EXTINF, Ini menunjukkan entri baru ke fail senarai main. Nilai minat seterusnya adalah nama, yang berada pada baris yang sama dengan #EXTINF, tetapi dengan tanda koma di antara mereka. Garis berikut m3u khusus ini adalah alamat aliran. Terdapat iterator "i" digunakan untuk mengira saluran mana. Gelung ini berulang melalui keseluruhan fail m3u dan mengisi senarai_ saluran dengan stesen.

process = subprocess. Popen (['vlc', '-loop', '--intf', 'dummy', '--fullscreen', channel_list [int (argv [1])]. alamat]

perpustakaan subproses membolehkan python memanggil proses (program) dan mengembalikan PID (Process ID). Ini membolehkan python dapat menguruskan pelancaran dan penutupan program "dengan betul" tanpa mengisi fail sejarah, atau membenarkan lebih banyak kod sewenang-wenang dijalankan dengan panggilan "sistem" generik. Setiap elemen larik yang digunakan sebagai argumen untuk Popen adalah seperti yang diketik dalam baris perintah.

alamat vlc --loop --intf dummy --fullscreen

Perintah di atas adalah apa yang diinginkan untuk dijalankan, dengan opsi --loop memperbaiki beberapa masalah dengan jeda aliran sementara bahagian berikutnya dimuat (masalah m3u8 pelik), --intf dummy memulakan vlc tanpa antara muka, hanya layar, --fullscreen melancarkan video dalam mod skrin penuh (TANPA CARA!), dan alamatnya adalah alamat aliran. Seperti yang anda lihat dalam kod, kami memberikan alamat dari nombor saluran senarai, yang diberikan pada waktu berjalan melalui pernyataan argv. Simpan fail ini sebagai tv_channels.py, ubah lokasi senarai main dalam fail python untuk menunjuk ke senarai main anda, dan anda boleh menjalankan kodnya seperti berikut:

python tv_channels.py

Langkah 3: Tambah GPIO

Tambah GPIO
Tambah GPIO
Tambah GPIO
Tambah GPIO

Skema menunjukkan dua pin GPIO digunakan untuk butang, dan masing-masing mempunyai resistor penarik untuk memastikan pin GPIO ditarik tinggi setelah menekan butang. Kod yang ditentukan sebelumnya dapat diperhalusi untuk menjadikan operasi sedikit lebih lancar dengan menambahkan kemampuan GPIO. Ini membolehkan kita menukar saluran dengan butang, bukannya papan kenyataan dan pernyataan argv, seperti TV untuk kenyataan.

Perkara pertama yang perlu diberi perhatian ialah televisyen saya didefinisikan sebagai kelas. Untuk menjadi televisyen, kita harus berada di saluran semasa, memiliki senarai saluran yang mungkin, dan memiliki kemampuan untuk mengubah saluran tersebut. Dalam contoh ini, satu-satunya kaedah menukar saluran adalah dengan menaikkan senarai saluran, dan menurunkan senarai saluran. Setelah saluran diputuskan, kita harus memulakan VLC pada saluran yang ingin kita lihat.

#! / usr / bin / ular sawa3

dari masa import subproses import dari sys import argv dari gpiozero import Button class Station: def _init _ (self): self.channel = 0 self.name = '' self.address = '' self.process = '' class Television: def _init _ (diri, nama fail): self.current_channel = 0 self.channel_list = self.build_channel_list (filename) self.start_channel () def build_channel_list (diri, nama fail): dengan terbuka (nama fail, 'r') sebagai m3u: i = 0 untuk baris dalam m3u: 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): diri. 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 (diri): cuba: proses diri. kill () kecuali: pass print ('saluran permulaan% d'% self.current_channel) self.process = subprocess. Popen (['vlc', '-q', '--loop', '--intf', ' dummy ',' --fullscreen ', self.channel_list [self.current_channel].address]) ini = Televisyen ('./ us-m3uplaylist-2020-08-17-1.m3u ') channel_UP = Butang (18) saluran_DN = Butang (23) sementara Benar: channel_UP.when_pressed = this.channel_up channel_DN.when_pressed = this.channel_down

Pengulangan kod ini mempunyai beberapa peningkatan. kini menggunakan modul yang disebut gpiozero yang diperlukan oleh raspberry pi untuk mengakses fungsi pin GPIO dengan mudah

sudo apt-get install python3-gpiozero

atau

sudo pip pasang gpiozero

Seperti yang dilihat dalam kod saya, saya telah memilih GPIO 18 dan GPIO 23 untuk saluran UP dan saluran DOWN masing-masing. Perpustakaan gpiozero mempunyai kelas yang bagus untuk fungsi butang untuk ketika_tekan, di-tekan, bila_tahan, dll. Ini menjadikannya cukup mudah. Saya memilih when_pressed, yang merujuk kepada fungsi panggilan balik untuk dijalankan ketika isyarat ini dikesan.

Perubahan besar terakhir adalah kemasukan pilihan '-q' dalam panggilan subproses VLC. Ini hanya menjalankan vlc tanpa semua output ke terminal untuk menjauhkannya dari kekacauan sehingga kita dapat melihat pernyataan cetak maklumat dalam kod.

Langkah 4: Gabungkan Perkakasan agar Tampak Tajam

Gabungkan Perkakasan agar Tampak Tajam
Gabungkan Perkakasan agar Tampak Tajam
Gabungkan Perkakasan agar Tampak Tajam
Gabungkan Perkakasan agar Tampak Tajam
Gabungkan Perkakasan agar Tampak Tajam
Gabungkan Perkakasan agar Tampak Tajam

Saya belum mengetahui bagaimana saya ingin mencapainya, dan ini akan menjadi penyelesaian unik untuk setiap model tv yang digunakan. Saya perlu bersungguh-sungguh memikirkan perkara ini dan menyelidiki televisyen untuk mencari sumber kuasa yang baik untuk pi setelah saya menjejalkan komputer di dalam ruang bateri yang besar. Saya juga mempertimbangkan untuk menggunakan butang jam untuk pemilihan saluran, kerana mereka sudah dipasang dengan indah di televisyen, dan jam tidak berfungsi. Saya akan menghantar lebih banyak apabila saya mencari penyelesaian yang baik, tetapi di sinilah projek saya akan sangat berbeza dengan yang lain. Nikmati integrasi IPTV seperti tv sebenar!

Langkah 5: Kuasa Pi

Kuasa Pi
Kuasa Pi

Untuk model TV yang saya dapati, ia memerlukan bekalan kuasa 12V. Saya menyiasat sekeliling papan, tetapi tidak melihat pengatur daya yang jelas untuk 5V, jadi tempat yang paling jelas untuk mendapatkan bekalan kuasa yang stabil adalah pada papan litar di mana penyambung tong untuk 12V masuk. Terdapat masalah yang jelas dengan ini. kami tidak mahu menggoreng kue, jadi kami memerlukan pengatur kuasa. Saya telah memilih MP2315 Step-Down Power Converter. Kotorannya murah, dan mudah digunakan. Kami akan menyolder input 12VDC dari penyambung tong pada PCB ke pin IN + dan GND penukar, dan VO + ke pin 2 pada Raspberry Pi, serta GND.

SEBELUM ini dilakukan, pastikan untuk menghidupkan penukar dan memastikan bahawa 5V yang betul keluar dari output. Saya memilih pilihan paling mudah dengan voltan laras kabel. Perapi akan menyesuaikan voltan, jadi saya melihat output voltan dengan multimeter semasa saya menyesuaikan pemangkas dengan pemutar skru.

Langkah 6: Mengintegrasikan Kuasa

Mengintegrasikan Kuasa
Mengintegrasikan Kuasa
Mengintegrasikan Kuasa
Mengintegrasikan Kuasa
Mengintegrasikan Kuasa
Mengintegrasikan Kuasa

Setelah menggali televisyen, diputuskan bahawa tempat terbaik untuk mendapatkan kuasa adalah dari negatif penyambung tong dan suis ON / OFF televisyen, yang bermaksud bahawa kita dapat menghidupkan dan mematikan aliran dengan televisyen, dan bukannya sentiasa menghidupkan pi dengan menarik terus dari penyambung tong.

Kawat disolder ke dalam dan dimasukkan sepanjang sisi PCB di sebelah casing hingga sampai ke bahagian belakang unit, di mana mereka disalurkan melalui lubang yang terdapat di bahagian belakang ruang bateri. Setelah mereka disalurkan, kita dapat menyiapkan hujung kabel dan memasangnya ke pengatur kuasa. Saya menyesuaikannya dengan 5V untuk mengaktifkan pin dan pin header yang disolder ke dalamnya sehingga kita dapat menjalankan jumper wanita ke wanita dari pengatur kuasa terus ke set kepala GPIO pi. Hal ini biasanya tidak disarankan, karena pi umumnya mendapat daya melalui UBS, yang memiliki pengatur sebaris untuk mengkondisikan 5V, tetapi kerana daya sudah diatur, seharusnya baik.

Terdapat beberapa kebisingan pada garis audio dari melakukan ini, kerana terdapat gelung ground dalam sistem. Saya mencuba banyak kekuatan dan titik dasar di seluruh papan dengan harapan mendapat jawapan yang mudah, tetapi tidak menemui apa-apa. Saya juga menyisipkan kabel microUSB ke pengatur mod beralih untuk melihat apakah memaksa kuasa melalui pengatur dalaman pi akan menyelesaikan masalahnya. Tidak. Penyelesaiannya ada dalam beberapa transformer pengasingan tanah audio. Ini dipesan daripada dibina, kerana harganya murah dan dibungkus dengan baik. Anda boleh mengambilnya dari kebanyakan kedai atau jabatan audio automatik. Inilah yang saya pilih.

Langkah 7: Penyelesaian Butang Jangka Panjang

Penyelesaian Butang Jangka Panjang
Penyelesaian Butang Jangka Panjang
Penyelesaian Butang Jangka Panjang
Penyelesaian Butang Jangka Panjang

Tidak diragukan lagi, butang tidak akan tinggal di papan roti, jadi perlu ada penyelesaian yang lebih kekal. Saya meraih beberapa protoboard lama dan melemparkan litar bersama-sama dengan pin pin untuk memudahkannya mengakses isyarat. Di sinilah setiap orang akan mempunyai perbezaan pendapat tentang cara memasang atau memasang butang. Saya memilih untuk menonjolkannya dan memasangkannya ke casis supaya pemegang yang berayun di atas skrin tidak terganggu. Jangan ragu untuk menyusun reka bentuk dengan menambahkan sarung bercetak 3d yang melicinkan pemasangan, menggunakan mur dan bolt, pelekat mewah, menggabungkan butang asli, apa sahaja. Selagi ia berfungsi, tidak ada jawapan yang salah.

Ini akan dipasang ke bahagian luar casing, dan Raspberry Pi akan dimasukkan ke dalam ruang bateri yang sangat lapang, jadi perlu ada lubang kecil yang dibor untuk membolehkan kabel keluar dari ruang bateri.

Langkah 8: Pemeriksaan Fit Akhir

Pemeriksaan Fit Akhir
Pemeriksaan Fit Akhir

Semua peralatan perlu diperiksa untuk terakhir kalinya untuk melihat dengan tepat di mana semua lubang perlu dibuat ke casis, dan berapa ukuran lubang, dll yang perlu dibuat. Selain itu, ia harus dipertimbangkan di mana meletakkan komponen untuk kemudahan penyambungan dan akses yang optimum. Singkat cerita, pastikan semuanya sesuai dengan yang anda fikirkan sebelum anda merosakkan projek anda dan perlu mengeluarkan masalah.

Langkah 9: Integrasi Akhir

Integrasi Akhir
Integrasi Akhir
Integrasi Akhir
Integrasi Akhir
Integrasi Akhir
Integrasi Akhir

Sekarang semua perkakasan berada di tempat yang diperlukan, dan semuanya sesuai dengan bug di permaidani. Mari potong barang! Saya mengenal pasti tempat di tempat bateri di mana saya dapat mengarahkan kabel AV keluar menggunakan lekukan kecil di dalam plastik. Saya meletakkannya dengan penggiling bangku. Ia membuat kerja yang singkat. Saya menggunakan dremel untuk menggiling lebih banyak plastik untuk menjadikannya sesuai dengan kabel.

Komponen terakhir adalah pemilih saluran. Saya menggerudi lubang kecil di ruang bateri dan mengalihkan kabel header dari satu per satu. Butang disambungkan ke atas, dan saya memasang protoboard ke casis plastik dengan dua bahagian velcro pra-pelekat. Saya dapati terdapat kira-kira 1200 cara yang lebih baik untuk melakukan ini, tetapi ini berjaya, dan saya mempunyai semua yang saya perlukan.

Langkah 10: Nikmati IPTV Vintage anda

Nikmati IPTV Vintaj Anda
Nikmati IPTV Vintaj Anda
Nikmati IPTV Vintaj Anda
Nikmati IPTV Vintaj Anda
Nikmati IPTV Vintaj Anda
Nikmati IPTV Vintaj Anda

Itu mengenai jumlahnya. Cari rancangan dan seronok menonton. Jangan duduk terlalu dekat. Anda akan merosakkan otak anda!

Terdapat banyak ruang untuk memperbaiki projek ini, jadi bawa ke arah mana sahaja yang anda mahukan, tetapi seronok sampai sejauh ini. Bagi saya, saya menjalankan ini dari cronjob semasa reboot, jadi stdout tidak menangkap mesej dari skrip python. Saya ingin memperbaikinya supaya saya tahu saluran apa yang saya jalani. Tambahan lain yang baik adalah papan kekunci wayarles pada Pi. Ini akan membolehkan anda menukar rangkaian wifi jika anda meninggalkan rumah dengan tv. Walau apa pun. ia adalah projek yang menyeronokkan, dan saya tidak sabar untuk memulakan yang berikutnya.

Disyorkan: