こんにちは、技術系の投稿は初めてなので不安です。書き方とか(´・ω・`;)
今回はRaspberry PiでWEBカメラで定期的に撮影し、ついでにピエゾスピーカーで撮影したことを知らせるインターバルカメラを作りました。
必要なもの
- WEBカメラ
- ピエゾスピーカー(圧電スピーカー)
以上!
準備
今回はfswebcamという写真を撮るソフトとWiring PiというCでプログラムできるソフトの合わせ技でやります。こういうはシェルスクリプトの方が早い気がしますが使ったことがないので今回は使いません。
WiringPiをインストールしていない方はインストールしてください
fswebcamをインストールします。
sudo apt-get install fswebcam
できたら
fswebcam -d /dev/video0 -D 2 -r 400 --jpeg 95 capture.jpg
で写真がとれます。
プログラム
webcam.cを作り編集していきます
(SFTPを使ってPCから転送するとはかどります。詳しくはこちらなどを参照してください)
#include <wiringPi.h> #include <stdio.h> #include <softTone.h> #define GPIO17 17 int main(void) { int i=0;//連番保存のためのカウントする変数 if(wiringPiSetupGpio() == -1) return 1;//raspiのピンの指定方法の設定 pinMode(GPIO17, OUTPUT);//スピーカーをつなぐピン softToneCreate (GPIO17) ;//スピーカーにすると宣言 delay(30000);//電源入れた最初はなんとなく30秒間をあける while(1){ i++;//1を足す delay(30000);//写真を撮る間隔を指定ここでは30秒 softToneWrite (GPIO17,700);//700Hzの音を出す(たしか700Hzはドの音だった) delay(500); softToneWrite (GPIO17,0);//音を止める unsigned char s[16];//数字を文字列に変える? sprintf(s,"%d",i); char str1[] ="sudo fswebcam -d /dev/video0 --no-banner -r 400 --jpeg 95 /home/pi/webcam/long"; strcat(str1,s);//文字列の結合 strcat(str1,".jpg");//文字列の結合 system(str1);//コマンドの実行 } return 0; }
突っ込みどころ満載のコードだと思います。すみません
system()はコンソールで実行できるコマンドを実行できます。(こういうの何て言えばいいの?)
あと今回は日付表示はいらなかったので –no-banner にしてこんな感じに書いてます。
fswebcam -d /dev/video0 --no-banner -r 400 --jpeg 95 /home/pi/webcam/capture.jpg
/home/piまで指定してるのはラズパイの起動と同時にこれも起動するようにしたら/home/piまで書かないといけなかったようです。
あとはGPIO17とGNOにピエゾスピーカーを繋げれば完成。ピエゾスピーカーに極性はありません。
まずはコンパイルです。softToneを使うときは -lpthreadも必要になります。
cc -o webcame webcamera.c -lwiringPi -lpthread
sudo ./webcame
で実行です。
音とともに写真が撮れたら成功です
自動起動の設定
今回はraspiの電源を入れると勝手にプログラムが実行されるようにしたかったのでその設定をします。
今回はmagbotの設定のサイトを参考にしました
まずnanoで/etc/inittabを編集して、オートログインの設定をします。
sudo nano /etc/inittab
そして
1:2345:respawn:/sbin/getty 38400 tty1
を#でコメントアウトします。
んで、
1:2345:respawn:/bin/login -f pi tty1 </dev/tty1>/dev/tty1 2>&1
新しくこれを書き込めばおkらしいです。間違えないようにしてください。
次に自動起動の設定をします
sudo nano /etc/rc.local
を開いて
exit 0のまえに
/home/pi/webcame &
を入力します&を書き忘れるとraspiが起動しないそうなので気を付けてください
あとは
sudo reboot
して起動されてたら完成です。
実戦導入
いろいろ取り付け場所を工夫したのですが、あまりうまく撮れませんでした。
1000枚撮ったんですけどね。
こんな感じのがたくさん撮れてました。
なんか改良の余地ありそうなのでまた作り直すかもです。いや、めんどくさいからいいや
今回、これを作るにあたって、Twitterの方々からいろいろアドバイスをもらいました。Ecruさん、ぼんじんさん、qmoreさんありがとうございます。
Be First to Comment