第14课 智能物联系统的软件设计 课件 2025-2026学年八年级下册信息技术浙教版

资源下载
  1. 二一教育资源

第14课 智能物联系统的软件设计 课件 2025-2026学年八年级下册信息技术浙教版

资源简介

(共19张PPT)
第14课 智能物联系统的软件设计
年 级:八年级
学 科:初中信息科技(浙教版)
采集数据
发布数据
订阅/存储数据
智能校园数字气象站
问题思考:硬件搭建好后就能直接获取气象数据吗?
软件编写
发布
订阅
获取
呈现数据
知识回顾
中介
Wifi
无线路由器
任务要求:通过编程实现气象数据的实时采集,每隔一段时间获取新数据,并在屏幕上显示。
日积月累
Python:丰富的类库
编程的过程:
①导入相应库
②调用相应的函数
编程软件:
参考函数:
温度:aht20.read_temp()
气压:bme.pressure()/1000
风速:WindSpeed(pin16,factor=4.5)
风向:WindDirection(pin14)
屏幕显示:oled.print(x,y,data,num)
发布数据到主题:mqtt.publish(topic,msg)
订阅主题:mqtt.subscribe(topic,event)
任务一:采集数据
任务一:采集数据
① 明确算法
01
Wifi连接
MQTT连接
采集数据
OLED显示数据
每隔一段时间
发布数据到对应主题
任务要求:将采集到的气象数据发布到物联中台。
②创建项目主题
1
2
3
4
主题名称建议
首字母大写
任务二:发布数据
01
Wifi连接
MQTT连接
采集数据
OLED显示数据
每隔一段时间
发布数据到不同主题
参考程序
from npython import *
while True:
#采集气象数据,并赋值给相应变量
wendu=aht20.read_temp()
qiya=bme.pressure()/1000
#oled屏幕显示
oled.print(4,1,'校园数字气象站',1)
oled.print(5,2,"温度:"+str (wendu), 1)
oled.print(5,3,"气压:"+str (qiya), 1)
time.sleep(5)
mqtt.publish(“WenDu”,str(wendu))
ipserver="xxkj" #无线名称
ippass="123456789" #无线密码
ip=wifi.connect(ipserver,ippass) # 网络连接
server ="121.5.75.157" # MQTT服务器地址
port =1883 # MQTT服务器端口号
userId="4052" #用户ID
projectId="Du0oKLv6fUBRisOHxBWeAJkJ7GNZfvMf" #项目ID
mqtt.config(server,port,projectId=projectId,userId=userId,keepalive=1000) #配置MQTT
mqtt.connect() #连接MQTT服务器
mqtt.publish(“QiYa”,str(qiya))
③ 编写程序
任务二:发布数据
01
任务二:发布数据
MQTT连接
订阅主题
获取该主题下的数据
存储在数据库文件中
import mqttc,time,sqlite3 #导入MQTT库文件、time时间模块、sqlite3数据库模块
srv = "121.5.75.157" # MQTT服务器地址
port = 1883 # MQTT服务器端口号
projectId = 'e0AUj5N84pCm9zI8ujiHrVWdNrGJfzm7' #定义项目ID
userId = '4089' #用户ID
mqttc.config(srv,port,projectId=projectId,userId=userId) #mqtt连接参数配置
mqttc.connect() #mqtt连接
sub_topic = 'WenDu' #订阅的主题名称
#定义订阅回调函数
def sub_cb(topic,msg):
data=msg.decode('utf-8') #将接收到的消息从字节类型转换为字符串类型
cmd=eval(data) #将字符串类型的数据转换成字典类型
print('订阅结果返回:',topic,cmd['msg'])
try: #订阅传感器的数据 保存到数据库
now=time.strftime('%Y-%m-%d %H:%M:%S') #获取当前时间
uid=cmd['userId'] # 提取消息中的用户ID和数据值
value=cmd['msg']
# 准备插入数据库的SQL语句
sql=f"INSERT INTO weather(time,userid,topic,msg) VALUES('{now}','{uid}','{topic}','{value}')"
conn=sqlite3.connect('database.db') # 连接到SQLite数据库
conn.execute(sql) # 执行SQL语句
conn.commit() # 提交事务
#订阅主题
mqttc.subscribe(sub_topic,sub_cb)
是否有新消息

只需订阅一次,当有新的消息时,订阅者便会被通知。

任务三:订阅主题存储数据
任务三:订阅主题存储数据
折线图更清晰呈现数据的变化趋势,易于分析
表格形式
折线图形式
任务要求:将获取的某一天的温度数据,通过编程制作其折线图,了解一天的趋势走向。
import sqlite3,datetime #导入sqlite数据库模块,datetime时间模块
import matplotlib.pyplot as plt #导入matplotlib绘图模块
# 用matplotlib绘图,配置相关参数
plt.rcParams['font.sans-serif']=['SimHei'] #设置中文显示
plt.title('一天温度趋势图') # 图表标题
plt.xlabel('时间',size=10) # 图表x轴坐标标签
plt.ylabel('数值',size=10) # 图表y轴坐标标签
conn=sqlite3.connect('database.db') # 连接数据库
# 定义一个函数,向图表添加数据线
def addLine(plt,query):
dx=[] # 初始化两个列表用于存储时间和温度值
dy=[]
for fields in query:
dx.append(str_to_time(fields[0])) # 将时间字符串转换为datetime对象并添加到dx列表中
dy.append(float(fields[1])) # 将温度值转换为浮点数并添加到dy列表中
plt.plot(dx,dy,'o:b',label='温度',markersize=3) # 在图表上绘制一条线,并添加图例标签
query.close() # 关闭数据表
conn.close() # 关闭数据库
plt.legend() # 显示图例
plt.show() # 显示图表窗口
1
matplotlib为第三方库,需下载安装
2
3
任务四:呈现数据
编写程序
气象数据 有序流转
①Python库的功能与使用
②写代码是调用函数的过程
③先形成算法流程图,再编写代码
课堂小结
采集数据
发布数据
订阅/存储数据
呈现数据
智能校园数字气象站
课后作业
1、结合学校实际情况,拓展思考新增一些功能,实现简单的物联控制功能。
谢谢观看!
Thanks!
https://www.21cnjy.com/recruitment/home/fine

展开更多......

收起↑

资源列表