Daftar Isi:
- Langkah 1: Dapatkan Daftar IPTV yang Bagus
- Langkah 2: Eksperimen Kode Awal
- Langkah 3: Tambahkan GPIO
- Langkah 4: Integrasikan Perangkat Keras agar Terlihat Tajam
- Langkah 5: Kekuatan Pi
- Langkah 6: Mengintegrasikan Kekuatan
- Langkah 7: Solusi Tombol Jangka Panjang
- Langkah 8: Pemeriksaan Kecocokan Akhir
- Langkah 9: Integrasi Akhir
- Langkah 10: Nikmati IPTV Vintage Anda
Video: Kotak Idiot Retro: 10 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:54
Saya menemukan televisi portabel Magnavox tua dari tahun 1984 duduk di rak di toko barang bekas lokal saya. Saya berpikir, "oh NEAT!" Setelah diperiksa lebih lanjut, saya melihat label harga $15 di atasnya, jadi saya memutuskan untuk membawanya pulang dan membuat sesuatu yang keren darinya. Saya ingat menonton tayangan ulang sebagai anak dari semua film klasik hebat dalam warna hitam dan putih yang megah, dan ingin membuat ini menjadi kenyataan lagi.
Masalahnya adalah tidak ada lagi stasiun analog di luar sana, dan ini sama sekali tidak mampu melakukan decoding ATSC, atau decoding digital apa pun. Saya memang memperhatikan adanya koneksi AV di samping, dan memiliki beberapa raspberry pi, jadi saya memutuskan untuk memulai petualangan untuk mencari tahu bagaimana saya bisa mengalirkan saluran ke sini. Saya ingin membuatnya terlihat tajam juga. Saya tidak akan menjalankannya pada baterai sel 9 D, jadi saya dapat menyembunyikan rpi di kompartemen baterai dengan sejumlah barang lainnya.
Langkah 1: Dapatkan Daftar IPTV yang Bagus
Daftar IPTV Harian memiliki pilihan stasiun IPTV gratis yang fantastis yang diselenggarakan oleh negara. Pilih negara pilihan, dan unduh file m3u.
Untuk perangkat lunak yang ada di dalamnya, m3u adalah format yang diperlukan. Anda dapat membaca lebih lanjut tentang spesifikasi format di sini.
Langkah 2: Eksperimen Kode Awal
Kode python yang akan kita tulis mem-parsing file m3u ke dalam daftar stasiun.
#!/usr/bin/python3
subproses impor dari sys import argv class Station: def _init_(self): self.channel = 0 self.name = '' self.address = '' channel_list = dengan open('./us-m3uplaylist-2020-08- 17-1.m3u', 'r') as m3u: i = 0 untuk baris di m3u: if line.startswith('#EXTINF'): this = Station() this.name = line.split(', ') [1] baris = next(m3u) this.address = line.strip() this.channel = i channel_list.append(this) i = i + 1 process = subprocess. Popen(['vlc', '--loop', '--intf', 'dummy', '--layar penuh', channel_list[int(argv[1])].address])
Mari kita hancurkan ini.
#!/usr/bin/python3
Ini memberitahu bash bahwa kita akan menggunakan python3 untuk menginterpretasikan file ini.
impor subprosesdari sys import argv
Kami akan membutuhkan modul subproses untuk meluncurkan instance vlc kami, dan kami akan membutuhkan argv untuk memilih saluran mana kami akan meluncurkan vlc.
class Station: def _init_(self): self.channel = 0 self.name = '' self.address = ''
Ini mendefinisikan kelas yang disebut Station. Setiap saluran akan memiliki nomor saluran, nama saluran yang diambil dari file m3u, dan alamat dari mana saluran itu mengalir.
saluran_daftar =
Ini adalah daftar yang akan menyimpan semua saluran yang diurai dari file m3u.
dengan open('./us-m3uplaylist-2020-08-17-1.m3u', 'r') sebagai m3u: i = 0 untuk baris di 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
Loop ini membuka daftar putar m3u, dan menyerap data. baris file m3u yang kami minati dimulai dengan #EXTINF, Ini menunjukkan entri baru ke file daftar putar. Nilai minat berikutnya adalah nama, yang berada di baris yang sama dengan #EXTINF, tetapi dengan koma di antara keduanya. Baris berikut dari m3u khusus ini adalah alamat aliran. Ada iterator "i" yang digunakan untuk menghitung saluran mana. Loop ini mengulangi seluruh file m3u dan mengisi channel_list dengan stasiun.
proses = subproses. Popen(['vlc', '--loop', '--intf', 'dummy', '--fullscreen', channel_list[int(argv[1])].address])
pustaka subproses memungkinkan python untuk memanggil proses (program) dan mengembalikan PID (ID Proses). Ini memungkinkan python untuk dapat mengelola peluncuran dan penutupan program "dengan benar" tanpa mengisi file riwayat, atau mengizinkan lebih banyak kode arbitrer dijalankan dengan panggilan "sistem" generik. Setiap elemen array yang digunakan sebagai argumen untuk Popen adalah seperti yang diketik di baris perintah.
vlc --loop --intf dummy --alamat layar penuh
Perintah di atas adalah apa yang ingin dijalankan, dengan opsi --loop memperbaiki beberapa masalah dengan jeda aliran saat potongan berikutnya dimuat (masalah m3u8 yang aneh), --intf dummy memulai vlc tanpa antarmuka, hanya layar, --layar penuh meluncurkan video dalam mode layar penuh (NO WAY!), dan alamatnya adalah alamat streaming. Seperti yang Anda lihat dalam kode, kami memberikan alamat dari nomor saluran daftar, yang diberikan saat runtime melalui pernyataan argv. Simpan file ini sebagai tv_channels.py, ubah lokasi daftar putar di file python untuk menunjuk ke daftar putar Anda, dan Anda dapat menjalankan kode sebagai berikut:
python tv_channels.py
Langkah 3: Tambahkan GPIO
Skema menunjukkan dua pin GPIO yang digunakan untuk tombol, dan masing-masing memiliki resistor pull-up untuk menjaga agar pin GPIO tetap tinggi setelah tombol ditekan. Kode yang didefinisikan sebelumnya dapat disempurnakan untuk membuat operasi sedikit lebih mulus dengan menambahkan kemampuan GPIO. Hal ini memungkinkan kita untuk mengubah saluran dengan tombol, bukan keyboard dan pernyataan argv, seperti untuk tv nyata.
Hal pertama yang perlu diperhatikan adalah saya menetapkan televisi sebagai kelas. Untuk menjadi televisi, kita harus berada di saluran saat ini, memiliki daftar saluran yang memungkinkan, dan memiliki kemampuan untuk mengubah saluran. Dalam contoh ini, satu-satunya metode untuk mengubah saluran adalah dengan menaikkan daftar saluran, dan menurunkan daftar saluran. Setelah saluran diputuskan, kita harus memulai VLC di saluran yang ingin kita lihat.
#!/usr/bin/python3
dari waktu import sleep subproses impor dari sys import argv dari gpiozero import Button class Station: def _init_(self): self.channel = 0 self.name = '' self.address = '' self.process = '' class Televisi: def _init_(self, filename): self.current_channel = 0 self.channel_list = self.build_channel_list(filename) self.start_channel() def build_channel_list(self, filename): dengan open(filename, '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 jika 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 jika self.current_channel < 0: self.current_channel = 0 self.start_channel() def start_channel(self): coba: self.process. kill() kecuali: lulus print('starting channel %d' % self.current_channel) self.process = subprocess. Popen(['vlc', '-q', '--loop', '--intf', ' dummy', '--fullscreen', self.channel_list[self.current_channel].address]) this = Television('./us-m3uplaylist-2020-08-17-1.m3u') channel_UP = Button(18) channel_DN = Button(23) while True: channel_UP.when_pressed = this.channel_up channel_DN.when_pressed = this.channel_down
Iterasi kode ini memiliki beberapa peningkatan. sekarang menggunakan modul yang disebut gpiozero yang diperlukan oleh raspberry pi untuk mengakses fungsionalitas pin GPIO dengan mudah
sudo apt-get install python3-gpiozero
atau
sudo pip instal gpiozero
Seperti yang terlihat dalam kode saya, saya telah memilih GPIO 18 dan GPIO 23 untuk saluran UP dan saluran DOWN. Pustaka gpiozero memiliki kelas yang bagus untuk fungsi tombol untuk when_pressed, is_pressed, when_held, dll. Ini membuatnya cukup mudah. Saya memilih when_pressed, yang mengacu pada fungsi panggilan balik untuk dijalankan ketika sinyal ini terdeteksi.
Perubahan besar terakhir adalah penyertaan opsi ' -q ' dalam panggilan subproses VLC. Ini hanya menjalankan vlc tanpa semua output ke terminal agar tetap bebas dari kekacauan sehingga kita dapat melihat pernyataan cetak informasi dalam kode.
Langkah 4: Integrasikan Perangkat Keras agar Terlihat Tajam
Saya belum tahu bagaimana saya ingin mencapai ini, dan itu akan menjadi solusi unik untuk setiap model tv yang digunakan. Saya perlu berpikir keras tentang hal ini dan menyelidiki di sekitar televisi untuk menemukan sumber daya yang baik untuk pi begitu saya menjejalkan komputer di dalam kompartemen baterai yang besar. Saya juga mempertimbangkan untuk menggunakan tombol jam untuk pemilihan saluran, karena sudah ditempatkan dengan indah di televisi, dan jam tetap tidak berfungsi. Saya akan memposting lebih banyak ketika saya menemukan solusi yang baik, tetapi di sinilah proyek saya akan sangat berbeda dari proyek orang lain. Nikmati integrasi IPTV seperti TV nyata!
Langkah 5: Kekuatan Pi
Untuk model TV yang saya temukan, membutuhkan catu daya 12V. Saya memeriksa di sekitar papan, tetapi tidak melihat regulator daya yang jelas untuk 5V, jadi tempat yang paling jelas untuk mendapatkan catu daya yang stabil adalah di papan sirkuit di mana konektor barel untuk 12V masuk. Ada masalah yang jelas dengan ini. kami tidak ingin menggoreng pi, jadi kami membutuhkan pengatur daya. Saya telah memilih MP2315 Step-Down Power Converter. Ini sangat murah, dan mudah digunakan. Kami akan menyolder input 12VDC dari konektor barel pada PCB ke pin IN+ dan GND konverter, dan VO+ ke pin 2 pada Raspberry Pi, serta GND.
SEBELUM ini dilakukan, pastikan untuk menyalakan konverter dan memastikan bahwa 5V yang tepat keluar dari output. Saya memilih opsi paling sederhana dengan voltase yang dapat disesuaikan. Pemangkas akan menyesuaikan tegangan, jadi saya melihat output tegangan dengan multimeter saat saya menyesuaikan pemangkas dengan obeng.
Langkah 6: Mengintegrasikan Kekuatan
Setelah menggali di sekitar televisi, diputuskan bahwa tempat terbaik untuk mengambil daya adalah dari negatif konektor barel dan sakelar ON/OFF televisi, yang berarti bahwa kita dapat menghidupkan dan mematikan aliran dengan televisi, bukan terus menyalakan pi dengan menarik langsung dari konektor barel.
Kabel disolder dan dimasukkan di sepanjang sisi PCB di sebelah kasing sampai mencapai bagian belakang unit, di mana kabel dimasukkan melalui lubang yang ada di bagian belakang kompartemen baterai. Setelah dimasukkan, kami dapat menyiapkan ujung kabel dan menyoldernya ke pengatur daya. Saya menyetelnya untuk 5V untuk memberi daya pada pi dan menyolder pin header ke sana sehingga kita dapat menjalankan jumper female ke female dari regulator daya langsung ke set header GPIO pi. Ini biasanya tidak disarankan, karena pi umumnya mendapat daya melalui UBS, yang memiliki regulator inline untuk mengkondisikan 5V, tetapi karena daya sudah diatur, itu akan baik-baik saja.
Ada beberapa gangguan pada saluran audio dari melakukan ini, karena ada loop tanah dalam sistem. Saya mencoba banyak poin kekuatan dan ground di seluruh papan dengan harapan mendapatkan jawaban yang mudah, tetapi tidak menemukannya. Saya juga menyolder kabel microUSB ke pengatur mode yang diaktifkan untuk melihat apakah memaksa daya melalui regulator internal pi akan menyelesaikan masalah. Tidak. Solusinya akan ada di beberapa transformator isolasi ground audio. Ini dipesan daripada dibuat, karena murah dan dikemas dengan baik. Anda dapat mengambilnya dari sebagian besar toko atau departemen audio otomatis. Inilah yang saya pilih.
Langkah 7: Solusi Tombol Jangka Panjang
Tidak diragukan lagi, tombol-tombolnya tidak akan menempel di papan tempat memotong roti, jadi perlu ada solusi yang lebih permanen. Saya mengambil beberapa protoboard lama dan menggabungkan sirkuit dengan beberapa pin header untuk memudahkan mengakses sinyal. Di sinilah setiap orang akan memiliki perbedaan pendapat tentang cara memasang atau memasang tombol. Saya memilih untuk membuat protoboard mereka dan hanya memasangnya ke sasis sehingga pegangan yang berayun di atas layar untuk dibawa tidak mengganggu. Jangan ragu untuk menyempurnakan desain dengan menambahkan kasing cetak 3d yang menghaluskan pemasangan, menggunakan mur dan baut, perekat mewah, mengintegrasikan tombol asli, apa pun. Selama itu berhasil, tidak ada jawaban yang salah.
Ini akan dipasang ke bagian luar kasing, dan Raspberry Pi akan dimasukkan ke dalam kompartemen baterai yang sangat lapang, jadi perlu ada lubang kecil yang dibor untuk memungkinkan kabel keluar dari kompartemen baterai.
Langkah 8: Pemeriksaan Kecocokan Akhir
Semua peralatan harus diperiksa untuk terakhir kalinya untuk melihat dengan tepat di mana semua lubang perlu dibuat pada sasis, dan ukuran lubang apa, dll. yang perlu dibuat. Selain itu harus dipertimbangkan di mana menempatkan komponen untuk kemudahan konektivitas dan akses yang optimal. Singkat cerita, pastikan semuanya sesuai dengan yang Anda pikirkan sebelum Anda merusak proyek Anda dan harus mengeluarkan spackle.
Langkah 9: Integrasi Akhir
Sekarang semua perangkat keras berada di tempat yang seharusnya, dan semuanya pas seperti serangga di permadani. Mari kita memotong sesuatu! Saya mengidentifikasi tempat di kompartemen baterai di mana saya bisa mengarahkan kabel AV keluar menggunakan lekukan kecil di plastik. Saya menggilingnya dengan penggiling bangku. Itu membuat pekerjaan yang cukup singkat. Saya menggunakan dremel untuk menggiling lebih banyak plastik agar cukup pas untuk kabel.
Komponen terakhir adalah pemilih saluran. Saya mengebor lubang kecil di kompartemen baterai dan mengarahkan kabel header keluar satu per satu. Tombol-tombolnya terhubung, dan saya memasang protoboard ke sasis plastik dengan dua bagian velcro pra-perekat. Saya mengerti bahwa ada sekitar 1200 cara yang lebih baik untuk melakukan ini, tetapi ini berhasil, dan saya memiliki semua yang saya butuhkan.
Langkah 10: Nikmati IPTV Vintage Anda
Itu tentang meringkasnya. Temukan acara dan bersenang-senang menonton. Namun, jangan duduk terlalu dekat. Anda akan membusuk otak Anda!
Ada banyak ruang untuk meningkatkan proyek ini, jadi bawalah ke arah mana pun yang Anda inginkan, tetapi sejauh ini menyenangkan. Bagi saya, saya menjalankan ini dari cronjob saat reboot, jadi stdout tidak menangkap pesan dari skrip python. Saya ingin memperbaiki ini sehingga saya tahu di saluran mana saya berada. Tambahan bagus lainnya adalah dongle keyboard nirkabel di Pi. Ini akan memungkinkan Anda mengubah jaringan wifi jika Anda meninggalkan rumah dengan tv. Tanpa memedulikan. itu adalah proyek yang menyenangkan, dan saya tidak sabar untuk memulai yang berikutnya.
Direkomendasikan:
Kotak Unduh Raspberry Pi DIY: 4 Langkah
Kotak Unduhan Raspberry Pi DIY: Apakah Anda sering mengunduh file besar seperti film, torrent, kursus, serial TV, dll, maka Anda datang ke tempat yang tepat. Dalam Instruksi ini, kami akan mengubah nol Raspberry Pi kami menjadi mesin pengunduhan. Yang bisa mendownload apa saja
Sensor Kotak Surat Menggunakan Arduino: 4 Langkah
Sensor Kotak Surat Menggunakan Arduino: Hai, saya harap Anda semua baik-baik saja. Hari ini saya akan menunjukkan cara membuat kotak surat dengan sensor menggunakan board arduino dan IDE. Proyek ini sangat sederhana dan sebagian besar persediaan dapat ditemukan di sebagian besar rumah. Ketahuilah bahwa Covid-19 telah menyerang kita
Kotak Barbie: Kotak Kamuflase/ Kotak Boom untuk Pemutar Mp3 Anda: 4 Langkah (dengan Gambar)
Kotak Barbie: Kotak Kamuflase / Kotak Boom untuk Pemutar Mp3 Anda: Ini adalah tas pelindung berlapis untuk pemutar mp3 Anda yang juga mengubah jack headphone menjadi seperempat inci, dapat bertindak sebagai kotak boom di flip sakelar, dan menyamarkan pemutar mp3 Anda sebagai pemutar kaset awal tahun sembilan puluhan atau pencurian rendah serupa di
Bangun Kotak Baterai Kotak Cerutu untuk Radio Tabung: 4 Langkah
Bangun Kotak Baterai Kotak Cerutu untuk Radio Tabung: Jika Anda ingin membangun dan bermain-main dengan radio tabung seperti saya, Anda mungkin memiliki masalah yang sama seperti yang saya lakukan dengan menyalakannya. Sebagian besar sirkuit lama dirancang untuk berjalan dengan baterai b tegangan tinggi yang tidak lagi tersedia. Jadi
Tampilan Kotak Lampu Dari Kotak Kayu: 9 Langkah (dengan Gambar)
Pajangan Kotak Lampu Dari Kotak Kayu: Saya dan istri memberi ibu saya patung kaca untuk Natal. Saat ibuku membukanya, kakakku berkata "RadBear (dia benar-benar menyebut namaku) bisa membuatkanmu kotak lampu!". Dia mengatakan ini karena sebagai seseorang yang mengoleksi gelas, saya