0 前言
随着社会的发展,人们对安全防范工作日益重视,监控产品也从以前只在重要单位使用发展到各个领域都在应用。监控产品的技术也从模拟向数字和网络技术发展。网络监控产品使用较多的是硬盘录像机,但价格比较高。有些场合对监控的要求并不高,也不需要录像,但有时又要在远程了解一下当地的画面,这时就希望使用一种低价的,又能实现远程操作的监控产品。所以就计划设计ipcamera(网络照相机),它能够接受网络或手机短信发来的命令进行拍照,并将照片发布到web服务器上或手机上供用户浏览。
1 ipcamera系统总体设计
ipcamera系统的总体设计思路是:采用arm9作为系统的处理器,利用普通usb摄像头完成图像采集。系统设计一块网卡和一个gprs模块,用户可以根据需要决定选用其中的一种、或者二种同时使用。手机能够通过gsm网向ipcamera的gprs发送拍照控制命令,系统会自动将拍下的照片通过gprs模块发回给手机;网络用户可以利用telnet协议向ipcamera发送拍照控制命令,然后再利用浏览器查看ipcamera上的照片。
2 ipcamera的硬件设计
在设计ipcamera时,考虑到系统的稳定性和成本等因素,因此将系统硬件设计为3个部分,即核心板、主板和gprs模块,如图1所示。www.51kaifa.com
核心板采用三星公司生产的s3c2410处理器;sdram采用2片hy57v561620at-h构成64m;将它连接到系统ngcs6,所以它的起始地址为:0x03000000。nand flash 采用samsung k9f1208芯片,flash芯片连接到系统的ngcs0,所以它的起始地址为:0x00000000。要系统从nand flash启动,应将s3c2410的om0和om1引脚都接地。
主板主要是一些接口电路。串行接口采用max3232芯片,由于本系统只使用一个串口,所以和s3c2410的txd0和rxd0相连,构成第一个串口电路。jtag接口直接由s3c2410处理器控制,只不过在连接电路上要加上接电阻。usb接口电路直接采用s3c2410内部的usb主机控制器,然后接上限流电阻和保险丝和usb插座。网卡采用ax88796-x86芯片,接在bank2的位置上,所以片选接处理器的ngcs2信号,其地址为0x200,所以io_base0、io_base1、io_base2三个引脚悬空,中断选用int2。网卡的逻辑地址是0x10000200。
gprs模块采用simcom公司生产的sim100-e芯片。通过第三个串口信号线txd2和rxd2和处理器相连接。
图1 ipcamera硬件结构图
3 ipcamera引导程序、操作系统和驱动程序
ipcamera引导程序选用韩国mizi公司开发的vivi。vivi必须经过裁剪、交叉编译、下载到ipcamera等几个过程。首先使用make menuconfig命令裁剪vivi,然后make命令编译生成vivi的二进制镜像文件,使用的编译器是armv4l-unknown-linux-gcc和armv4l-unknown-linux-as,最后使用jtag将vivi烧写到ipcamera的flash芯片上。
考虑到成本,以及系统对实时性的要求不高等因素,所以决定选用linux操作系统。目前发行的linux操作系统都能支持arm机的体系结构,所以只要根据平台的具体结构进行移植。系统移植主要包括建立交叉编译环境、修改内核源码、内核裁剪和内核编译4等个环节。内核裁剪时,要让系统包括telnet和ftp服务。telnet服务主要实现能够对ipcamera远程操作,ftp服务主要实现ipcamera的文件上传和下载。最后将编译好的内核映象文件利用vivi软件烧写到ipcamera的flash芯片上。www.51kaifa.com
ipcamera需要串口、usb、视频设备和网卡等多个设备驱动程序[2],由于这些设备都是标准设备,所以可以到厂家去下载相应的设备驱动源程序,然后交叉编译成linux下的驱动程序,最后通过insmod[3]命令向内核加载驱动程序。如:linux系统提供了视频设备的内核驱动video4linux(简称v4l),它为视频设备的应用程序编程提供一系列接口函数,所以usb摄像头
就可以采用v4l驱动程序。
4 ipcamera应用程序的设计
ipcamera主要包括3个应用程序,即:usb摄像头拍照、web服务和gprs操作控制等程序。这些应用程序都是用c语言来编写,然后通过交叉编译生成可执行文件。
4.1 usb摄像头拍照程序的设计
usb摄像头采用video4linux驱动,v4l图像采集的方法有两种,即overlay和mmap。本系统采用mmap,这种方法是通过将设备文件影射到内存的方法,直接通过指针操作内存的方式读取摄像头采集到的图像数据。控制拍照功能函数如下:
int cap(char * filename)
{┅
/***初始化设备***/
if (device_init(default_device, &vd, 0, 3) == -1)www.51kaifa.com
{ perror(“device_init: failed.。。”);
return -1; }
/***内存映射***/
if (v4l_grab_frame(&vd, 0))
return -1;
if (v4l_grab_sync(&vd))
return -1;
img = device_get_address(&vd);
/***读取图像数据***/
p=img;
for (i=0;i《pal_nc_height;i++)
for (j=0;j《pal_nc_width;j++)
{ tmpc=*(p);
*(p)=*(p+2);
*(p+2)=tmpc;
p+=3; }
/***转换图像数据格式,保存为jpg文件***/
if (write_jpeg(filename, img, 70, 0))www.51kaifa.com
return -1;
┅
}
4.2 web服务程序的设计
web服务是通过http协议与客户端通信,工作流程如图2所示。http是一个请求、响应协议,即客户端发出一个请求,服务器端则响应这个请求。http利用可靠的tcp协议连接,默认使用80端口。目前市场上有许多web 服务程序,但要将其移植到本系统中需要一定的工作量,所以可以设计一个简单的web服务程序。程序的主函数如下:
图2 web工作流程图
int main(int argc, char *argv[])
{┅
/*设置信号处理句柄*/
signal(sigchld, sig_ign);
signal(sigpipe, sig_ign);
┅
/*建立tcp流socket*/
if (argc 》 1 && !strcmp(argv[1], “-i”)) {
fclose(stderr);
handleconnect(0);
exit(0);
}
if((s = socket(af_inet, sock_stream, ipproto_tcp)) == -1) {
perror(“unable to obtain network”);
exit(1);
}
if((setsockopt(s, sol_socket, so_reuseaddr, (void *)&true,
sizeof(true))) == -1) {
perror(“setsockopt failed”);
exit(1);
}
server_sockaddr.sin_family = af_inet;
server_sockaddr.sin_port = htons(server_port);
server_sockaddr.sin_addr.s_addr = htonl(inaddr_any);
/*绑定监听端口*/
if(bind(s, (struct sockaddr *)&server_sockaddr,
sizeof(server_sockaddr)) == -1) {
perror(“unable to bind socket”);
exit(1);
}
/*设置允许客户连接数*/
if(listen(s, 8*3) == -1) {
perror(“unable to listen”);
exit(4);
}
/*侦听客户连接请求并进行处理*/
while (1) {
len = sizeof(ec);
if((fd = accept(s, (void *)&ec, &len)) == -1) {
exit(5);
close(s);
}
handleconnect(fd);
}
4.3 gprs操作控制程序设计
gprs操作程序主要任务是监视手机短信,然后根据短信决定具体操作。程序主要利用gprs的at命令和socket套接字来完成短信发送和图片传输。gprs操作程序主函数如下:
main()
{┅
{ /**根据条件拍照***/
if(takepicture==true)
{ remove(“1.jpg”);
rename(“2.jpg”,“1.jpg”);
┅
rename(“6.jpg”,“5.jpg”);
cap(“6.jpg”);
}
/**根据条件给手机发图片***/
if(sendpicture==true)
sendpictomob(“6.jpg”);
}
┅
}
5 结束语
在样机中,硬件由3部分组成,即:核心板、主板和gprs模块;引导使用vivi;操作系统采用linux2.6.0。系统经过测试,效果较好。本文作者创新点是:利用gsm网络和internet网络控制远程拍照,并将拍下的照片发布在internet供用户浏览。这种产品体积小、可靠性高、无需专人管理,非常适合于无人值守的环境。它将会有较好的应用前景。
面向高功率电动汽车充电应用的充电桩拓扑技术
同步和异步buck电路的对比
华为联手长安汽车 意图打造中国领先的智能电动汽车平台
赛米控推出最新MiniSKiiP IGBT功率半导体模块
润和软件成为openEuler黄金捐赠人,加速推进行业落地
基于ARM嵌入式IPCamera的设计与实现
变频器的使用方法及参数调整
雷军:小米已成为印度第三大智能手机厂商
计算机通信与网络v2 实验课程(23)
中国程序员和美国程序员有这五点差距
小米Max2和华为P9 Plus哪个好?强强对决只拿实力说话
手机行业寡头格局稳固 一众小厂家要经受严峻考验
UPS电池容量计算方法
什么是高精度ADC?
苹果现已在Apple Pay上线长安通卡 搭乘公共交通最低充值金额 5 元
电路和电容器介绍
SAC305锡膏在不同铜基板的焊接表现
基于AT89C51单片机的变频调速控制系统设计
iphone8什么时候上市?最新消息:iphone 8真机外观确认,有这六大新功能就无敌了!
CES2018 上的Hip Air可穿戴安全气囊