Isi kandungan:

Menjaga Stoopid Radio Internet Mudah: KISSIR: 13 Langkah
Menjaga Stoopid Radio Internet Mudah: KISSIR: 13 Langkah

Video: Menjaga Stoopid Radio Internet Mudah: KISSIR: 13 Langkah

Video: Menjaga Stoopid Radio Internet Mudah: KISSIR: 13 Langkah
Video: CS50 2015 - Week 1, continued 2024, November
Anonim
Menyimpannya Stoopid Radio Internet Mudah: KISSIR
Menyimpannya Stoopid Radio Internet Mudah: KISSIR
Menjaga Radio Internet Ringkas Stoopid: KISSIR
Menjaga Radio Internet Ringkas Stoopid: KISSIR

Kadang-kadang ia mesti bersahaja. Tiada Antara Muka. Hanya Butang.

Raspberry Pi sebagai pemain radio internet bukanlah perkara baru, dan terdapat banyak petunjuk tentang cara membuat pemain radio internet menggunakan raspberry pi dengan atau tanpa monitor untuk menyalurkan stesen internet dari seluruh dunia. Sekiranya anda memilih untuk pergi tanpa kepala (tanpa monitor), anda masih memerlukan kaedah untuk menghubungkan pemain pi, biasanya antara muka web jika bukan cara langsung untuk berkomunikasi dengan tuan rumah, seperti ssh. Pengajaran ini akan sedikit berbeza; kami akan menggunakan penekanan butang sederhana untuk menghantar perintah ke pi, sehingga menghilangkan keperluan untuk antara muka web dan layar LCD. Kedengarannya cukup mudah, betul (?)

Kami akan memulakan dengan reka bentuk yang sangat asas menggunakan butang berkod warna, setiap warna akan mewakili stesen radio internet. Kami akan memperkenalkan beberapa kod python untuk menangani penekanan butang: Akhbar akan melaksanakan perintah untuk memainkan stesen radio internet pra-kod menggunakan MPG123, alat baris perintah yang bagus untuk memainkan audio di pi kami.

Kemahiran python anda tidak perlu maju. Sebenarnya saya benar-benar beralih dari "Hello World" untuk menulis ini, dan seperti yang anda lihat, saya meminjam banyak kod - jadi jika saya dapat melakukannya dan membuatnya agak didokumentasikan, orang lain semestinya tidak mempunyai masalah.

Mari pergi!

Bekalan:

Bahan yang Diperlukan

  • Raspberry pi / pi zero w dengan semua tetapan: Bekalan kuasa, kad SD dan Raspbian atau Raspbian lite.
  • Akses WiFi dan internet
  • PC lain untuk melakukan beberapa pelayaran web dan kemampuan untuk SSH ke pi raspberry
  • Digital to Analog Converter (DAC) - pilihan tetapi anda akan berterima kasih.
  • Penguat
  • Penceramah
  • Kawat cangkuk dan jumper
  • Pateri dan pateri
  • Perf Board untuk butang
  • Butang taktil: Biasanya Terbuka- satu untuk setiap genre muzik, butang kuasa, dan butang bisu pilihan (7 butang disyorkan)
  • Unit perumahan untuk semua perkara di atas (pilihan tetapi kemas)

Langkah 1: Prasyarat:

Prasyarat
Prasyarat

Kami akan mula dengan andaian anda telah menyiapkan pi raspberry, DAC dan penguat anda, dan juga akan menganggap anda mempunyai akses ke internet. Oleh kerana banyaknya pilihan, pilihan, dan pilihan peralatan audio untuk mendengar audio, kami akan menganggap persediaan anda sudah selesai: anda seharusnya sudah mengeluarkan suara dari pembesar suara anda sebelum anda memulakan projek ini. Kami juga perlu ssh ke raspberry pi, jadi dengan menggunakan konfigurasi pi, pastikan antaramuka telah diaktifkan. Saya akan menggunakan Raspbian lite, dan mengesyorkan agar anda memasang salinan terbaru pada kad sd segar yang dikhaskan untuk projek ini. Sekiranya berjaya, kami akan membina lekapan berdiri sendiri yang boleh dihidupkan 24/7 sebagai alat pendengaran khusus.

