内容正文:
《智能物联系统的软件编写》
教学课件
浙教版(2023版)初中信息技术八年级下册
1.7.2013
同学们好!上节课我们亲手搭建了智能校园数字气象站的硬件系统。但一个只有硬件的系统是无法工作的,就像一个人只有身体没有灵魂。今天,我们将学习《智能物联系统的软件编写》,通过编程,赋予我们的气象站“灵魂”,让它真正“活”起来,实现智能监测和数据传输。
‹#›
还记得我们的“数字气象站”吗?
🤔 引导问题:
上节课,我们亲手搭建了智能校园数字气象站的硬件系统。谁能告诉大家,我们的气象站连接了哪些传感器?它们分别被连接到主控板的哪个端口?
温湿度传感器
连接到P0端口
风速传感器
连接到P16端口
光照传感器
连接到P14端口
💡 教师小结:大家的记忆非常准确!这些硬件是我们物联系统的“身体”,它们负责感知物理世界的变化,为我们接下来的软件编程提供真实数据。
1.7.2013
在开始编写软件之前,我们先来回顾一下上节课搭建的硬件。大家还记得我们的气象站连接了哪些传感器吗?它们分别连接在主控板的哪个端口?没错,温湿度传感器在P0口,风速传感器在P16口。这些硬件是我们系统的基础,是“身体”。
‹#›
硬件是“身体”,软件是“灵魂”
核心思想
只有硬件是不够的,就像一个人只有身体没有灵魂。我们需要通过软件编程,赋予硬件“生命”,让它能够思考、判断和交流。
本节课目标
今天,我们就来学习《智能物联系统的软件编写》,编写程序,让我们的气象站真正实现智能监测功能,将采集到的数据实时传输并展示出来。
理解核心功能
深入理解物联软件的核心逻辑,明白它是如何让冰冷的硬件变得“聪明”并实现价值的。
掌握编程方法
掌握传感器数据采集、网络传输协议和前端数据呈现的关键编程方法,打通数据链路。
体验完整实践
亲手体验从底层硬件配置到上层软件逻辑开发的完整实践过程,构建系统化的工程思维。
1.7.2013
只有硬件是远远不够的,硬件只是“身体”,而软件才是赋予它生命的“灵魂”。今天,我们的目标就是编写这个“灵魂”,让我们的气象站能够思考和交流。我们将学习如何通过编程实现数据采集、传输和呈现,体验从硬件到软件的完整过程。
‹#›
智能物联软件的三大核心模块
📖 引导阅读:请同学们快速阅读教材第X页,思考一个智能物联系统的软件通常需要完成哪三件大事?
01 数据采集模块
负责指挥主控板读取各个传感器的数据。例如,告诉主控板:“去读取P0口的温度和湿度是多少?”
02 数据传输模块
负责将采集到的数据通过网络(如WiFi)发送到云端的物联平台。这就像我们把一封信通过邮局寄出去。
03 数据呈现模块
负责在物联平台或手机APP上,将接收到的数据以数字、图表等友好的方式展示给用户,让数据“活”起来。
1.7.2013
一个智能物联软件,通常需要完成三件大事。第一是数据采集,也就是让主控板去读取传感器的数据。第二是数据传输,把采集到的数据通过网络发送出去。第三是数据呈现,把数据在平台上展示出来。这就是我们软件的三大核心模块。
‹#›
数据的奇妙旅程
01传感器感知
温湿度传感器感受到环境温度(如25℃),并将其转换为模拟电信号。
02主控板处理
主控板通过端口读取电信号,进行A/D转换,将其变成计算机可识别的数字信息。
03WiFi连接网络
主控板将处理好的数字数据通过内置WiFi模块,成功连接到校园或家庭网络。
04MQTT协议传输
设备使用轻量级的MQTT协议,将“温度25℃”等信息打包,安全地发送至指定的MQTT服务器。
05平台接收存储
云边一体的物联网平台从MQTT服务器接收数据,进行清洗并存储在数据库中。
06终端实时展示
用户在电脑网页端或手机App上打开物联网应用,就能实时看到更新的温度数据,完成闭环。
1.7.2013
那么,一个数据是如何从传感器出发,最终到达我们手机上的呢?它会经历一段奇妙的旅程。首先,传感器把物理信号变成电信号,主控板再把它变成数字信息。然后通过WiFi和MQTT服务器,把数据上传到物联平台。最后,我们就能在手机或电脑上看到它了。
‹#›
我们的编程工具 - Mind+
01 / 工具介绍
本节课,我们将使用一款非常适合初学者的图形化编程软件——Mind+。它操作直观,功能强大,是学习编程的绝佳助手。
支持图形化与代码
既可像搭积木一样拖拽图形编程,也支持查看和编写Python代码,灵活适配不同学习阶段。
硬件与物联集成
完美兼容主流主控板和传感器,内置WiFi连接与MQTT模块,快速实现物联网应用开发。
📝 课前准备:请检查电脑是否已安装 Mind+ 软件,并确认已成功登录个人的物联平台账号。
1.7.2013
我们将使用的编程工具是Mind+。它非常适合初学者,既可以像搭积木一样编程,也可以直接写代码。它对我们的硬件支持非常好,并且内置了物联功能,能让我们的编程变得更简单。现在,请大家检查一下电脑是否已经安装了Mind+。
‹#›
关键原则:软硬件必须“一一对应”!
核心强调
程序编写的第一步,也是最关键的一步,就是确保代码中的端口号与我们硬件实际连接的端口号完全一致。
举例说明
• 如果温湿度传感器接在 P0 口 → 代码里必须写`Pin(0)`
• 如果风速传感器接在 P16 口 → 代码里必须写`Pin(16)`
⚠️ 后果警示:若端口写错,主控板会去错误的“地址”读取数据,导致传感器完全无法工作。这是新手最常见的“隐形”错误之一!
1.7.2013
在开始编程之前,我必须强调一个最关键的原则:软硬件必须“一一对应”!也就是说,代码里写的端口号,必须和我们硬件实际连接的端口号完全一样。比如传感器接在P0口,代码里就必须写Pin(0)。如果写错了,整个程序就无法正常工作。
‹#›
任务一:让主控板学会“看”和“听”
任务目标
编写代码,让主控板能够精准读取温湿度传感器和风速传感器的环境数据,完成“感知”环境的第一步。
关键步骤分解
1. 导入传感器库
如同查字典前先打开字典,需先告知程序“我们要使用这个传感器功能了”。
2. 初始化传感器
告诉程序每个传感器具体连接在主控板的哪个物理端口上。
1.7.2013
好,现在我们开始第一个编程任务:让主控板学会“看”和“听”,也就是读取传感器的数据。这个任务分为两步:第一步是导入传感器库,就像查字典前要先打开字典;第二步是初始化传感器,告诉程序每个传感器的“住址”。
‹#›
第一步:导入传感器“字典”
# 导入传感器库 (Library Import)
frommachineimportPin
fromdhtimportDHT11# 温湿度传感器
importwind_speed# 风速传感器
●machine.Pin:控制硬件引脚的“万能钥匙”,是与所有传感器交互的基础。
●dht.DHT11:专门用来读取温湿度传感器的“说明书”。
●wind_speed:专门用来读取风速传感器数据的功能包。
请同学们动手操作:
打开 Mind+ 软件,新建一个 Python 项目,将左侧的代码准确输入到编辑器中。
Mind+ Editor — project.py
# 1. Import Sensor Libraries
frommachineimportPin
fromdhtimportDHT11
importwind_speed
# 2. Setup Pins and Sensors...
pass
1.7.2013
第一步,导入传感器库。大家看这段代码,from machine import Pin是导入控制硬件的基本功能。from dht import DHT11和import wind_speed就是分别为温湿度传感器和风速传感器准备的“说明书”。现在,请大家打开Mind+,把这几行代码输入进去。
‹#›
第二步:告诉程序传感器的“住址”
温湿度传感器 (DHT11)
代码:dht = DHT11(Pin(0))
含义:创建对象并指定“住址”为P0 端口,用于读取温湿度数据。
风速传感器 (WindSpeed)
代码:wind = WindSpeed(Pin(16))
含义:创建对象并指定“住址”为P16 端口,用于计算实时风速。
⚠️ 小组核对任务
请各组记录员再次核对硬件连接表,确保代码中的端口号与实际连接完全一致!
# 1. 初始化传感器 (对应物理连接端口)
dht = DHT11(Pin(0)) # 温湿度
# ------------------------------
# 2. 初始化风速模块
wind = WindSpeed(Pin(16)) # 风速
👆 注意括号中的数字与实际接线对应
1.7.2013
第二步,告诉程序传感器的“住址”。看这段代码,`dht = DHT11(Pin(0))`就是创建一个温湿度传感器对象,并告诉它住在P0口。`wind = wind_speed.WindSpeed(Pin(16))`是创建风速传感器对象,告诉它住在P16口。请大家务必核对清楚,端口号不能错!
‹#›
任务二:为数据搭建“高速公路”
🎯 核心目标
编写代码,让主控板能够连接到 WiFi 网络,并使用 MQTT 协议将采集到的数据稳定、高效地发送出去。
01. 连接 WiFi 网络
实现主控板与互联网的连接,打破设备的物理边界,打通数据传输的“最后一百米”,建立与外部世界的数字通道。
02. 配置 MQTT 协议
选择轻量级的 MQTT 作为“数据快递员”,它专为物联网场景设计,能保障数据以极低的功耗和极高的稳定性送达云端。
WIFI + MQTT = 数据传输的“高速公路”
1.7.2013
数据采集好了,怎么传出去呢?这就是我们的第二个任务:为数据搭建“高速公路”。
这需要两步:第一步是连接WiFi,让主控板上网,打破物理限制;第二步是配置MQTT,找到数据传输的“快递员”,确保它能稳定、高效地把数据送到云端。完成这一步,我们的设备就真正实现了联网。
‹#›
第一步:连接WiFi网络
# 导入功能库并配置参数
importwifi
ssid ="校园WiFi"# WiFi名称
password ="12345678"# WiFi密码
wifi.connect(ssid, password)
导入库
引入WiFi功能模块,为后续连接做准备。
WiFi名称
设置你想要连接的网络名称(SSID)。
网络密码
输入对应的连接密钥,区分大小写。
💡 课堂操作指引
请向老师获取最新的校园WiFi账号和密码,并准确填写到代码中。特别注意:密码必须一字不差,否则无法连接网络!
连接网络 · 开启编程之旅
Connect to the Campus WiFi Network
1.7.2013
首先是连接WiFi。大家看这段代码,import wifi是导入WiFi功能。ssid和password就是我们校园WiFi的名称和密码。请大家向我获取账号密码,并准确地填写进去。密码一定要仔细核对,错一个字母都连不上网。
‹#›
什么是MQTT协议?
通俗解释:物联网的“快递系统”
把 MQTT 比作一个高效的物流网络,各个角色对应关系一目了然:
• 设备:寄件人 (如:气象站、智能手环)。
• 服务器:大型快递中转站,负责高效分拣与投递。
• 主题 (Topic):包裹上的“地址标签” (如:/campus/weather/data)。
• 平台/APP:最终的收件人。
核心流转逻辑
气象站将数据“打包”并贴上特定 Topic 标签,发送至服务器。服务器解析标签后,精准地将数据分发给所有订阅了该 Topic 的平台或应用。
MQTT 协议发布/订阅架构示意图
基于主题(Topic)的多对多消息分发机制,解耦了消息发布者与订阅者
1.7.2013
那什么是MQTT协议呢?大家可以把它想象成物联网世界里的“快递系统”。我们的气象站是寄件人,MQTT服务器是快递中转站,物联平台是收件人。我们给数据贴上一个叫“主题”的地址标签,服务器就会根据这个标签,把数据准确地送到收件人手里。
‹#›
第二步:配置MQTT“快递信息”
# MQTT 参数配置 (Python)
server = "tcp://xxx.xxx.xxx.xxx"# 服务器地址 (老师提供)
port = 1883# 端口号 (默认1883)
client_id = "group01"# 小组唯一ID (如 group01)
topic = "qixiangzhan/data"# 统一主题名
Server 地址
MQTT服务器IP,由老师统一提供,请不要随意修改。
Port 端口号
MQTT协议默认端口号,通常保持 1883 即可。
Client ID
设备的“身份证号”,每个小组的ID都是唯一的,不可重复。
Topic 主题
数据的“快递地址”,请务必填写为: qixiangzhan/data。
物联平台参数获取
登录老师指定的物联网管理平台,进入“设备管理”或“开发配置”页面,找到MQTT连接配置区域,复制对应的连接参数填入代码。
⚠️ 关键操作提示
请各组仔细核对“Client ID”和“Topic”。小组之间可以互相交叉检查代码配置,避免因参数填写错误导致无法连接。
1.7.2013
了解了MQTT,我们就要配置“快递信息”了。大家看这段代码,server是服务器地址,port是端口号,client_id是你们小组的唯一ID,topic是地址标签。这些参数我会发给大家,请大家准确地填写到代码里。
‹#›
任务三:让数据“动”起来
🎯 任务目标:编写一个循环程序,让它像永动机一样,持续不断地采集传感器数据、进行格式处理,并将最终结果发布到物联网平台上,形成稳定的数据流。
🔄 核心代码结构:while True 无限循环
01. 读取数据
向连接好的传感器对象发送指令,请求并获取当前的最新原始数据。
02. 处理数据
对采集到的原始数据进行清洗和格式化,例如:保留两位小数,转换为JSON格式等。
03. 发布数据
通过MQTT协议,将处理后的标准数据发布到物联网平台指定的主题上。
04. 设置间隔
使用 time.sleep() 让程序短暂休眠(如1秒),避免数据发送过于频繁,再回到循环第一步。
1.7.2013
数据采集和传输的准备工作都做好了,现在我们进入第三个任务:让数据“动”起来。我们需要编写一个无限循环程序,让它一遍又一遍地执行读取数据、处理数据、发布数据这些操作。
‹#›
编写无限循环程序
无限循环入口:while True:
开启无限循环模式,循环体内部的代码会周而复始地执行,永不停止。
感知环境数据
调用dht.temperature()等方法,从硬件传感器实时读取温度、风速等物理世界信息。
MQTT 消息发布
将处理后的环境数据通过mqtt.publish()发布到指定的主题,供云端或其他设备订阅接收。
控制采集频率
通过time.sleep(3)让程序暂停3秒,避免数据采集和发送频率过高,节省资源。
Mind+ 代码模式 · Python
whileTrue:# 开启无限循环
# 1. 从传感器读取实时环境数据
temp = dht.temperature()# 读取温度
speed = wind.get_speed()# 读取风速
# 2. 数据处理,保留2位小数以美化展示
temp, speed = round(temp, 2), round(speed, 2)
# 3. 发布消息并打印日志
mqtt.publish("env_data", f"温度:{temp}℃, 风速:{speed}m/s")
print(f"已发送: 温度{temp}℃, 风速{speed}m/s")
# 4. 暂停3秒,控制采集频率
time.sleep(3)
1.7.2013
这就是我们的循环代码。while True:标志着无限循环的开始。里面依次是读取数据、处理数据、准备数据、发布数据,最后用time.sleep(3)让程序暂停3秒,这样数据就不会发得太快。请大家把这段代码添加到程序的末尾。
‹#›
大功告成!整合你的完整程序
任务目标
将前面编写的三个核心模块(数据采集、数据传输、数据呈现)的代码片段整合在一起,最终形成一个可独立运行、功能闭环的完整程序。
📦 整合执行顺序
01
导入库
Pin / DHT11
wifi / mqtt
02
初始化
传感器对象
(dht, wind)
03
连WiFi
wifi.connect
建立网络连接
04
连MQTT
接入服务器
准备消息传输
05
无限循环
while True
持续采集上报
⚠️ 关键检查清单
请务必核对端口号、WiFi连接密码及MQTT服务器地址是否正确,这是程序成功运行的基石!
代码拼图 · 模块聚合
Combine Code Modules, Build the Whole Logic
1.7.2013
现在,是时候把我们写的所有代码整合在一起了。请按照导入库、初始化传感器、连接WiFi、连接MQTT、无限循环的顺序,把代码组合成一个完整的程序。在整合的过程中,一定要再次仔细检查所有参数,确保万无一失!
‹#›
让代码“住进”主控板
01 连接硬件
使用USB数据线将主控板与电脑连接,确保物理接触良好。
02 选择端口
在Mind+软件中,正确选择主控板对应的COM端口,确保连接无误。
03 点击下载
在软件界面上找到“下载”或“上传”按钮,点击开始写入程序。
04 等待成功
观察控制台输出信息,直到出现“下载成功”提示,完成烧录。
注意:下载过程中,请不要拔插数据线,避免主控板程序损坏。
图示:USB数据线连接开发板与电脑
1.7.2013
程序写好了,怎么让它在主控板上运行呢?我们需要把代码“下载”到主控板里。请大家用USB线把主控板和电脑连起来,在Mind+里选择正确的端口,然后点击下载按钮。等待控制台提示“下载成功”就可以了。
‹#›
程序不工作?分步排查来帮忙!
第一步:看串口打印
•操作:打开Mind+的串口监视器。
•检查:是否能看到类似“温度:25.5℃,风速:2.3m/s”的信息?
•结论:如有,则数据采集模块正常;如无,检查传感器连接和端口号。
第二步:看WiFi状态
•操作:观察主控板上的WiFi指示灯。
•检查:是否处于常亮或有规律的闪烁状态?
•结论:如是,则WiFi连接成功;如否,请检查WiFi账号与密码。
第三步:看物联平台
•操作:刷新物联平台页面。
•检查:是否有新的数据点出现?
•结论:如有,则MQTT传输成功;如无,请检查MQTT参数配置。
Mind+ 串口监视器界面示例
实时查看设备端发送的原始数据
1.7.2013
如果下载成功后,平台上还是没有数据,不要着急。我们可以用分步排查法来找到问题。第一步,打开串口监视器,看看有没有数据打印出来,如果有,说明采集模块没问题。第二步,看看WiFi灯亮了没有,如果亮了,说明网连上了。第三步,刷新平台页面,如果有数据了,说明传输成功了。
‹#›
常见“陷阱”与解决方案
错误1:端口写错
🔍 现象:串口无数据输出,或输出的数据明显异常、乱码。
❓ 原因:代码逻辑正确,但引脚定义错误,如将代码中的Pin(0)误写为Pin(1)。
✅ 解决:仔细核对硬件连接表与电路图,检查并修正代码中对应的端口号。
错误2:WiFi密码错误
🔍 现象:设备上电后,WiFi 指示灯不亮,或处于持续闪烁状态无法常亮。
❓ 原因:代码中password变量填写的内容与 WiFi 实际密码不一致,导致鉴权失败。
✅ 解决:检查大小写、特殊字符及空格,确保代码中密码与路由器设置完全一致。
错误3:MQTT主题不一致
🔍 现象:本地串口调试助手能看到数据正常发送,但物联网平台无任何数据显示。
❓ 原因:代码中发布消息的topic与平台侧订阅的主题名称不完全匹配。
✅ 解决:统一代码与平台的配置,建议使用qixiangzhan/data作为标准主题进行通信。
1.7.2013
这里我总结了三个最常见的“陷阱”。第一是端口写错,导致传感器没数据。第二是WiFi密码错了,导致连不上网。第三是MQTT主题不一致,导致平台收不到数据。大家在调试的时候可以重点检查这几点。
‹#›
见证奇迹的时刻!
关键任务
当所有错误都排除后,请打开物联平台的数据看板页面,准备好迎接成果的展示。
✅ 数据图表正在实时更新,展现动态变化
✅ 温度、风速等数据随环境变化而自动波动
✅ 每3秒就会自动生成并展示一个新的实时数据点
恭喜!你的智能校园数字气象站
正式上线运行了!
示例:物联网平台实时数据看板界面
实时刷新气象数据与可视化图表
1.7.2013
当所有错误都排除后,就是见证奇迹的时刻!请大家打开物联平台的数据看板。如果一切顺利,你将看到数据图表正在实时更新,温度和风速数据会随着环境变化而变化。恭喜你,你的智能气象站正式上线运行了!
‹#›
小组展示与交流
活动要求
请每个小组派一名代表,向大家展示你们的气象站系统。这不仅是成果的展示,更是经验的交流。
展示内容重点
• 展示物联平台上实时更新的气象数据。
• 分享编程与调试过程中遇到的问题,以及解决思路。
“大家好,我们是第X组。我们的气象站每3秒更新一次数据,目前温度是26℃,风速是1.5m/s。我们一开始遇到了风速无数据的问题,后来发现是把P16写成了P15,改过来就好了。”
1.7.2013
现在,我们来进行小组展示与交流。请每个小组派一名代表,向大家展示你们的成果,并分享一下你们在编程和调试过程中遇到的问题和解决方法。这不仅是展示,更是互相学习的好机会。
‹#›
拓展思考:如何让我们的气象站更智能?
我们已经实现了基础的数据监测功能。大家想一想,还能做哪些优化,让气象站变得更“聪明”?
01增加数据显示
如何把光照强度也显示出来?
提示:添加光照传感器的初始化与读取代码。
02设置异常报警
当温度超过30℃时,让蜂鸣器发出警报。
提示:在代码中使用 if 条件判断语句。
03调整采集频率
如何让数据每5秒更新一次,减轻硬件压力?
提示:修改 time.sleep() 函数的参数。
课后挑战任务:感兴趣的同学可以尝试独立完成以上优化,打造专属你的“智能气象站”!
1.7.2013
我们已经实现了基础功能,但我们的气象站还可以更智能。大家可以思考一下,如何把光照强度也显示出来?如何设置高温报警?如何调整数据采集频率?这些都可以作为大家的课后任务,尝试让我们的系统变得更强大。
‹#›
本节课,我们收获了什么?
三大核心模块
● 数据采集:根据硬件端口,编写传感器数据读取代码,获取环境数据。
● 数据传输:完成WiFi连接与MQTT协议参数设置,实现数据从设备到云端的上传。
● 数据呈现:通过循环与发布函数,实现物联平台的实时可视化显示。
一个关键原则
软硬件协同
代码中定义的端口号必须与硬件电路中实际连接的端口号一一对应,这是实现功能的基础前提。
一种重要能力
程序调试能力
掌握通过串口监视器查看日志、利用硬件指示灯状态以及分析平台反馈信息,来快速定位和排查问题的方法。
1.7.2013
好了,一节课的时间很快就过去了。让我们一起来梳理一下今天的收获。我们学习了数据采集、传输、呈现三大核心模块的编程方法,牢记了软硬件协同的关键原则,还掌握了程序调试的重要能力。
‹#›
从硬件到软件,我们完成了完整的闭环
课程总结
通过这两节课的学习,我们亲手实现了从“硬件搭建”到“软件编写”,再到“系统运行”的完整实践闭环,真正打通了理论与实践的壁垒。
信息意识
理解了数据在物联系统中的核心价值,清晰掌握数据从采集、传输到处理的完整流动过程。
计算思维
学会了将复杂的物联网应用逻辑,分解为“感知-传输-控制”的简单模块,并通过编程逐一实现。
数字化学习与创新
掌握使用编程工具解决生活中的实际问题的能力,培养了技术应用与创新的意识。
信息社会责任
亲身体验技术改变生活的力量,树立了未来负责任地使用技术、造福社会的价值观。
1.7.2013
通过这两节课,我们完成了从硬件到软件,再到系统运行的完整实践闭环。在这个过程中,我们不仅提升了信息意识和计算思维,还掌握了数字化学习与创新的能力,更体会到了技术改变生活的力量。希望大家能将今天所学,应用到更多创意项目中!
‹#›
感谢聆听!
让我们一起用代码创造未来!
1.7.2013
今天的课程到此结束,感谢同学们的积极参与和努力实践。希望大家能保持这份热情,继续探索编程的世界,用代码创造属于我们自己的未来!下课!
‹#›
$