【超低成本】Line即時連動保全系統
Description
2018-05-06
作者:黃文玉
前言
今天要來做一個最簡單、最便宜的保全系統,利用[紅外線動作感測器(PIR)]來感測是否有人員進出,如果有感測到再利用IFTTT來傳送信息到LINE,來達到保全的功用!
所需材料:(以下材料總共不超500元)
- Arduino控制板 X 1
- 紅外線動作感測器(PIR Motion Sensor) 或稱人體紅外線感測器 X1
- WiFi Terminal ESP8266 X1
- 行動電源 或 (18650電池盒+18650電池X2) 註:後發現用9V電池電力好像不足
- 杜邦線
外觀圖:
元件接法:
紅外線動作感測器(PIR Motion Sensor)
紅外線人體感測
WiFi Terminal ESP8266
註:因為一剛開始8266沒有接VCC線,而是透過microUSB提供5V的電源,發現一直無法成功,後來改直接從Arduino提供5V的電(如上圖所示)才成功!真奇怪,而且在此花了非常多時間,真是的…….
進入Moto Blockly
使用IFTTT的積木範例
範例的積木如下:
修改成符合自己的環境(增加感測到時,亮D13的L燈)
轉成 Arduino的語言並上傳
#include “motoESP8266.h”
#include <SoftwareSerial.h>
SoftwareSerial esp8266_Serial(A5,A4);
ESP8266 wifi_esp8266(esp8266_Serial);
String ifttt_value_code;
String ifttt_postdata1;
String ifttt_postdata2;
String ifttt_postdata3;
void setup()
{
Serial.begin(9600);
esp8266_Serial.begin(9600);
pinMode(6, INPUT);
pinMode(13, OUTPUT);
wifi_esp8266.restart();
wifi_esp8266.setOprToStation();
wifi_esp8266.joinAP(“Xiaomi_6F5A”,”12345678″);
delay(8000);
Serial.println(wifi_esp8266.getLocalIP());
}
void loop()
{
if (digitalRead(6) == 1) {
digitalWrite(13,HIGH);
wifi_esp8266.createTCP(“maker.ifttt.com”,80);
ifttt_value_code = “\n{\”value1\” :” + String(0) + “,\”value2\”: ” +String(0)+”,\”value3\”: ” +String(0)+”}”;
ifttt_postdata1 = “POST /trigger/pir_on/with/key/cmPXXXXXXXXXXXRmp HTTP/1.1\r\nHost: maker.ifttt.com\r\nUser-Agent: Arduino\r\n”;
ifttt_postdata2 = “Accept: */*\r\nContent-Length: ” + String(ifttt_value_code.length()) + “\r\n” + “Content-Type: application/json\r\n” + “Connection: close\r\n\r\n”;
ifttt_postdata3 = ifttt_value_code +”\r\n”;
wifi_esp8266.send((const uint8_t*)ifttt_postdata1.c_str(), ifttt_postdata1.length());
wifi_esp8266.send((const uint8_t*)ifttt_postdata2.c_str(), ifttt_postdata2.length());
wifi_esp8266.send((const uint8_t*)ifttt_postdata3.c_str(), ifttt_postdata3.length());
Serial.print(“注意,有人進入屋內!!”);
delay(1000);
} else {
digitalWrite(13,LOW);
}
}
序列埠監控視窗呈現結果
LINE接收到的訊息
成功!!
補充一:WiFi Terminal ESP8266 韌體燒錄
作法請參考Motoduino的網站
也可參考我在Transformer的文章
我照著做的畫面,如下
設定WiFi 模組為PRG 模式(燒錄韌體模式),再用燒錄軟體燒錄韌體(這邊採用motoduino下載的v1.3.0.2 AT Firmware.bin)
關閉 FLASH TOOL 燒錄功具, 開啟Arduino IDE 的Serial Monitor, 且設定如下圖!
修改 baud rate為 9600 (輸入 AT+UART_DEF=9600,8,1,0,0 )
檢查是否修改成功,修改Serial Monitor 的 baud rate為 9600, 然後輸入 AT 命令, 如回應 OK, 表示修改成功!
有關8266韌體燒錄,成功!!
補充二:IFTTT的使用(利用LINE來傳遞信息)
作法可參考我的另一篇文章
IFTTT 註冊:教學
官網:https://ifttt.com/
註冊 IFTTT 的好處是他目前完全免費, 並且可以讓 WF8266R 跨界使用更多熱門服務.。 IFTTT 簡單來說就是 當 什麼 發生時,就做 什麼 事! 這 2 個「什麼」就是「服務」, 並且可以交互訂閱.
LINE 通知
先登入進去IFTTT
請點右上角你的帳號, 在選單中選擇 New Applet 建立服務
點選「+this」
選擇一個Service
輸入「maker」,並選Maker (這邊要改為輸入 Webhooks )
選擇一個觸發事件(Choose trigger),這部分只有一個選項而已,我們用URL進行觸發
接下來要幫這事件取個名稱(本例的事件名稱是 pir_on , 下圖的test為別的例子)
接下來設定系統要做什麼事情,點選「+that」
選擇一個行動的服務,我們選擇用「LINE」來通知該事件被觸發
連結LINE,並輸入LINE的帳號、密碼
點選「同意並連動」
這時會收到一個LINE Notify
進入Send message的畫面,將要傳遞的訊息輸入在Message的框格內(本例的Message為<注意,有人進入屋內。>)
完成
接下來要尋找觸發的網址格式,我們直接進到以下網址 https://ifttt.com/maker,選擇右上角的「Settings」
IFTTT提供的網址格式如下 https://maker.ifttt.com/trigger/[event]/with/key/[key]?value1=[1]&value2=[2]
[event]就是事件名稱,這邊是test,[key]就是剛剛找到的Key,?後面我們沒設定,所以就不用,所以我們的網址就會像下列
https://maker.ifttt.com/trigger/事件名稱/with/key/你的key
測試成功
Contact
- CategorySmart Home
- Tagsline, Smart Home
Project簡述
- 簡述今天要來做一個最簡單、最便宜的保全系統,利用[紅外線動作感測器(PIR)]來感測是否有人員進出,如果有感測到再利用IFTTT來傳送信息到LINE,來達到保全的功用!