KOYAMA Yoshiaki のブログ

プログラミングについての試行錯誤をつらつら書き溜めていきます。

Raspberry Pi の入手方法と基本設定

前回は、OS X Mavericks 上に Radiko で録音する手順を紹介しましたが、今回は Raspberry Pi の入手方法と基本設定について書きたいと思います。後、Radiko プレミアムに対応した rec_radiko.sh が

簡易radiko録音ツール。要swftools (Radiko プレミアム版)
https://gist.github.com/saiten/875864

で公開されています。

簡易Radiko録音スクリプト(Radiko 無料版)
https://gist.github.com/matchy2/3956266

本格的に利用するには上記スクリプトを参考にカスタマイズが必要ですね!

追記: 2014/05/21(Wed)

上記 URL を参考に、私が radiko.jp プレミアム対応の簡易 Radiko 録音スクリプト rec_radiko2.sh を作成しました。下記 URL

簡易 radiko.jp プレミアム対応 Radiko 録音スクリプト rec_radiko2.sh 公開。 - KOYAMA Yoshiaki のブログ
http://kyoshiaki.hatenablog.com/entry/2014/05/04/184748

で公開しています。



図 1) Raspberry Pi 本体

まず最初に Raspberry Pi を入手する必要があります。一番簡単なのは、

Raspberry Pi(ラズベリーパイ)
http://jp.rs-online.com/web/generalDisplay.html?id=raspberrypi&cm_mmc=JP-PPC-0411-_-google-_-4_EEM_RaspberryPi_3Mar2012-_-raspberry%20pi_Broad

上記 URL の正規販売店 RS 英国で購入する方法です。ただし、支払い方法は PayPal

PayPal(日本語) - ペイパル|海外での販売や個人の方にも!だれでもかんたんにクレジットカード決済
https://www.paypal.jp/jp/cp/ma/?mpch=ads&mplx=3484-121379-5044-0

です。海外(英国)からの購入になるので、住所などを英語(英語とローマ字)で表記する必要があります。

商品によっては out of stock (在庫切れ) になっているものもあります。数週間後にアクセスしてください。

RS 英国を選ぶ理由は、Raspberry Pi に対応しているかどうかを調べる必要がないからです。例えば、USB 無線 LAN アダプター、カメラモジュール、キーボード、電源などです。


電源は、

RS
HNP10I-microUSB

Universal Mains 5V @ 2A power supply with integral 1.5m 
cable and microUSB plug. Interchangeable plug heads for 
UK, Europe, USA, Japan and Australia. Suitable for 
Raspberry Pi Model A or B.


図 2) 電源プラグ一式

を購入しました。上記説明のように Japan (日本) 用の電源プラグも付属しています。日本の電源プラグを装着した状態が下図


図 3) 日本の電源プラグ装着状態

です。


私が正規販売店 RS 英国から購入した部品は

□ Raspberry Pi Type B with 8GB SD card 
(本体 + オペレーションシステム Raspian がインストールされた SD カード)
1個 US$43.57
□ Edimax Wireless Nano USB Adapter
(USB 無線 LAN アダプター)
1個 US$14.23
□ Raspberry Pi Type B Case - Clear 
(ケース)
1個 US$6.34
□ Micro USB Multi-Head power supply for Raspberry Pi
(電源)
1個 US$12.55
□ Raspberry Pi HD Video Camera module
(カメラモジュール)
1個 US$25.49
□ Goods Only Total	
US$102.18
Standard Delivery (Despatch expected within 1 week(s))	 US$0.00
□ 合計
US $102.18
クレジット会社請求金額
¥11100
2014/01/10(Fri) 注文
2013/01/15(Tue) 発送メール
2014/01/22(Wed) 到着 (12日間)

です。


その他に日本のアマゾンで、

USB マウス
USB キーボード
USB2.0 Hub バスパワー 4ポート
SDHCカード 16GB 
HDMIケーブル 2.0m (タイプAオス - タイプAオス)

を購入しました。Raspberry Pi の USB ポードが 2 つしかないので、USB 無線 LAN アダプタ、USB マウス、USB キーボードをすべて接続するためには USB ハブが必要です。


