LoginSignup
1
9

More than 5 years have passed since last update.

Raspberry Pi でボタンを押したら静止画を撮る

Last updated at Posted at 2017-07-04

ラズパイはModel B+ V1.2を使用。
USBカメラはELECOM UCAM-C0220FBWHを用いましたが、基本的に何でも良さそう。
(追記:UVC対応である必要があるそうです)

「ラズパイのGPIOピンを用いて、外部ボタンが押されたら、写真を撮る」ということを目指します。

USBカメラの設定&とりあえず撮ってみる

まずはUSBカメラをつなぎ、ちゃんと認識されているか確かめます。
$ lsusb
このコマンドでUSBポートの一覧が表示されます。
続いて、fswebcamのインポートをします。
$ sudo apt-get install fswebcam
そして、静止画を取ってみましょう。
$ fswebcam image.jpg
image1.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
これでボタンを押せば写真が撮れます!

プログラム全文

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
1
9
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
9