基于Packet Tracer的温湿度传感器的实训设计
2020-05-18余振养
摘 要:为了突破物联网实训教学受物理设备的限制,保证每个学生的实训效果,帮助学生更好的理解网络协议工作原理和工作方式,文章对Packet Tracer物联网模块进行研究。通过设计一个温湿度传感器监控系统,实现设备之间TCP连接传输数据且上传数据到OneNet平台并通过OneNet下发数据远程控制,为网络技术专业教师提供新的实训设计思路及提升学生的实践能力和相关技能。
关键词:物联网实训;Packet Tracer模拟器;温湿度传感器;OneNet平台;组网
中图分类号:TP212.6;TP315.69 文献标识码:A 文章编号: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 引 言
當前物联网理论教学已基本成熟,而物联网实训教学在以往教学中受到设备的限制,学生需要分组才可以进行实训,小组教学中各个同学的积极性不同,难以保证每个学生的实训效果,也难以很好地帮助学生理解相关协议的工作原理和工作方式,最新版本的Packet Tracer 7.0以上软件新添加的物联网功能,可仿真智能家居的组网,并实现组网过程中的几项关键技术。通过设计智能家居组网实验与实践课程,可帮助物联网工程专业学生理解和掌握物联网基础理论,将理论应用到实践,从而激发学生学习兴趣和创新思维。[1-4]Packet Trace是一款网络模拟平台,利用该平台可以进行网络和通信仿真实验,以及物联网仿真实验[5]。笔者利用该平台7.2版本,设计了基于温湿度的环境监测系统的物联网综合实验,对实验教学起到很好的支撑作用,并可以辅助学生完成对于产品原型的构建,拓展学生的创新能力[6]。
1 实验系统整体设计
本项目使用Packet Tracer中虚拟传感器和执行设备构建一个智能家居系统,通过控制器接入OneNet平台,实现设备间的联动及设备的远程控制[7]。整体设计采用了物联网三层架构模式,即系统由感知层、传输层和应用层组成[8],如图1所示。感知层由温湿度传感器组成,传输层中的MCU0、MCU1、SBC0作为控制单元负责采集和处理温湿度传感器传输数据。应用层包括PC终端、移动终端和OneNet服务器,可通过上述终端登录IoT服务器观察和监控被控设备工作状态,并可在登录界面通过手工发出控制信号,本项目使用了OneNet来进行控制,可在OneNet上下发阈值,来控制MCU0中的LED灯的开关情况。
2 实验设计
2.1 构建实验拓扑
根据实验需求,规划了MCU控制板、温湿度传感器、SBC控制板、LED灯等不同的物联网物件对象,各对象的构建的实验拓扑图如图2所示。
2.2 地址规划及连线
MCU0、MCU1、SBC0默认不带网络接口,双击MCU设备,在Physical页面,点击PT-IOT-NM-1CFE,在这完成设备网络接口的添加;按照相同步骤为MCU0、MCU1、SBC0分别添加一个网络接口,其地址规划如表1所示。
3 实验系统物件功能设计
完成拓扑图和地址规划之后,需要对实验系统的物件进行Python编程,以实现实验要求,系统各个功能要求如下。
3.1 MCU与SBC进行TCP组网
MCU0、MCU1、SBC0在设置好以太网的IP地址信息后,在设备的Programming页面通过New按钮新建TCP应用,MCU0、MCU1通过TCP-Client-Python模块创建TCP客户端,SBC0通过TCP-Server-Python模块创建TCP服务器端。
TCP應用添加完毕,修改MCU0、MCU1代码把serverIP值设置为服务端的IP,使用默认的1234作为端口,在本项目的TCP网络中,SBC0作为服务端,监听1234端口,MUC0、MCU1作为客户端,连接至SBC0的TCP套接字172.16.1.250:1234。以下为MUC1的代码,修改serverIP、ServerPort,使得MCU1与SBC0模块进行TCP连接。以下为MCU1的代码实现:
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将读取的温湿度数据传输给SBC0
修改MCU1代码,引入GPIO模块,新建getHumiture()函数使用analogRead(A0)读取温湿度数值,在getHumiture()函数中根据温湿度设备说明进行数值转换。然后在main()函数while部分加入创建的读温湿度函数,之后使用send方法把温湿度数据作为字符串直接发给SBC0,以下为代码实现:
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联动MCU0进行LED灯的开关
修改MCU0的代码,获取来自SBC0的温湿度数值信息,在while部分把实时温湿度数值humiture和阈值进行比较,大于则向所有的在线用户广播发送字符串control:open用于通知MCU0打开LED,小于广播发送字符串control:close用于通知MCU0关闭LED灯。以下为MCU0的代码实现:
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下发阈值与SBC0联动
SBC0作为MCU0、MCU1的服务器,接收来自MCU1的数值并比较设置的阈值,如果大于阈值则转发给MCU0开灯信息,否则转发关灯信息;又作为OneNet平台的客户端,将数值上传至OneNet平台,并可以接受OneNet平台下发的数据,下发的数值如果大于阈值则转发给MCU0开灯信息,否则转发关灯信息。以下为SBC0的代码实现:
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 结 论
温湿度监控实验系统融合了硬件技术、网络工程技术和软件编程技术,具有开放、灵活、二次开发方便的特点。基于现有的实验系统,除了当前实验的功能拓展,也可以改变感知、传输或者控制设备来创建新的实验项目:
(1)感知层实验:可以将Packet Tracer平台已有的环境传感器(CO2、光照、风速、湿度、温度等)结合到该系统,也可自行创建新的传感器融合到系统中。
(2)传输层实验:可以扩展传输方式为HTTP连接、UDP连接等等,也可以设计为无线连接或者无线与有限混合连接等组网方式。
基于Packet Tracer平台的物联网原型仿真不受实验环境物理条件限制,可以最大限度地提高学生的动手能力,加强学生的组网、编程的实践能力,拓展学生的创新能力。
参考文献:
[1] 王彩霞,高玉励.探析《计算机网络技术》实验课程的教学改革 [J].教育,2016(12):120.
[2] 王杨,任永,殷晓斌,等.物联网专业网络课程实验教学研究与实践 [J].杭州电子科技大学学报(自然科学版),2015,35(2):88-92.
[3] 乔焰,马慧敏.基于Packet Tracer的智能家居组网教学设计 [J].电脑知识与技术,2018,14(6):150-153.
[4] 王志英,周兴社,袁春风,等.计算机专业学生系统能力培养和系统课程体系设置研究 [J].计算机教育,2013(9):1-6.
[5] CISCO. Cisco Packet Tracer [EB/OL].[2020-09-02].https://cn.netacad.com/courses/packet-tracer.
[6] 胡文輝,王丽.谈物联网专业课堂教学的几点思考 [J].中文信息,2015,(1):129-130.
[7] OneNet.开发文档 [EB/OL].[2020-09-02].https://open.iot.10086.cn/devdoc/.
[8] 中国电子政务网.物联网的十三五规划(2016-2020年) [EB/OL].(2017-07-26).http://www.e-gov.org.cn/egov/web/article_detail.php?id=164273.
作者简介:余振养(1989—),男,汉族,广东廉江人,硕士研究生,研究方向:网络安全。