個人的な意見ですが、私が購入したキーボードに合致したレイアウト設定が見つからなかったので、正規販売店 RS 英国でキーボードを購入すべきでした。しかし、最初の設定以外は PC から ssh でログインして設定するので、USB キーボードのレイアウトはそれほど気にする必要がないかもしれません。


Raspberry Pi の設定方法は

Help | Raspberry Pi
http://www.raspberrypi.org/help/

Quick Start Guide | Raspberry Pi
http://www.raspberrypi.org/help/quick-start-guide/

Raspberry Pi documentation
http://www.raspberrypi.org/documentation/

NOOBS Setup | Raspberry Pi
http://www.raspberrypi.org/help/noobs-setup/

FAQs | Raspberry Pi
http://www.raspberrypi.org/help/faqs/

が参考になります。


オペレーションシステム Raspian がインストールされた SD カードを持っていない場合は、まず最初に SD カードをフォーマットする必要があります。

Windows
SD Association's Formatting Tool
https://www.sdcard.org/downloads/formatter_4/eula_windows/

Mac
SD Association's Formatting Tool
SDFormatter.app
https://www.sdcard.org/downloads/formatter_4/eula_mac/

Linux
gparted(or the command line version parted)

上記 URL でページの一番下の 'I Accept' ボタンをクリックし、フォーマットツールをダウンロードします。フォーマットツールをインストールし、SD カードをフォーマットしてください。


Mac の場合、SDカードを挿入し、'/アプリケーション' フォルダの SDFormatter.app をダブルクリックして起動します。


図 4) SDFormatter.app

上図のように、上書きフォーマットを選択し、フォーマットボタンをクリックします。


最新のインストール方法はイメージファイルをコマンドラインで直接書き込む必要がありません。

Downloads | Raspberry Pi
http://www.raspberrypi.org/downloads

から、New Out Of Box Software (NOOBS)

NOOBS (offline and network install)
Image	NOOBS_v1_3_4.zip
Torrent	NOOBS_v1_3_4.zip.torrent
SHA-1 Checksum	96b7a28e7b3bc7d73c93ff2207ede0582fe29525

NOOBS_v1_3_4.zip (最新のファイルを選んでください。) のリンクをクリックしてダウンロードして下さい。


Finder 上でダウンロードしたファイル NOOBS_v1_3_4.zip をダブルクリックして展開し、NOOBS_v1_3_4 フォルダの中身を SD カードにコピーします。NOOBS_v1_3_4 フォルダをドラッグするのではなく、中身を全て選択し、ドラッグ&ペーストしてください。

Raspberry Pi に

USB マウス
USB キーボード
USB2.0 Hub バスパワー 4ポート
USB 無線 LAN アダプター

を接続し、

NOOBS をインストールしたSD カード

を挿入します。

HDMIケーブル

で TV と接続してください。最後に電源を接続してください。


NOOBS の GUI が起動します。Raspbian をチェックし、下部で言語とキーボードを設定できます。

上のインストールボタンをクリックするとインストールが始まります。

Usename: pi
パスワード: raspberry

でログインしてください。


最初に下図のように sudo raspi-config が自動的に起動します。


図 5) sudo raspi-config 実行画面

NOOBS を使っているので

1. Expand Filesysytem

を選択する必要はありません。

図 5)の

4 Internationalisation Options

から、下図のように


図 6) I2 Change Timezone

I2 Change Timezone
Asia
Tokyo

を選び、Timezone を設定してください。

図 5) の

8 Advanced Options 

から、下図


図 7) A4 SSH

A4 SSH

から


図 8) SSH を有効

念のため SSH を有効にしてください。

図 5) の

8 Advanced Options 

から、

A7 Update


図 9) A7 Update

最新状態にし、終了してください。


Wifi の設定をする必要があるので、次のコマンド

pi@raspberrypi ~ $ startx

を使って GUI を起動してください。


図 10) GUI 起動画面

Wifi の設定は、上図の Wifi Config アイコンをダブルクリックします。下記 URL

How to setup WIFI on your Raspberry Pi - Raspbian | The Pi Hut | Raspberry Pi Accessories
http://thepihut.com/pages/how-to-setup-wifi-on-your-raspberry-pi-raspbian

が参考になります。簡単に説明すると


