本文說明如何使用 7688 Duo 搭配 Mediatek Cloud Sandbox 雲服務做一個小偷偵測系統
作者/攝影 |
曾吉弘 |
時間 |
3小時 |
成本 |
- 7688 Duo 開發板 = $600
- PIR 紅外線感測器 = $
- Webcam (Logitech C170) = $600
- USB OTG轉接線 = $100
|
難度 |
* * * * * * * |
材料表 |
- 可聯網的個人電腦 (作業系統可用 Windows, Mac OSX 與 Linux,本範例使用 Windows 7) 只要能SSH登入 7688 來編寫 Node.js程式即可
- 7688 Duo 開發板
- PIR 紅外線感測器
- Webcam (Logitech C170)
- USB OTG轉接線
|
1.MCS端設定
- 請登入Mediatek Cloud Sandbox,建立一個原型,裡面需有一個 Image Display channel,在此 channelId 為 image。這筆資訊需寫在 Node.js 程式中不可寫錯
- 針對這個原型建立一個測試裝置,並記下 DeviceId, DeviceKey
2.7688 Duo 端設定
-
- 將PIR感測器接好,訊號腳位接到D7,另外的Vcc 與 GND 就這是因為 7688 Duo 的 GPIO(0)與MCU D7連通,所以我可以用 pin.read(); 語法去讀取PIR是否被觸發。
- 如果您有 7688 Duo 擴充板的話,就可以直接把 webcam 接上擴充板上的 USB host 接口,不然就需要額外的 USB OTG轉接線。
-
- 請先將您的7688 Duo 連上外部網路,並SSH登入。請先執行以下指令來更新與安裝必要的函式庫:
- $ opkg update (更新可用軟體)
- $ opkg install fswebcam (拍攝照片軟體)
- $ npm install mcsjs (Node.js的 mcs 函式庫)
- $ npm install bluebird –save (另一個本範例所需的函式庫)
-
- 使用 vim 或 nano 開啟一個 .js 檔並貼上以下內容,請把相關資訊改為您的資料。
$ nano imageupload.js
var m=require('mraa');
var mcs = require('mcsjs'); //匯入所需函式庫
var exec = require('child_process').exec;
var Promise = require('bluebird');
var fs = Promise.promisifyAll(require("fs"));
var pin=new m.Gpio(0); //GPIO(0) -> D7
pin.dir(m.DIR_IN); //設定該腳位為輸入模式
var myApp = mcs.register({
deviceId: 'XXXXX',
deviceKey: 'OOOOO', //在此填入您MCS test device 的 ID, Key
host: 'api.mediatek.com'
});
checkButton();
function checkButton() {
var btn=pin.read(); //讀取PIR腳位狀態
if(btn==0) {
//一秒之內只能按一次,這個偵測頻率可自行修訂
setTimeout(checkButton,1000);
console.log('button pressed');
takeSnapshot();
}
else setTimeout(checkButton,100); //每0.1秒讀取一次D7狀態
}
function takeSnapshot() {
child = exec('fswebcam -i 0 -d v4l2:/dev/video0 --no-banner -p YUYV --jpeg 95 --save /tmp/test.jpg',
function (error, stdout, stderr) {
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
//讀取已拍照的圖檔
fs.readFileAsync('/tmp/test.jpg')
.then(function(data) {
myApp.emit('Image','', new Buffer(data).toString('base64'));
});
});
}
3.檔案確定都好了之後,使用 Ctrl + x離開 nano (vim 的話是 :wq),使用以下語法執行:
$ node imageupload.js
4.請在PIR感測器前方,如果一直觸發或一直無法觸發,請調整PIR感測器上的十字鏍絲來得到比較好的偵測效果(應該說… PIR的效果不算太好,受不了的話可以改用更簡單的 pushbutton)。您就能在MCS test device頁面上看到有照片被上傳了,可以點選該資料頻道右上角->打開歷史資料,就可以看到到底有幾張照片。
5.在此有個有趣的事情值得大家關注一下,我們每次照相的檔名都是 test.jpg,所以您如果在多次拍照之後,到 /tmp 資料夾中看看,一樣只有一張 test.jpg,因為每次都會覆寫掉前一張照片。但是這不會影響MCS上傳的功能。
相關文章:
Post Views: 264