资源描述
智能家居晾衣架设计说明
15
2020年4月19日
文档仅供参考
Kinoma Create智能家居-晾衣架设计说明
前言
本作品的亮点在于,采用HTTP服务器,WebSocket服务器进行Web端,手机App端多客户端与Kinoma远程通信,底层控制层与数据层分离,模块化开发,因此我们的作品在硬件和软件上均具有可拓展性。
智能家居的概念在现下是非常热门的话题,所谓智能家居是以住宅为平台,利用综合布线技术、网络通信技术、 安全防范技术、自动控制技术、音视频技术将家居生活有关的设施集成,构建高效的住宅设施与家庭日程事务的管理系统,提升家居安全性、便利性、舒适性、艺术性,并实现环保节能的居住环境。
Kinoma Create有着开放的开发环境,开发者能够将她们的理念融入到Kinoma Play软件,从创立一个嵌入操控界面的程序到设计一整套应用程序。Kinoma Create应用为在Mac 和 Windows系统上的Kinoma开发提供了应用环境。Kinoma应用程序采用的编写语言是Kinoma Play Script (KPS)。与HTML5一样,都使用JavaScript语言,为开发者提供了一个熟悉的起点。优化的KPS运行时间能提供高性能、多媒介、可移动和集成的应用体验。KPS最大的创新是它对传统的事件驱动编程模式进行转换,KPS应用遵循内容驱动模式,在这种模式中,首要的任务是收集信息用于显示,而不是显示信息和对事件进行回应。这种方式更好地反应出当今连接式的应用程序重点,实现开发的简化。
系统整体框图如下:
图1 系统整体框图
第一章:硬件模块
硬件部分主要有以下器件组成:
电源稳压模块:S-350-24,输出24V直流稳压为电机供电,经7812,7805转为5V稳压为系统供电。
Kinoma Create
微处理器:STC89C52
温湿度传感器:DHT11
光敏传感器:TLS2561
电机控制模块:控制器,步进电机
机械部分:木板,木条,油漆,螺钉,渔线
运动控制模块:微动开关,G6K-P-2Y欧姆龙继电器
采用折叠支架设计,步进电机配转轴将圆周运动转换为直线运动,卷绕绳子使衣架折叠伸缩
硬件框图如下:
温度传感器
湿度传感器
光敏传感器
微处理器
Kinoma
手机App端
电脑web端
电机驱动器
限位开关1
限位开关2
图2 硬件框图
微处理器获取到各类传感器的数据,然后经过串口上传给kinoma,kinoma根据获取的温湿度光照数据与设定的双阈值的比较来自动控制电机的运动,若是湿度大于80就会执行收缩衣架的程序,若是湿度小于60就会执行伸展衣架的程序,这两种运动都是经过控制电机来实现的,并根据限位开关的状态来决定电机的运行时间。同时kinoma会经过服务器把温湿度和衣架状态发送给手机app端和电脑web端,并接收它们返回的指令。
第二章:软件模块
本系统软件模块是基于Kinoma studio开发的,主要有底层电机、传感器控制BLL以及rack-client和rack-server两套软件。
软件框图如下所示:
微处理器循环采集传感器数据
上传温湿度数据和衣架状态
kinoma显示温湿度和衣架状态
发送数据给web端、手机端
手机App端自动/手动模式切换
手机App端/web端显示温湿度
Kinoma控制电机
手机App端/web端控制指令
更改手机app端按键状态
自动/手动模式?
客户端指令?
图3 软件框图
2.1 rack-server
2.1.1 HTTP服务器
集成了HTTP服务器,在10001端口映射sitemap,当浏览器向服务器发送request请求时,服务器经过sitemap向浏览器做出相应的response。具体而言,设置了如下两个handler来处理request:
<handler path="/envData">
<behavior>
<method id="onInvoke" params="handler,message"><![CDATA[
message.status = 200;
message.responseText=JSON.stringify(envData);
message.setResponseHeader("Content-Type", "application/json");
]]>
</method>
</behavior>
</handler>
第一个handler设置response的头,类型以及状态编码,使得在html网页中利用JQuery中的$.getJSON方法能够获取从传感器传回的JSON数据。分别在网页的两个chart中进行显示。
<handler path="/StateCtl">
<behavior>
<method id="onInvoke" params="handler,message">
<![CDATA[
if (message.method == "GET") {
message.setResponseHeader("Content-Type", "application/json");
message.responseText = message.query;
if(message.responseText=="state=1")
trace("1");
else
trace("0");
}
else {
message.status = 405; // method not allowed
} ]]>
</method>
</behavior>
</handler>
第二个handler与第一相反,用于Kinoma Create获取服务器传来的JSON数据,代表按钮状态,做判断后可将返回值赋予控制电机的全局变量。与之对应,在html中用JQuery监听按钮动作,并用$.ajax来发送一个JSON格式的控制数据,代表此时的衣架状态。
2.1.2 Websocket服务器
集成了Websocket服务器,用于多客户端的指令接收,具体而言,它能够经过以下语句来接收来自客户端的控制指令,解析其中的指令,然后调用相应的函数改写底层 bll 文件中的状态数据,从而控制电机进行相应的运动。
conn.onmessage = function( e ) {
application.distribute( e.data );
};
同时经过以下语句不断地调用底层bll 文件中的control_motor函数来采集温湿度数据,并得到返回的温湿度数据以及此时的衣架状态信息。这些数据一方面经过 http 服务器发送给 web 端显示,一方面经过Sendtoclient函数发送给 app 服务器,最后改变此时 kinoma 界面上的温湿度显示以及衣架状态显示。
application.invoke(new MessageWithObject ( "pins:/motor/control_motor? repeat=on& callback=/gotAnalogResult &interval=500"));
function onInvoke( handler, message ){
var result = message.requestObject; //data from bll(sensor)
envData.TData=result.TData; //data which sened to HTTP server
envData.RHData=result.RHData;
application.distribute( "Sendtoclient", result );
application.distribute( "onTemValueChanged", result );
application.distribute( "onHumValueChanged", result );
application.distribute( "rackStateChanged", result );
}
2.2 rack-client
2.2.1手机app端
手机app端经过 Websocket服务器实时获取温湿度和衣架状态数据,不断地更新 app 端的显示以及按钮情况。如下图,温湿度数据是不断接受服务器端发的数据而不断刷新的。而控制按钮是能够捕捉底层对衣架进行的操作,即当衣架的状态发生改变后,控制按钮会变为黄色,说明衣架状态改变过,而且已经达到稳定,此时你能够按下该键来控制衣架进行伸缩。而当衣架正在运行中时,按钮的颜色是蓝色,说明此时,衣架正在进行某一动作,不适合对其进行操作,待衣架稳定,按键重新变为黄色时才能够进下一步行操作。
此时衣架正在运动,不适合控制 此时衣架处于稳定停止状态,能够控制
图4 手机app界面
当用户选择了 Manual mode 模式(手动模式),就能够经过 FOLD/STRETCH按键来对衣架进行远程操控,这是经过向服务器发送相应的指令来实现的,主要程序如下:
<method id="clicked" params="content, action"><![CDATA[
var serversTable = this.serversTable;
for ( var uuid in serversTable ) {
var server = serversTable[ uuid ];
server.conn.send( action);
}
2.2.2 网页web端
网页web端设计:使用html5中canvas 和RGgraph包生成两个动态图表,利用JQuery和Ajax获取和发送JSON数据与Kinoma Create进行数据通讯。布局采用CSS+Bootstrap使界面简洁明了,同时支持手机浏览器与电脑浏览器。
图5 网页web端界面设计
2.3 底层BLL设计
底层bll主要是对传感器数据的采集以及对电机的控制,需要判断是否自动,控制端是否有指令。逻辑流程图如下:
图6底层BLL逻辑流程图
至此,本智能家居-晾衣架减少完毕,综上所述,本系统涵盖了手机客户端、网页web端、控制软件设计、底层硬件设计、机械设计等知识。具有较强的稳定性和实用性,更关键的是其扩展性很强,今后能够将更多的家居产品连接到kinoma上,并能够经过网页、手机远程控制,最终实现构建一整套智能家居系统。
Dream_High
-8-10
展开阅读全文