先说一下我这篇文章说的东西做出来是啥,就是一个树莓派+无线网卡+摄像头+移动电源的东西。
基本用法就是只要树莓派开机,就可以用无线设备随时进行视频监控或者视频采集,或者同时做,可移动的无线摄像头。与其他教程不太相同的是,这回树莓派不再是接入无线路由或者其他接入点,而是直接自己作为接入点,不再有依赖外在接入点信号范围的束缚。
其实没啥用,没啥实际用途,真的。做这玩意其实就是想随意弄个随身摄像机啥的,但是又没小屏幕,于是就对手机和平板起了邪念(啥?)
炫耀展示:
基本思路:
装一台Raspbian系统的Raspberry Pi,使用无线网卡配合hostapd作为无线接入点,使用摄像头配合MJPG-Streamer进行图像的实时监控、录制保存或监控录制同时进行,使用移动电源进行移动供电,使用手机或其他移动设备进行无线遥控。
文章目录:
A、开始前准备
B、准备材料
C、制作步骤
一、安装系统 (已安装系统的可以跳过此步)
二、编译网卡驱动和hostapd
三、安装DHCP服务
四、安装mjpg-streamer
五、变成接入点
六、脚本准备
七、遥控器准备:
八、实战
D、已知缺陷
E、后记
F、资源下载(百度盘)
G、文档更新日志
(请大家根据自己的情况选择跳过个别步骤)
开始前准备:
如果您确定想要着手操作的话,首先您应该了解linux的一些基础知识、ssh,shell和bash基本操作、基本编译等,并且要有一定的英语基础。这是一篇面向有一定基础的读者的文章,文中部分知识在本文中不会详细解释,如果您有什么不懂的地方,你来打我啊,咳咳,建议您先从基础学起。
准备材料:
1、树莓派B型(因为要用到2个USB口)+4G或以上SD卡一张
2、USB无线网卡一根(需要支持无线AP)
3、USB摄像头一个(需要支持MJPG)
4、移动电源一块
5、PC一台,路由器一台,网线一根(这些材料用于第一次安装)
6、无线设备一台(用于无线遥控)
附博主使用的材料:
1、树莓派B型+不太结实的亚克力外壳+8G class10东芝SD卡
2、EDUP MS8512 USB无线网卡
3、罗技C270 USB摄像头
4、爱国者充电宝D5
5、支持无线网络的笔记本一台,无线路由器一台
6、支持wifi的安卓手机一台,Ipad4(4G)一台
博主建议:
1、树莓派的盒子请尽量选择结实的以免携带的时候损坏
2、无线网卡请尽量选择linux下支持的比较好的,博主用的是Realtek芯片的,系统自带的hostapd不支持,MAC修改不支持,BSSID指定不支持(所以3DS无线擦建站一直搞不定)。至于是否外置天线,就随各位爱好吧,无天线的便携性就高,但是无线操作距离就会变低,大家自由取舍。
3、摄像头不是很了解,C270太火了哪的教程都用,虽然我是2010年就买了。
制作步骤:
大家注意到了这个教程中没有显示器,也就是说这次是要在无显示器的情况下安装系统。
一、安装系统 (已安装系统的可以跳过此步)
1、SD卡插读卡器上,读卡器插电脑上,刷raspbian上去,没啥说的
2、SD卡再插到树莓派上,先别急着加电,先用网线把树莓派用网线连接到路由器上,再开机。
3、一段时间后用PC登陆到路由器界面,看树莓派用DHCP获取的IP是多少。
(博主是因为已经长时间在用树莓派了,所以在路由器上写了静态DHCP)
4、使用PC的ssh客户端(推荐用putty,也可脸皮厚点用SecureCRT)登陆到树莓派,根据提示进行首次设置。
(系统装完,搞不定也别来求我)
5、虽然不是必须,不过还是建议大家运行一次rpi-update和apt-get update(没准你的不能用的摄像头就能用了,当然,也没准你的无线网卡就不能用了。)
二、编译网卡驱动和hostapd
虽然raspbian自带非常多的驱动,而且官方源也包含hostapd,然而却并不能支持每一款无线网卡。我手里的这款EDUP-MS8512就是,虽然能驱动起来,可以连wifi,但是hostapd却无法正常工作(芯片是Realtek的,支持不好)。所以建议大家还是自己编译网卡驱动和hostapd。至于教程,参见您网卡驱动中的README。(坑)
小技巧:编译驱动需要内核代码,还需要各种乱七八糟的东西
需要.config文件么,只要998!
gzip -dc /proc/config.gz >.config
需要Module.symvers文件么,只要你够了
wget https://github.com/raspberrypi/firmware/raw/master/extra/Module.symvers
别忘了make modules_prepare
中途可能会报错找不到openssl/opensslv.h,装一个libssl-dev搞定
三、安装DHCP服务
因为接下来要将树莓派作为接入点,使用其他无线设备进行遥控,所以需要DHCP-server为”遥控器”分配IP,具体的,嗯,总之你只要安装isc-dhcp-server这个包就行了。(安装完成时会自行启动,自行启动会因为没有正确的配置文件报错,无视之)
四、安装mjpg-streamer
mjpg-streamer是用于视频的录制和监控的,消耗资源也少,安装步骤,嗯,虽然网上一大堆,不过还是发出来吧蛤蛤。当然也是因为网上很多教程缺胳膊少腿,自己想补充一下,这回就不那么坑了。
1、安装依赖
sudo apt-get install libv4l-dev libjpeg8-dev imagemagick
2、下载源码:
svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer
(比较坑爹的就是Raspbian虽然自带git,但是却不带svn,所以没有安装svn的请先安装svn客户端,包名:subversion)
svn死活抠不下来的朋友,(请感谢我们伟大的方校长并祝愿病魔早些战胜校长),您可以在本文最下方找到我的压缩包,Checked out revision 182.
(在网上搜mjpg-streamer的话可能会搜出一个mjpg-streamer-r63,这个包我在树莓派上亲测编译不成功,看报错应该是环境问题,没有过多尝试,有兴趣的朋友可以研究研究)
3、编译安装:
根据mjpg-streamer的文档,编译需要libjpeg,但是mjpg-streamer的代码依赖是libjpeg7的,我们使用的是libjpeg8,文件名不同,所以要做一个软连接。不然会报错:
mjpg_streamer.c:27:28: fatal error: linux/videodev.h: No such file or directory
compilation terminated.
make: *** [mjpg_streamer.o] Error 1
软连接:sudo ln -s /usr/include/libv4l1-videodev.h /usr/include/linux/videodev.h
进入目录并编译:
cd mjpg-streamer
make USE_LIBV4L2=true clean all
4、功能测试:
执行:
sudo ./mjpg_streamer -i “./input_uvc.so -d /dev/video0 -r 1280×720 -f 12” -o “./output_http.so -p 8090 -w ./www”
(-r后是分辨率参数,-f后面是帧率,请根据您的摄像头参数进行调整)
之后在PC上打开浏览器,在地址栏填写树莓派的地址+:8090,如果成功的话就会打开mjpg-streamer提供的页面:
证明mjpg_streamer成功编译并运行了,恭喜,您已经搞定一个核心功能点了。
还可以进入stream页面看一下效果
五、变成接入点
要把树莓派的无线网卡变成接入点,其实并不是很难,很多地方都有教程,这里只列出一些必要步骤或基本命令,不做解释。每条命令的具体意义希望大家自己学习。
1、准备无线网卡基本配置
sudo vi /etc/network/interfaces
iface wlan0 inet static
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp
address 10.5.5.1
netmask 255.255.255.224
2、准备hostapd的配置文件(一般是rtl_hostapd_2G,具体请参考网卡驱动中的文档)
vi rtl_hostapd_2G
##### hostapd configuration file ##############################################
interface=wlan0
ctrl_interface=/var/run/hostapd
ssid=rtwap
channel=6
wpa=2
wpa_passphrase=87654321
#bridge=br0
3、准备DHCP的配置文件
sudo vi /etc/dhcp/dhcpd.conf
保证这段生效(具体怎么做请自行领悟)
subnet 10.5.5.0 netmask 255.255.255.224 {
interface wlan0;
range 10.5.5.26 10.5.5.30;
option domain-name-servers 8.8.8.8 , 8.8.4.4;
option domain-name “pi.wifi.catscarlet.com”;
option routers 10.5.5.1;
option broadcast-address 10.5.5.31;
default-lease-time 600;
max-lease-time 7200;
}
4、准备启动脚本:
(这段其实不应该这么写,这段应该写在无线网卡的配置文件里,也就是interface,使之当插入无线网卡的时候载入,拔出无线网卡的时候卸载。我还没时间仔细研究,所以就对付到启动脚本里了)
sudo vi /etc/init.d/rc.local
在最下方新增两行:
/home/pi/hostapd /home/pi/rtl_hostapd_2G.conf >> /var/log/hostapd.log
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
(这样AP和NAT就都有了,DHCP开机如果有无线网卡的话会自己载入)
5、开启路由转发
/etc/sysctl.conf
将net.ipv4.ip_forward=0修改为net.ipv4.ip_forward=1
6、功能测试:
重启树莓派,重启后使用无线设备搜索无线信号rtwap,密码87654321,接入,测试是否可以获取IP和DNS,并且确认是否可以上网。
六、脚本准备
根据前面的内容,现在我们的树莓派可以作为无线路由器了,也可以作为视频监控了,那么我们现在只要只要同时启用这两个功能,我们就已经接近目标了。
现在我们的树莓派在接入无线网卡的情况下开机,就可以作为无线路由使用,所以关于连接方面我们可以不再操心了,只要一心关注如何进行视频的监控和采集即可。
这里提供三个脚本(可在文章末尾打包下载)
pi@raspberrypi ~ $ cat 1_start-mjpeg_streamer.sh
cd ~/src/mjpg-streamer/
sudo nohup ./mjpg_streamer -i “./input_uvc.so -d /dev/video0 -r 1280×720 -f 12” -o “./output_http.so -p 8090 -w ./www” &
pi@raspberrypi ~ $ cat 2_start-record.sh
cd ~/src/mjpg-streamer/
sudo nohup ./mjpg_streamer -i “./input_uvc.so -d /dev/video0 -r 1280×720 -f 12” -o “./output_file.so -f /home/pi/tmp/” &
sudo nohup ./mjpg_streamer -i “./input_file.so -f /home/pi/tmp/” -o “./output_http.so -p 8090 -w ./www” &
pi@raspberrypi ~ $ cat 3_stop-mjpeg_streamer.sh
sudo killall mjpg_streamer
pi@raspberrypi ~ $
第一个脚本是后台开启视频监控,只能进行监控,不做记录;
第二个脚本是后台开启视频采集并进行实时监控,在做记录的同时可以开浏览器进行监控。记录的文件存放在 /home/pi/tmp/ 中
第三个是干掉楼上两个关闭已开启的视频监控和采集
脚本意义请自行理解并修改,这里不再多述。
七、遥控器准备:
一般的无线设备都可以作为遥控器,带有无线网卡的笔记本,安卓手机或平板,ios设备,只要有SSH客户端和支持stream的浏览器即可。
浏览器推荐:
实测PC的Firefox、Chrome可用,IE10不可用;ipad的Safari可用。因为我手机不清楚浏览器核心是什么就不提了。
移动设备ssh客户端推荐:
安卓系统如果有终端模拟器则可以直接用ssh,没有的话可以安装一款名叫connectbot的应用(谷歌Play)
ipad可以安装一款名叫vSSH Lite的应用(App Store),本人没有iphone和WP,这里就不乱推荐了。
八、实战
无线监控:
重启过的树莓派应该已经可以进行无线接入了(不能的话就请自行排错吧,这个只能靠经验累积了)
使用无线设备接入树莓派,并确认接入成功。
使用SSH客户端打开地址:[email protected]
进入到放置三个脚本的目录:
执行./1_start-mjpeg_streamer.sh (这里说一个小技巧,输入./1之后直接按下tap键<如果有的话>,bash会自动补全,这也是为什么3个脚本都是用数字开头的原因)
进程运行起来了。
再打开浏览器,输入地址:http://10.5.5.1:8090
再点击Stream进入监控页
如果想片平查看可以点上面那个here链接
近乎大功告成
录制+监控:
回到ssh,执行./3_stop-mjpeg_streamer.sh把刚才那个仅监控不录制的进程干掉
之后执行./2_start-record.sh,执行之后树莓派就开始录制了,同时可以继续进入http://10.5.5.1:8090进行监控,堪比一台小型录像机。
录制的文件保存在/home/pi/tmp下,是一堆图片文件,需要进一步转换才能编程视频,请自行解决。
注:在不干掉录制进程的情况下,mjpeg_streamer会一直写文件,请人工保证别把分区写爆了。有一定基础的话可以再搞一个分区专门做存储。
完成:
现在,拔掉电源,拔掉网线,把移动电源准备好,树莓派往你喜欢的地方随便一扔吧。
请不要用於非法用途。
已知缺陷:
1、连接到树莓派之后会因为占用wifi资源,无线设备将无法上网。笔记本可以在接入有线网络的情况下调整路由规避,但平板和手机就没办法了。
2、有些情况下摄像头或无线网卡会因为耗电过大,导致树莓派主板供电不足,系统或网卡重启,导致IP丢失。大家按心情自行解决吧
3、整套东西都只关心图像,对声音完全没有获取,很是遗憾。
4、因为没有使用usb hub,所以一个接口接了无线网卡,一个接口接了摄像头,没有空余的接口再连接U盘或者其他存储设备了,所以请准备好足够的SD卡空间。不过720p 12fps,每秒的大小不足1M,io不是问题。
5、操作方面现在只能靠ssh进行操作。其实mjpeg_streamer已经提供了web模板,只要稍微改改模板就可以完全依靠浏览器进行控制了。未来神马的就交给你拯救了。
后记:
其实不写网卡编译教程的原因很简单,一家网卡一个方法,写的不好反而会误导人,干脆不写。编译东西,大家应该首先看每个包的README。被奶大的孩子永远长不大。
另外近期发现树莓派的内核从3.6+更新到3.10+了,导致一大堆驱动都不能用了,包括个人编译的和内核自带的,话说系统自带的驱动在内核升级之后就不能用是个什么鬼逻辑啊,难道不知道先祖产品都是怎么死的了么?
另外我并没有打算把这个提交到git或者svn的想法。
这个实在太小了,编程的精华在于思路,而不是代码。能理解我要做的是什么,哪里做得好,哪里更待优化,才是正道。单纯的在那抄写代码,农民都不如。
这个东西的扩展性很高,如果有实力和条件的话就可以继续加做遥控车甚至是机器人,相比之下一个小小的视频录制功能只够塞牙缝的。
资源下载(百度盘):
mjpg-streamer_svn_r182.tar(Checked out revision 182.)
linux-rpi-3.10.y.zip(这是从git上抠下来的,在windows上测试没问题,但是在pi上解压就报错,估计他们打包的时候脑残的把权限也打进去了)
最后(有完没完啊),如果文中有什么写的不够详细或者错误之类的地方,请在评论下留言。
欢迎转载,转载请注明出处:https://blog.catscarlet.com/201311131578.html
文档更新日志:
2013 年 11 月 13 日上午 1:36:文档新建
2013 年 11 月 13 日下午 12:18:附件上传
2013 年 12 月 04 日上午 1:34:更新文档目录结构,修改部分措辞。不影响文章理解。
28 comments
Skip to comment form ↓
洛城东华
2013 年 11 月 15 日 在 上午 11:25 (UTC 8) Link to this comment
作为一个Linux盲,我只注意到了三张挂画
石樱灯笼
2013 年 11 月 16 日 在 下午 11:55 (UTC 8) Link to this comment
其实主要目的就是show 挂画
涼月かえで
2013 年 11 月 15 日 在 下午 6:56 (UTC 8) Link to this comment
表示第一眼只看到了挂画
石樱灯笼
2013 年 11 月 16 日 在 下午 11:55 (UTC 8) Link to this comment
其实主要目的就是show 挂画
雀巢触屏
2014 年 2 月 27 日 在 下午 7:50 (UTC 8) Link to this comment
你好,我用ARM9也实现了一些功能。
现在想要从外网看到视频数据,有什么办法吗?
石樱灯笼
2014 年 2 月 28 日 在 上午 12:07 (UTC 8) Link to this comment
如果server放在内网的话,在路由器上做端口映射就可以了
雀巢触屏
2014 年 3 月 1 日 在 下午 2:37 (UTC 8) Link to this comment
你的登录网页还可以控制摄像头移动吗?
石樱灯笼
2014 年 3 月 2 日 在 下午 9:29 (UTC 8) Link to this comment
我没有云台硬件,没有开发相关功能
雀巢触屏
2014 年 3 月 9 日 在 下午 9:29 (UTC 8) Link to this comment
还有一个问题,MJPG-Streamer能够录制视频吗?
我的貌似只能保存一幅幅图片。
石樱灯笼
2014 年 3 月 9 日 在 下午 10:13 (UTC 8) Link to this comment
MJPG-Streamer的标准输出就是单幅图片,需要用格式转换工具转换成视频。树莓派的机能太弱,无法做到录制时转换。需要转换成视频请使用其他硬件(比如PC)做视频转换。
瞎猫
2015 年 1 月 4 日 在 上午 10:02 (UTC 8) Link to this comment
你这里,是不是需要两个无线WIFI设备,一台做发射,一台做接收?
marko
2015 年 1 月 11 日 在 下午 8:39 (UTC 8) Link to this comment
楼主有没有遇到过画面延迟大的问题?
不是每次都会出现,但是大多时候会有延迟,即使在局域网内直接访问延迟也很大。
摄像头跟楼主用的是同一个型号,网络用的是有线连接,排除了网络问题和电力问题。
石樱灯笼
2015 年 1 月 12 日 在 下午 8:58 (UTC 8) Link to this comment
延迟的话除了网络问题就是性能问题了,你可以看一下CPU使用率,看看是不是处理不过来
指尖流逝的年华
2015 年 9 月 21 日 在 上午 11:47 (UTC 8) Link to this comment
请求教我如何使用树莓派制作近距离遥控摄像机的具体细节,w8系统
天轩青
2015 年 10 月 24 日 在 下午 2:59 (UTC 8) Link to this comment
我树莓派用mjpg-streamer远程监控,可是mjpg-streamer打开后,没有图像
石樱灯笼
2015 年 10 月 24 日 在 下午 3:07 (UTC 8) Link to this comment
新系统貌似对mjpg-streamer支持不太好,我用新系统也没有图像。我现在用的是2013-09-25-wheezy-raspbian,很旧的版本。
天轩青
2015 年 10 月 24 日 在 下午 3:09 (UTC 8) Link to this comment
可以传给我吗?我的QQ号/微信号:1025640858
石樱灯笼
2015 年 10 月 24 日 在 下午 3:11 (UTC 8) Link to this comment
请在官网下载:http://downloads.raspberrypi.org/raspbian/images/
天轩青
2015 年 10 月 24 日 在 下午 3:44 (UTC 8) Link to this comment
2013-09-25-wheezy-raspbian版本刷进去,树莓派没反应,红绿灯常亮,是系统问题吗???
天轩青
2015 年 11 月 2 日 在 下午 2:52 (UTC 8) Link to this comment
mjpg可以实现多路视频吗
石樱灯笼
2015 年 10 月 24 日 在 下午 3:09 (UTC 8) Link to this comment
而且我也没有apt-get upgrade,不然升级之后也没有图像。mjpg-streamer毕竟年久失修,建议换用其他方案
天轩青
2015 年 10 月 24 日 在 下午 3:10 (UTC 8) Link to this comment
我装motion失败了,哭(┬_┬)
天轩青
2015 年 10 月 24 日 在 下午 3:21 (UTC 8) Link to this comment
您好,有其他传输视频的方式吗?毕业要用,(┬_┬)哭,谢谢
天轩青
2015 年 10 月 24 日 在 下午 5:58 (UTC 8) Link to this comment
我用的树莓派2B只能用新版系统(┬_┬),还有其他传输视频的软件或者是教程吗
石樱灯笼
2015 年 10 月 27 日 在 上午 10:45 (UTC 8) Link to this comment
可以考虑下vlc和v4l组合Streaming video with Raspi, VLC and Logitech C270
天轩青
2015 年 10 月 24 日 在 下午 3:13 (UTC 8) Link to this comment
这个可以多路传输视频吗??
天轩青
2015 年 10 月 24 日 在 下午 3:14 (UTC 8) Link to this comment
可以留下联系方式吗?
小彦
2017 年 1 月 11 日 在 下午 4:23 (UTC 8) Link to this comment
谢谢分享,我也玩过树莓派,不过没装过这个监控服务,
我玩的是手机网页控制即时截摄像头的图,也挺好玩~