Langkah 2: Pasang Python dan Pip

Saya lebih suka ssh ke pi menggunakan komputer yang berbeza, dan melakukan semua fungsi yang diperlukan menggunakan sesi ssh, tetapi saya rasa mungkin pada awalnya menyiapkan pi ke monitor, papan kekunci dan tetikus dan bekerja terus pada pi sehingga bekerja dan kemudian digunakan sebagai mandiri.

Pertama, buat pemeriksaan penyelenggaraan rutin sistem dan versi python kami:

sudo apt-get kemas kini

sudo apt-get peningkatan

Pastikan Python dipasang. Dalam sesi terminal, ketik berikut pada prompt arahan:

python - penukaran

Sekiranya anda melihat python 2.7.13 (atau lebih awal) mari pasang python 3. +:

sudo apt-get install python3

sudo apt-get install python-pip

sudo apt-get install python3-pip

sudo pip3 install - upgrade pip

Langkah 3: Pasang MPG123 dan Adafruit Blinka

Sekarang asas telah diletakkan, hanya beberapa pemasangan lagi:

MPG123 adalah perisian audio yang akan memainkan muzik kami. Pemasangan sangat mudah:

sudo apt-get install mpg123

Saya melakukan banyak penyelidikan, dan menemui templat yang hebat di laman web Adafruit tentang memainkan fail suara menggunakan penekanan butang, jadi daripada bermula dari awal, mari kita terus mengikuti jejak yang telah dilakukan oleh orang-orang di Adafruit. Program mereka meminta kami memasang Adafruit Blinka:

$ sudo pip3 pasang adafruit-blinka

Sebelum melangkah lebih jauh, mari lakukan pemeriksaan pantas untuk memastikan kami mempunyai persediaan Alsa:

permainan - penukaran

keputusan kami harus dibaca: versi 1.1.3 oleh Jaroslav Kysela

Langkah 4: Laraskan Kelantangan hingga 50% di Alsamixer

Laraskan Kelantangan hingga 50% di Alsamixer
Laraskan Kelantangan hingga 50% di Alsamixer
Laraskan Kelantangan hingga 50% di Alsamixer
Laraskan Kelantangan hingga 50% di Alsamixer

Sekarang mari kita ambil langkah berjaga-jaga dan sesuaikan kelantangan kita menjadi 50% untuk mengelakkan kejutan yang memalukan:

Pada prompt arahan, ketik alsamixer:

alsamixer

Sekiranya kita melihat skrin berwarna merah putih dan hijau, atau kelantangan maksimum 100%, ada baiknya turunkan kelantangan hingga 50% untuk menyelamatkan gendang telinga kita. Kita selalu dapat menyesuaikan diri nanti (atas atau bawah) jika diperlukan.

Langkah 5: Beberapa Kerja Rumah: Cari 5 Stesen Radio Yang Perlu Dengarkan

Beberapa Kerja Rumah: Cari 5 Stesen Radio Yang Perlu Dengarkan
Beberapa Kerja Rumah: Cari 5 Stesen Radio Yang Perlu Dengarkan
Beberapa Kerja Rumah: Cari 5 Stesen Radio Yang Perlu Dengarkan
Beberapa Kerja Rumah: Cari 5 Stesen Radio Yang Perlu Dengarkan

Kami memerlukan satu stesen untuk setiap butang. Sebenarnya, kami memerlukan url untuk stesen. Tekan butang akan memanggil url stesen radio internet dengan sedikit kod satu baris. Walau bagaimanapun, kita semakin maju sehingga kita mempunyai beberapa kerja rumah yang perlu dilakukan; cari 5 stesen radio dan url mereka. Mencari 5 stesen radio tidak sukar, tetapi mencari urlnya boleh menjadi sukar. Saya akan menerangkan mengapa dalam satu minit.

