admin管理员组文章数量:1531510
2024年5月5日发(作者:)
基于Android平台的WIFI控制系统的设计与实现
杨洪涛;王英卓;杜娟
【摘 要】为实现基于Android平台的WIFI控制系统的设计,采用STM32F103C8增
强型芯片作为节点控制,节点传感器模块与WIFI模块采用串口协议通信,软件部分设计了终
端UI,规划了无线通信协议数据帧结构和串口数据帧结构,通过Socket网络编程,实现了智
能平台通过WIFI对风扇的控制,最终完成了基于Android平台的WIFI控制系统的设计.实
验证明:该系统运行稳定,有很强的扩展性和可移植性.
【期刊名称】《北京工业职业技术学院学报》
【年(卷),期】2016(015)003
【总页数】7页(P10-16)
【关键词】Android;WIFI;智能;控制
【作 者】杨洪涛;王英卓;杜娟
【作者单位】北京工业职业技术学院电气与信息工程学院,北京100042;北京工业职
业技术学院电气与信息工程学院,北京100042;北京市丰台区第二中学信息中心,北京
100071
【正文语种】中 文
【中图分类】TN-47
信息网络时代的到来,科技的不断进步,尤其是WIFI技术、Zigbee技术、蓝牙技
术、3G/4G移动通信技术等无线通信技术的大发展,催生了各种智能终端蓬勃发展。计
算机处理技术的发展、嵌入式技术的发展、芯片制作工艺的精密化都为智能终端的持续发
展提供了可能性。以Android 操作系统为代表的智能平台,因为其开源性和智能性,迅
速成为受用人数众多的智能平台,广泛应用于各种智能化设备中。将智能平台与控制系统
组合在一起,不仅智能平台具有便携能力,可以实现真正的移动的通信方式,其功能也根
据现实的应用场景有了更多的创新。
本文成功实现了一种基于Android手机的WIFI控制风扇系统。系统中Android 手
机可利用自身的WIFI与其它控制装置进行交互并实施控制。控制装置采用
STM32F103C8增强型模块做为硬件控制模块[1],在硬件平台上传感器与处理器通过串
口通信的协议实现。在智能终端设计了UI界面,规划了WIFI通信协议数据结构和串口
间通信协议,为了实现WIFI控制风扇的应用,需对通信协议的实现进行Android
Socket网络编程[2-3],完成了Android平台与控制设备之间的数据传输,实现了
Android平台对风扇模块的控制。手机做为智能平台,不仅让智能平台有了更多的选择性,
还可以在手机平台通过WIFI控制开发更多的控制应用。如果Android平台添加Zigbee、
蓝牙、GPRS、3G/4G等其它无线控制模块,可大大拓展智能控制的应用领域,将对我们
的工作方式及生活方式产生重大影响。
基于Android平台的风扇控制系统包括智能终端平台、控制节点。系统的总体结构
如图1所示,图中WIFI模块和风扇模块共同组成控制节点。智能终端平台通过WIFI和
节点的WIFI模块进行通信;节点内部,WIFI模块和风扇模块通过串口通信进行数据的透
传。
系统工作过程描述如下:
(1)网络构建。对控制节点进行设置,让其具有无线访问接入点Access Point(AP)的
角色,智能终端配置静态IP,让其和AP在同一网段,构建WIFI网络。
(2)智能终端平台。编写应用程序,将Socket数据包通过WIFI发送到控制节点,控
制节点解析数据,分析WIFI数据协议帧中传感器数据[4]。
(3)控制节点。解析传感器数据中相应字段,通过串口透传到风扇模块,解析后风扇
模块按照解析内容做出低速、高速、停止的动作。也可将传感器电路的信号状态通过串口
传递给WIFI模块,之后再通过WIFI网络传给智能终端平台。
系统的硬件主要包括核心控制电路、WIFI通信电路、风扇控制电路,此外还包括电
源电路和时钟电路等[5]。这里我们重点分析前三者。
2.1 核心控制电路
核心控制电路设计采用STM32F103C8增强型芯片,如图2所示。该芯片通过PA口
实现2组串口控制引脚的连接。其中串口1和风扇控制电路连接,可以接收风扇传感器
电路的状态信号以及发送控制信号给风扇控制电路;串口2和WIFI通信电路连接,将传
感器数据发送到串口2实现WIFI透传。
2.2 WIFI通信电路
本模块设计采用HF-A11集成模块。该模块主要功能是通过WIFI和智能终端平台通
信,完成和STM32F103C8增强型芯片的串口2透传通信。主要的电路模块包括WIFI天
线接口、UART接口、电源接口和外围电路。该模块硬件结构如图3 所示。
控制节点采用WIFI透明传输模式,在此模式下,所有收发数据都在串口与WIFI接
口之间做透明传输,不做任何解析。控制节点设置为AP模式,负责热点的建立及传感器
数据的透传,其配置方法类似于一般路由器的AP模式配置方法。假如控制节点的透传地
址配置为192.168.1.120,只需将智能终端中的WIFI接入到当前AP热点后,再将其地
址设置为静态192.168.1.120,即可接收WIFI模块数据。
2.3 核心控制电路和WIFI电路交互原理
核心控制电路和WIFI电路是节点中重要的硬件电路,其交互原理如图4所示。
系统上电启动后,首先核心控制电路中的串口1进行初始化,开启接收中断信号,串
口1和风扇控制电路连接,等待接收风扇传感器电路的状态信号,并准备好以便发送控制
信号给风扇控制电路;其次串口2初始化,开启接收中断,串口2和WIFI通信电路连接,
准备让风扇传感器数据和串口2实现WIFI透传;再次WIFI模块进行初始化。全部初始
化完毕后,开启全局中断,循环检测是否通过串口1接收到风扇传感器电路状态信号信息:
如果接收到了,则将接收到的数据打包发送给串口2;如果没有接收到,则检测是否接收
到串口2的透传信号;如果接收到了,则将接收到的数据发送到串口1,再把控制信号发
送给风扇控制电路让其停止、低速和高速运行;如果没有接收到串口2的数据,则将再次
循环检测是否接收到串口1的数据,直到收到为止。
2.4 风扇控制电路
风扇控制电路的处理器选用STM8S103F3,此电路和WIFI通信电路通过并口P1,
P2相连,通过此电路中的核心芯片STM8S103F3对传感器电路控制和交互,通过解析后
的传感器输出数据,控制风扇的IO,以达到控制风扇的作用。通过STM8开发工具IAR
SWSTM8,可以进行在线仿真和在线调试。
风扇控制电路的原理如图5所示,系统初始化包括初始化时钟、初始化定时器为
PWM模式、初始化IO。之后,串口初始化,开启全局中断,判断是否接收到串口数据:
如果接收到串口的数据,则处理接收到的数据,并控制风扇的IO;如果没有收到串口的
数据,则发送当前风扇的状态(停止、低速、高速)到串口。之后通过WIFI通信电路发送
给智能终端,在智能终端上的界面显示出来。
基于Android的WIFI风扇控制系统的软件设计包括对Android上层UI界面设计和
用WIFI实现风扇控制的程序设计。应用实现的硬件环境要求Android设备(手机、平板
等),系统版本为2.3以上,软件采用JDK + Eclipse + SDK + ADT[6]。
3.1 通信协议
这里,定义了数据协议帧的结构和传感器发送给串口数据帧的结构。数据协议帧的定
义,考虑了网络的拓展,考虑了不同传感器类型,预留了保留字节,让通信协议传输的内
容有了现实意义;传感器发送给串口的数据包让不同的传感器数据有了统一的格式,对数
据的处理有统一性。
3.1.1 数据协议帧
通信协议的一帧数据定长46字节,数据协议帧的数据结构如下:
u8 DataHeadH; //包头0xEE
u8 DataDeadL; //包头0xCC
u8 NetID; //所属网络标识01(ZigBee) 02(IPv6)03(WIFI)04(Bluetooth)05(RFID)
u8 NetInfoChnanelList[18]; //WIFI 热点名称(不到18 个字节数据放入低字节)
u8 NodeNwkAddress[4]; //节点IPv4 地址(32bits)//保留WIFI 固件暂不支持获取
IP
u8 NodeFamilyAddress[4]; //服务器IPv4 地址(32bits)
u8 NodeType; //节点类型(0:AP,1:STA)
u8 NodeState; //节点状态(0:掉线,1:在线)
u8 NodeDepth; //Socket 通讯端口号高字节
u8 NodeLinkRSSI; //Socket 通讯端口号低字节
u8 NodePosition; //节点位置(同ZigBee 部分)
u8 SensorType; //传感器类型
u8 SensorIndex; //传感器ID
u8 SensorCMD; //传感器命令序号
u8 Sensordata1; //传感器数据1
u8 Sensordata2; //传感器数据2
u8 Sensordata3; //传感器数据3
u8 Sensordata4; //传感器数据4
u8 Sensordata5; //传感器数据5
u8 Sensordata6; //传感器数据6
u8 DataResv1; //保留字节1
u8 DataResv2; //保留字节2
u8 DataEnd; //节点包尾0xFF
3.1.2 传感器通信协议
根据不同的应用,可以有不同的传感器类型,为了能够将传感器采集的数据统一处理,
我们需要统一规定传感器发送串口的数据包。
(1)传感器发送串口数据包
传感器发送给串口的数据包格式如表1所示。其中,该串口参数设置为波特率
115200,数据位8,停止位1,无校验位。
说明:
SOF 固定为0xEE 0xCC,标志一帧的开始;
Sensor type 根据不同的传感器类型定义;
Sensor index 固定为 0x01;
Cmd id 固定为 0x01;
Data 为6Byte传感域,见表2传感器输出数据;
Exten data 为2Byte扩展数据域;
END 固定为0xFF,标志一帧的结束。
(2)传感器说明
根据现实应用,传感器部分可以是磁检测传感器、光照传感器、红外对射传感器、烟
雾传感器等等,这些模块在硬件层面统一接口接入,它们的WIFI通信电路和核心控制电
路可以相同。本设计用到了风扇传感器模块,传感器说明如表2所示。
3.3 UI界面设计
UI界面设计需做以下工作:
(1)设计布局应用程序界面
在res->layout目录下创建界面布局文件Activity_;
(2)布局框架图6所示,整体采用的是相对布局RelativeLayout。
3.4 用WIFI实现风扇控制的程序设计
编写WIFI_类,对一帧风扇数据进行处理,通过Handler与UI进行交
互,其程序流程如图7所示。
WIFI_类编写,关键代码如下:
@Override
public void run() {
while (flag) {
datagramPacket = new DatagramPacket(buf, );
if (datagramPacket != null && datagramSocket != null) {
try {
e(datagramPacket);
} catch (IOException e) {
tackTrace();
}
addr = ress().getHostAddress();
byte[] packetdata = a();
int len = gth();
// packetdata数据包数组长度与len的长度不一定相等,后为无效数据取其前面一
段有效数据
for (int i = 0; i < len; i++) {
data[i] = packetdata[i];
}
FanDataProcess();
}
}
}
/**
* 对一帧风扇数据进行处理 通过Handler与UI进行交互
*/
private void FanDataProcess() {
Message msg = ();
if (data[34] == 0x12 && == 46) { // 判断该数据帧为风扇
Bundle b = new Bundle();
byte[] fandata = new byte[46];
fandata = data;
eArray("fandata", fandata);
ing("addr", addr);
= WHAT_FAN;
a(b);
if (mHandler != null) {
ssage(msg);
}
}
}
Android客户端和STM32程序流程简图如图8所示。Android客户端和STM32之
间通过socket实现通信,结合应用以及 Android IPC通信机制[7],利用
Service,Broadcast Receiver,Activity这3个Android组件进行Socket通信模块设计。
主程序界面通过Handler Message更新界面UI。
Android客户端通过Socket的通信方式与STM32节点建立连接,并获取与节点通
信的Socket,触发界面按钮给Socket服务发送广播,Socket Receiver收到后启动新进
程,将指令加入到Socket中一起传递给STM32节点,与此同时读取STM32返回信息,
此时进程将会把该信息以广播方式发送回原界面里的Receiver中,界面得以更新。
3.5 在手机终端上测试运行程序
测试步骤如下:
(1)首先给节点供电,并配置好节点AP;
(2)手机端配置WIFI静态IP,连接到AP,和AP建立无线局域网;
(3)智能终端运行程序;
(4)点击“1档”,手机界面如图9a所示,界面处于慢速状态,同时风扇低速旋转;
(5)点击“2档”,手机界面如图9b所示,界面处于快速状态,同时风扇高速旋转。
本文提出了一种基于Android平台的WIFI风扇控制系统的方案,通过测试,该系统
能够很稳定的运行。文中对系统的硬件设计和软件设计进行了详细的阐述。该系统通过无
线WIFI进行节点控制,不需要布线,具有很好的扩展和可移植性,节约了成本,有广阔
的应用前景。系统中Android平台也可以利用Zigbee、蓝牙、GPRS等其它无线控制模
块,与其它传感器模块进行信息交互,可拓展应用于各种智能控制领域。
【相关文献】
[1] 张逢雪,王香婷,王通生,等.基于STM32的WIFI局域控制模块的实现[J].自动化技
术与应用,2011,30(8):98-101.
[2] 刘建华,田岁苗,赵勇.基于Android的智能家居系统设计[J].西安邮电学院学
报,2013,18(4):71-74.
[3] 张秋波.基于Android手机和WIFI的网络定时开关的设计与实现[D].长春:吉林大
学,2015.
[4] 王朝华,陈德艳,黄国宏,等.基于Android的智能家居系统的研究与实现[J].计算机
技术与发展,2012,22(6):225-228.
[5] 贾阳静,邹念育,雷冬鸣,等.基于Android和WIFI通信的智能家居系统设计[J].大连
工业大学学报,2016,35(1):67-71.
[6] 杨丰盛.Android应用开发揭秘[M].北京:机械工业出版社,2010.
[7] 杨丰盛.Android技术内幕:系统卷[M].北京:机械工业出版社,2011.
版权声明:本文标题:基于Android平台的WIFI控制系统的设计与实现 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1714840218a421577.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论