Baiklah, saatnya mendokumentasikan di blog. Ini masih tentang Internet Radio dengan C.H.I.P. Yang mana kali ini sedikit berbeda dengan yang sudah dituliskan sebelumnya (baca: Memanfaatkan C.H.I.P Sebagai Radio Internet, C.H.I.P Radio Internet Autostart, C.H.I.P Untuk Alarm Radio Internet). Kali ini saya menambahkan 3 tombol untuk mengganti channel, mengeraskan volume, dan mengecilkan volume.
Selain itu saya juga mengubah cara akses vlc
. Kali ini menggunakan library Python-vlc
sehingga lebih mudah pengaturannya. Dan saya menambahkan daftar channel radio internet.

Pertama, kita siapkan 3 buah tombol. Berikut sambungan ke-3 tombol tadi:
- Tombol ganti channel. Sambungkan tombol ke XIO-P7 dan GND.
- Tombol pengeras volume. Sambungkan tombol ke XIO-P6 dan GND.
- Tombol pengecil volume. Sambungkan tombol ke XIO-P5 dan GND.
Sebenarnya perlu ditambahkan 2 tombol lagi untuk menyalakan/mematikan radio dan untuk shutdown. Tapi belum sempat nyolder tombol lagi. Nanti aja deh nyusul, hehehe…
Kedua, kita buat file channel.txt
yang berisi daftar channel. Silakan menambahkan sendiri jika diinginkan. Formatnya: NamaRadio;URL. Nama Radio maksimal 16 karakter (selebar 1 baris LCD 16×2).
1. HardRock FM ;http://streaming.mramedia.com:8000/hardrock 2. SmartFM JKT ;http://101.50.0.77:8000/smartfm.aac 3. iRadio FM ;http://streaming.mramedia.com:8000/iradio 4. RPK FM ;http://rpkfm.indostreamserver.com:8030 5. HeartLine FM ;http://202.129.186.43:7010 6. Sindo Trijaya;http://202.147.199.101:8000 7. Elshinta FM ;http://202.137.4.147:8000 8. Cosmopolitan ;http://61.8.70.166:8000/cosmo-aac 9. Trax FM Jkt ;http://61.8.70.166:8000/trax-jkt Sonora Clsc Rock;http://46.105.122.141:6664
Ketiga, kita buat script python berjudul radio_internet.py
. Berikut adalah isinya:
#!/usr/bin/python import sys import os import I2C_LCD_driver import CHIP_IO.GPIO as GPIO import time import vlc import subprocess subprocess.call(['espeak','-v','id','Memulai internet radio.']) lcd = I2C_LCD_driver.lcd() vol_max = 200 vol_format = "Vol:{:3}" channel_num = int(sys.argv[1]) channel = open("channel.txt", "r") channel_arr = channel.readlines() channel.close() channel_count = len(channel_arr) if (channel_num > channel_count): channel_num = 0 if (channel_num < 0): channel_num = channel_count _i = vlc.Instance("-q") _p = _i.media_player_new() volume = _p.audio_get_volume() GPIO.setup("XIO-P7", GPIO.IN) GPIO.setup("XIO-P6", GPIO.IN) GPIO.setup("XIO-P5", GPIO.IN) def ganti_channel(nomor): _p.stop() if not channel_arr[nomor].strip(): channel_num = 0 ganti_channel(channel_num) else: channel_detail = channel_arr[nomor].split(";") lcd.display_string(channel_detail[0], 1, 0) _m = _i.media_new(channel_detail[1].strip()) _p.set_media(_m) _p.play() def ganti_volume(vol): global volume global vol_max volume += vol if volume > vol_max: volume = vol_max if volume < 0: volume = 0 _p.audio_set_volume(volume) #lcd.display_string("__________", 2, 0) lcd.display_string(vol_format.format(volume/2), 2, 0) ganti_volume(0) ganti_channel(channel_num) while True: if GPIO.input("XIO-P7") == 0: channel_num += 1 if (channel_num >= channel_count): channel_num = 0 ganti_channel(channel_num) if GPIO.input("XIO-P6") == 0: ganti_volume(10) if GPIO.input("XIO-P5") == 0: ganti_volume(-10) time.sleep(0.1) lcd.clear()
Oh iya, saya menambahkan espeak
untuk gaya-gayaan aja. Cuma buat ngomong “Memulai internet radio.” Gak ada manfaatnya. Tapi saya tetap menambahkannya, hahaha…
Untuk menjalankan radio internet ini bisa menggunakan perintah:
sudo python radio_inet.py 0 &
Perlu pakai sudo karena akses ke GPIO. Sebenarnya ada cara lain sehingga tidak perlu pakai sudo. Tapi lain waktu saja mempelajarinya. Sekarang sudah ngantuk banget. Sudah jam 00:30.
Selamat malam, teman-teman…
Catatan: Code dan metode yang saya pakai di sini mungkin tidak efisien dan perlu optimasi. Saya membuka diri jika pembaca turut menyumbangkan pemikiran sehingga proyek ini bisa lebih baik lagi. Silakan tuliskan ide atau masukan di bagian komentar di bawah.
Catatan: Saya mendapatkan semua yang diperlukan dari internet, meliputi library, artikel, cara-cara, tips/trik, dll yang berkenaan dengan proyek ini. Dan saya pun membagikannya di sini secara bebas. Anda bisa mempergunakan code, metode, dll yang ada di sini. Tidak harus mencantumkan blog ini sebagai sumber. Namun jika Anda berkenan, silakan mencantumkan blog/artikel ini sebagai sumbernya. Saya akan sangat menghargai.
[…] Dan lagi-lagi saya membuat Radio. Bahkan ini berarti versi ke-3 untuk radio internet CHIP (baca: C.H.I.P Radio Internet versi 2). Ini karena saya menggunakan CHIP yang sama saat saya ngoprek radio internet […]