袁銘
摘 ? 要:文章設(shè)計(jì)了基于ESP8266的無線溫度采集系統(tǒng),主要針對溫度采集系統(tǒng)的硬件系統(tǒng)和軟件設(shè)計(jì)進(jìn)行探討和研究,重點(diǎn)研究了以CC2530單片機(jī)為控制芯片,以ESP8266-WiFi為無線通信芯片,把采集的溫度數(shù)據(jù)進(jìn)行無線發(fā)送。同時(shí)還研究了Android端的Socket通信,用于采集顯示溫度值。此系統(tǒng)具有方便、低功耗、距離遠(yuǎn)、設(shè)計(jì)簡單等特點(diǎn)。
關(guān)鍵詞:Android;CC2530;ESP8266;溫度采集
1 ? ?無線溫度采集系統(tǒng)
隨著物聯(lián)網(wǎng)短距離無線通信技術(shù)發(fā)展,在智能家居領(lǐng)域的應(yīng)用越來越廣泛,溫度采集作為智能家居領(lǐng)域的重要部分,應(yīng)用較多。單片機(jī)配合ESP8266WiFi芯片就能創(chuàng)建一個(gè)無線局域網(wǎng),在安卓端開發(fā)軟硬件交互APP,通過TCP/IP協(xié)議就可以建立一個(gè)無線溫度采集系統(tǒng)。
2 ? ?整體方案
本系統(tǒng)通過溫度傳感器DHT11檢測溫度值,由單片機(jī)進(jìn)行數(shù)據(jù)處理,通過串口與ESP8266-WiFi芯片通信,啟動(dòng)WiFi芯片和Android終端建立無線局域網(wǎng)[1]。即可把溫度數(shù)據(jù)通過TCP/IP協(xié)議無線發(fā)送到Android端。系統(tǒng)整體框架如圖1所示。
3 ? ?電路設(shè)計(jì)
3.1 ?溫度傳感電路
電路采用數(shù)字溫度傳感器DHT11,在精度要求不高的本系統(tǒng)中適用,采用單線半雙工通信方式與CC2530單片機(jī)相連接。電路如圖2所示。
圖1 ?系統(tǒng)整體結(jié)構(gòu)框架
DHT11串行數(shù)據(jù)傳輸格式為每次傳送5個(gè)字節(jié)數(shù)據(jù)。按照高位在前,低位在后的順序進(jìn)行傳送[2]。
3.2 ?ESP8266串口電路
ESP8266是基于WiFi協(xié)議的無線傳輸模塊,采用串口與單片機(jī)進(jìn)行通信,通過配置將其作為Access Point,提供無線接入服務(wù),在此模式下允許其他無線設(shè)備與其進(jìn)行WiFi通信。
4 ? ?軟件設(shè)計(jì)
4.1 ?單片機(jī)程序
主要完成串口的初始化,通過發(fā)送AT指令設(shè)置ESP8266工作方式,同時(shí)監(jiān)聽并接收發(fā)送過來的查詢指令,啟動(dòng)傳感器采集溫度數(shù)據(jù)并處理,通過ESP8266發(fā)送溫度數(shù)據(jù)至Android端。主要代碼如下:
void main(void)
{ ?InitUart(); ? //串口初始化
AT_CMD(); ?//發(fā)送AT指令
while(1)
{
Dht11();//啟動(dòng)DHT11
} }
4.2 ?ESP8266模塊程序
ESP8266采用CC2530單片機(jī)控制,ESP8266作為一個(gè)收發(fā)器使用,發(fā)送無線數(shù)據(jù)至Android端,或者接收Android端的數(shù)據(jù)。下列代碼主要用于配置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);
}
單片機(jī)接收到Android端發(fā)送的指令后,判斷是讀取溫度的指令'T',則調(diào)用發(fā)送函數(shù)發(fā)送溫度數(shù)據(jù),部分代碼如下:
if(Recdata[9]=='T')
{ UartSendString("\r\nAT+CIPSEND=0,2\r\n",22);
UartSendString(temp, 2);}
4.3 ?Android端程序
本系統(tǒng)通信采用Socket,Socket原理就是客戶端與服務(wù)端之間溝通的通道,服務(wù)端如果要向客戶端發(fā)送數(shù)據(jù),從輸出流走專用通道Socket,這個(gè)快速通道一直連到客戶端的輸入流,客戶端回復(fù)信息時(shí),從客戶端的輸出流走專用通道Socket,回到自己的服務(wù)端[3-5]。用線程創(chuàng)建socket連接的部分代碼:
class Connect_Thread extends Thread{
public void run(){
InetAddress ipAddress;
try {
//判斷socket的狀態(tài)防止重復(fù)執(zhí)行
if (Socket == null) {
//如果socket為空則執(zhí)行
//獲取輸入的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();
//新建一個(gè)線程讀數(shù)據(jù)
ThreadReadData
t1 = new ThreadReadData();
t1.start();}}
catch (Exception e) {
e.printStackTrace();}}}
5 ? ?結(jié)語
本文主要闡述了利用ESP8266芯片進(jìn)行溫度數(shù)據(jù)無線采集的方案,將CC2530芯片作為主控芯片。在Android端設(shè)計(jì)簡單的APP程序,和ESP8266進(jìn)行無線通信,獲取溫度數(shù)據(jù)并顯示。通過本文能了解系統(tǒng)的整體結(jié)構(gòu)、Socket通信的基本原理以及如何使用ESP8266建立無線局域網(wǎng)的連接。
[參考文獻(xiàn)]
[1]曹流圣,麻紅昭.基于ZigBee和CDMA技術(shù)的智能家居系統(tǒng)設(shè)計(jì)[J].工業(yè)控制計(jì)算機(jī),2014(6):80-81.
[2]趙金燕,楊秀娟,郎云雯,等.基于Zigbee技術(shù)的溫濕度采集系統(tǒng)設(shè)計(jì)[J].電子設(shè)計(jì)工程,2013(6):15-17.
[3]呂紅海.基于Android的智能家居無線控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2012.
[4]鄒麗.基于ZigBee技術(shù)的智能家居無線網(wǎng)絡(luò)設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:華中師范大學(xué),2011.
[5]吳年京,黃波,張汗聰,等.基于Android手機(jī)平臺的遠(yuǎn)程溫度查詢系統(tǒng)[J].數(shù)字通信,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