2013年7月25日木曜日

RaspberryPi #9 シャットダウンボタンをつくろう

RasberryPiは電源供給源のUSBに接続すれば起動する。
終了時はコマンドからshutdownしなくちゃいけない。
イヌ用の監視カメラをこしらえて実家に設置したところで、年老いた両親に
「リモートでログインしてshutdownコマンドを、、、」
などと言えるハズもない。

というわけで押すとシャットダウンしてくれるボタンを付けてみる。
ボタンを長押しして、LEDランプが消えたら電源抜いてOK、というもの。



用意するもの。
  • ブレッドボード 1つ
  • ジャンパワイヤ 3本
  • タクトスイッチ 1つ
  • 10KΩ抵抗 1つ

配線は参考図書「RaspberryPiで遊ぼう!」に掲載されているままなので省略。

次にRaspberryPi用のGPIOプログラミングライブラリであるwiringPiをインストールする。こちらも本に掲載のままなので省略。たぶんググればある。
で、以下のようなプログラムを書く。

#include <stdio.h>
#include <wiringPi.h>

#define BTN_PORT 25

int main(void) {
        int data = 0;
        int cnt = 0;

        if(wiringPiSetupGpio() == -1) return 1;
        pinMode(BTN_PORT, INPUT);

        while(1)  {
                data = digitalRead(BTN_PORT);
                if(data == 0) cnt = 0;
                else cnt++;

                if(cnt >= 10) {
                        system("shutdown -h now");
                        return 0;
                }
                usleep(300000);

        }
        return 1;
}


300ミリ秒(300000マイクロ秒)ごとにボタンの押下状態をチェックして
10回連続で押された状態(=3秒間の長押し)ならshutdownする、というだけのもの。
これを書いたら

cc -o off_button off_button.c -lwiringPi

としてコンパイルする。
ファイル名は適宜読み替えてください。

そして起動時にデーモンとして起動するように/etc/rc.lodalに以下のような記述を追加する(exit 0の前に追加)。

/home/pi/off_button &

とすれば起動時に先ほどのプログラムがデーモンとして起動するので
いつでもボタンを押せばシャットダウンしてくれるのだ。



2013年6月30日日曜日

RaspberryPi #8 Webカメラで静止画

監視カメラとしてセットして、Ustream経由で外出先からスマホで確認しよう!
と思ったのだけどスマホのUstreamが尋常じゃない重さで使えない。
というわけで静止画を定期的にキャプチャしてドロップボックスに定期的にアップロードする、という作戦にするのだ。

静止画のキャプチャにはfswebcamを使う。
設定方法など、こちらを参考にしました。

一方、DropboxはというとARM版がないのでDropbox-Uploaderというツールを使う。
こちらを参考にしました。
次にfswebcamでキャプチャして、Dropbox-Uploaderでアップロードするスクリプトを用意する。

#!/bin/bash

fswebcam -d /dev/video0 -p YUYV -D 2 -S 16 -r 640x480 --jpeg 75 ./capture.jpg
Dropbox-Uploader/dropbox_uploader.sh upload capture.jpg /capture.jpg

パスの部分は適宜読み替えてください。
このスクリプトだとDropboxにアップロードするたびにcapture.jpgを上書きすることになるので、それが嫌な場合は連番を振るとか、時刻にするとかしないといけない。
最後にcronをセットする。

*/10 * * * * /home/pi/capture.sh

capture.shというのが先ほどつくったシェルだ。
ここでは10分おきに動くようにしている。


2013年6月25日火曜日

RaspberryPi #7 Firefox OSの画面を大きくしてみる

昨日、RaspberryPi上でFirefoxOSが動作したものの
画面の左下にチョロッと出ているだけなので大きくしてみましょう。

起動時に
--screen=x
と指定してやれば画面サイズを変更できる。
上の方、はみだしてるけど。
こちらは1366x768を指定した場合。
このサイズにするとマウスポインタがダニのような大きさで操作が困難なのだ。 

昨日は参考サイトの情報をたどっただけだったので、そもそも何をしたんだ?
というところを把握していなかったので自分なりに調べてみる。

まず「b2g」というのはFirefoxOSの別名で「boot to gecko」のコト。
最初にダウンロードしたのがB2GのデスクトップクライアントをRaspberryPi向けにビルドしたもの。

たぶん。

 これだけでも起動はするのだけど空のスクリーンが表示される。
なのでシステムアプリの指定やら何やら必要で(こちらの「プロファイルを生成する」を参照)、それも一緒にダウンロードして起動時に指定してました。 
昨日は全て出来合いのものをダウンロードしただけだったけど、
一般的には(まだ開発中ということもあり)ソースをダウンロードして自分でコンパイルするものみたい。
いずれ、そちらもチャレンジしてみるのだ。

2013年6月24日月曜日

RaspberryPi#6 firefox osを入れてみる

下記サイトの情報を参考にRaspberryPiでFirefoxOSを動かしてみようと思ったのだ。
http://www.philipp-wagner.com/ffos-for-rpi/manual/index.html

手元のMacのディスク容量が怪しいのでコンパイルはせずにビルド済みのイメージファイルをSDカードに書き込んでみた。
んが、動かない。
電源を入れてもウンともスンとも言わない。
むむぅ

さくっと諦めてこちらの情報を参考にすることにする。
こちらの手順はまずは普通にRaspbianのSDカードで起動して、FirefoxOSをダウンロードしてきて動かそう、というもの。

こんな感じになります。


2013年6月21日金曜日

RaspberryPi#5 Webカメラ接続

カメラが届いたので繋いでみる。
ちなみに買ったのはELECOM UCAM-DLA200H。
RaspberryPiを起動してUSBカメラを差し込む。
/var/log/messageを見て認識していることを確認。

本の通りに「uvccapture」「uvcdynctrl」「guvcview」をインストール。
sudo apt-get install uvccapture uvcdynctrl guvcview

Xをたちあげてメニューから先ほどインストールしたguvcviewを起動する。
しばらくするとカメラの映像が表示される。
感動。

USTREAMへの配信も一瞬できたけれど、しばらくすると落ちてしまう。
消費電力の関係かもしれない。
セルフパワーのUSBハブを買わないといけないのか。。


2013年6月19日水曜日

RaspberryPi #4 DLNA

今日も本に沿って1章だけ。
DLNAサーバをRaspberryPiにインストールして、DLNAクライアントのiPhoneアプリをインストールしてアクセスする。
昨日テレビで見た動画をiPhoneで見る。
ちょっと嬉しい。

RaspberryPiでカメラを使いたいのだけど、公式のカメラはちょっと高いし、届くのに時間がかかりそうなので、書籍内で動いたと書いてある「UCAM-DLA200H」を注文。
1500円くらい。

部屋にまた新たなAmazonのダンボールが増える。。

2013年6月18日火曜日

RaspberryPi #3 ネットワークと動画再生

今日も本に沿ってRaspberryPiを触る。
Macからsshで入ったり、ファイル送ったり。
結局のところLinuxなので普通に出来そうなことはできてしまう。

動画はomxplayerというプレーヤが最初から入っているのでこれを使って再生する。
HDMIケーブルでテレビとつないでいるので、小さなRaspberryPiからキレイな映像をテレビで再生している姿はなかなか感動的。

今日はこれだけ。