図 11) Wifi Config 起動画面

Adapter: wlan0

表示されたウインドウの Current Status タブを選び、Scan ボタンをクリックしてください。


図 12) ネットワーク一覧画面

ネットワーク一覧がウインドウに表示されます。接続したいネットワークをダブルクリックしてください。詳細設定ウインドウが開きます。


図 13) 詳細設定ウインドウ

PSK フィールドにパスワードを入力し、Add ボタンをクリックしてください。これで、USB 無線 LAN アダプターの設定は終わりです。ただし、このままだと無線 LAN が自動スリープしてしまいます。対処方法は最後に説明します。


図 14) Logout メニュー

左下隅のアイコンをクリックしてメニューを表示し、Logout を選択し GUI を終了します。


Mac などのターミナルから ssh で Raspberry Pi にログインするために、IP アドレスを確認する必要があります。

コマンド ifconfig -a を実行すると下のように表示されます。

$ ifconfig -a
wlan0     Link encap:Ethernet  HWaddr **:**:**:**:**:**
          inet addr:192.168.xx.xx  Bcast:192.168.xx.255  Mask:255.255.255.0

wlan0 の inet addr:192.168.xx.xx が目的の IP アドレス 192.168.xx.xx です。

$ sudo shutdown -r now 

で再起動し、USB 無線 LAN アダプターと電源以外の HDMI、USB キーボード、マウスなどを外します。


下のようにMac のターミナルから ssh を使って Raspberry Pi にログインします。

~ $ ssh pi@192.168.xx.xx

pi@192.168.xx.xx's password: 
Linux raspberrypi 3.10.25+ #622 PREEMPT Fri Jan 3 18:41:00 GMT 2014 armv6l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Apr  8 19:32:36 2014 from 192.168.xx.xx
pi@raspberrypi ~ $
user: pi
password: rasberry

パスワードは raspberry です。


USB 無線 LAN が自動スリープするのを無効にする方法が

Preventing Raspberry Pi WiFi from going into Sleep Mode | electronut
http://electronut.in/preventing-raspberry-pi-wifi-from-going-into-sleep-mode/

に説明されています。簡単に説明すると

# Disable power management
options 8192cu rtw_power_mgnt=0

上記内容のファイル /etc/modprobe.d/8192cu.conf を作成し、

pi@raspberrypi ~ $ sudo shutdown -r now

で再起動します。これで USB 無線 LAN がスリープしなくなります。


もう少し詳しく説明すると、ファイル作成には nano を使います。下記コマンドを使って

$ sudo nano /etc/modprobe.d/8192cu.conf

8192cu.conf ファイルを作成してください。

# Disable power management
options 8192cu rtw_power_mgnt=0

上記内容を入力し、画面下に表示されているように CTRL+O を入力するとファイル名が表示されるので Return Key を押して保存します。CTRL+X で終了してください。

忘れずに

pi@raspberrypi ~ $ sudo shutdown -r now

で再起動してください。


通常 ssh を終了するには

pi@raspberrypi ~ $ exit
logout
Connection to 192.168.xx.xx closed.

上記のように exit を実行してください。

OS X 10.9 Mavericks で Radiko 録音する方法。

簡易 radiko.jp プレミアム対応 Radiko 録音スクリプト rec_radiko2.sh 公開。 
http://kyoshiaki.hatenablog.com/entry/2014/05/04/184748

上記 URL も参考にしてください。


まず最初に OS X 10.9 Mavericks で動作するように修正した

2ch Script version 0.4 
http://kyoshiaki.sakura.ne.jp/osx/index.html

を上記URLで公開します。フリーウェアなので、良かったら気軽にダウンロードして下さい。


最近、マンネリ気味なので新しいことに挑戦してみようと海外のサイト

Raspberry Pi(ラズベリーパイ)
http://jp.rs-online.com/web/generalDisplay.html?id=raspberrypi&cm_mmc=JP-PPC-0411-_-google-_-4_EEM_RaspberryPi_3Mar2012-_-raspberry%20pi_Broad

から Raspberry Pi を直接購入してみました。詳しい内容はまた次回に紹介したいと思います。現在、Radiko 録音装置として使っています。


