在这个项目中,将探索如何使用Arduino Mega 2560、ESP8266 WiFi模块和PIR传感器来构建一个活动检测系统。当检测到活动时,系统将通过Pushbullet应用发送通知到智能手机。
在开始之前,需要具备以下知识:
可以访问以下网站获取相关知识:
以下是构建项目所需的材料:
如果还没有安装Arduino,请从Arduino官网下载并安装。
假设需要最大灵敏度和最短警报周期以获得更好的检测率。因此,请按照以下方式设置PIR传感器的电位器:
打开PIR传感器的白色外壳,将看到引脚描述:GND | OUT | VCC。使用女性跳线将GND、VCC和OUT连接起来。然后将另一端的跳线引脚(连接到PIR)连接到Arduino:
可以使用Arduino Playground中的以下代码测试PIR传感器:
// 测试PIR传感器的代码
在这个项目中,使用了ESP8266(ESP-01变种)串行WiFi模块,它非常便宜。除了ESP-01之外,还有其他变种可用。也有不同的固件可用。使用了默认的AT固件。以下是连接参考图片:
使用跳线将ESP8266连接到Arduino:
ESP8266在数据传输时存在电源问题。它从Arduino获取的电源可能过多,导致Arduino在通过PC USB供电时可能会重启。即使通过电源插座提供5V电源也可能不够。因此,始终建议为ESP8266使用外部电源。然而,在实验中,使用了一种快速且便宜的解决方案。使用了一个1000µF的电解电容器为ESP8266提供足够的电源。
Pushbullet允许无缝地通过推送通知通知不同设备。将使用它的API来推送PIR传感器的通知。
首先,访问PushBullet网站,注册账户,下载Chrome应用和智能手机应用。登录到设备上的Pushbullet。现在看看它是如何工作的,通过应用或安装在PC上的Chrome扩展发送一些推送消息到设备。
接下来,访问API部分。在这里,所有的API链接和URL都是为https连接提供的,而Arduino不能使用https,因为它没有足够的能力来处理那个。因此,将使用HTTP版本的那些API,这在pushbullet文档中没有提到,但从GitHub项目中得到了这个参考。
在pushbullet文档中,对于推送,他们提到了URL,这是HTTPS,所以将使用HTTP URL和端口,这些在GitHub项目中提供。此外,还将添加/pushbullet和他们提到的REST路径。
例如:对于通知推送到所有设备,根据pushbullet文档,REST路径是:/v2/pushes,但将使用:/pushbullet/v2/pushes。
基本URL:173.17.168.19
端口:8181
现在检查不同的API并阅读描述,了解它们。可以在以后的增强版本教程中使用它们。
需要认证密钥才能从Arduino推送。因此,请转到账户,查找访问令牌,复制并将其保存在PC的安全位置。
打开这个GitHub项目,转到Experiments文件夹。在那里,将找到MotionSense.ino,这是将推送通知到智能设备的代码。
将此代码复制到Arduino IDE,并连接Arduino(已经设置好WiFi和PIR传感器)。
现在更改这些参数:
#define SSID "YOURSSID" /* 用WiFi接入点名称替换YOURSSID */
#define PASS "YOURPASSWORD" /* 用WiFi接入点密码替换YOUR PASSWORD */
// 可能想要更改PIR OUT引脚为希望的引脚
#define PIRPIN 2 /* 更改为Arduino的所需数字引脚 */
#define AUTH_TOKEN "YOUR_TOKEN_FROM_YOUR_ACCOUNT";
/*
用访问令牌替换YOUR_TOKEN_FROM_YOUR_ACCOUNT
*/
现在编译并运行。传感器校准、WiFi模块初始化和连接到接入点需要一些时间。可以在串行监视器中看到这些事情。
一切完成后,它将开始循环通过主循环,将在串行监视器中看到“一切正常 | 无入侵”。
每当走到PIR传感器前面时,它将检测到移动,并向设备推送通知。
#define是一组预定义的参数,需要相应地更改它们。在设置中,可以看到初始化arduino Serial()。Serial2用于WiFi串行访问。
理解函数:
到目前为止,WiFi模块已初始化并连接。现在需要检查PIR读取是否感应到运动。它将在主循环下进行。
如果检测到某物,那么首先需要连接到Pushbullet服务器:
现在推送通知:
断开连接: