如何使用Raspberry Pi进行运动检测和SMS?


8

我才刚开始。我如何使用Raspberry Pi执行以下操作:当在前门检测到任何移动时,向我发送一条短信(SMS)?


2
似乎有两个问题可能会更好。如何检测运动以及如何发送短信。
Jivings 2014年

1
您可以考虑购买Prowl,它可以向您的手机发送推送通知:prowlapp.com
Gotschi 2014年

Answers:


11

我的回答分为两个部分,一个用于运动检测,另一个用于SMS。像这样的项目有两个组成部分:硬件和软件。检测运动是硬件部分,而其他所有部分都是软件。

运动

硬件

要检测运动,请获取运动传感器。我在这里使用Parallax PIR运动传感器:亚马逊会员链接。传感器具有3个引脚:GND,VCC和OUT。将引脚连接到RPi或将它们连接到面包板,然后将引脚从RPi连接到同一面包板。将GND连接至GND引脚(6),将VCC连接至3.3v引脚(1),将OUT连接至GPIO0(11)。

软件

我建议您使用WiringPi库。请按照以下说明在Pi上下载并安装该库:接线Pi Library下载并安装。如果检测到运动,则运动传感器上的引脚读数为高,否则为低。

连续运动结束约10秒钟后,运动探测器将自行复位。因此,在响应单个动作时,销钉可能会击发很多次。为了避免每隔几秒钟收到一次SMS消息,您可能希望在程序中包含逻辑,以等待一定时间后再发送另一条SMS。

短信

您可以通过几种不同的方法来执行此操作。一种方法是订阅提供图书馆的付费服务,您可以调用该图书馆并提供相关信息以发送SMS。Twilio API库就是一个很好的例子。

如果您不想花任何钱,并且手机上已经连接了Google语音号码,则可以使用Steven Hickson为RPi开发的Google语音C ++ APIGoogle语音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;
    }
}

4

简单的网络摄像头+“ Motion”软件(您可以使用“ sudo apt-get install motion”进行安装)应注意问题的第一部分。运动在配置文件中有很多参数,检测到运动时,您可以运行外部脚本。

问题的第二部分(例如:SMS)将需要Internet连接并订阅某种SMS发送服务。您所在的区域可能有免费的,但我不能保证。基本上,SMS传递服务公司将为您提供用几种语言编写的SMS发送脚本,您可以选择自己喜欢的一种,并在“动作”检测到任何有趣的东西时使用它来发送消息。


谢谢,我将尝试运动软件!
G. Lombard 2014年


2

有一个项目使用Raspberry Pi和Motion软件构建安全摄像机(请参见下面的链接)。请注意,Pi摄像头(CMOS)并不是像许多更昂贵的安全摄像头(CCD)那样的弱光摄像头,它需要足够的光线才能获得可行的视频流。

http://www.raspberrypi.org/archives/5071

也有可用的红外热像仪,尽管它也不会收集很多光,因此需要更多的红外辐照度才能达到与更昂贵的安全摄像头相同的效果。

http://www.raspberrypi.org/forum/viewtopic.php?t=63115

有关CMOS和CCD之间的微弱差异的更多信息;

http://www.axis.com/products/video/camera/ccd_cmos.htm

但是,一些背面照明的CMOS图像传感器正开始追赶低光类别。

http://www.techhive.com/article/246931/cmos_is_winning_the_camera_sensor_battle_and_heres_why.html?page=2

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.