(2016/12/09)
今天要來做一個最簡單、最便宜的保全系統,利用[紅外線動作感測器(PIR)]來感測是否有人員進出,如果有感測到再利用IFTTT來傳送信息到LINE,來達到保全的功用!
題目:簡易保全系統
所需材料:(以下材料總共不超500元)
Arduino控制板 X 1
紅外線動作感測器(PIR Motion Sensor) 或稱人體紅外線感測器 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, 表示修改成功!
點選「+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
測試成功
註:更簡捷作法
http://pm25.tn.edu.tw/xoops/modules/tad_book3/page.php?tbdsn=40