Raspberry Pi 到着まで、12日かかりました。その間に Raspberry Pi の情報をウェブ上で収集していたのですが、Radiko の録音ツールとして利用している

ピコピコ日記: RaspberryPiでRadikoを録音する
http://shinyamatsuyama.blogspot.jp/2013/06/raspberrypiradiko.html

上記サイトを発見しました。Raspberry Pi が到着するまで暇なので OS X で試してみることにしました。ただし、Radiko を録音するスクリプト

簡易Radiko録音スクリプト
https://gist.github.com/matchy2/3956266

を使うことにしました。


まず、簡易Radiko録音スクリプトを実行できるように必要なプログラムをインストールする必要があります、

プログラムのインストールに

Homebrew — MacPortsは酒でも飲みたくなるでしょ?じゃあHomebrewを使おう!
http://brew.sh/index_ja.html

を利用することにしました。ターミナル上で次のコマンド

~ $ brew update
~ $ brew install wget rtmpdump swftools libxml2 ffmpeg

を使って必要なプログラムをインストールします。

次に

簡易Radiko録音スクリプト
https://gist.github.com/matchy2/3956266

上記 URL の左部分 'Download Gist' ボタンをクリックしてダウンロードします。

ダウンロードされた gistxxxxxxx.tar.gz ファイルを Finder 上でダブルクリックして展開します。作成されたフォルダの中のファイル rec_radiko.sh をホームフォルダに移動します。 rec_radiko.sh ファイルを移動したら、作成されたフォルダはゴミ箱に捨ててください。

ターミナル上でファイル rec_radiko.sh に実行属性をつけます。

~ $ chmod +x rec_radiko.sh 

次に

radiko.jp
http://radiko.jp/

Safari でアクセスして地域と放送局を確認して下さい。(Radiko は IP アドレスを基準に地域を判定します。)

私が

radikoの番組表XML :宗子時空
http://www.dcc-jpl.com/diary/2011/06/13/radiko-xml/

を参考にしたエリア情報取得シェルスクリプト radiko_curl_area.sh、radiko_wget_area.sh と指定したフォルダ内の最新のファイル最大数を設定する Python スクリプト delete.py (delete.py は危険なプログラムです。むやみに実行しないでください。) を下記 URL

radiko_utility.zip
http://kyoshiaki.sakura.ne.jp/osx/Download/radiko_utility.zip

で公開します。上の URL からダウンロードしたファイル radiko_utility.zip を Finder 上で展開し、ファイル radiko_curl_area.sh、radiko_wget_area.sh、 delete.py をそれぞれホームフォルダに移動してください。作成されたフォルダはゴミ箱に捨ててください。

~ $ ./radiko_curl_area.sh 

上記コマンドをターミナル上で実行してください。地域別の放送局情報 XML都道府県別に JP1.xml ~ JP47.xml という名前のファイルでダウンロードされます。

ここで

radiko.jp
http://radiko.jp/

にアクセスした時に表示される地域がどの XML のファイルか確認します。


例えば、放送局の地域が東京ならコマンド grep で "TBSラジオ" で検索します。

~ $ grep -e "TBSラジオ" *.xml
JP10.xml:    <name>TBSラジオ</name>
JP11.xml:    <name>TBSラジオ</name>
JP12.xml:    <name>TBSラジオ</name>
JP13.xml:    <name>TBSラジオ</name>
JP14.xml:    <name>TBSラジオ</name>
JP8.xml:    <name>TBSラジオ</name>
JP9.xml:    <name>TBSラジオ</name>
~ $

JP8.xml ~ JP14.xml まで絞り込めました。

Finder 上で JP13.xml ファイルをダブルクリックすると Xcode が立ち上がります。

================ JP13.xml =======================
<?xml version="1.0" encoding="UTF-8" ?> 
<stations area_id="JP13" area_name="TOKYO JAPAN">
 <station>
    <id>TBS</id>
    <name>TBSラジオ</name>
    <ascii_name>TBS RADIO</ascii_name>
.
.
</station>
 <station>
    <id>QRR</id>
    <name>文化放送</name>
    <ascii_name>JOQR  BUNKA HOSO</ascii_name>
    <href>http://www.joqr.co.jp/</href>    <name>TBSラジオ</name>
