摘? 要:為了突破物聯(lián)網(wǎng)實(shí)訓(xùn)教學(xué)受物理設(shè)備的限制,保證每個(gè)學(xué)生的實(shí)訓(xùn)效果,幫助學(xué)生更好的理解網(wǎng)絡(luò)協(xié)議工作原理和工作方式,文章對(duì)Packet Tracer物聯(lián)網(wǎng)模塊進(jìn)行研究。通過(guò)設(shè)計(jì)一個(gè)溫濕度傳感器監(jiān)控系統(tǒng),實(shí)現(xiàn)設(shè)備之間TCP連接傳輸數(shù)據(jù)且上傳數(shù)據(jù)到OneNet平臺(tái)并通過(guò)OneNet下發(fā)數(shù)據(jù)遠(yuǎn)程控制,為網(wǎng)絡(luò)技術(shù)專業(yè)教師提供新的實(shí)訓(xùn)設(shè)計(jì)思路及提升學(xué)生的實(shí)踐能力和相關(guān)技能。
關(guān)鍵詞:物聯(lián)網(wǎng)實(shí)訓(xùn);Packet Tracer模擬器;溫濕度傳感器;OneNet平臺(tái);組網(wǎng)
中圖分類號(hào):TP212.6;TP315.69? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2020)20-0166-04
Training Design of Temperature and Humidity Sensor Based on Packet Tracer
YU Zhenyang
(Guangdong Polytechnic of Science and Technology,Zhuhai? 519090,China)
Abstract:In order to break through the limitations of physical equipment in IoT training and teaching,ensure that each students training effect,help students better understand the working principle of the network protocol and the way of work,the Packet Tracer IoT modules are studied in this paper. By designing a temperature and humidity sensor monitoring system to realize the TCP connection between devices to transmit data and upload the data to the OneNet platform and remotely control the data through OneNet,provide new training design ideas for network technology teachers and improve studentspractical ability and related skills.
Keywords:IoT training;Packet Tracer simulator;temperature and humidity sensor;OneNet platform;networking
0? 引? 言
當(dāng)前物聯(lián)網(wǎng)理論教學(xué)已基本成熟,而物聯(lián)網(wǎng)實(shí)訓(xùn)教學(xué)在以往教學(xué)中受到設(shè)備的限制,學(xué)生需要分組才可以進(jìn)行實(shí)訓(xùn),小組教學(xué)中各個(gè)同學(xué)的積極性不同,難以保證每個(gè)學(xué)生的實(shí)訓(xùn)效果,也難以很好地幫助學(xué)生理解相關(guān)協(xié)議的工作原理和工作方式,最新版本的Packet Tracer 7.0以上軟件新添加的物聯(lián)網(wǎng)功能,可仿真智能家居的組網(wǎng),并實(shí)現(xiàn)組網(wǎng)過(guò)程中的幾項(xiàng)關(guān)鍵技術(shù)。通過(guò)設(shè)計(jì)智能家居組網(wǎng)實(shí)驗(yàn)與實(shí)踐課程,可幫助物聯(lián)網(wǎng)工程專業(yè)學(xué)生理解和掌握物聯(lián)網(wǎng)基礎(chǔ)理論,將理論應(yīng)用到實(shí)踐,從而激發(fā)學(xué)生學(xué)習(xí)興趣和創(chuàng)新思維。[1-4]Packet Trace是一款網(wǎng)絡(luò)模擬平臺(tái),利用該平臺(tái)可以進(jìn)行網(wǎng)絡(luò)和通信仿真實(shí)驗(yàn),以及物聯(lián)網(wǎng)仿真實(shí)驗(yàn)[5]。筆者利用該平臺(tái)7.2版本,設(shè)計(jì)了基于溫濕度的環(huán)境監(jiān)測(cè)系統(tǒng)的物聯(lián)網(wǎng)綜合實(shí)驗(yàn),對(duì)實(shí)驗(yàn)教學(xué)起到很好的支撐作用,并可以輔助學(xué)生完成對(duì)于產(chǎn)品原型的構(gòu)建,拓展學(xué)生的創(chuàng)新能力[6]。
1? 實(shí)驗(yàn)系統(tǒng)整體設(shè)計(jì)
本項(xiàng)目使用Packet Tracer中虛擬傳感器和執(zhí)行設(shè)備構(gòu)建一個(gè)智能家居系統(tǒng),通過(guò)控制器接入OneNet平臺(tái),實(shí)現(xiàn)設(shè)備間的聯(lián)動(dòng)及設(shè)備的遠(yuǎn)程控制[7]。整體設(shè)計(jì)采用了物聯(lián)網(wǎng)三層架構(gòu)模式,即系統(tǒng)由感知層、傳輸層和應(yīng)用層組成[8],如圖1所示。感知層由溫濕度傳感器組成,傳輸層中的MCU0、MCU1、SBC0作為控制單元負(fù)責(zé)采集和處理溫濕度傳感器傳輸數(shù)據(jù)。應(yīng)用層包括PC終端、移動(dòng)終端和OneNet服務(wù)器,可通過(guò)上述終端登錄IoT服務(wù)器觀察和監(jiān)控被控設(shè)備工作狀態(tài),并可在登錄界面通過(guò)手工發(fā)出控制信號(hào),本項(xiàng)目使用了OneNet來(lái)進(jìn)行控制,可在OneNet上下發(fā)閾值,來(lái)控制MCU0中的LED燈的開關(guān)情況。
2? 實(shí)驗(yàn)設(shè)計(jì)
2.1? 構(gòu)建實(shí)驗(yàn)拓?fù)?/p>
根據(jù)實(shí)驗(yàn)需求,規(guī)劃了MCU控制板、溫濕度傳感器、SBC控制板、LED燈等不同的物聯(lián)網(wǎng)物件對(duì)象,各對(duì)象的構(gòu)建的實(shí)驗(yàn)拓?fù)鋱D如圖2所示。
2.2? 地址規(guī)劃及連線
MCU0、MCU1、SBC0默認(rèn)不帶網(wǎng)絡(luò)接口,雙擊MCU設(shè)備,在Physical頁(yè)面,點(diǎn)擊PT-IOT-NM-1CFE,在這完成設(shè)備網(wǎng)絡(luò)接口的添加;按照相同步驟為MCU0、MCU1、SBC0分別添加一個(gè)網(wǎng)絡(luò)接口,其地址規(guī)劃如表1所示。
3? 實(shí)驗(yàn)系統(tǒng)物件功能設(shè)計(jì)
完成拓?fù)鋱D和地址規(guī)劃之后,需要對(duì)實(shí)驗(yàn)系統(tǒng)的物件進(jìn)行Python編程,以實(shí)現(xiàn)實(shí)驗(yàn)要求,系統(tǒng)各個(gè)功能要求如下。
3.1? MCU與SBC進(jìn)行TCP組網(wǎng)
MCU0、MCU1、SBC0在設(shè)置好以太網(wǎng)的IP地址信息后,在設(shè)備的Programming頁(yè)面通過(guò)New按鈕新建TCP應(yīng)用,MCU0、MCU1通過(guò)TCP-Client-Python模塊創(chuàng)建TCP客戶端,SBC0通過(guò)TCP-Server-Python模塊創(chuàng)建TCP服務(wù)器端。
TCP應(yīng)用添加完畢,修改MCU0、MCU1代碼把serverIP值設(shè)置為服務(wù)端的IP,使用默認(rèn)的1234作為端口,在本項(xiàng)目的TCP網(wǎng)絡(luò)中,SBC0作為服務(wù)端,監(jiān)聽1234端口,MUC0、MCU1作為客戶端,連接至SBC0的TCP套接字172.16.1.250:1234。以下為MUC1的代碼,修改serverIP、ServerPort,使得MCU1與SBC0模塊進(jìn)行TCP連接。以下為MCU1的代碼實(shí)現(xiàn):
from tcp import *
from time import *
serverIP = "172.16.1.250"
serverPort = 1234
client = TCPClient()
def onTCPConnectionChange(type):
print("connection to " + client.remoteIP() + " changed to state " + str(type))
def onTCPReceive(data):
print("received from " + client.remoteIP() + " with data: " + data)
from gpio import*
def main():
client.onConnectionChange(onTCPConnectionChange)
client.onReceive(onTCPReceive)
print(client.connect(serverIP, serverPort))
count = 0
while True:
count += 1
data = "hello " + str(count)
client.send(data)
sleep(5)
if __name__ == "__main__":
main()
3.2? MCU1將讀取的溫濕度數(shù)據(jù)傳輸給SBC0
修改MCU1代碼,引入GPIO模塊,新建getHumiture()函數(shù)使用analogRead(A0)讀取溫濕度數(shù)值,在getHumiture()函數(shù)中根據(jù)溫濕度設(shè)備說(shuō)明進(jìn)行數(shù)值轉(zhuǎn)換。然后在main()函數(shù)while部分加入創(chuàng)建的讀溫濕度函數(shù),之后使用send方法把溫濕度數(shù)據(jù)作為字符串直接發(fā)給SBC0,以下為代碼實(shí)現(xiàn):
def getHumiture():
humiture=analogRead(A0)
humiture=humiture*100/1023
return humiture
def main():
client.onConnectionChange(onTCPConnectionChange)
client.onReceive(onTCPReceive)
print(client.connect(serverIP, serverPort))
while True:
humiture=getHumiture()
client.send(humiture)
sleep(5)
if __name__ == "__main__":
main()
3.3? SBC0聯(lián)動(dòng)MCU0進(jìn)行LED燈的開關(guān)
修改MCU0的代碼,獲取來(lái)自SBC0的溫濕度數(shù)值信息,在while部分把實(shí)時(shí)溫濕度數(shù)值humiture和閾值進(jìn)行比較,大于則向所有的在線用戶廣播發(fā)送字符串control:open用于通知MCU0打開LED,小于廣播發(fā)送字符串control:close用于通知MCU0關(guān)閉LED燈。以下為MCU0的代碼實(shí)現(xiàn):
from tcp import *
from time import *
from gpio import *
serverIP = "172.16.1.250"
serverPort = 1234
client = TCPClient()
def onTCPConnectionChange(type):
print("connection to " + client.remoteIP() + " changed to state " + str(type))
from gpio import *
def onTCPReceive(data):
print("received from " + client.remoteIP() + " with data: " + data)
if ':' in data:
cmd = data.split(':')[-1]
if cmd == "open":
digitalWrite(0, HIGH)
if cmd == "close":
digitalWrite(0, LOW)
def main():
client.onConnectionChange(onTCPConnectionChange)
client.onReceive(onTCPReceive)
print(client.connect(serverIP, serverPort))
count = 0
while True:
sleep(5)
if __name__ == "__main__":
main()
3.4? OneNet下發(fā)閾值與SBC0聯(lián)動(dòng)
SBC0作為MCU0、MCU1的服務(wù)器,接收來(lái)自MCU1的數(shù)值并比較設(shè)置的閾值,如果大于閾值則轉(zhuǎn)發(fā)給MCU0開燈信息,否則轉(zhuǎn)發(fā)關(guān)燈信息;又作為OneNet平臺(tái)的客戶端,將數(shù)值上傳至OneNet平臺(tái),并可以接受OneNet平臺(tái)下發(fā)的數(shù)據(jù),下發(fā)的數(shù)值如果大于閾值則轉(zhuǎn)發(fā)給MCU0開燈信息,否則轉(zhuǎn)發(fā)關(guān)燈信息。以下為SBC0的代碼實(shí)現(xiàn):
from realtcp import *
from time import *
from tcp import *
from realhttp import*
serverIP = "183.230.40.40"
serverPort = 1811
auth = '*346995#humiture#humiture*'
oneNetclient = RealTCPClient()
port = 1234
server = TCPServer()
def onTCPConnectionChange(type):
if type == 3:
oneNetclient.send(auth)
from gpio import *
def onTCPReceive(data):
print("received: " + data);
if ':' in data:
value = int(data.split(':')[-1])
if value:
global humitureSplit
humitureSplit = value
humitureSplit = 50
humiture = 0
clients = []
def onTCPNewClient(client):
clients.append(client)
def onTCPConnectionChange(type):
print("connection to " + client.remoteIP() + " changed to state " + str(type))
if type ==3:
clients.remove(client)
def onTCPReceive(data):
print("received from " + client.remoteIP() + " with data: " + data)
global humiture
humiture = int(data)
print(humiture)
client.onConnectionChange(onTCPConnectionChange)
client.onReceive(onTCPReceive)
def main():
server.onNewClient(onTCPNewClient)
server.listen(port)
oneNetclient.onConnectionChange(onTCPConnectionChange)
oneNetclient.onReceive(onTCPReceive)
oneNetclient.connect(serverIP, serverPort)
while True:
sleep(5)
print(humiture)
if (humiture >= humitureSplit):
for _client in clients:
_client.send("control: open")
else:
for _client in clients:
_client.send("control: close")
if __name__ == "__main__":
main()
4? 結(jié)? 論
溫濕度監(jiān)控實(shí)驗(yàn)系統(tǒng)融合了硬件技術(shù)、網(wǎng)絡(luò)工程技術(shù)和軟件編程技術(shù),具有開放、靈活、二次開發(fā)方便的特點(diǎn)。基于現(xiàn)有的實(shí)驗(yàn)系統(tǒng),除了當(dāng)前實(shí)驗(yàn)的功能拓展,也可以改變感知、傳輸或者控制設(shè)備來(lái)創(chuàng)建新的實(shí)驗(yàn)項(xiàng)目:
(1)感知層實(shí)驗(yàn):可以將Packet Tracer平臺(tái)已有的環(huán)境傳感器(CO2、光照、風(fēng)速、濕度、溫度等)結(jié)合到該系統(tǒng),也可自行創(chuàng)建新的傳感器融合到系統(tǒng)中。
(2)傳輸層實(shí)驗(yàn):可以擴(kuò)展傳輸方式為HTTP連接、UDP連接等等,也可以設(shè)計(jì)為無(wú)線連接或者無(wú)線與有限混合連接等組網(wǎng)方式。
基于Packet Tracer平臺(tái)的物聯(lián)網(wǎng)原型仿真不受實(shí)驗(yàn)環(huán)境物理?xiàng)l件限制,可以最大限度地提高學(xué)生的動(dòng)手能力,加強(qiáng)學(xué)生的組網(wǎng)、編程的實(shí)踐能力,拓展學(xué)生的創(chuàng)新能力。
參考文獻(xiàn):
[1] 王彩霞,高玉勵(lì).探析《計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)》實(shí)驗(yàn)課程的教學(xué)改革 [J].教育,2016(12):120.
[2] 王楊,任永,殷曉斌,等.物聯(lián)網(wǎng)專業(yè)網(wǎng)絡(luò)課程實(shí)驗(yàn)教學(xué)研究與實(shí)踐 [J].杭州電子科技大學(xué)學(xué)報(bào)(自然科學(xué)版),2015,35(2):88-92.
[3] 喬焰,馬慧敏.基于Packet Tracer的智能家居組網(wǎng)教學(xué)設(shè)計(jì) [J].電腦知識(shí)與技術(shù),2018,14(6):150-153.
[4] 王志英,周興社,袁春風(fēng),等.計(jì)算機(jī)專業(yè)學(xué)生系統(tǒng)能力培養(yǎng)和系統(tǒng)課程體系設(shè)置研究 [J].計(jì)算機(jī)教育,2013(9):1-6.
[5] CISCO. Cisco Packet Tracer [EB/OL].[2020-09-02].https://cn.netacad.com/courses/packet-tracer.
[6] 胡文輝,王麗.談物聯(lián)網(wǎng)專業(yè)課堂教學(xué)的幾點(diǎn)思考 [J].中文信息,2015,(1):129-130.
[7] OneNet.開發(fā)文檔 [EB/OL].[2020-09-02].https://open.iot.10086.cn/devdoc/.
[8] 中國(guó)電子政務(wù)網(wǎng).物聯(lián)網(wǎng)的十三五規(guī)劃(2016-2020年) [EB/OL].(2017-07-26).http://www.e-gov.org.cn/egov/web/article_detail.php?id=164273.
作者簡(jiǎn)介:余振養(yǎng)(1989—),男,漢族,廣東廉江人,碩士研究生,研究方向:網(wǎng)絡(luò)安全。