基于ESP8266的无线温度采集系统设计

2019-02-12 08:23袁铭
无线互联科技 2019年23期

袁铭

摘   要:文章设计了基于ESP8266的无线温度采集系统,主要针对温度采集系统的硬件系统和软件设计进行探讨和研究,重点研究了以CC2530单片机为控制芯片,以ESP8266-WiFi为无线通信芯片,把采集的温度数据进行无线发送。同时还研究了Android端的Socket通信,用于采集显示温度值。此系统具有方便、低功耗、距离远、设计简单等特点。

关键词:Android;CC2530;ESP8266;温度采集

1    无线温度采集系统

随着物联网短距离无线通信技术发展,在智能家居领域的应用越来越广泛,温度采集作为智能家居领域的重要部分,应用较多。单片机配合ESP8266WiFi芯片就能创建一个无线局域网,在安卓端开发软硬件交互APP,通过TCP/IP协议就可以建立一个无线温度采集系统。

2    整體方案

本系统通过温度传感器DHT11检测温度值,由单片机进行数据处理,通过串口与ESP8266-WiFi芯片通信,启动WiFi芯片和Android终端建立无线局域网[1]。即可把温度数据通过TCP/IP协议无线发送到Android端。系统整体框架如图1所示。

3    电路设计

3.1  温度传感电路

电路采用数字温度传感器DHT11,在精度要求不高的本系统中适用,采用单线半双工通信方式与CC2530单片机相连接。电路如图2所示。

图1  系统整体结构框架

DHT11串行数据传输格式为每次传送5个字节数据。按照高位在前,低位在后的顺序进行传送[2]。

3.2  ESP8266串口电路

ESP8266是基于WiFi协议的无线传输模块,采用串口与单片机进行通信,通过配置将其作为Access Point,提供无线接入服务,在此模式下允许其他无线设备与其进行WiFi通信。

4    软件设计

4.1  单片机程序

主要完成串口的初始化,通过发送AT指令设置ESP8266工作方式,同时监听并接收发送过来的查询指令,启动传感器采集温度数据并处理,通过ESP8266发送温度数据至Android端。主要代码如下:

void main(void)

{  InitUart();   //串口初始化

AT_CMD();  //发送AT指令

while(1)

{

Dht11();//启动DHT11

} }

4.2  ESP8266模块程序

ESP8266采用CC2530单片机控制,ESP8266作为一个收发器使用,发送无线数据至Android端,或者接收Android端的数据。下列代码主要用于配置ESP8266。

void AT_CMD()

{

UartSendString("\r\nAT\r\n",10);

UartSendString("\r\nAT+CIPMUX=1\r\n",19);

UartSendString("\r\nAT+CIPSERVER=1,8080\r\n",27);

}

单片机接收到Android端发送的指令后,判断是读取温度的指令'T',则调用发送函数发送温度数据,部分代码如下:

if(Recdata[9]=='T')

{ UartSendString("\r\nAT+CIPSEND=0,2\r\n",22);

UartSendString(temp, 2);}

4.3  Android端程序

本系统通信采用Socket,Socket原理就是客户端与服务端之间沟通的通道,服务端如果要向客户端发送数据,从输出流走专用通道Socket,这个快速通道一直连到客户端的输入流,客户端回复信息时,从客户端的输出流走专用通道Socket,回到自己的服务端[3-5]。用线程创建socket连接的部分代码:

class Connect_Thread extends Thread{

public void run(){

InetAddress ipAddress;

try {

//判断socket的状态防止重复执行

if (Socket == null) {

//如果socket为空则执行

//获取输入的IP地址

ipAddress = InetAddress.

getByName(iptoedit.getText().toString());

//获取输入的端口

int port = Integer.

valueOf(porttoedit.getText().toString());

//新建socket

Socket = new Socket(ipAddress, port);

//获取socket输入流和输出流

InputStream = Socket.getInputStream();

OutputStream = Socket.getOutputStream();

//新建一个线程读数据

ThreadReadData

t1 = new ThreadReadData();

t1.start();}}

catch (Exception e) {

e.printStackTrace();}}}

5    结语

本文主要阐述了利用ESP8266芯片进行温度数据无线采集的方案,将CC2530芯片作为主控芯片。在Android端设计简单的APP程序,和ESP8266進行无线通信,获取温度数据并显示。通过本文能了解系统的整体结构、Socket通信的基本原理以及如何使用ESP8266建立无线局域网的连接。

[参考文献]

[1]曹流圣,麻红昭.基于ZigBee和CDMA技术的智能家居系统设计[J].工业控制计算机,2014(6):80-81.

[2]赵金燕,杨秀娟,郎云雯,等.基于Zigbee技术的温湿度采集系统设计[J].电子设计工程,2013(6):15-17.

[3]吕红海.基于Android的智能家居无线控制系统的设计与实现[D].成都:电子科技大学,2012.

[4]邹丽.基于ZigBee技术的智能家居无线网络设计与实现[D].武汉:华中师范大学,2011.

[5]吴年京,黄波,张汗聪,等.基于Android手机平台的远程温度查询系统[J].数字通信,2013(3):94-96,100.

Design of wireless temperature acquisition system based on ESP8266

Yuan Ming

(Suzhou Industrial Park Industrial Park Branch, Jiangsu United Technical Institute, Suzhou Industrial Park Industrial Technology School, Suzhou 215021, China)

Abstract:A wireless temperature acquisition system based on Esp8266 is designed in this paper, and the hardware system and software design of the temperature acquisition system are discussed and studied. The CC2530 single chip microcomputer is used as the control chip and ESP8266-WiFi is used as the wireless communication chip to transmit the collected temperature data wirelessly. At the same time, the socket communication on the Android side is also studied, which is used to collect and display the temperature value. The system has the characteristics of convenience, low power consumption, long distance, simple design and so on.

Key words:Android; CC2530; ESP8266; temperature acquisition