SomaFm * adalah sumber yang bagus untuk bermula, terutamanya jika anda tidak mempunyai idea mengenai perkara yang ingin anda dengarkan. Mereka mempunyai pelbagai pilihan muzik eklektik, tidak ada yang saya anggap menyinggung perasaan, tidak ada iklan, dan bahagian terbaik: Mereka berkongsi url mereka secara terbuka. Untuk merebut url, klik pada gambar stesen yang anda minati, dan di bar navigasi sebelah kiri, klik "Pautan Aliran Langsung". Dari sana, cari bahagian MP3, dan gores url dengan kadar main balik tertinggi (iaitu 128 denyut 64). Tampal url ke dalam editor teks atau notepad buat masa ini.

Sebagai contoh, untuk mengikis Christmas Rocks, urlnya adalah: (kami tidak memerlukan penerangan pelayan)

ice4.somafm.com/xmasrocks-128-mp3

Ia mendapat sedikit dicier di luar dunia SomaFm. Banyak stesen menggunakan orang tengah antara pendengar dan stesen, sama ada untuk pengiklanan, pemasaran atau kemungkinan penjejakan - dan saya biasanya cuba mengelakkan stesen jenis ini. Oleh kerana orang tengah lebih suka anda mendengar stesen melalui mereka, biasanya agak sukar untuk mencari url; dan di situlah Vtuner masuk.

* Saya akan lalai jika saya tidak meminta anda mempertimbangkan untuk membuat sumbangan ke stesen radio kegemaran anda, kerana banyak stesen hanya bergantung pada sokongan pendengar.

Langkah 6: Pilihan: Mengikis URL Menggunakan Vtuner

Pilihan: Mengikis URL Menggunakan Vtuner
Pilihan: Mengikis URL Menggunakan Vtuner
Pilihan: Mengikis URL Menggunakan Vtuner
Pilihan: Mengikis URL Menggunakan Vtuner

Sekarang datang bahagian yang menyeronokkan …. Di laman utama Vtuner, lihat pautan senarai stesen besar mereka di sudut kanan atas. Pilih genre muzik yang anda minati, dan kemudian pilih dengan kelajuan terpantas, di mana anda akan melihat senarai stesen. Pilih stesen yang anda fikirkan mungkin anda suka, klik pada pautan atau butang main dan contoh muzik. Sekiranya bukan untuk anda, jangan risau, ulangi proses ini sehingga kami dapati proses yang sesuai untuk kesenangan jangka panjang. Dalam tangkapan skrin saya, saya memilih versi muzik impuls digital Country dan di skrin seterusnya, saya dapati ia dimainkan di luar Croatia. Muzik Country dari Croatia terdengar agak menarik.

Saya sukakannya. Tetapi bagaimana saya mendapatkan url? Cukup klik kanan pada ruang putih di sebelah kanan gambar stesen, di bawah nama Stesen, dan pilih "Lihat Sumber Halaman" dan tatal ke bawah ke sekitar baris 150. Kami sedang mencari baris yang berbunyi "// Cuba untuk menangani icecast ". Dan url dijumpai tepat di bawahnya!

orion.shoutca.st:8110/stream

Cukup licin!

Ulangi langkah ini sehingga kita mempunyai sekurang-kurangnya 5 stesen dalam senarai kita.

Pilihan berganda: Untuk ukuran tambahan, jika anda dapat menemui 5 genre muzik yang anda minati (berbanding 5 stesen), bina senarai stesen radio untuk setiap genre dan simpan senarai sebagai fail teks. Kami akan kembali kepada perkara ini kemudian.

Langkah 7: Sediakan Butang Kami

Sediakan Butang Kami
Sediakan Butang Kami
Sediakan Butang Kami
Sediakan Butang Kami

