王维 康世英 张忠
摘要:现有的家居系统仅实现了对环境信息的监测,缺乏智能性。针对该问题,本系统基于FS2410开发板,采用Linux操作系统,使用C语言开发,利用USB摄像头采集图像,Coretx-M0开发板采集温湿度、光照等环境信息,借助Zigbee模块发送到FS2410开发板搭建的服务器,用户可以通过Web浏览器和Qt界面进行远程实时监控,同时在环境信息不符合用户的需求时能进行自动调节。
Abstract: The monitoring of environmental information is implemented in the existing home system, but the intelligence is lacked. For this problem, this system adapted Linux operating system, FS2410 development board, C language, and used USB camera to collect images, Coretx-M0 development board to collect environmental information such as temperature, humidity, light and etc. The data is sent to the server built by FS2410 development board with Zigbee modules, and the server is sent to the client, users can remote real-time monitoring through Web browser and Qt interface. At the same time, the environmental information can be automatically adjusted when it does not meet the needs of the user.
關键词:智能;嵌入式Linux操作系统;FS2410;Cortex-M0;自动调节
Key words: intelligence;embedded Linux operating system;FS2410;Cortex-M0;automatic adjust
中图分类号:TP368 文献标识码:A 文章编号:1006-4311(2020)05-0258-02
0 引言
随着嵌入式技术、物联网技术、无线通信技术等技术的飞速发展,智能家居得到了广泛的应用。智能家居场景联动是智能家居系统提供的一种自动化服务,通过智能设备感知环境及场景变化,并自动执行相应的动作,全面提升用户体验[1]。依据该思想,本系统使用摄像头采集室内视频画面,使用ARM Cortex-M0内核的LPC111C14C开发板采集温度、湿度和光照等环境信息;然后将硬件采集到的信息通过FS2410传输给PC机的Qt界面,同时能够对室内环境条件进行自动调节:当温湿度传感器采集的温度超过设定温度,蜂鸣器报警,同时自动开启电机风扇实施降温处理;当光敏传感器采集到的光照信息小于设定值时,蜂鸣器报警,自动打开LED灯进行光照增强处理。本系统具体硬件连接框图如图1所示。
1 系统软件设计
1.1 系统功能分析
本智能家居监控系统主要包括以下模块:
1.1.1 M0模块
M0开发板负责采集室内的温度、湿度和光照等信息,借助M0开发板主板集成的ZigBee模块将数据借助协调器发送给开发板。
1.1.2 摄像头模块
摄像头通过USB接口连接到FS2410开发板,完成实时图像采集。
1.1.3 服务器模块
FS2410开发板作为服务器,需要移植JPEG库,使用C语言编程。该模块主要完成温度、湿度、光照、图像的采集信息,将摄像头采集的YUYV格式图片转换为RGB24和JPEG,将采集的信息通过TCP协议传给远程PC机的图形界面,当温度、光照信息与设定信息不符时,发送信息给M0开发板,控制蜂鸣器、电机风扇或Led灯等硬件设备。
1.1.4 客户端模块
该模块在PC机上使用QT语言开发,主要完成登陆、与服务器连接、显示温度、湿度、光照和图像信息,同时设置房间的温度、湿度和光照信息,并进行自动调节。
1.2 系统详细设计
1.2.1 服务器模块(server)
服务器模块主要是实现数据的解析和传递并完成对所有设备的控制。
首先,使用socket通信技术搭建服务器,创建socket套接字,然后用bind函数绑定端口号和本地地址,用listen函数监听是否有客户端请求,如果发现客户端有请求,用accept函数接收请求并处理,使用TCP传输协议,保证各个客户端与服务器之间通信的可靠性。由于存在多个设备和客户端,使用select函数同时监听多个请求。为了解决信息处理的并行性,用pthread_create线程函数。
1.2.2 摄像头模块
负责控制摄像头进行图像采集,将采集的yuyv格式的图像数据转换为.jpeg格式,供其他设备读取显示。本功能依靠V4L2提供的API实现。video4linux2(V4L2)是Linux内核的视频设备驱动程序,它为Linux视频设备访问提供了通用接口,在Linux系统中,V4L2驱动的视频设备在用户空间通过各种ioctl调用进行控制,并且可以使用mmap进行内存映射[2]。具体转换算法如下:
①使用camera_open()函数打开摄像头准备采集视频,使用camera_init()函数初始化,将摄像头空间映射(nmap)到用户空间,将申请到的缓冲区逐个入队,之后用start_camera()函数启动摄像头开始采集,并用camera_dgbuf()缓冲区去保存,以上采集到的图片是yuyv格式,yuyv是不可打开的图片格式,需要借助yuyv图片查看器才能查看。
②由于本系统需要在远程PC机端显示,因此用yuv_to_rgb()函数将采集到的yuyv图片转化为rgb格式,用yuv_to_jpeg()函数将图片转化为jpeg格式,经过网络传输给PC机端的QT界面显示。
③采用入队、处理、出队的方式使用while循环保持视频的持续采集。
④停止使用摄像头时,用stop_camera()接口函数关闭摄像头,停止图像数据的采集,同时用camera_mmup()解除映射关系。
1.2.3 M0模块
由于Linux操作系统中的设备看成文件处理,因此对M0开发板的操作在完成相应的初始化工作后,整个过程即对文件进行读写操作。M0开发板主要功能为获取温湿度和光照信息,在接收到环境数据包后,对数据进行解析,该数据包由36位二进制位构成,其中第1位为id位,表示开发板主板编号信息,第4~5位为tmp位,表示温度信息,第6~7位为bum位,表示湿度信息,第20~23位为light位,表示光照信息[3],因此取出这些位对应的数据即可得到温度、湿度和光照信息。在温度达到设定值或光照不足时,在发送数据中进行相应设置。发送命令包的第1位id表示M0开发板主板编号,第2位len表示接收的数据长度,第4位opid表示设备命令(0~10)[3]。M0开发板获取的传感器数据借助USB转串口传输到FS2410开发板。
①传感器获取数据模块。
M0开发板的传感器获取数据后借助协调器使用ZigBee协议发送给M0,M0使用USB转串口将数据发送给FS2410,具体获取数据的过程如下:首先打开串口0,然后对串口初始化,读取串口信息,即可获取温、湿度、光照信息。
②控制模块的实现。
当温度、湿度或者光照信息不符合用户的需求时,可以实现对设备的自动控制,使环境信息满足用户需求。该模块主要包括对Led灯、风扇、蜂鸣器的控制,实现方法基本相同,仅以风扇为例进行讲解。
当采集到的温度信息不满足用户需求时,系统会自动发送控制命令给M0开发板,启动电机风扇降温,当温度信息达到用户需求后,电机风扇停止工作。
1.2.4 客户端模块
QT模块主要搭建可视化人机交互界面,包括显示图片、温度、湿度、光照信息及设置环境信息等功能,方便用户的查看和调节。
此模块主要功能包括:
①信息显示。
用户登陆需通过on_login_button_clicked()函数验证,通过端口和IP地址调用connectToHost(QHostAddress(“172.19.9.109”),9999)与服务器连接,在图片经过socket通信时,用main_socket->write(request_a,30)函数请求接收图片,确定接收图片完整后用main_socket->write(request_a,strlen(request_a))获取图片的大小,最后用pixmap_loadFromData((const uchar *)picbuf,piclen,”JPEG”)显示获取的图片。同理,温湿度、光照信息通过自定义接口函数,main_socket->read(response_env,sizeof(response_env))获取。
②远程控制。
此部分主要实现对环境信息的处理及响应。根据设定的温、湿度和光照信息自动监控,达到设定值时蜂鸣器报警,同时进行自动调节。光照强度的调节借助on_lab_pushButton_clicked()函数,当光照太强时关闭LED燈,太弱时打开LED灯;温度调节借助on_air_ctr_pushButton_clicked(),当温度达到设定值时,需要开启风扇进行降温处理。
1.3 系统测试
本系统使用640*480的USB接口V4L摄像头、FS2410开发板、M0开发板及相关数据线,使用一台PC机或者笔记本作为客户端,用网线连接构成局域网,然后通过超级终端调试程序。将摄像头和M0板采集到的环境信息和视频数据通过TCP协议传输到PC机,在QT界面显示。
通过测试,代码成功运行。登陆系统后即可实时采集图像、温度、湿度和光照信息,不间断地传输到前台显示界面进行实时显示。
2 结束语
在FS2410硬件平台上基于Linux操作系统采用C/S模式构建了智能监控系统,借助M0开发板实时获取温度、湿度和光照信息,借助摄像头实时监控,并能实现温湿度和光照的自动调节功能。该系统能够在智能家居领域发挥较好的智能监测和调节作用。
参考文献:
[1]肖丁,王乾宇,蔡铭,李秀.智能家居场景联动中基于知识图谱的隐式冲突检测方法研究[J].计算机学报,2019,42(06):1190-1204.
[2]黄新,梁洋洋.基于V4L2嵌入式视频监控系统[J].仪器仪表用户,2017(5):46-50.
[3]屈鹏.基于ARM和Linux的嵌入式智能家居网络视频监控[D].天津理工大学,2017.