樹莓派遠端監控的實現
接著上面的兩篇講,上面的兩章講了讓手機控制樹莓派小車跑起來,並且實現了通過公網訪問來控制小車的活動。這一章就來講一下如何實現使用樹莓派,USB攝像頭,手機來實現遠端監控,當然也可以跟前面做的小車結合起來,將攝像頭放到車上。
##使用的材料:
1:USB攝像頭
2:樹莓派
3:手機
使用的USB攝像頭就像這種:
這種的攝像頭可以直接插在樹莓派的USB介面上,也可以去百度一下樹莓派支援的攝像頭,插入攝像頭後使用 ls /dev 檢視是否有了USB攝像頭裝置:
video0就是插入的攝像頭。
我們實現監控使用motion,首先第一步安裝motion:
sudo apt-get install motion
然後就是修改motion的配置:(比較習慣使用vim,如果想用vim的話可以去裝一下當然也可以使用其他的)
sudo nano /etc/motion/motion.conf
要修改的地方不是很多,主要有:
#deamon off 改成 on
deamon on
#設定解析度
width 800
height 600
#關閉 localhost 的限制
webcam_localhost off
如果想讓motion一直在後臺執行,可以開啟 motion daemon 守護程序,讓他可以一直在後臺執行:
sudo nano /etc/default /motion
#no修改成yes:
start_motion_daemon=yes
然後就能啟動motion了:
sudo motion
現在我們的樹莓派監控就做好了,當然這只是在區域網中實現了,測試一下:
首先你需要確定你的樹莓派的區域網IP地址,比如我的為
192.168.1.108,埠為8081,現在開啟瀏覽器測試一下。
只是在區域網下監控就沒太有意思了,把它放到公網上,進行遠端監控才更加的有用,要實現遠端監控就要用到了內網穿透,給大家推薦一個比較好用而且免費的內網穿透網站,畢竟是免費的還是有一定的延遲。(https://www.ngrok.cc)可以註冊一個賬號,下載一個客戶端到樹莓派上,選擇linux RAM 的客戶端,下載到樹莓派上,網站上的教程比較詳細,這裡就不在講了,開的隧道可以是TCP協議的也可以是HTTP協議的,需要將樹莓派的本地埠和IP地址進行對映,比如我的本地埠是192.168.1.108:8081,然後去樹莓派去執行下載的客戶端:
./sunny clientid ********* *處為你開通的隧道id
執行完後樹莓派顯示:
劃掉的地方為給你對映的公網域名,訪問時,使用這個域名即可。
現在遠端訪問就實現了。
我們之前使用的手機app控制的小車現在,我們也將視訊監控影象放到app中顯示,andriod使用控制元件WebView,使用方法也比較簡單:
<WebView
android:id="@+id/web_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
video.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//String url="http://域名/";
webView.loadUrl(" http://free.ngrok.cc:12297");
//步驟3. 複寫shouldOverrideUrlLoading()方法,使得開啟網頁時不呼叫系統瀏覽器, 而是在本WebView中顯示
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
}
});
至此,就實現了一個功能比較完整地智慧小車,手機app控制小車,並且能在手機app上檢視實時監控,後面將進行舵機使用的教程,實現攝像頭的獨立轉動。