Bahagian yang paling penting! Habuk besi pematerian lama atau sekurang-kurangnya pasangkannya dan bakar habuk. Sudah tiba masanya untuk Solder. Saya menggunakan 4 butang tekan sekejap, biasanya dibuka. Saya akan membina pelbagai butang (foto kiri), dan memasangkannya ke papan perfusi. Sukar untuk diceritakan pada foto, tetapi arah penjepit butang berjalan ke arah Utara-Selatan. Di sebelah kanan, anda dapat melihat di mana saya menggunakan landasan landasan untuk wayar tanah saya dan memasang beberapa kabel pelompat hujung lelaki ke seberang setiap butang. Daripada mempunyai 7 sambungan darat, rel akan membolehkan kita berkongsi satu sambungan darat ke pi untuk semua. Hasil akhirnya adalah papan wafer halus yang akan dipasang di bahagian atas radio menggunakan beberapa skru melalui lubang pilot yang disediakan. Hanya bahagian atas butang yang akan muncul melalui alur yang telah saya potong dari bahagian atas. Oleh kerana permukaan atas saya hanya setebal 1/4 , saya ingin berhati-hati agar tidak terlalu mengacaukan. Lem mungkin berguna untuk meletakkan papan perf pada radio.

Langkah 8: Kenali Pin GPIO Kami

Kenali Pin GPIO Kami
Kenali Pin GPIO Kami
Kenali Pin GPIO Kami
Kenali Pin GPIO Kami

Dalam satu-satunya arahan saya yang lain, saya menyampaikan penggunaan baru untuk topi suara Google AIY versi 1 yang lama. Dalam arahan yang sangat tidak popular (atau sangat popular) ini, saya menyebutkan betapa kagumnya saya dengan reka bentuk topi itu sendiri. Saya mempunyai beberapa tempat, jadi saya akan membuat prototaip menggunakan topi kerana ia mempunyai dac dan penguat di dalamnya.

Sekarang mari kita kenal pasti enam pin yang akan menampung penekanan butang kami. Saya akan meminta anda menumpukan perhatian di sebelah kiri topi AIY Google, yang tertera "servos". Terdapat lajur 6 eyelet untuk Pin di mana saya akan melekatkan dan memateri butang lelaki saya dari langkah sebelumnya. Sekiranya anda bekerja tanpa topi suara google, jangan risau, - foto di sebelah kanan akan membimbing anda. Dalam mana-mana kes, kami akan bekerja dengan pin gpio (BCM) 26, 06, 13, 05, 12, dan 24 dari atas ke bawah (atau 0-5). GPIO # 24 akan disediakan untuk butang jeda pilihan.

Jangan lupa juga memasang sambungan tanah.

Langkah 9: Kod

Saya ragu kodnya akan banyak berubah dari sini, namun untuk versi terbaru kod python, sila kunjungi github saya. Saya telah melampirkan salinan pada 2019-18-12 yang disebut pytiful3.py.

Ini bukan kod yang paling cekap yang pernah anda lihat, dan cukup verbose, tetapi menyelesaikannya.

Mari mulakan dengan membuat kotak pasir untuk dimainkan. Dari direktori rumah kami, buat direktori di pi raspberry kami yang disebut kissir:

mkdir kissir /

dan salin kandungan fail pytiful3.py ke dalam direktori dengan membuka fail contoh dalam penyunting teks, dan menggunakan

sudo nano kissir / pytiful3.py

salin / tampal kandungan fail ke dalam skrip python yang baru kita buat. Jangan lupa untuk menyimpan karya kami dengan menggunakan Ctrl-x, Y dan masukkan.

