aptのrbenvが0.3.0と古かったので
Ubuntu12.04にrbenvインストールして、crontabやdaemontoolsも設定した
と同じ手順で0.4.0をgitから入れた。
けどビルドに2時間以上かかったので、aptで1.9.3-p194を入れればいいと思う。
crontabや、foremanで書きだしたupstartも
/home/pi/.rbenv/shims/bundle exec ruby hogehoge.rbで起動したら問題なく動いた。
aptのrbenvが0.3.0と古かったので
Ubuntu12.04にrbenvインストールして、crontabやdaemontoolsも設定した
と同じ手順で0.4.0をgitから入れた。
けどビルドに2時間以上かかったので、aptで1.9.3-p194を入れればいいと思う。
crontabや、foremanで書きだしたupstartも
/home/pi/.rbenv/shims/bundle exec ruby hogehoge.rbで起動したら問題なく動いた。
% sudo apt-get install upstartでsysvinitが消えてupstartが入り、
RocketIOのサンプルとして、それなりに激しい処理が低スペックマシンで動くかテストするために作った。
http://status.shookai.org
ソースコード
https://github.com/shokai/rocketio-arduino-sample
こういうのが表示されてるはず
物理的な意味ではこうなってる
Arduino Firmata on Rubyで、ADコンバータに温度センサと明るさセンサを付けたArduinoを読んで0.3秒毎にSinatra RocketIOでブラウザにpushしている。
5秒毎にCPUとメモリ使用量もpushしてる。
あと新規接続/切断がある度に全クライアントに接続数を通知してる。
60行ぐらいのSinatraと40行ぐらいのJavaScriptでできてる。
JavaScript側を抜粋すると、こんな感じでそれぞれイベント待ちしておいて
io.on("arduino", function(data){ $("#temp").text("気温:"+data.temp+"度"); $("#light").text("明るさ:"+data.light); }); io.on("stat", function(data){ $("#cpu").text("CPU:"+data.cpu+"%"); $("#mem").text("メモリ:"+data.mem+"%"); }); io.on("clients", function(data){ $("#websocket").text("websocket:"+data.websocket); $("#comet").text("comet:"+data.comet); });
io = Sinatra::RocketIO ## Arduino sensors io.once :start do begin arduino = ArduinoFirmata.connect ENV['ARDUINO'], :eventmachine => true rescue => e STDERR.puts "#{e.class} - #{e}" next end EM::add_periodic_timer 0.3 do light = arduino.analog_read 0 $logger.debug "light : #{light}" temp = arduino.analog_read(1).to_f*5*100/1024 $logger.debug "temperature : #{temp}" io.push :arduino, :temp => temp, :light => light end endCPUとメモリは同じ要領で、psコマンドの結果をparseして送ってる。
ArduinoFirmata.connect "/dev/tty.usbデバイス名", :eventmachine => trueEM::runの中でこうやって起動するとThreadのかわりにeventmachineで動くようになった。
Raspberry Piが音声で状況報告してくれると、画面を接続していなくても状況がわかって便利です。
音はUSBスピーカで出した方がいいですね。ヘッドフォン端子からの出力は無音でもブチブチ音が出ててきびしい。
OSはraspbian使ってる。
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/
jsay はいで喋る。
#!/bin/sh | |
TMP=/tmp/jsay.wav | |
#cd /usr/share/hts-voice/nitech-jp-atr503-m001 | |
cd /usr/share/hts-voice/mei_happy | |
echo "$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 16000 \ | |
-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 --quiet $TMP | |
rm -f $TMP |
sudo amixer cset numid=3 11じゃなく2にするとHDMIから出る。0は自動判別
sudo apt-get install alsa-utils
amixer set PCM 0% amixer set PCM 20%のようにして設定する。
Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS Performing self-update sARM/GPU split is now defined in /boot/config.txt using the gpu_mem option! Updating firmware (this will take a few minutes) fatal: Failed to resolve 'HEAD' as a valid ref.動かない。
HTMLにimgタグで埋め込んでwebブラウザで見れる
これそのままやってみた → Raspberry Pi に Webカメラを接続して動画を配信してみる Chick Lab
ロボット作ったりしててすごい Raspberry Piでロボットを作る Chick Lab
sudo apt-get install subversion libjpeg-dev imagemagick svn co https://mjpg-streamer.svn.sourceforge.net/svnroot/mjpg-streamer mjpg-streamer cd mjpg-streamer/mjpg-streamer make
./mjpg_streamer -i "./input_uvc.so -f 2 -r 320x240 -d /dev/video0 -y" -o "./output_http.so -w ./www -p 8080"
<html> <body> <h1>Raspberry Pi</h1> <img src="http://192.168.1.6:8080/?action=stream"> </body> </html>