内容正文:
教学设计
课程基本信息
学科
信息科技
年级
八年级
学期
秋季
课题
《智能物联系统的软件设计》
教学目标
1.通过智能物联系统的程序编写,理解实现智能物联系统中数据采集、处理、存储和呈现等功能的基本过程。
2.通过在物联网平台发布和订阅消息,理解物联协议在数据传输中的作用。
教学重难点
教学重点:
1.数据的采集、传输与存储功能的实现。
2.物联协议在数据传输中的作用。
教学难点:
1.程序编写的实现。
2.第三方库的安装。
教学过程
(一)回顾旧知,导入新课
环节一:回顾“校园数字气象站”所需的硬件,并回忆硬件在物联系统中的作用与功能,明晰物联协议在数据传输中的作用。
通过前一节课的学习,我们确定了“校园数字气象站”所需的硬件,各类传感器、物联中台、服务器、网络设备,同学们是否还记得它们分别起到什么功能呢?
我们通过传感器来帮助我们采集不同的数据,通过wifi实现将数据发布到物联中台,物联中台它只是个中介,并不能存储获取数据,我们通过服务器来订阅主题、获取存储数据,最后我们希望能够呈现数据方便用户查看。
环节二:问题思考,引出智能物联系统的软件设计
问题思考:硬件搭建好后就能直接获取气象数据吗?
当然不能,我们得通过编程告诉它,让其一步步实现。今天我们沿着这个顺序一起来对智能物联系统进行软件设计。
(二)任务一:采集数据
环节一:明确任务
我们的第一个任务挑战,采集数据,通过编程实现气象数据的采集,每隔一段时间获取新数据,并在屏幕上显示。
环节二:了解编程软件,Python语言编程特点
我们所需的编程软件为:信息科技实验板编程工具,该软件是用python语言进行编程,python语言有个特点就是它有丰富的类库,编程的过程通过导入相应库,调用相应函数。
环节三:实践操作,编程演示
打开实验板编程工具,新建一个文件,默认已经导入npython模块,在该模块下内置了右侧这些函数,首先输入while True无限循环,获取温度的函数赋值给wendu变量,获取气压的函数赋值给qiya变量,获取成功,就让其在屏幕上显示,第一行显示标题“校园数字气象站”,第二行显示温度,我们可以通过复制粘贴提升编程速度,第三行显示气压,最后等待3秒,连接实验板到电脑端,出现com空闲中,就可以运行程序,上传成功,此时实验板屏幕上实时呈现温度和气压数据。
(三)任务二:发布数据
环节一:明确任务。任务二,发布数据,将采集到的气象数据发布到物联中台。
环节二:明确算法。首先明确算法,也就是思考编程整体思路,刚才我们已经实现数据的采集与显示,那发布数据应该在采集前还是采集后呢?是采集后,要实现数据的发布,我们得先进行MQTT的连接,MQTT的连接又需要建立在wifi的连接。
环节三:创建项目与主题。这里的发布数据到对应主题,那我们得先到物联中台创建项目与主题,这个操作我们在七下有过实践,我们来一起回忆一下。首先创建名称为“校园数字气象站”的项目,在该项目下创建对应的主题。主题是干什么的呢,用于接收发布来的数据,我们按照所需进行创建对应主题。比如温度主题用于接收实时温度,创建好后要运行项目才能接收数据,为确保数据发布到这个主题下,还有两个参数,用户ID和项目ID,到时候编程时需要用到。通过设置来查看获取。
环节三:编写程序。这是我们刚才写的程序,我们来继续扩充代码,这三个语句实现wifi连接,获取wifi名称和密码并在这里进行更换,接下去MQTT连接,需要进行服务器地址、端口号、用户ID和项目ID参数的配置,这是我们刚才创建的用户ID和项目ID,同学们观察一下,程序中需要更改哪个参数呢?两个参数都需要更改,通过复制粘贴来实现。最后是发布数据,将采集到的温度数据发布到温度主题,这里主题的名称必须跟物联中台创建的名称要一致。
环节四:测试一段程序,该程序中增加了风速风向的采集与发布,这段程序我们需要进行相应的修改,①修改当前可用的wifi名称与密码,②修改用户ID和项目ID,从物联中台获取,通过复制粘贴来完成修改,物联中台中运行该项目,再到编程软件中运行程序,上传成功后,屏幕上显示采集到的数据,并将其发布到物联中台的各个主题。此时我们完成了第二个任务。
(四)任务三:订阅主题存储数据
环节一:明确算法流程图。我们来看一下其算法流程图,首先是MQTT连接,连接好后就可以订阅主题,这里主题只需订阅1次,当有新消息时,订阅者便会被通知,然后去获取该主题下的数据,再将其存储在数据库文件中。
环节二:讲解代码。在这个程序中,我们需要导入3个模块,MQTT、time时间模块和sqlite数据库模块。首先进行mqtt的连接,该代码跟刚才的一致,接下去订阅主题,我们订阅温度这个一主题,赋值给该变量,然后定义一个回调函数,也是最关键的代码,首先获取温度主题下发布来的数据进行解码,然后将数据、时间、主题名称其插入到数据库“database.db”文件中。再是订阅主题,每当有新消息时,就去执行一次回调函数。
环节三:测试代码。用thonny软件打开该程序,需要注意用户ID、项目ID和需订阅的主题名称是否正确,运行该程序,此时shell输出连接成功,订阅结果返回温度值,这些数据从物联中台订阅温度主题获取而来的,此时说明订阅成功。订阅来的数据将其存储到数据库文件“database”中,我们在这里可查看存储情况,刷新可看到最新的数据,我们观察一下,每一条除了温度数值,还有序号、时间、用户ID和主题名称,它们以表格形式呈现。
(五)任务四:呈现数据——折线图
环节一:引出折线图。刚才我们得到表格形式存储的数据,我们再来看下另一种呈现方式——折线图,折线图相对于表格形式有什么优势呢?折线图更清晰呈现数据的变化趋势,易于分析
环节二:认识并安装第三方库matplotlib。如何用程序将刚才存储的数据编程折线图呢?我们来一起完成最后一个任务:以折线图呈现数据。这涉及到一个绘图,我们需要导入matplotlib绘图模块,这是一个第三方库,需要安装后才能使用,我们通过cmd打开命令提示符界面,在该界面输入pip install matplotlib,等待下载安装,出现安装成功就表明我们已经安装好第三方库matplotlib。
环节三:讲解代码。整个程序先进行参数的设置,连接刚才的数据库文件,然后绘制折线图,通过运行本程序,可以得到如图这样的折线图。
环节四:数据分析。请同学们观察并分析,一天当中,哪个时间的温度最高呢?我们可以看到中午12点-下午3点是温度最高的时候。
(六)课堂小结
今天我们通过编写程序,对智能校园数字气象站进行采集数据、发布数据、订阅存储数据、呈现数据这四大功能的实现,从而让气象数据在物联系统中有序流转,我们也收获了编程的相关技巧,包括Python库的功能与使用,②写代码是调用函数的过程,以及我们要③先形成算法流程图,再编写代码,这样思路更加清晰。我们的项目还未结束,我们还能为这个气象站增加哪些更具智能化、个性化的功能呢,期待同学们下节课的迭代与创新。今天的课就上到这里,同学们再见。
学科网(北京)股份有限公司
$$