[物联网] MotionSense Not-e-FYI





5.00/5 (1投票)
从您的Arduino向智能设备发送运动激活的Pushbullet通知。
引言
在本教程中,我将讨论如何创建一个系统来通知任何未经授权的活动或入侵。我使用了 Arduino 和 PIR 进行活动检测,并使用 ESP8266 进行 WiFi 连接。我的 Xperia Z1 用于接收通知。我使用了流行的通知应用 Pushbullet 来接收通知,并使用 Pushbullet API 从 Arduino 发送通知。
先决知识
- Arduino 知识和基本硬件知识 [ 访问 : www.arduino.cc]
- AT 命令概念 [ 阅读 : https://codeproject.org.cn/Articles/85636/Introduction-to-AT-commands-and-its-uses ]
- PIR,它的工作原理 [ 关于 : https://en.wikipedia.org/wiki/Passive_infrared_sensor ]
使用的“东西”
1000 µF 电容,各种电阻 [ 用于 WiFi 电源的电容,用于稳压的电阻 ]
单股 0.5mm 电线 [ 连接线 ]
母对母跳线 [ 连接器 ]
Xperia Z1 [ 用于 Pushbullet 应用,任何智能手机均可 ]
我的笔记本电脑 [ 使用 Arduino 编程 ]
Arduino IDE [ v1.6.4 ]
要做什么
环境设置: 如果您没有安装 Arduino,请从 Arduino 网站安装。
Setting up PIR :
假设您需要最大的灵敏度和最小的警报周期以获得更好的检测率。因此,请这样设置 PIR 传感器上的电位器。
现在打开 PIR 传感器的白色球体,您将看到引脚说明:GND | OUT | VCC
连接 GND、VCC 和 OUT 的公对母连接线。
现在将(连接到 PIR 的)跳线另一端连接到 Arduino
PIR GND -> Arduino GND
PIR VCC -> Arduino 5V
PIR OUT -> 数字引脚 2 [ 您可以选择其他引脚,并在 Arduino 代码中进行相应更改 ]
要测试您的 PIR,您可以使用 Arduino Playground 中的这个代码
因此,您的 PIR 传感器已 准备好 工作
Enabling Arduino to connect to internet via WiFi :
我在项目中使用了 ESP8266(ESP-01 型号)串行 WiFi 模块,它价格非常便宜。除了 ESP-01 之外,还有其他型号可供选择。也有不同的固件。我使用了默认的 AT 固件。请参考以下两张图片了解连接方法。
现在用跳线连接 ESP8266 和 Arduino
ESP8266 GND -> Arduino GND
ESP8266 UXTX(发送引脚) -> Arduino RX2(Arduino Mega 接收引脚,即代码中的 Serial2)
ESP8266 CH_PD(设置为高电平) -> Arduino 5V(添加一个 3.3V 的稳压器,因为 ESP8266 只能承受 3.3V。我用了一个电阻,因为我没有稳压器。但稳压器是首选)
RST、GPIO2 和 GPIO0 不连接
ESP8266 URXD(接收引脚) -> Arduino TX2(Arduino 接收引脚,即代码中的 Serial2)
ESP8266 VCC -> Arduino 的 3.3V
ESP8266 在数据传输时存在电源问题。它从 Arduino 消耗大量电力,以至于如果 Arduino 通过 PC USB 供电,Arduino 可能会重启。即使通过电源插头供电 5V 可能也不够。因此,始终建议为 ESP8266 使用外部电源。但在我的实验中,我为这个问题使用了快速且廉价的解决方案。我使用了一个 1000µF 的电解电容器为 ESP8266 提供足够的电力。
长引脚 -> ESP8266 VCC 连接到 3.3V
短引脚 -> ESP8266 GND 连接到 Arduino GND
因此,您的 ESP8266 WiFi 模块已 准备好 工作
Pushbullet Notifier :
Pushbullet 可以让您通过推送通知无缝地通知您的不同设备。我们将使用它的 API 来推送我们 PIR 传感器的通知。了解更多关于 Pushbullet 的信息
让我们开始吧。
访问 PushBullet
注册,下载 Chrome 应用和智能手机应用。
在您的设备上登录 Pushbullet。
现在,通过您 PC 上安装的应用程序或 Chrome 扩展程序,发送一些推送消息到您的设备,看看它是如何工作的。
访问 API 部分
注意:这里所有的 API 链接和 URL 都用于 https 连接,而 Arduino 由于其性能不足以处理 https。因此,我们将使用这些 API 的 HTTP 版本,这在 Pushbullet 文档中没有提及,但我从 github 获得了此参考。.
现在检查不同的 API 并阅读描述以了解它们。您以后可以在本教程的增强版中使用它们。
您需要您的身份验证密钥才能从 Arduino 推送。所以,请访问您的账户
查找 访问令牌,将其复制并保存在安全的地方。
因此,Pushbullet 现在已 准备好 进行发送和接收推送通知。
是时候编写代码了
打开这个GitHub 项目
进入 Experiments 文件夹。在那里您会找到 MotionSense.ino,您的代码,它会将通知推送到您的智能设备。
将此代码复制到 Arduino IDE,并连接您的 Arduino(已设置好 WiFi 和 PIR 传感器)。
现在更改这些参数
#define SSID "YOURSSID" /* replace YOURSSID with your WiFi access point name */ #define PASS "YOURPASSWORD" /* replace YOUR PASSWORD with your WiFi access point password */
您可能想将 PIR OUT 引脚更改为您想要的引脚。
#define PIRPIN 2 /* change to your desired digital pin of your arduino */ #define AUTH_TOKEN "YOUR_TOKEN_FROM_YOUR_ACCOUNT"; /* replace YOUR_TOKEN_FROM_YOUR_ACCOUNT with your Access Token*/
另外,使用您在上面代码片段中提到的访问令牌。
现在编译并运行。
传感器校准、WiFi 模块初始化和连接到您的接入点需要一些时间。
您可以在串行监视器中看到这些内容。
一切完成后,它将开始进入主循环,您将看到
"一切正常 | 没有入侵"
在您的串行监视器中持续显示。
当您走到 PIR 传感器前方时,它将检测到移动并向您的设备推送通知。
简要了解代码
#defines 是预定义参数的集合,您需要相应地更改它们。
在 setup() 中,您可以看到初始化 Arduino Serial()。Serial2 用于 WiFi 串行访问。
了解函数 :
sensor_calibration (); /* It calibrates sensor for proper output. We need to power down PIRPIN before that */
check_WiFi_radio (); /* Checks whether WiFi module is OK or not */
reset_wifi (); /* resets WiFi module to clear any problem */
set_wifi_mode (); /* Set WiFi module as client for connecting to Access Point */
设置 WiFi 模式后,您需要重置 WiFi 来进行设置。
check_wifi_stat (); /* Checks whether your WiFi module is connected to AP or not */
connect_ssid (); /* if not connected, then will connect with your connection parameter */
到此为止,您的 WiFi 模块已初始化并连接。现在您需要检查 PIR 读取是否感应到运动。这将在主循环中。
pirRead (); /* reads PIR value, either 0 or 1. If 1, then Motion Sensed, if 0, then nothing is there */
如果检测到任何东西,那么您首先需要连接到 Pushbullet 服务器。
server_connect (); /* connecting to server */
现在推送通知
post (); /* pushing notification to all devices */
disconnect
server_disconnect (); /* close server connectioon */
然后循环执行
特别说明
您可以使用这个 post() 函数结构将任何数据流式传输到任何 RESTful API。
相关知识库
ESP8266 AT 命令:https://room-15.github.io/blog/2015/03/26/esp8266-at-command-reference/
通过 Adafruit WiFi 的 Pushbullet:https://github.com/klinker41/pushbullet-arduino/tree/master
ESP8266 Maker:http://espressif.com/en/products/esp8266/
不同的 ESP8266 模块:http://l0l.org.uk/2014/12/esp8266-modules-hardware-guide-gotta-catch-em-all/
ESP8266 Wiki:https://nurdspace.nl/ESP8266
PIR 传感器:http://arduinobasics.blogspot.in/search/label/HC-SR501
关于 HC-SR501:http://www.mpja.com/download/31227sc.pdf
PIR 数据表:http://www.datasheetspdf.com/datasheet/HC-SR501.html
更多关于 PIR 的信息:https://arduinodiy.wordpress.com/2014/09/18/1093/