C.H.I.P Radio Internet Versi 2

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.

CHIP Internet Radio
CHIP Internet Radio


Pertama, kita siapkan 3 buah tombol. Berikut sambungan ke-3 tombol tadi:

  1. Tombol ganti channel. Sambungkan tombol ke XIO-P7 dan GND.
  2. Tombol pengeras volume. Sambungkan tombol ke XIO-P6 dan GND.
  3. 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.

Iklan

Satu respons untuk “C.H.I.P Radio Internet Versi 2

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Google+

You are commenting using your Google+ account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.