.
.
================ JP13.xml =======================

2行目の area_name="TOKYO JAPAN" より、JP13.xml が東京の放送局情報 XMLだとわかります。

rec_radiko.sh の引数は

rec_radiko.sh <channel_name_id> <minutes> <outputdir> [prefix]

です。引数の詳細は

channel_name_id: 放送局の station id
minutes: 何分録音するか
outputdir: 出力するディレクトリ
[prefix]: 保存ファイル名の先頭文字。指定されない場合 channel_name_id
が使われます。

例) 
~ $ ./rec_radiko.sh TBS 1 
TBS を 1分間録音してカレントディレクトリに名前の先頭が TBS のファイル
を MP3 形式で保存します。

~ $ ./rec_radiko.sh TBS 120 radio
TBSラジオを 120分録音してカレントディレクトリの radio ディレクトリに
名前の先頭が TBS のファイルを MP3 形式で保存します。

です。


自分の地域の放送局を確認するには、放送局情報 XML ファイル、東京の場合は JP13.xml

<station></station>

で囲まれた部分がそれぞれの放送局の情報です。例えば

 <station>
    <id>TBS</id>
    <name>TBSラジオ</name>
    <ascii_name>TBS RADIO</ascii_name>

の部分

<id>TBS</id>

TBSラジオの channel_name_id です。

<station>
    <id>QRR</id>
    <name>文化放送</name>
    <ascii_name>JOQR  BUNKA HOSO</ascii_name>

文化放送の場合は channel_name_id は QRR です。

~ $ ./rec_radiko.sh QRR 120 radio 

文化放送を 120分録音して radio ディレクトリに名前の先頭が QRR のファイルを MP3 形式で保存します。


実際に正しく動作するか、自分の地域の放送局 station_name_id で1分間録音を試してみてください。(ここでは文化放送を指定しています。)

~ $ ./rec_radiko.sh QRR 1 

カレントディレクトリ(この場合、ホームフォルダ) に、ファイル QRR_2014-XX-XX-XX_XX.mp3 が作成されているはずです。


Finder 上で ファイル QRR_2014-XX-XX-XX_XX.mp3 をダブルクリックすると iTunes に登録されてしまうので '/アプリケーション' フォルダの QuickTime Player にドラッグ・ドロップして再生してください。

これで Radiko の録音に成功しました。


ただし、

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LC_ALL = (unset),
	LANG = "ja_JP.utf8"

という警告が表示されます。問題はないのですが、いやなら .bashrc、.profile ファイルに

export LC_ALL=en_US.UTF-8
export LANG=ja_JP.utf8

を追加してください。

export LC_ALL=C

だと Ruby などで

invalid byte sequence in US-ASCII (ArgumentError)

上記のようなエラーが出ます。注意してください。


後は、cron を使って指定した時間に録音するようにします。次のコマンドを使って

~ $ sudo launchctl unload /System/Library/LaunchDaemons/com.vix.cron.plist
~ $ sudo launchctl load /System/Library/LaunchDaemons/com.vix.cron.plist

cron を起動してください。


次に crontab -e を使用して時間を設定します。

crontab -e を実行するとテキストエディタ vim が起動します。

まず最初に簡単な vim の説明をしたいと思います。vim には、4つのモード (ノーマルモード、コマンドモード、ビジュアルモード、挿入モード) があります。

ノーマルモード: 最初の状態
コマンドモード: ノーマルモードで : キーを押す
ビジュアルモード: ノーマルモードで v キーを押す
挿入モード: ノーマルモードで i キーを押す。

コマンドモード、ビジュアルモード、挿入モードで ESC キーを押すとノーマルモードに戻る。
位置の移動: カーソルキー
文字の入力: 挿入モードで、キーをタイプすると入力できます。delete キーで削除できます。
文字の削除: ノーマルモードで x キーを押すと一文字削除できます。
コピー: ノーマルモードでコピーしたい最初の位置に移動、その後ビジュアルモードに変更、
右カーソルキーで範囲を指定し、y キーを押すとコピーできます。
ペースト: ノーマルモードでペーストしたい位置にカーソルキーで移動し、p キーを押す。

