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.

本文标签: 控制传感器数据风扇串口