ラズパイはModel B+ V1.2を使用。
USBカメラはELECOM UCAM-C0220FBWHを用いましたが、基本的に何でも良さそう。
(追記:UVC対応である必要があるそうです)
「ラズパイのGPIOピンを用いて、外部ボタンが押されたら、写真を撮る」ということを目指します。
USBカメラの設定&とりあえず撮ってみる
まずはUSBカメラをつなぎ、ちゃんと認識されているか確かめます。
$ lsusb
このコマンドでUSBポートの一覧が表示されます。
続いて、fswebcamのインポートをします。
$ sudo apt-get install fswebcam
そして、静止画を取ってみましょう。
$ fswebcam image.jpg
下の赤いバナーを消したいときは以下のようにします。
$ fswebcam --no-banner image.img
シャッターボタンを押したら写真撮影
まず前準備。外部ボタンをラズパイのGPIOピンに接続します。
プルダウンをして、普段は0(0V)押されると1(3V)を返すようにします。
今回はGPIO17ピンを用いました。
そしてシェルスクリプト(下に全文載せてあるのでそれも参考におねがいします)
まずはデジタル入力設定。これにより、このピンは0か1どちらの電圧になっているのか読み取ることができるようになります。
gpio -g mode 17 in
実際の読み取りは以下のコマンドでできます。
gpio -g read 17
これが1となった時、任意のディレクトリを指定して、以下のコマンドを実行すれば写真を撮ることができます
sudo fswebcam /home/photo/image.jpg
実行
プログラムを実行可能なパーミッションにする必要があります。
$ chmod 755 hoge.sh
その後実行です。
$ ./hoge.sh
これでボタンを押せば写真が撮れます!
プログラム全文
#!/bin/sh
port=17
SAVEDIR="/home/pi/Photo"
gpio -g mode $port in
name="/image.jpg"
mkdir -p $SAVEDIR
echo "はじめ"
while true ; do
btn=`gpio -g read $port`
if [ $btn -eq 1 ] ; then
echo "ok"
sudo fswebcam --no-banner $SAVEDIR$name
sleep 2
fi
done