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

Baca selebihnya »

Membuat Tombol Shutdown di C.H.I.P

Selama ini saya menggunakan C.H.I.P secara headless yang artinya tanpa monitor, tanpa keyboard, tanpa mouse. Lalu bagaimana cara aksesnya? Bagaimana cara memprogramnya?

Untuk melakukan itu semua dibutuhkan bantuan komputer lain. Saya biasanya menggunakan laptop MacBook Air atau menggunakan Raspberry Pi dengan memanfaatkan ssh atau screen (serial).

Yang jadi masalah adalah CHIP ini sejatinya sebuah komputer juga. Dia memiliki sistem operasi yang lengkap dan kompleks juga. Untuk mematikannya tidak boleh asal cabut power atau menahan tombol reset sampai mati. Karena kalau begitu caranya, maka file system bisa corrupt. Atau bahkan merusak storage internalnya. Ini tentu berbeda dengan Arduino yang kalau mematikannya langsung dengan memutuskan power supply-nya.

Selama ini rada repot mematikan CHIP karena saya harus akses secara remote dulu (via ssh atau serial) baru kemudian menjalankan perintah shutdown. Nah hari ini saya belajar bahasa pemrograman Python dan akses GPIO. Jadi sekalian saja membuat tombol Shutdown. Caranya gampang banget. Tidak pake lama.

Pertama, buatlah tombol yang terhubung ke XIO-P7 dan GND. Jadi kalau tombol ini ditekan, maka XIO-P7 akan tersambung ke ground.

Kemudian buatlah script python test_shutdown.py. Isinya adalah sebagai berikut:

#!/usr/bin/python

import CHIP_IO.GPIO as GPIO
import subprocess

GPIO.setup("XIO-P7", GPIO.IN)


while True:
  if GPIO.input("XIO-P7") == 0:
    print "Shutting down..."
    subprocess.call(["sudo","shutdown","-h","now"])

Untuk menjalankannya harus pakai sudo karena akses ke GPIO dan perintah shutdown harus dilakukan oleh superuser.

sudo python test_shutdown.py

Oh iya, jangan lupa tambahkan bit execute supaya script bisa dijalankan tanpa mengetikkan python:

chmod +x test_shutdown.py
sudo ./test_shutdown.py

Coba tekan tombol tersebut. Apakah CHIP akan shutdown?

Belajar Bahasa Pemrograman Python

Dalam rangka mengoprek C.H.I.P (dan Raspberry Pi), lebih baik kita bisa bahasa pemrograman Python. Dulu saya pernah mencoba belajar Python dan Tkinter, tapi kok mentok. Sepertinya bahasa pemrograman Python tidak nyaman. Menurut saya terlalu kaku. Menurut saya loh ya? Mungkin bagi Anda tidak.

Saat ini ada 2 bahasa yang saya hindari. Pernah belajar dan merasa kalau kedua bahasa ini bukanlah bahasa yang perlu saya pelajari. Dan saya pun selalu mencoba menghindari kedua bahasa ini, yaitu Swift dan Python.

Tapi karena harus ngoprek CHIP/Raspberry Pi, maka saya pun memaksakan diri belajar bahasa Python. Kemarin saya masih berusaha menghindari belajar Python dan menggunakan script bash. Tapi ternyata lebih ribet, walau pun dari segi sintaks lebih bisa dipahami, hahaha…

Dan hari Minggu ini (dari pagi sampai malam) saya terpaksa belajar Python, walau pun saya belajar hanya yang saya perlukan. Saya belajarnya tidak sistematis, tidak runut, tapi mencari bahasan yang saya butuhkan. Misalnya menggunakan library, akses GPIO, akses file, operasi string, dll.

Dan akhirnya jadilah radio internet dengan 3 buah tombol. Tombol pertama untuk mengganti-ganti channel. Dua tombol berikutnya untuk mengecilkan dan membesarkan volume. Senang juga akhirnya bisa ngoprek CHIP. Ternyata tidak sulit kok. Dan gaya pemrograman saya nampaknya masih mengikuti gaya Arduino. Padahal sepertinya di Python bisa lebih efisien lagi.

Rencananya besok mau menambahkan tombol untuk mematikan dan menyalakan radio. Soalnya cara akses vlc di program saya ini berbeda dengan cara yang dipakai tempo hari untuk Alarm (Baca: CHIP Untuk Alarm Radio Internet). Dan juga bentrok dengan script penampilan jam. Besok saja deh menggabungkan script-nya.

Dengan demikian akses ke radio internet benar-benar tidak memerlukan remote access. Horeee…

Membuat Jam Ngomong Setiap Jam

Ngoprek C.H.I.P memang asyik ya. Bisa dibuat macem-macem, tergantung keinginan dan kreativitas kita. Disuruh ngomong juga bisa. Coba lihat jam berisik saya ini:

View this post on Instagram

Jam yang berisik, setiap menit ngomong 😂