Sekiranya anda mahukan tur skrip ringkas, kami mengimport modul python yang akan kami perlukan, dan kemudian kami menentukan butang kami dan memberikan pin gpio ke setiap 7 butang. Akan ada 5 stesen radio (jangan ragu untuk mengedit pilihan stesen anda), butang berhenti, dan butang tutup. Loop true sementara berjalan dan berjalan sehingga butang ditekan, yang dalam kebanyakan kes akan menghentikan pemutaran mpg123 yang ada dan mula memainkan stesen yang diberikan pada butang yang ditekan. Butang jeda / berhenti sebenarnya bukan butang jeda tetapi lebih banyak tombol suis kerana kita tidak dapat menjeda radio internet. Radio internet tidak menunggu sesiapa.

Langkah 10: Uji di Kotak Pasir Kami

Uji di Kotak Pasir Kami
Uji di Kotak Pasir Kami

Sebelum kita menyebarkan radio kita, semasa masih dalam sesi ssh kita, arahkan ke folder kissir tempat skrip kita disimpan. Kita hanya boleh menjalankan skrip dari baris perintah secara manual dengan mengetik:

python3 pytiful3.py

Sekiranya anda melihat kodnya terlebih dahulu, anda mungkin menyedari bahawa saya meninggalkan beberapa pernyataan cetak supaya kami dapat mengetahui apa yang berlaku. Sekiranya semuanya berjalan dengan baik, kita akan mendapat arahan yang berbunyi "Tekan Butang". Itu memberitahu bahawa skrip kami sedang berjalan dan lulus pemeriksaan kod awal. Percubaan awal saya mempunyai gelung tak terhingga "muzik dijeda - tekan butang untuk meneruskan", dan saya mendapat tahu bahawa butang jeda saya dikabelkan agar sentiasa ditutup, bukannya terbuka. Semoga anda berjaya dengan langkah pematerian.

Ctrl-C akan menghentikan skrip jika anda perlu membatalkannya.

Oleh itu, jika anda melihat "Tekan butang", tunggu apa lagi? Pilih salah satu daripada lima butang stesen radio kami.

Kemungkinan anda akan mendengar suara pembesar suara untuk memulakan main semula muzik, dan saya tidak dapat menahannya buat masa ini. Mpg123 memungkinkan untuk akhiran "--preload 1" setelah alamat stesen dalam perintah os.system, namun saya tidak dapat mengetahui apakah ia membuat perbezaan. Ia harus membiarkan sedikit penyangga.

Satu lagi kod yang mungkin anda tertanya-tanya: terdapat bendera "-f 7000" selepas panggilan mpg123. Ini mengurangkan kelantangan ke jarak maksimum dari jumlah maksimum. Volume Penuh adalah 32K. Seperti yang saya fahami, skala kelantangan bukan skala linier, jadi saya tidak boleh mengatakan itu hanya kelima kelantangan maksimum, tetapi masih kuat. Saya terpaksa melakukan ini kerana kad suara saya - kad suara Google AIY, kadangkala tidak bagus dengan Alsamixer.

Terus pilih butang mengikut pilihan anda, duduk, berehat dan nikmati keselesaan mendengar anda buat masa ini.

Langkah 11: Sediakan Kod Kita untuk Dijalankan Secara Automatik pada Boot

Oleh itu, jika semuanya berjalan dengan baik, dan anda telah menikmati usaha cepat arahan kotak pasir kami, sekarang adalah masa yang tepat untuk mengautomasikan pemuatan skrip. Pastikan anda masih berada di direktori kissir, dan letakkan kod skrip di tong sampah pengguna:

sudo cp pytiful3.py / usr / local / bin /

Jadikannya boleh dilaksanakan:

sudo chmod + x /usr/local/bin/pytiful3.py

Tulis skrip shell untuk menjalankannya pada permulaan:

sudo nano pytiful3.sh

Dan masukkan teks berikut:

#! / bin / sh ### BEGIN INIT INFO # Menyediakan: pytiful3.py # Required-Start: $ remote_fs $ syslog # Required-Stop: $ remote_fs $ syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 ### INFO INIT TAMAT # memastikan tahap kelantangan tidak keras TODO # Menjalankan fungsi tertentu apabila diminta oleh kes sistem "$ 1" dalam permulaan) gema "Memulakan pytiful3.py" /usr/local/bin/pytiful3.py &;; berhenti) gema "Menghentikan pytiful3.py" pkill -f /usr/local/bin/pytiful3.py;; *) gema "Penggunaan: /etc/init.d/pytiful3.sh {start | stop}" keluar 1;; esac keluar 0

