- 透過終端機輸入指令
- 用聯發科的MCS網頁完成
第一種不實用。第二種自己使用還可以,但若要變成產品的話,不太可能依靠別人的網頁來生產。
一般監視產品,應該會透過兩種方式開啟監控:
- 硬體觸發
- 網路啟動
硬體觸發指的是有直接連接到Smart7688的按鈕開關或是感知器(如人體感知器),透過電位的High/Low來啟動監視。網路啟動則是透過例如手機傳遞指令,來開關監控。
這篇主要介紹硬體觸發,不過為了簡單,不會真的連接感知器,而是透過Serial Port輸入0/1模擬電位的High/Low。
程式主要是Arduino完成的。
首先需要知道開啟camera的Shell指令;
整個程式架構大概長這樣;
mjpg_streamer -i "input_uvc.so -f 20 -d /dev/video0" -o "output_http.so"網路上一般7688教學文章都是透過終端機輸入的,我們要想辦法透過Arduino輸入這串指令。
整個程式架構大概長這樣;
sensorValue = Serial.read() # 讀取輸入 if sensorValue == 1 { # 使用上面Shell command開啟camera } else { # 關閉camera }
接下來要知道Arduino怎麼執行Shell指令:
Process p; p.runShellCommand(Shell Command);
不過用Process之前要先透過終端機開啟bridge,不然無法用Arduino控制
root@mylinkit:~# uci commit
root@mylinkit:~# reboot
完整Arduino程式碼:
#include <Bridge.h> void setup() { Bridge.begin(); Serial.begin(115200); while (!Serial); } void loop() { int c = Serial.read(); if (c != -1) { switch(c) { case '0': disableCamera(); break; case '1': enableCamera(); break; } } // End if } void enableCamera() { Serial.println("Enable UVC camera"); Process p; p.runShellCommand("mjpg_streamer -i \"input_uvc.so -f 20 -d /dev/video0\" -o \"output_http.so\" &"); } void disableCamera() { Serial.println("Disable UVC camera"); Process p; p.runShellCommand("killall mjpg_streamer"); }
沒有留言:
張貼留言