ファイルを保存して終了: ノーマルモードで : w q の順に3つのキーを押して Return
 キーを押す。


簡単な vim の説明は、これで終わりです。詳しい説明は

Vimの使い方
http://www15.ocn.ne.jp/~tusr/vim/vim_text0.html

を参考にしてください。


それではコマンド crontab -e を実行します。

~ $ crontab -e

vim が起動します。

PATH=/usr/bin:/bin:/usr/local/bin:/opt/local/bin:opt/local/sbin
0 1 * * 0,2-6 /Users/xxxxxx/rec_radiko.sh LFR 120 /Users/xxxxxx/radio

と入力して保存し、vim を終了してください。コマンド crontab -e を終了したら、入力されたデータが正しいかチェックされ結果がターミナル上に英語で表示されます。

PATH を忘れずに指定してください。
録音した MP3 ファイルを保存する radio ディレクトリを次のコマンド

~ $ mkdir radio

で作成してください。(Finder 上で作成しても構いません。)

0 1 * * 0,2-6 /Users/xxxxxx/rec_radiko.sh LFR 120 /Users/xxxxxx/radio

の xxxxxx の部分はターミナル上で pwd コマンドで

~ $ pwd
/Users/xxxxxx

確認して置き換えてください。

crontab の日付時刻設定は

# m h  dom mon dow  command
# 何分(0-59) 何時(0-23) 何日(1-31) 何月(1-12) 何曜日(0-6) コマンド
0 1 * * 0,2-6 /Users/xxxxxx/rec_radiko.sh LFR 120 /Users/xxxxxx/radio

数字は、時刻、日付、曜日を表し、
* は、毎月、毎日、毎時、毎分です。

曜日は
0: 日曜日
1: 月曜日
2: 火曜日
3: 水曜日
4: 木曜日
5: 金曜日
6: 土曜日

です。

0 1 * * 0,2-6 /Users/xxxxxx/rec_radiko.sh LFR 120 /Users/xxxxxx/radio

0,2-6 は、複数の曜日を指定しています。日曜日,火曜日〜土曜日を表しています。

上の例は日曜日と火曜日から土曜日の午前1時にコマンド

/Users/xxxxxx/rec_radiko.sh LFR 120 /Users/xxxxxx/radio

を実行します。

すなわち、ニッポン放送で日曜日と火曜日から土曜日の午前1時に2時間 (120 分) オールナイトニッポンを録音します。

radiko_utility.zip
http://kyoshiaki.sakura.ne.jp/osx/Download/radiko_utility.zip

に含まれる delete.py は、次の

~ $ ./delete.py -d radio 10

コマンドをターミナル上で実行すると radio フォルダの中の日付が最新 10 個以外の削除されるファイルを表示します。

~ $ ./delete.py -y -d radio 10

上のように -y を引数と指定すると ( -y を指定する場合、十分注意してください。) radio フォルダ内の最新 10 個以外のファイルを削除します。radio フォルダの中にフォルダがある場合、そのフォルダ内も最新10 個のファイル以外削除します。

~ $ ./delete.py -a -d radio

radio フォルダのすべてのファイルを表示します。

PATH=/usr/bin:/bin:/usr/local/bin:/opt/local/bin:opt/local/sbin
0 1 * * 0,2-6 /Users/xxxxxx/rec_radiko.sh LFR 120 /Users/xxxxxx/radio
0 10 * * 0 /Users/xxxxxx/delete.py -y /Users/xxxxxx/radio 10

上のように crontab -e で設定すると毎週日曜日の午前10時に radio フォルダ内のファイルを最新 10 個以外削除します。そのためディスク容量を気にする必要がありません。本来、Raspberry Pi 用に作成したものです。

後、失敗した録音ファイルは

~ $ open /tmp

で確認して下さい。

You have mail.
~ $ 

cron で指定したコマンドが実行されると上記のようにメールが届きます。
ターミナル上で

~ $ cd /var/mail
/var/mail $ ls
xxxxxx

上記コマンドを実行するとユーザー名: xxxxxx のファイルが確認できます。このファイルがメールの実体です。

/var/mail $ cat xxxxxx

上記コマンドで中身が見れます。削除するには

/var/mail $ sudo rm xxxxxx

を実行してください。