Pindahkan ke init.d:

sudo mv pytiful3.sh /etc/init.d/

Jadikannya boleh dilaksanakan:

sudo chmod + x /etc/init.d/pytiful3.sh

Daftarkan skrip untuk dijalankan pada permulaan:

sudo update-rc.d pytiful3.sh lalai

Langkah 12: Uji Lagi

Setelah skrip kami dimuat untuk dijalankan pada permulaan, ingatlah bahawa apa-apa perubahan yang kita buat harus dibawa ke tong pengguna, dan skrip kissir / pytiful3.py yang indah kita kini hanya yatim piatu. Tetapi dari sudut terang, kami masih mempunyai kotak pasir untuk dimainkan. Saya mungkin akan terus bermain dengan skrip, membuat perubahan dan menyimpannya sebagai versi baru dalam masa terdekat. Ia masih merupakan projek yang berfungsi.

Mari lakukan but semula, tunggu pi dimulakan semula, dan selepas kira-kira satu minit, tekan butang sekali lagi.

Sekiranya kelantangan audio anda sangat rendah, ingat kami mempunyai kelantangan alsamixer pada 50%, jadi kami dapat menaikkannya dengan tepat dari command prompt.

Sebagai permulaan, satu perkara yang diperlukan adalah nilai kelantangan global, bukannya perlu mengubah tahap kelantangan 5 kali berbeza.

Hei, bagaimana dengan senarai stesen radio yang kami buat pada langkah # 6? Nah, ternyata MPG123 mempunyai perintah pemilihan rawak. Semudah membuat senarai url stesen, dan bukannya meminta satu url stesen radio, gunakan saja

"btn1234_choice = random.choice (btn1234)", sejurus selepas mengenal pasti senarai stesen kami, di mana btn1234_choice adalah senarai kami. Jangan lupa untuk menggunakan tanda kurung persegi di sekitar senarai stesen kami yang dipisahkan dengan koma. Panggilan subproses kemudian memainkan pilihan rawak kami:

subprocess.call (['mpg123', '-q', btn1234_choice, "--preload 1"])

Langkah 13: Naik, dan Kita Selesai

Naik, dan Kita Selesai
Naik, dan Kita Selesai
Naik, dan Kita Selesai
Naik, dan Kita Selesai
Naik, dan Kita Selesai
Naik, dan Kita Selesai

Sekiranya anda sudah sampai ke langkah ini, kerja selesai! Tahniah - anda baru sahaja membina pemain radio internet yang berdiri sendiri.

Bergantung pada peralatan yang anda miliki (pembesar suara, dac dan penguat), anda mungkin tertanya-tanya bagaimana menyembunyikan beberapa kabel yang dipasang. Mungkin ada yang lain untuk hari lain, tetapi jika anda merancang untuk membuat unit perumahan untuk memasukkan beberapa wayar, saya cadangkan anda memberi banyak ruang tambahan untuk diri sendiri.

Seperti yang anda lihat dalam gambar di atas - saya sebenarnya membuat dua ciuman, satu menggunakan sisa-sisa kecelakaan gam pada percubaan pertama saya (dari humor melengkung datang papan melengkung). Unit kedua menggunakan penggera suara dan bukannya pembesar suara konvensional, dan jika anda memilih nama peranti di salah satu tangkapan skrin saya, saya menamakannya slimbox.

Saya mendapati projek ini cukup menyeronokkan. Kedua-dua kali. Tentunya bukan projek yang sukar, mungkin memakan masa sedikit tetapi sangat bermanfaat. Saya harap anda menikmati pendengaran anda juga.

Disyorkan: