私はまだ始まったばかりです。Raspberry Piを使用して次のことを行うにはどうすればよいですか。玄関で動きが検出されたら、テキストメッセージ(SMS)を送ってください。
私はまだ始まったばかりです。Raspberry Piを使用して次のことを行うにはどうすればよいですか。玄関で動きが検出されたら、テキストメッセージ(SMS)を送ってください。
回答:
私の答えは2つの部分に分かれています。1つはモーション検出用、もう1つはSMS用です。このようなプロジェクトには、ハードウェアとソフトウェアの2つのコンポーネントがあります。動きの検出はハードウェアの部分であり、その他はすべてソフトウェアです。
動きを検出するには、モーションセンサーを取得します。ここではパララックスPIRモーションセンサー:アマゾンのアフィリエイトリンクを使用しています。センサーには、GND、VCC、およびOUTの3つのピンがあります。ピンをRPiに接続するか、それらをブレッドボードに接続して、ピンをRPiから同じブレッドボードに接続します。GNDをGNDピン(6)に、VCCを3.3vピン(1)に、OUTをGPIO0(11)に接続します。
WiringPiライブラリの使用をお勧めします。次の手順に従って、ライブラリをPiにダウンロードしてインストールします:Piring Wiring Library Download and Install。モーションセンサーのピンは、モーションが検出された場合はHighを、そうでない場合はLowを読み取ります。
モーション検知器は、約10秒後に連続モーションが終了すると自動的にリセットされます。そのため、ピンは単一の動きに応答して何度も発砲する可能性があります。数秒ごとにSMSメッセージを取得しないようにするために、別のSMSを送信する前に一定の時間待機するロジックをプログラムに含めることをお勧めします。
これを行う方法はいくつかあります。1つの方法は、SMSを送信するために関連情報を使用して呼び出すことができるライブラリを提供する有料サービスに加入することです。Twilio APIライブラリはこの良い例です。
お金をかけたくない場合で、Google Voice番号を携帯電話に接続している場合は、Steven HicksonがRPi用に開発したGoogle Voice C ++ API(Google Voice C ++ API)を使用できます。最終結果は次のようになります(私は作成しましたが、RPiでロードしてテストしていません)。
#include <wiringPi.h>
#include <time.h>
#include <string.h>
#include "gvoice.h"
int sendSMS(void);
#define MOTION_PIN 0
#define MINUTES_TO_WAIT 5
// some made-up error codes for SMS result
#define SUCCESS 0
#define LOGIN_ERROR 1
#define SMS_ERROR 2
static char *number = "2125551212", *message = "Motion detected!";
int main(int argc, char** argv) {
time_t lastSent, now;
int result;
// track the time we sent the last SMS
lastSent = time(NULL) - 60*(MINUTES_TO_WAIT + 1)
// set up motion pin
wiringPiSetup();
pinMode(MOTION_PIN, INPUT);
while (true) {
if (digitalRead(MOTION_PIN)==HIGH) { // motion detected
// get the current time
time(&now);
// if we've waited long enough, send a message
if (difftime(now, lastSent)/60) > MINUTES_TO_WAIT) {
if (result = sendSMS()) {
print("Message sent!\n");
lastSent = now;
} else {
printf("Error %d. Message not sent!\n", result);
}
}
}
}
}
int sendSMS(void) {
// Uses the Google Voice C++ API by Steven Hickson
GoogleVoice gv;
char *username = "username", *password = "password";
if (gv.Login(username, password)) {
if (gv.SendSMS(number, message)) {
return SUCCESS;
} else {
return SMS_ERROR;
}
} else {
return LOGIN_ERROR;
}
}
簡単なWebカメラ+「モーション」ソフトウェア(「sudo apt-get install motion」でインストールできます)は、質問の最初の部分に注意する必要があります。モーションには設定ファイルにたくさんのパラメータがあります。モーションが検出されたときに外部スクリプトを実行できます。
質問の2番目の部分(re:SMS)では、インターネット接続と、ある種のSMS送信サービスへのサブスクリプションが必要です。お住まいの地域で利用できる無料のものがあるかもしれませんが、私はあなたにそれを約束することはできません。基本的に、SMS配信サービス会社はいくつかの言語で記述されたSMS送信スクリプトを提供します。好きなものを選択して、「動き」が何かを検出したときにメッセージを送信するために使用できます。
SMSの部分については、携帯電話の電子メールアドレスへの電子メールを使用するだけです。例:your10digitnumber@vtext.com / @ txt.att.com / @ tmomail.com
Raspberry Pi and Motionソフトウェアからセキュリティカメラを構築するプロジェクトがあります(下のリンクを参照)。Piカメラ(CMOS)は、多くの高価なセキュリティカメラ(CCD)のような低照度カメラではなく、実行可能なビデオストリームを取得するために十分な光が必要であることに注意してください。
http://www.raspberrypi.org/archives/5071
利用できるIRカメラもありますが、あまり多くの光を集めないため、より高価なセキュリティカメラと同じ結果を得るには、より多くのIR放射が必要です。
http://www.raspberrypi.org/forum/viewtopic.php?t=63115
CMOSとCCDのわずかな光の違いの詳細。
http://www.axis.com/products/video/camera/ccd_cmos.htm
ただし、一部の裏面照射型CMOSイメージセンサーは低照度のカテゴリーに追いつき始めています。