第四单元物联网的数据处理实验室:搭建远程控制多盏路灯物联系统原型 教学设计 2025- 2026学年苏科版初中信息科技八年级下册

2026-03-23
| 32页
| 340人阅读
| 0人下载
普通

资源信息

学段 初中
学科 信息科技
教材版本 初中信息科技苏科版八年级下册
年级 八年级
章节 探索1 物联系统原型的搭建
类型 教案-教学设计
知识点 -
使用场景 同步教学-新授课
学年 2026-2027
地区(省份) 江苏省
地区(市) 扬州市
地区(区县) 广陵区
文件格式 DOCX
文件大小 1.57 MB
发布时间 2026-03-23
更新时间 2026-03-23
作者 前卋尋歡🍀
品牌系列 -
审核时间 2026-03-23
下载链接 https://m.zxxk.com/soft/56955037.html
价格 0.50储值(1储值=1元)
来源 学科网

内容正文:

《从身边到云端:物联网奇妙之旅》 年级:八年级 学科:信息科技 执教:扬州市广陵区李典学校 姚金鹏 一、教材分析 本单元属于“物联网基本原理与功能”部分,既对应介绍物联网三层架构的最后一层——应用层,又是对物联网三层架构知识的综合运用。本单元关注智能数据处理,旨在通过实验展示物联网的完整架构。 本单元以校园路灯的智能化改造为案例,引导学生参与设计和搭建物联系统的全过程,让学生亲身体验物联网在数据采集、传输和处理方面的技术,并深化他们对数据在物联网中发挥驱动作用的理解,为后续第五单元的学习打下坚实基础。 本单元搭建物联系统原型的目的是验证利用物联网技术解决特定问题的可行性,重点在于展示系统的初步形态,而非追求完美的实验结果。因此,设计和搭建物联系统原型时应注重简单性和实用性,可以选择温度、湿度、振动、声音或光照度等等,以单一传感器,让学生体验物联网数据的读取、发送、接收、汇总和使用的完整技术流程。 本单元以校园路灯系统的智能化改造为项目背景,设计了两个项目探索,帮助学生搭建物联系统原型,并对物联网的数据处理过程形成初步认识。 “探索1 物联系统原型的搭建”着重于实现智能路灯物联系统原型。通过分析智能路灯系统的工作原理,明确物联系统原型的组成、数据传输方式和工作流程。在搭建过程中,应先从单盏路灯的本地控制入手,过渡到通过SIoT实验平台远程控制单盏路灯,最终实现对多盏路灯的集中远程控制。 “探索2 物联网系统原型数据的使用”则聚焦数据的处理、分析和应用。通过实验数据的筛选、可视化、分析和决策等步骤,帮助学生梳理物联网数据处理的流程。同时,通过物联网系统原型与物联网三层架构的对应关系,加深学生对数据驱动作用的理解。 课程标准基本理念要求,关注全体学生,注重交流与合作。初中信息课程以进一步提高学生的信息素养为宗旨,强调通过合作解决实际问题;鼓励学生结合生活和学习实际,运用合适的信息技术,恰当地表达自己的思想,进行广泛的交流与合作,在此过程中共享思路、激发灵感、反思自我、增进友谊,共同建构健康的信息文化。因此,我在处理教材和安排教学内容以及设计情境和问题时将这些理念合理运用,最终达到提高信息素养的总目标。 本课利用实例,引导学生学会利用MQTT协议中的数据,同时交叉七年级下学期“防火墙的设置”部分,八年级上学期“物联网传输技术——WIFI技术”部分、网络安全意识部分内容,以及受限于硬件设备的情况下,如何另辟蹊径,尽量满足设计要求。在学习新知识的同时,注重培养学生综合分析问题,解决问题的能力;培养学生的自主学习能力及实际应用能力。为学生在今后学习及生活中使用强档的算法解决实际问题奠定良好而坚定的基础。 本节内容是初中信息科技八年级第4单元探索1:物联网原型的搭建第二课时,MQTT协议在物联网中的实践。因我校未配备掌控板,但我校创客教室装备有20余块arduino UNO主控,常用模块均有配备,故本课例设计中,使用的硬件主控板为arduino UNO R3,使用的编程软件为DFrobot配套的Mind+。在小学阶段,学生已经接触过scratch编程,界面和Mind+非常相似,在八年级上学期,物联网传感器部分,学生已经对DFRobot Arduino主控板的接线非常熟悉。学生在第一课时的搭建本地控制的灯具时,上手很快。在学生现有知识储备的基础上,我们可以通过分析现成的例题,来熟悉obloq消息应当如何调用,之后就可以让学生利用材料盒里的模块自由发挥,设计模型、分析逻辑、搭建模型、解决问题。 在本节课当中,这种基础知识的掌握与分析问题,解决问题能力的培养,可以为学生在今后学习及生活中合理运用编程来解决问题打下良好的基础。 二、学情分析 本节课的教学对象为八年级的学生,对信息技术课有着浓厚的兴趣及极大的求知欲,他们热情、活泼、勇于探究,自学能力比起之前阶段有很大的提高。他们的分析问题、解决问题的能力也比之前有着很大提高,所以本节课的知识主要是依靠学生自己的分析以及教师的点拨来获得的。 学生对物联网应用有了一定的生活体验,并表现出对进一步探索物联网领域的兴趣和渴望。一方面,学生已经掌握了一些常用传感器的工作原理及其操作方法;具备基础的图形化编程技能,并能够熟练运用算法的三种基本结构;已经使用过开源硬件和传感器进行基础的实验操作,并对物联网的三层架构有了初步的认识。学生了解IP地址,端口号等相关知识,亲自动手配置过无线路由器,使用过Acrylic Wi-Fi Analyzer对无线网进行分析,知晓各种无线协议的不同之处,也经历过多次的网络安全宣传周活动,对于网络安全有一些了解。另一方面,学生尚未接触过物联网实验平台,没有连接过OBLOQ模块,也没有实际编写过与物联网相关的程序,缺乏相关实践经验。 课堂上将学生划分4人小组,每组配备两套arduino套件,针对学习过程中所出现的问题,小组成员之间可以在一起讨论一下解决的方法,调动每个学生的学习积极性。 三、教学目标 1、知识与技能目标 1.1.学生能说出MQTT协议的基本原理(如设备间如何通过“主题”传递消息),知晓其与普通网页请求的区别。 1.2. 会使用SIoT物联网平台查看、发送消息主题,并能通过Arduino开发板针对具体主题进行订阅和发布。能实现灯光控制指令的收发。 2、过程与方法目标 2.1.问题解决 当obloq模块无法正确连接到SIoT平台时,学会分层排查问题(1.硬件接线,2.验证代码逻辑性、正确性,3.测试wifi网络连接,4.查看SIoT服务器防火墙是否放行了指定的端口)。 2.2.项目实践 经历完整的项目开发流程:自由讨论提出设想,分析需求,理清逻辑,搭建模型,到编写控制程序,最终部署真实可用的物联网系统。 2.3.协作学习 小组分工完成设备联调,统一主题命名规则,培养标准化开发意识。 3、情感态度与价值观目标 3.1.技术责任感 讨论“智能设备是否会遭遇安全风险”,意识到物联网设备的安全管理重要性(如设置设备密码)。 3.2.节能意识 理解技术对节能减排的贡献,主动优化系统降低能耗。 4、创新与实践目标 4.1.创新自信 在完成基础功能后,鼓励尝试扩展功能(如用手机控制灯光),体验创新成就感。 4.2.应用迁移 在了解原理的前提下,自由设计其他物联网应用(如教室温度监测),只需更换传感器类型,保留核心通信逻辑。 4.3.安全升级 尝试保护自己的SIoT服务器,尽可能阻止系统被非法控制。 4.4.生活联结 观察校园中其他可智能化的场景(如图书馆座位管理),提出物联网解决方案草图。 四、教学重难点 教学重点:掌握MQTT主题的发布和订阅,能正确的利用订阅的主题对执行器下达命令 教学难点:提升学生发散思维的能力。 五、教学准备 教学准备:带网络连接的学生机房,电子教室软件,每组一台无线AP接入教室网络,每组两套arduion UNO套件(每套含obloq 物联网WIFI模块一片,R、G、B LED各一只,光线传感器1只,旋钮1只,按钮2只,倾斜传感器1只,人体热释电传感器1只,声音传感器1只,温度传感器1只,干簧管1只(带小磁铁),9V电池盒1只,调试线1根,模块连接线若干)。一台开放远程桌面的笔记本电脑(用于Acrylic Wi-Fi Analyzer测试无线网络)。每组一台卸载了极域电子教室的电脑(因极域电子教室和SIoT软件有冲突)。IP地址教师已知。 六、教学过程 一、创设情境,激趣导入 师:亲爱的同学们,在上一周里,老师和大家一起研究了受光线控制的智能路灯。哪位同学们来说一说智能路灯的原理?(引导学生回答) 生:传感器获取关心的环境要素,以电信号的形式通过线缆传送给处理器,处理器依据传感器传回的电信号,转换为相应的数值进行逻辑处理,通过线缆将处理后的指令以电信号的形式发送给相应的执行器。 板书: 传感器 电信号/数值 处理器 数值/电信号 执行器 线缆 线缆 【设计意图:创设轻松愉快的情境,回顾上节课里关于智能路灯的概念,其实这个回答适用于所有的智能设备,“传感——处理——执行”。在这里特意加上线缆和数值形式是为了引出下文,如果我们把这里的线缆替换成无线,我们的感知范围就可以扩大很多。而且处理器的本质上处理的是经过转换后传感器电信号对应的数值,只要我们能将数值传输出去,就可以当作远端传感器来使用,并且在后续的编程中,对于网络传入的“主题”信息,也可以和本地传感器获取的值一样来进行处理】 师:本质上我们的处理器处理的是什么?是电信号么? 生:是经过相应规则转换后的数值。 师:也就是说只要数值传输到处理器了,中间的传输介质其实并不重要。如果我们将这里的线缆更换成无线,请同学们回忆一下,物联网中常用的几种近距离无线通讯技术。 生:我们常用的物联网近距离通讯技术有WiFi,蓝牙,zigbee等。 师:那我们设计的智能路灯项目,如果需要无线传输,请同学们说说,使用哪种通讯技术比较合适呢?为什么? 生:WiFi技术,因为操场上100米的跑道边上只有三盏路灯,距离的比较远,三种通讯技术里,WiFi技术的通讯距离是最远的。 师:哪位同学上来帮我修改一下模型? 【设计意图:引导学生明确,处理器只需要关心传感器传入的数据值。同时复习一下上学期物联网近距离通讯技术的内容,引出下文,将数据以网络的形式传输出去。】 修改后板书为: 传感器 电信号/数值 处理器 数值 WiFi模块 WiFi模块 数值 处理器 数值/电信号 执行器 线缆 线缆 线缆 线缆 师:这位同学现在修改了模型,一对一传输。那么请同学们思考一下,如果想把数据传送给很多终端,我们又该怎么办? 生:可以添加无线路由器,让大家都连接上来。 师:这位同学你上来修改一下板书试试。 WiFi模块 数值 处理器 数值/电信号 执行器 无线路由 线缆 线缆 …… 传感器 电信号/数值 处理器 数值 WiFi模块 WiFi模块 数值 处理器 数值/电信号 执行器 线缆 线缆 线缆 线缆 师:好的,这位同学为我们的模型添加了一台无线路由器用来接入每一个终端,但是这里有一个问题,数据是如何传送的?1 to 2,1 to 3,1 to n。每多加一台设备就需要多传输一份数据。最终1号主控会陷入繁忙的数据发送状态而失去响应,俗称“狗带”了。请同学们开动脑筋,如何能解决这个问题? 3 编号后的板书为: 1 WiFi模块2 数值 处理器 数值/电信号 执行器 无线路由 线缆 线缆 …… 传感器 电信号/数值 处理器 数值 WiFi模块 WiFi模块 数值 处理器 数值/电信号 执行器 线缆 线缆 线缆 线缆 【设计意图:以1号主控压力过大为引,引出下文搭建服务器负责转发,切入本节课正题,MQTT协议的介绍和SIoT软件的使用。其实这里使用组播也是可以实现效果的,但是开销会增大,并且arduino的小主控板不能支持。】 生1:老师,我们能不能让1号数据发给2号,然后由2号负责发给3号,3号再往下传呢? 师:这位同学的思路非常的好,技术上也可以实现,但是违反了咱们前面提到过的网络设计原则。哪位同学说说看,网络设计的原则是什么,这里违反了哪项原则? 生2:网络设计需要遵循,高效、可靠、可扩展的原则。这里违反了可靠性原则,因为他的网络里全是单点故障点,只要有一台中间的设备挂了,整个数据的传输就断了,影响到后面的所有设备。 师:很好,虽然技术上没有问题,逻辑上也能走通。但是我们在设计规划模型的时候,要尽量避免单点故障的可能性。我们可都是校园网络工程师,不能忽略这么明显的故障点。 师:还有没有其他的方案? 生3:要不我们搭建一台服务器?1号把数据发给服务器,然后其他人需要数据的时候就去服务器上面取? 师:你来修改一下我们的模型. 3 修改后的板书为: 1 服务器 WiFi模块2 数值 处理器 数值/电信号 执行器 无线路由 线缆 线缆 …… 传感器 电信号/数值 处理器 数值 WiFi模块 WiFi模块 数值 处理器 数值/电信号 执行器 线缆 线缆 线缆 线缆 师:这个思路很好,只是有一个小问题,如果其他人忘记去取了怎么办?我这里有一个紧急数据,需要立刻通知所有人,10秒之后就失效了,但是大家都没有过来取,怎么办呢? 生4:那能不能让服务器收到信息之后立刻主动推送给所有人? 师(笑):那你就违法了哦,随便给别人发送无用的信息可是违法行为。(严肃),并且还会导致一个问题,如果信息是保密的,你推送给了不应该知道的人,还涉嫌泄密,那就违反了安全原则。应该怎么办? 生3:那我只发送给指定的人不就好了。 师:如何确定“指定的人”名单? 生3:要么我自己指定,要么让他过来报名好了。 师:那你认为是指定方便,还是对方主动过来报名方便呢?记得前面提到的安全原则。 生3:我认为,如果系统不重要,就让他自己报名好了。如果系统很重要,那肯定是我来指定。 师:非常好。我们今天和大家一起来了解一下满足我们需求的服务器应该如何应用。 边聊边板书下方记录服务器要求: 1、 收到消息立即推送 2、 只推送给指定对象 3、 指定对象可以自己报名 【设计意图:借着和学生之间的问答,引出物联网MQTT协议的几种要素,为下面做铺垫】 二、自主探究、获取新知 请同学们打开书本P09,MQTT协议是一个可以满足我们上述所有针对服务器要求的协议,它的工作原理类似于在线平台的订阅功能,用户关注发布者并成为订阅用户,发布者向平台发送信息。发布的内容会立即推送给订阅用户。 每一台终端既可以是订阅者,同时也可以是发布者。并且发布主题内容不一定需要订阅该主题。但是咱们的arduino 板子在Mind+里面,是必须要订阅主题才能向指定主题发布内容的。 书上为大家推荐了基于MQTT协议的SIoT软件作为服务器端。SIoT软件的下载地址是:https://mindplus.dfrobot.com.cn/siot。当然也可以去:https://github.com/vvlink/SIoT下载最新的v1.3版本。老师已经为大家下载好了SIoT v1.3 Windows版本,在大家的桌面上。直接运行就可以。 【设计意图:介绍MQTT软件,让学生知晓,同时这里提到SIoT是Windows版本,意在引导学生回顾7年级防火墙设置一节中关于防火墙的知识,所有进入windows系统的数据都需要先经过Windows defender防火墙的过滤。如果没有放行指定端口。那即使SIoT软件成功运行了,终端也无法连接到SIoT服务器上。】 师:将我们的模型取其中一组,现在我们的数据从传感器到达MQTT服务器(SIoT)需要经过几步? 生:四步,从传感器到处理器,从处理器到wifi模块,从wifi模块到无线路由,无线路由再到SIoT服务器。4 3 SIoT 无线路由 2 1 传感器 电信号/数值 处理器 数值 WiFi模块 线缆 线缆 师:讲的非常好,有没有同学要补充的? 生2:没有了。 师:同学们都忘记啦?SIoT是一个应用软件,应用软件是不能脱离系统软件单独存在的,所以数据在到达SIoT之前会先到达哪里? 生2:会先到达操作系统。穿过windows系统之后才会到达应用程序。 师:非常好,所以我们的模型其实应该是?请你上来修改一下。 Windows 4 3 SIoT 无线路由 2 1 传感器 电信号/数值 处理器 数值 WiFi模块 线缆 线缆 【设计意图:这里将数据传送的流程进行分解,下一步请学生自己审阅对于每一步操作存在哪些技术难题,逐一击破。另外在示意图中,明确标出数据是先行到达操作系统,才能到达SIoT软件,提示学生在下一步排障过程中,也要考虑操作系统配置的问题。】 师:我们首先来试着搭建SIoT服务器,同学们可以参照DFRobot社区文章《Arduino uno板-SIoT使用教程》https://mc.dfrobot.com.cn/thread-281129-1-1.html。在搭建过程中有任何的问题可以举手询问。 1、直接运行老师发送给大家的SIoT软件,注意这个黑框在我们实验期间需要一直打开,不能关闭。 本机IP(V4)后面显示的IP地址就是我们马上要进行登录的地址。 2、登录192.168.2.88:8080,注意这里的冒号一定是英文输入法下的冒号。如果打开困难,请输入http://192.168.2.88:8080。 3、在打开的网页输入账号:siot;密码:dfobot。这位同学举手什么问题? 生:老师。我们怎么知道端口和密码是多少呢? 师:忘了和大家说,SIoT所有的配置都存放在config.json文件中,可以使用记事本打开查看。当然,出于安全考虑,也是可以修改的,但是MQTT端口不建议修改,咱们的小板子只能使用默认端口。 SIoT登录之后的界面非常简单,项目列表、设备列表、发送消息。 首先是项目列表,当我们向某个主题发送消息时,主题是(xxx/yyy)的形式,xxx就会出现在这里。 其次是设备列表,同样当我们向某个主题发送消息时,主题是(xxx/yyy)的形式,点开xxx后面的查看设备列表,yyy就会出现在这里。 而想查看具体发送内容时,就需要点开yyy后面查看消息进行查看。这里xxx/yyy是你自由定义的,但是中间的“/”是必须存在的。消息内容可以是数字,也可以是文本。 最后的发送消息,如果你知道主题名,可以直接给某个主题发送消息,发送成功之后,该主题会被存储项目列表和设备列表中。 师:这位同学在举手,有什么问题么? 生1:我从我的电脑访问我们组的SIoT服务器为什么显示超时呢?但是他自己访问是没有问题的。 师:这位同学提出了一个很好的问题,本地可以访问,但是局域网无法访问,最有可能的是什么问题?有同学能帮助他一下么? 生2:会不会是Windows系统防火墙阻拦了入栈的数据? 师:有可能,哪位同学来回忆一下防火墙的原则? 生3:内部向外默认放行,外部向内默认阻拦。 师:很好,那么如果想要放行前往SIoT服务器的数据,我们应该针对那个方向,是针对IP地址还是端口进行放行?为什么? 生3:应该针对入栈方向,对指定端口放行,因为我不知道终端的具体IP地址,但是我只要放行8080和1883端口就可以让服务被正常访问了。 师:说的不错,有没有不同意见? 生4:如果更加严格一些的话,我们是知道终端的IP地址范围的,可以针对IP地址范围和端口号进行放行,这样安全系数更高一些。 师:非常的好,严格的防火墙规则放行时应遵循最小化范围原则。 师:最后一个问题,我们是应该放行UDP端口还是放行TCP端口呢?还是一起放行? 生:应该是TCP吧,因为要确保每个人都能准确的收到消息,需要可靠的传输,但是UDP只是尽力而为的传输,感觉不可靠。 师:没错,MQTT是通过TCP来传输数据的,SIoT服务器搭建好了,让我们开始观察一下数据传输的节点。看看我们目前的技术能不能支持我们完成一组数据的传输。 【设计意图:和学生分享SIoT服务器的简单使用,同时提醒学生windows防火墙可能会阻挡入栈数据,复习七年级防火墙设置部分的内容。】 修改板书内容: Windows 防火墙 4 3 SIoT 无线路由 2 1 传感器 电信号/数值 处理器 数值 WiFi模块 线缆 线缆 师:我们来看第一个数据节点,从传感器到处理器。 生:没有问题,注意接线颜色和接口就可以! 师:非常好,那我们来看看第二个数据节点,从处理器到wifi模块。这是一个新模块。我们以前没有接触过,最大的不同是模块有四根线,红、黑、蓝、绿。可以接在数字口或者是I2C口上,个人建议接入I2C口,可以避免可能的冲突。注意拨动开关应位于I2C一侧,红、黑、蓝、绿插线按顺序接入I2C口的5V\GND\SCL\SDA。 可以参考:https://wiki.dfrobot.com.cn/wifi_iot_module_tel0126。dfrobot社区关于obloq wifi iot模块的使用说明手册。 师:请同学们动手连接,插线正确时wifi模块(obloq)应该红灯亮起 【设计意图:讲解obloq 物联模块的接线方式,其实本课中风险最高的部分就在这里,obloq模块的杜邦线接头是散装的,接在I2C接口上是按线序排列即可,接在数字口上,需要占用两个数字口,而且红黑线还需要掉相。很担心有粗心的学生把正负极接反,也担心有学生把收发口弄错。所以这里示例统一接在I2C口,避免接错口导致的问题出现。】 师:接线成功之后我们来看第三个和第四个数据节点。从wifi模块到无线路由器再到SIoT服务器。回顾我们前面学习过的知识,接入无线网络需要知道哪两个参数? 生:SSID和无线密码。 师:非常好,我的SSID是TestTeam1,无线密码是:ldXX@2025。我们打开mind+开始配置: 1、 切换到上传模式 2、 选择扩展,主控板选择Arduino UNO,通信模块选择OBLOQ物联网模块。 3、 主程序第一行,obloq初始化,应为我们是连接在I2C接口上的,要注意不要选择错误了。点击配置。 4、 这里的topic即为订阅的主题。在arduino uno板子上,推送消息到主题的前提是先订阅。没有办法推送到未订阅主题。共可以订阅5个主题,从topic_0到topic_4。 5、 下一步我们可以试着将内容发送到指定主题,例如我的光线传感器在A5口,我可以将A5口的数值传递到test/light,也就是topic_0。 6、 上传到arduino系统,并观察obloq模块灯光颜色,绿灯亮起,登录SIoT网页端验证。收到数据即为成功(提醒学生先清空数据,或注意数据接收时间) 【设计意图:数据已经从本地传感器到达了MQTT服务器,下一步只要能接受到MQTT服务器的数据,并加入程序中调用成功,就完成了整个模型】 7、 在前四步全通的前提下,测试能否从MQTT服务器收到订阅,LED接在D5脚。Topic_1是test/control。登录SIoT网页端,发送on指令,如果正确,LED应该闪烁5次。 【设计意图:到这里,数据从MQTT服务器又回到了主控板,剩下的就是学生熟悉的调用数据。进行判断决策,输出执行的步骤了。】 师:这位同学有什么问题? 生:我们无线名称和密码都设置的对的,但是连不到我们组的无线路由器,模块一直是红灯。 师:检查过模块接线了没有?积木里调用的是I2C么?有没有错误的字符,例如0和o,1和L之类。 生:没有,多次检查了。 师:obloq模块只支持2.4GHz频段,你连远程用wifi analyer看一下无线有没有问题。 三、拓展创新 师:我们已经解决了1-4步数据传输的问题,接下来其他的终端配置也是一样。唯一不同的是有的主控负责发送数据,有的主控负责接收数据。但不管怎么样,前期的网络配置和订阅都是需要执行的。 师:在同学们面前有两套材料盒,同学们可以利用眼前的材料。做一些有趣的模型。不求完美,但希望你们可以好好的规划,尽量能实现功能。现在开始,小组内可以先讨论规划一下。当然也可以一边规划一边动手操作。我们稍后开始交流。 【设计意图:该讲的技术已经讲过了,剩下的时间交给学生自由发挥,一直带着学生并不能激发他们的想象力,这一段要注意随时观察,避免有些学生借着讨论为名讲闲话,也要避免学生借上网查询资料的名义上网看视频,聊天,打页游等。】 四、交流讨论 师:请每一组推荐一名代表来和大家分享一下你们的模型。如果在设计过程中遇到了困难,也可以一起提出来大家讨论。 【设计意图:分享点评,头脑风暴,期望能激发出更多的有趣的创意】 五、故布疑阵 师:通过教学软件发现学生安装SIoT的电脑IP,对使用默认密码和端口的机器进行登录,篡改数据,发送垃圾数据包等。等待学生举手报告。 【设计意图:一直在提安全、安全、安全,还是有学生不当回事,由教师出手给他们添加一些麻烦,他们才知道密码的重要性。当然这一段最好是挑已经有项目雏形,实现了网络控制的小组,比如将他们的灯一个劲儿的闪闪灭灭】 师:这位同学举手什么问题? 生:我们的模型不听指挥,不停的乱动。 师:(假装好人),让我们来看看你们组的SIoT服务器呢,默认密码登录之后,发现订阅的主题里有大量的非授权消息。引导学生思考可能的问题是什么? 生:是不是有人登录到我们的设备里了? 师:我们也可以查看小黑窗,里面有SIoT服务器的日志。发现从192.168.2.88(教师机)进行了默认密码的登录。 [GIN] 2025/03/11 - 20:45:15 |192.168.2.88 | /projects?iname=siot&ipwd=dfrobot&_=1741697115504" 师:那应该如何避免这种情况的发生? 生:应该立刻修改账号密码,别人只要不知道账号和密码,第一道防线就挡住了。 师:没错,极端情况下,我们也可以修改网页登录端口号(例如8888),同时可以开启OnlyLocalURD:true,这样只允许在服务器本地,以127.0.0.1:8888登录,其他ip地址,不知道端口号无法打开页面,即使知道端口号登录进来,不能看到本地已经存在的主题,也算是变相的保护了服务器。 【设计意图:再次讲解一下SIoT修改账号和密码的方式。再强调一次安全的重要性。】 六、总结展望 这节课,我们讨论了如何将传感器的值以无线的形式传递分享给其他设备。有一个专门干这个活儿的协议叫MQTT,它最大的特点是订阅和推送。大家设计了很多有趣的模型,有的小组已经开始搭建调试。和其他的网络应用一样,MQTT也存在被入侵的可能性,信息安全这根弦要时刻紧绷。所有涉及到密码的部分,都应该使用足够强壮的密码。防火墙放行规则应该最小化授权,极端情况下我们也可以修改SIoT服务器的网页登录端口,开启SIoT服务器的本地登录,这样即使遭遇了远程登录入侵,也不能看到我们的Topic。下课后希望同学们继续完善自己的想法,咱们下节课继续。最后期待大家的设想早日完成。 【设计意图:这一节中技术部分其实不是很难,但是涉及到很多前面学习过的知识,这节课最终的成果是小组成员之间的想法,想法是创新的第一步。】 七、教学反思 这是一节八年级信息科技课,按照设想,这是第一节课,后面还有一节动手实践课时。课内有一些图形化编程的内容,但难度不大。我们学校的器材和教材上的略有差异,但原理上基本上是一致的。在规划这节课的时候,我就设想让学生自己去搭建模型,因为这种小主控板本质上是将传感器传回的值进行数字化之后再进行处理,其实用哪个传感器,并没有什么关系,甚至于某一个模型,只要换一个传感器,就可以有另外一套解释,但是程序几乎完全不用改变。在以前带学校创客社团的时候,也有过类似的授课经历,将关键技术讲完,剩下的交给学生自由发挥,他们一定会超出你的想象。本节课技术方面的新内容非常的少,更多的是穿插以前学习过的知识点内容,有学生反映跟上有点困难。本节课在我校八年级试上了两次,学生对于自由发挥部分比较开心,给出的模型设想非常有趣,遇到的问题也是千奇百怪。当时讨论记录附件于后。 因为课上讲的是路灯,孩子们的思维大多局限在灯光类的模型上,以后课上要注意避免提及具体的类型,让孩子们自由发挥。 附件1:群控的调光台灯 学生:八1班第2小组 师:这边有同学举手,什么问题? 生:我们想制作一群受控的调光路灯,根据光线传感器的值调整灯光的亮度,但是发现OBLOQ消息不能拉进去。 师:我们观察一下代码,在触发事件的同时,mind+会接受到一个变量名为Obloq消息的字符串类型数据。字符串怎么能参与运算呢?我们可以使用mind+运算下面的将字符串转为整数,也可以去arduino里面手工将obloq消息转成数字形式的。常用的文本转数字的函数有两个,一个是针对单一字符,可以用int()函数,如果是一个表示数字的字符数组,我们可以使用atoi()函数,这里光线传感器的值是0-1023,我们应当使用aoti()函数。简单修改一下试试看。 修改代码: // 事件回调函数 void obloqMqttEventT0(const char *obloq_message) { if ((atoi(obloq_message)>200)) { analogWrite(5, ((atoi(obloq_message) - 3) / 4)); } else { analogWrite(5, 0); } } 师:这里还有一点儿小问题,A口读进来的数值是可以映射到0-255的,你们没有用映射而是自己写了段公式来进行。那么如果A口传回来的数据小于3怎么办?是不是会导致写入D口值出错?虽然你们在obloq消息小于200以下可能就关闭了D口的输出,但是我们在编写程序的时候,这样的问题也需要考虑到。 附件2:跟随行人脚步的地灯 学生:八1班第3 & 4小组 师:你们有什么问题? 生:我在外面看到过一种,可以跟着人的脚步亮起来的地灯,也就是我走到哪里,前面一盏灯就会亮起来。我们想设计这样一个模型。但是有点困难。 师:具体的说一下困难呢? 生:我们设想的是当人走到n号灯的时候,n号灯推送传感器状态到主题,n+1号灯收到主题自动亮起,但是如果人从n+1号灯向n号灯走就没办法了,亮到后面去了(笑声)。 师:那你当n号灯触发的时候,让n-1,n+1都亮不就行了么? 生:(笑声)这样是可以,但是不够炫酷,也不够节能。如果我只要亮起来前方的灯,可以么? 师:可以是可以,至少需要经过两个以上的传感器触发才能推断出下一个需要点亮的灯了,如果突然转身,还是不行的。我给出一个思路,你看看能不能把程序写出来。传感器在D2,灯在D5,obloq接在I2C。 师:当本地传感器被触发的时候,向SIoT发送本机编号,同时点亮本地灯光。当收到SIoT推送的带有路灯编号的消息时,将收到的消息编号与本机编号相减,求绝对差值。如果等于2,设置控制变量=1,此时进入准备亮灯阶段。如果绝对差值不等于2但是等于1,那么设置控制变量等于控制变量原有值+1,此时进行判断,如果控制变量等于2,说明由远及近,邻近的两个传感器按顺序被触发了,下一个可能触发的就是本地传感器,此时灯光亮起,做到未卜先知的效果。亮灯时间取决于每盏灯的间距,正常人步行速度在1M/S到1.5M/S之间,可以进行大致上的估算。 上述为第3组2号同学编制的程序,该同学有多次参与领航杯创意智造的经历。 师:有问题? 生:老师我觉得我这段代码没有问题?但是在执行的过程中,左侧代码直接触发,D2上没有插任何传感器。而且不论设置判定值是=1或者是=0都直接触发。求助。 师:程序看起来没有问题,你看一看SIoT服务器消息呢? 生:一直在上传本机编号。 师:这个问题比较的奇怪,看起来程序没有问题。为师也很困惑,要不咱们问问现在很火的deepseek?把自动生成的代码复制到deepseek里让它分析一下看看呢? 以下为deepseek的回复: 从代码的逻辑来看,’pin2’ 的状态判断是通过 ‘digitalRead(2)’ 来读取的。如果 ‘pin2’ 不管是 ‘==1’ 还是 ‘==0’ 都会触发下面的语句,可能有以下几种原因: 1. 硬件问题 引脚状态不稳定:如果 ‘pin2’ 连接的硬件电路有问题,比如引脚悬空(没有接上拉或下拉电阻),可能会导致引脚状态不稳定,读取的值可能会在 ‘0’ 和 ‘1’ 之间随机跳动。 硬件连接错误:检查 ‘pin2’ 是否正确连接到预期的输入设备(如按钮、传感器等),并且连接是否牢固。 2. 软件问题 抖动问题:如果 ‘pin2’ 连接的是一个机械开关或按钮,可能会存在抖动现象(即在按下或释放时,信号会在短时间内快速变化)。这可能导致 ‘digitalRead(2)’ 在短时间内读取到多个 ‘0’ 和 ‘1’ 的值。 解决方法:可以通过软件去抖动(debounce)来解决这个问题。例如,可以在读取引脚状态后延迟一段时间再读取一次,或者使用去抖动库。 3. 逻辑问题 代码逻辑错误:从代码来看,’if ((digitalRead(2)==1))’ 这个条件判断是正确的。如果 ‘pin2’ 的状态确实是 ‘1’,那么下面的语句会被执行。如果 ‘pin2’ 的状态是 ‘0’,那么下面的语句不会被执行。 检查逻辑:确保 ‘pin2’ 的状态确实是你预期的状态。你可以在 ‘if’ 语句之前添加调试信息,打印 ‘digitalRead(2)’ 的值,看看它是否如你所预期的那样变化。 4. 调试建议 添加调试信息:在 ‘if’ 语句之前添加 ‘Serial.println(digitalRead(2));’,这样你可以通过串口监视器查看 ‘pin2’ 的实际状态。 void loop() { Serial.println(digitalRead(2)); // 打印 pin2 的状态 if ((digitalRead(2)==1)) { olq.publish(olq.topic_1, mind_n_BenJiBianHao); digitalWrite(5, HIGH); delay(mind_n_LiangDengShiJian * 1000); digitalWrite(5, LOW); } } 检查硬件连接:确保 ‘pin2’ 正确连接到预期的输入设备,并且连接牢固。 去抖动处理:如果 ‘pin2’ 连接的是机械开关或按钮,考虑添加去抖动处理。 5. 去抖动示例 如果你确定是抖动问题,可以尝试以下简单的去抖动代码: void loop() { static unsigned long lastDebounceTime = 0; static int lastButtonState = LOW; int buttonState = digitalRead(2); if (buttonState != lastButtonState) { lastDebounceTime = millis(); } if ((millis() - lastDebounceTime) > 50) { if (buttonState == HIGH) { olq.publish(olq.topic_1, mind_n_BenJiBianHao); digitalWrite(5, HIGH); delay(mind_n_LiangDengShiJian * 1000); digitalWrite(5, LOW); } } lastButtonState = buttonState; } 这段代码会在 ‘pin2’ 状态变化后等待 50 毫秒,确保状态稳定后再执行相应的操作。 总结 - 首先检查硬件连接是否正确。 - 添加调试信息,查看 ‘pin2’ 的实际状态。 - 如果 ‘pin2’ 连接的是机械开关或按钮,考虑添加去抖动处理。 通过这些步骤,你应该能够找到问题的根源并解决它。 师:要不咱们把D2接一个按钮或者其他传感器试试看? 生:嘿,接了按钮,就没有问题了。 师:最后经过询问dfrobot官方技术人员和查阅相关资料发现问题出在引脚悬空。在Arduino中,数字引脚(D口)并不一定要接传感器才能调用。可以直接读取或写入数字引脚的状态,无论它是否连接了外部设备。如果数字引脚配置为 输入,并且没有连接任何外部设备(如传感器、按钮等),引脚会处于悬空(floating)状态。在悬空状态下,’digitalRead(pin)’ 读取的值可能是 不确定的(可能是 ‘HIGH’ 或 ‘LOW’,甚至是随机跳变的)。这是因为悬空的引脚容易受到环境噪声的干扰。 在本例中 ‘pin2’ 没有连接任何外部设备,或者连接的外部设备没有正确接地或上拉/下拉,’digitalRead(2)’ 可能会返回不确定的值(随机跳变),导致 ‘if ((digitalRead(2)==1))’ 的条件频繁触发。 附件3:智能交通灯 学生:八2班第一小组 师:谁来给大家介绍一下咱们小组的模型? 生:我来,我经常观察到有些十字路口,某一个方向的车子特别的多,另一个方向没有几台车,但是红绿灯还是按部就班的不急不忙。我们想设计一组智能的交通灯,当某一个方向上车辆开始积压的时候,就自动延长这个方向上的绿灯时间。 师:说说看你们的思路。 生:我们打算在每个方向的路上布置3个传感器,靠近路口的编号是1,然后是2,3。2号和3号传感器都没有触发的时候,绿灯时间是20秒,当2号传感器被触发的时候,绿灯时间变成40秒,当3号传感器被触发的时候,绿灯就变成60秒。 师:你们的想法非常的好,但是我有一个小问题,如果有一辆车停在了3号传感器上,但是前面并没有其他车,那是不是绿灯也要亮60秒呢? 生2:可以修改判断语句,当1和2同时被触发,才加倍。当1和2和3同时被触发,就加到3倍。 师:这样就比较完美了,很好,你们有遇到什么困难么? 生:要接的线太多了,我们还没有开始编写程序。 师:好的,加油,遇到问题随时召唤我。 2 2 学科网(北京)股份有限公司 $

资源预览图

第四单元物联网的数据处理实验室:搭建远程控制多盏路灯物联系统原型 教学设计 2025- 2026学年苏科版初中信息科技八年级下册
1
第四单元物联网的数据处理实验室:搭建远程控制多盏路灯物联系统原型 教学设计 2025- 2026学年苏科版初中信息科技八年级下册
2
第四单元物联网的数据处理实验室:搭建远程控制多盏路灯物联系统原型 教学设计 2025- 2026学年苏科版初中信息科技八年级下册
3
相关资源
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。