A post shared by Emanuel Setio Dewo (@setiodewo) on

Cara bikinnya gampang kok. Kita bisa menggunakan program espeak atau festival. Saya menggunakan program espeak karena ada opsi bahasa Indonesia. Sedangkan festival tidak. Tetapi dari segi suara bagusan festival yang lebih luwes.

Untuk instalasi di CHIP gampang banget:

$ sudo apt-get install espeak

Coba ditest ngomong:

espeak -v id "Hallo, apa kabar?"

Kalau bisa bersuara, maka kita bisa lanjut untuk membuatnya berbicara setiap jam. Pertama buat sebuah script bernama speak_jam.sh. Perintahnya:

nano /home/dewo/speak_jam.sh

Terserah script ini mau diletakkan dimana. Kalau saya diletakkan di home directory saya. Berikut adalah isinya:

#!/bin/sh
date +"Sekarang pukul %k lewat %M" | espeak -v id

Jangan lupa membuat script ini executable dengan perintah:

chmod +x speak_jam.sh

Sekarang saatnya menjadwalkan pemanggilan script ini di crontab. Edit file crontab dengan perintah:

sudo nano /etc/crontab

Tambahkan baris berikut ini di bagian paling bawah:

0 *     * * *   root    sh /home/dewo/speak_jam.sh

Maka script akan dipanggil setiap jam. Kalau mau dipanggil setiap menit, maka angka 0 di awal itu diganti menjadi bintang (*). Maka setiap menit akan ngomong. Tapi berisik ya? Kayak jam saya yang setiap menit berisik. Hahaha…

Mengamati Utilisasi CPU & Memory CHIP

Tempo hari kita sudah berhasil memanfaatkan C.H.I.P sebagai radio internet (baca: C.H.I.P Radio Internet Autostart dan Memanfaatkan C.H.I.P Sebagai Radio Internet). Dan saya cukup senang bahwa kenyataannya CHIP ini bisa jadi alarm radio juga (baca: C.H.I.P Untuk Alarm Radio Internet). Tapi saya penasaran dengan berapa utilisasi CPU dan memory CHIP ketika digunakan sebagai radio internet.

Sebagai informasi singkat, CHIP memiliki 1 CPU ARMv7 yang memiliki clock 1 GHz dan RAM 512 MB. Sementara internal storage-nya 4 GB. CHIP sudah dipersenjatai koneksi Wi-Fi dan Bluetooth 4.0. CHIP memiliki 1 micro USB OTG dan 1 USB 2.0 ukuran standard. Kalau melihat bagian bawah board, maka akan ditemukan 1 port JST yang bisa disambungkan ke baterai. Asyiknya adalah USB OTG bisa digunakan juga untuk men-charge baterai.

Sedangkan untuk urusan penampilan bisa menggunakan monitor composite via jack TRRS. Jika diinginkan untuk penyambungan ke monitor VGA atau HDMI, maka CHIP menyediakan VGA/HDMI adapter yang bisa dibeli terpisah. Untuk informasi lebih lanjut silakan merujuk ke website resmi C.H.I.P.

Karena saya tidak memiliki adapter VGA/HDMI, maka urusan pemantauan utilisasi CPU dan memori bisa dilakukan via ssh dengan menggunakan aplikasi htop. Namun solusi ini tidaklah praktis karena harus menggunakan laptop untuk melihatnya.

Jadi saya pun menyambungkan LCD 16×2 I2C yang praktis sehingga urusan penampilan tidaklah merepotkan. Untuk koneksi bisa membaca artikel saya sebelumnya (baca: C.H.I.P Dengan LCD 16×2). Untuk library LCD 16×2 saya ambil dari artikel HOW TO SETUP AN I2C LCD ON THE RASPBERRY PI. Ambil library I2C_LCD_driver.py di situ.

Lalu saya pun menuliskan code yang memanfaatkan library ini untuk menampilkan utilisasi CPU, utilisasi memory, suhu CPU dan jam. Berikut adalah code-nya:

import I2C_LCD_driver
import time
import datetime
import psutil

formatDate1 = ' %a %d/%m/%Y'
formatDate2 = '%H:%M:%S {:5}\'C'
format1 = 'CPU {:3}% MEM {:2}%'

lcd = I2C_LCD_driver.lcd()

cat = lambda file: open(file, 'r').read().strip()

while True:
  namafile = "/sys/class/hwmon/hwmon0/temp1_input"
  temp = cat(namafile)
  temp = float(temp)/1000

  lcd.display_string(format1.format(int(psutil.cpu_percent()), int(psutil.virtual_memor$
  lcd.display_string(datetime.datetime.now().strftime(formatDate2).format(temp), 2)
  time.sleep(1)

Hasilnya cukup mengasyikkan. Pemantauan bisa independen, tidak tergantung laptop. Dan rupanya CHIP sudah cukup powerfull dan stabil jika digunakan sebagai radio internet. Lihat saja hasil pemantauannya yang saya upload di instagram.