Upload
catmoney
View
4.047
Download
0
Embed Size (px)
DESCRIPTION
2013/11/15 勉強会資料 サイト http://77sites.appspot.com/2/page1.html
Citation preview
SIerによるSIerのための
Raspberry Pi 入門2
OSセットアップ方法の紹介
Tweet pi(無線lan + OpenJTalk + Twitter)
2013/11/15
catmoney
http://77sites.appspot.com/2/page1.html
2
本日のアジェンダ
・OSセットアップ
・tweet Piを作ろう~次回の勉強会ネタも決める~
3
Raspberry Piを使用するための準備
本体以外に必要なもの● 電源ケーブル(5Vで700mA以上の電流を供給できる
microUSB電源)
● LANケーブル or 無線LANアダプタ
● USBキーボード、マウス
● 8GB以上のSDHCカード(Class10以上がお勧め)
● HDMIもしくはRCAケーブル、対応したディスプレイ
※アクセサリ一覧
http://77sites.appspot.com/2/page2.html
※動作確認されている周辺機器
http://elinux.org/RPi_VerifiedPeripherals
4
NOOBSのインストール方法
● 1.「SD Formatter」のダウンロード
https://www.sdcard.org/downloads/formatter_4/eula_windows/
SDカードのフォーマット
● NOOBS (offline and network install)をダウンロード。本日はofflineでのインストール
http://www.raspberrypi.org/downloads
※2013/10/12時点の最新バージョン、NOOBS_v1_3_2.zip(1.1GB)
● NOOBSを解凍したものをSDカードにコピー
● Raspberry Piの起動
5
NOOBSでインストールできるOSOS 説明Raspbian ラズベリーパイのために最適化されたDebian OS
RISC OS 非常に速く、コンパクトなOS。1987年に、ARMの初のRISC(reduced
instruction set computer, ) チップが登場したとき、作成されたOS。
OpenELEC
XBMC(XBox Media Center)。メディアプレイヤー。テレビ、インターネットビデオストリーミング、音楽や写真が見れる。
Arch ARMデバイス用のアーチのLinux。Arch Linuxは、Linuxディストリビューションの1つ。シンプリシティ、ミニマリズム、エレガンスさ、コードの正しさに焦点を当てて開発されているOS。
RaspBMC XBMC。ラズベリーパイのために最適化されたメディアプレイヤー・
6
OS 説明Pidora ラズベリーパイのために最適化されたFedora OS
Sugar 子どもの学習のためのlinux OS。40カ国で約300万以上の子供たちが学校で利用されている。
Puppy Linux USBスティックやメモリカードから実行するように設計された小型のLinux OS。
Raspberry Piで使えるOS
7
Raspbianの初期設定(raspi-config)
No 項目 内容
1 Expand the Filesystem ファイルシステムのサイズ拡張。、最初は先頭の 3GB 程度の パーティションを使うだけになっている。SDカードの容量全体を使うように設定できる。
2 Change the user password デフォルトユーザpiのパスワード変更
3 Enable Boot to Desktop/Scratch
起動時の設定。下記の3つから選択できる。1.コンソールでログイン(デフォルト)2.GUIな画面(Xのデスクトップを表示)3. Scratch のプログラミング環境
8
Raspbianの初期設定(raspi-config)No 項目 内容
4 Internationalisation options locale,time zone、keyboardなどが設定できる。 localeは、「ja_JP.UTF-8 UTF-8」を選択するとメニューなどが 日本語化される。最初は日本語フォントがインストールされていないため、 文字化けします。日本語フォントをインストールしたあとでせっていしましょう。time zoneは 「Asia」、「Tokyo」 と指定します。
5 Enable Camera Raspberry Pi Cameraの設定
6 Add to RasTrack Rastrack http://rastrack.co.uk/ への登録を行う。自分のpiをマップに登録できます。
7 Overclock CPU、GPU、メモリのクロックの初期設定はそれぞれ700MHz、250MHz、 400MHzです。高負荷になった場合、オーバークロックして最大CPUは 1GHz、GPU は 500MHz、メモリは 600MHz まで高速化する事が出来ます。詳細は http://elinux.org/RPi_Overclocking
8 Advanced Option Overscan(画面の周囲を少し空ける設定)、Hostnameの設定、Memory Split(CPUとGPUへのメモリの配分の変更)SSHの設定、SPIの設定、Updateの取得
9 About raspi-config raspi-configツールの情報を表示
参考サイト http://www.mztn.org/rpi/rpi24.html
9
Raspbianを利用するにあたって● Raspberry Piは、電源ボタンがありません。
電源の切り方は、シャットダウンコマンド(sudo halt)を実行後、電源ケーブルを抜いてください。電源ケーブルをつなげた際に起動します。
● デフォルトアカウントは、ユーザ名:pi パスワード:raspberry● 初期は、rootパスワードなし。$ sudo sh # passwdで設定。
● GUIを使う場合
$ startx
● 日本語導入
ロケールをja_JP.UTF-8に変更
$sudo apt-get install jfbterm (日本語パッケージのインストール)
$jfbterm -q(jfbtermの実行)
$ls -l(”合計”という文字が出ていれば成功)
10
Tweet Piを作ろう
サービス内容:Twitterの特定アカウントのツイートを読み上げる
利用するハード
Raspberry Pi Type B 512MB SDHCカード レゴ 基本セット 青いバケツ
USBハブ USBハブ USBスピーカー
アクセサリ一覧 http://77sites.appspot.com/2/page2.html
11
Tweet Piを作ろう
No.
作業項目 作業内容
1 セットアップ OS(Raspbian)インストール、無線LAN導入、USBスピーカの設定、音声合成の導入、起動時にIPアドレス読み上げ、FTP,Webサーバの設定、python-twitter
2 UIの設計 スマフォからブラウザ経由でTweetの設定
3 プログラム作成 実装
4 ケース作成 レゴでケース作り
● 作業分担表
今日、手伝ってくれる人募集!!
実施済み
12
1.セットアップ(無線LAN化)● Raspberry PiのUSBポートに無線LANアダプタをさして、電源をいれて
Raspbianを起動。
● 認識されているかどうか確認。sudo lsusb または sudo ifconfig
● psk事前共有鍵の作成(ssidとpassword自分の環境の値を設定してください)
$sudo wpa_passphrase ssid password
● psk、ssidをwpa_supplicant.conf に記述
$vi /etc/wpa_supplicant/wpa_supplicant.conf● インターフェースの設定
$sudo vi /etc/network/interfaces
● 無線LAN起動確認 $sudo ifup wlan0
● 問題なければLANケーブルを抜いて再起動 $sudo reboot
詳細はこちら http://d.hatena.ne.jp/catmoney/20131103/p1
13
1.セットアップ(USBスピーカの設定)● $ sudo vi /etc/modprobe.d/alsa-base.conf
下記を先頭に#をつけてコメントアウトする。
#options snd-usb-audio index=-2
一番したの行に以下を追加する。
options snd-usb-audio index=0
● $ sudo reboot 再起動
● 再起動後 snd_usb_audio が “0″ となっていることを確認する。
$ cat /proc/asound/modules
0 snd_usb_audio
1 snd_bcm2835詳細はこちら http://d.hatena.ne.jp/catmoney/20131103/p1
14
1.セットアップ(スピーカ確認方法)● Alsamixer (音量確認)
参考サイト Alsamixer http://d.hatena.ne.jp/kakurasan/20070907/p1
● 音のテスト
$ aplay /usr/share/sounds/alsa/Front_Center.wav
15
1.セットアップ(音声合成の導入)
参考サイト http://shokai.org/blog/archives/6893http://skalldan.wordpress.com/2013/02/19/raspberry-pi-%E3%81%A7%E9%81%8A%E3%81%B6-2-open-jtalk-%E3%81%A7%E5%96%8B%E3%81%A3%E3%81%A6%E3%82%82%E3%82%89%E3%81%86/
● OpenJTalkをインストールする
$sudo apt-get install open-jtalk open-jtalk-mecab-naist-jdic htsengine libhtsengine-dev hts-voice-nitech-jp-atr503-m001
● デフォルトの声を変更
$ wget http://downloads.sourceforge.net/project/mmdagent/MMDAgent_Example/MMDAgent_Example-1.3/MMDAgent_Example-1.3.zip
$ unzip MMDAgent_Example-1.3.zip
$ sudo cp -R MMDAgent_Example-1.3/Voice/* /usr/share/hts-voice/
16
1.セットアップ(音声合成の導入)
● $ cd
● $ mkdir bin
● $ sudo vi /home/pi/bin/jsay
● $ chmod +x /home/pi/bin/jsay
● /home/pi/bin/jsay "テスト"
詳細はこちら http://d.hatena.ne.jp/catmoney/20131103/p1
#!/bin/shTMP=/tmp/jsay.wav#cd /usr/share/hts-voice/nitech-jp-atr503-m001cd /usr/share/hts-voice/mei_happyecho "$1" | open_jtalk \-td tree-dur.inf \-tf tree-lf0.inf \-tm tree-mgc.inf \-md dur.pdf \-mf lf0.pdf \-mm mgc.pdf \-dm mgc.win1 \-dm mgc.win2 \-dm mgc.win3 \-df lf0.win1 \-df lf0.win2 \-df lf0.win3 \-dl lpf.win1 \-ef tree-gv-lf0.inf \-em tree-gv-mgc.inf \-cf gv-lf0.pdf \-cm gv-mgc.pdf \-k gv-switch.inf \-s 20000 \-p 110 \-a 0.05 \-u 0.0 \-jm 1.0 \-jf 1.0 \-jl 1.0 \-x /var/lib/mecab/dic/open-jtalk/naist-jdic \-ow $TMP && \aplay -D plughw:0,0 -q $TMPrm -f $TMP# ends here
17
1.セットアップ(起動時にIPアドレス読み上げ)
● wlan0 のIPアドレスを抽出するスクリプト
● $ sudo vi /home/pi/bin/ip.sh
● $ chmod +x /home/pi/bin/ip.sh
● $ sudo vi /home/pi/bin/starting.sh
● $ chmod +x ~/bin/starting.sh
● $sudo vi /etc/rc.local
下記を追記
/home/pi/bin/starting.sh● 再起動
$ sudo reboot
動画はこちら http://www.youtube.com/watch?v=aEEMFEkVpPo
#!/bin/bash
/home/pi/bin/jsay "ラズビアン。起動しました。ipアドレスは"
/home/pi/bin/jsay `/home/pi/bin/ip.sh`"です"
#!/bin/bash
echo `sudo ifconfig wlan0 | grep 'inet addr:' | sed -e 's/^.*inet addr://' -e 's/ .*//'`;
18
1.セットアップ(vsftpdインストール)● $ sudo apt-get install vsftpd
● $ sudo service vsftpd stop
● $ sudo cp /etc/vsftpd.conf /etc/vsftpd.conf-ORG
● $ sudo vi /etc/vsftpd.conf
● $ su -
● # echo pi >> /etc/vsftpd.chroot_list
● # exit
● ftpの起動
● $ sudo service vsftpd start
● プロセスの確認方法
● $ ps -ef | grep vsftpd | grep -v grep
参考サイトはこちら http://assimane.blog.so-net.ne.jp/2013-04-14
---- 変更箇所anonymous_enable=NO #匿名ユーザー(anonymous)のログイン禁止local_enable=YES #ローカルユーザーを許可write_enable=YES #書き込み許可local_umask=022 #ファイル作成時のパーミッション755xferlog_file=/var/log/vsftpd.log #logファイルの設定ascii_upload_enable=YESascii_download_enable=YES## アクセスディレクトリ関係chroot_local_user=YES #ローカルユーザの制限chroot_list_enable=YES #リストにより制限を行うchroot_list_file=/etc/vsftpd.chroot_list #リストのパス## ユーザ制限関係userlist_enable=YES #ユーザ制限userlist_deny=NO #リストに書かれていないユーザは制限userlist_file=/etc/vsftpd.user_list #ユーザリストのパスls_recurse_enable=YES #一括アップロード・ダウンロード許可
19
1.セットアップ(vsftpd自動起動設定)● $ sudo update-rc.d vsftpd defaults
● $ cd /etc/init.d
● $ sudo cp vsftpd vsftpd.org
● $ sudo chmod 666 vsftpd.org
● $ sudo vi vsftpd
● $ sudo update-rc.d vsftpd remove
● $ sudo update-rc.d vsftpd defaults
● 再起動
● $ sudo shutdown -r now
● $ ps -ef | grep vsftpd | grep -v grep
参考サイトはこちら http://assimane.blog.so-net.ne.jp/2013-04-14
20
1.セットアップ(Webサーバー)● $ sudo vi /home/pi/bin/starting.sh
● $ sudo reboot
● sudo ps -ef | grep CGI #プロセスの確認
● $ vi /home/pi/index.html
● ブラウザから http://192.168.1.101/ にアクセス
● vi /home/pi/cgi-bin/test.py
● ブラウザからhttp://192.168.1.101/cgi-bin/test.py
にアクセス
#!/bin/bash
/home/pi/bin/jsay "ラズビアン。起動しました。ipアドレスは"/home/pi/bin/jsay `/home/pi/bin/ip.sh`"です"
cd /home/pipython -m CGIHTTPServer 80
<html><head><title>HelloWorld</title></head><body>Hello World!!</body></html>
#!/usr/bin/env python
print "Content-type: text/html\n"print "Hello World"
Hello Worldが表示されたらOK
21
1.セットアップ(tweepy)
参考サイトはこちら http://mba-hack.blogspot.jp/2013/05/twitteruser-stream.html
● $ cd /usr/local/src
● $ sudo wget https://pypi.python.org/packages/source/s/simplejson/simplejson-3.3.1.tar.gz
● $ sudo tar zxvf simplejson-3.3.1.tar.gz
● $ cd simplejson-3.3.1
● $ sudo python setup.py install
● $ sudo easy_install pip
● $ sudo pip install tweepy● アプリケーションを登録する
https://dev.twitter.com/apps
22
1.セットアップ(tweepy)● 動作確認スクリプト
#!/usr/bin/python import sysimport tweepyfrom tweepy import Stream, TweepErrorimport loggingimport urllibimport os CONSUMER_KEY='XXXXX'CONSUMER_SECRET='XXXXX'ACCESS_TOKEN='XXXXX'ACCESS_TOKEN_SECRET='XXXXX' auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET) class CustomStreamListener(tweepy.StreamListener): def on_status(self, status): try: cmd = "/home/pi/bin/jsay '" + status.author.name + " " + status.text + "'" os.system(cmd.encode('utf_8')) except Exception, e: print >> sys.stderr, 'Encountered Exception:', e pass def on_error(self, status_code): print >> sys.stderr, 'Encountered error with status code:', status_code return True # Don't kill the stream def on_timeout(self): print >> sys.stderr, 'Timeout...' return True # Don't kill the stream
tweet.py
23
1.セットアップ(tweepy) def on_timeout(self): print >> sys.stderr, 'Timeout...' return True # Don't kill the stream class UserStream(Stream): def user_stream(self, follow=None, track=None, async=False, locations=None): self.parameters = {"delimited": "length", } self.headers['Content-type'] = "application/x-www-form-urlencoded" if self.running: raise TweepError('Stream object already connected!') self.scheme = "https" self.host = 'userstream.twitter.com' self.url = '/2/user.json' if follow: self.parameters['follow'] = ','.join(map(str, follow)) if track: self.parameters['track'] = ','.join(map(str, track)) if locations and len(locations) > 0: assert len(locations) % 4 == 0 self.parameters['locations'] = ','.join(['%.2f' % l for l in locations]) self.body = urllib.urlencode(self.parameters) logging.debug("[ User Stream URL ]: %s://%s%s" % (self.scheme, self.host, self.url)) logging.debug("[ Request Body ] :" + self.body) self._start(async) def main(): stream = UserStream(auth, CustomStreamListener()) stream.timeout = None stream.user_stream() if __name__ == "__main__": main()
24
1.セットアップ(tweepy)● クーロンに登録
● $ crontab -e
下記を追加
@reboot /usr/bin/python /home/pi/cgi-bin/tweet.py >> log.txt 2>&1