一个旧摄像头的奋斗
前阵子母上的行车记录仪坏了。拆开之后发现摄像头还是能用的。但现在主流笔电都自带摄像头,手机更不必多说。想来想去,不如挂到开发板上做个视频直播或者智能监控。
一开始想到是挂到Arduino上,因为家里有块Arduino开发板。但估计实现起来难度太大:摄像头的驱动问题,视频解码,还要卡考虑网络通信问题……还是用块带操作系统的板子(树莓派一类)比较方便。
最后选择了现成的WR703n,板子用的是AR9331方案,如图。可以运行OpenWRT发行版。
材料:
- WR703n裸板一块
- 某不知名摄像头一枚
- 摄像头模组一个
- USB线缆一条
- 网线一条、电源线一条
硬件改造:
拆开行车记录仪,慢慢取下摄像头,发现摄像头并没有标注出任何型号或信息。我以为主控芯片是在塑料壳里面的,就作死把摄像头后面打开了,结果露出了感光元件和镜片……
记录仪的板子上印着L600_MB_V1.0-20140409。上网一搜看看这是什么型号,结果直接把板子的pcb文件找出来了,晕死,得来全不费功夫。(为避嫌,不公布链接。需要pcb文件的同学请自行百度云,友情提示:艾莱卡机种资料/L系列/L600/L600_V1.0-20140409生产资料/PCB/L600_MB_V1.0-20140409.pcb)。
为了让摄像头工作,需要一个对应的摄像头模组(我使用的是CNFB_129)。取下摄像时请小心,以免伤到排线。
做一条PIN口转USB的线缆(具体接线方法请自行搜索,不同模组对应PIN口数不同,接线方法也不一),直接连接到电脑上,测试一下工作是否正常。
摄像头工作正常,这里可以记下摄像头分辨率、FPS以及支持的格式等信息,方便之后配置mjpg-streamer时使用。(Linux可以通过luvcview软件来获取上述相关信息。)
至此,摄像头部分改造完毕。
系统编译:
拉取一份OpenWRT源码(我使用的是15.05分支Chaos Calmer),本机安装好编译工具及相关依赖即可。
注意:如果换过(WR703n)板子的FLASH,需要修改这里的两处配置文件:
- target/linux/ar71xx/image/Makefile
- tools/firmware-utils/src/mktplinkfw.c
具体请参见OpenWRT的wiki:https://wiki.openwrt.org/toh/tp-link/tl-wr703n#mb_flash_mod
添加对应驱动和mjpg_streamer等。因为板子内存比较小,估计装好驱动之后剩不下太多空间了,所以其他软件能不装就不装。
make world……
找到编译好的固件,烧写到板子上即可。
连接到开发板,看了一下可用空间……果不其然只剩下145kb。
配置mjpg-streamer:
lsusb,可以看到开发板已经正确识别出摄像头设备。开始配置mjpg-streamer。
把之前调试时的相关信息填入mjpg-streamer配置文件,重启服务。
接着访问开发板的8080端口,不出意外的话应该可以看到画面了。
至此,已经在本地搭建了一个监控&&直播平台。
参考:
- megapixel camera module – STMicroelectronics
- Arduino Based Camera
- TP-Link TL-WR703N [OpenWrt Wiki]
- mjpg-streamer documentation
- Webcam with the Linux UVC driver [OpenWrt Wiki]