依据《义务教育信息科技教学指南-物联网实践与探索》“第五单元”24课,设计此项目。
一、项目概述
本项目旨在开发一个基于行空板K10 的智能奶牛产奶监测系统,结合物联网技术实现对奶牛产奶量、环境参数(如温湿度)以及身份信息的实时监控。通过实践探索,学生可以掌握物联网在农业生产中的应用,并迁移到其他领域的问题解决,推动科技与农业融合。
学习目标:
⭐ 了解物联网在农业生产中的应用。
⭐ 通过奶牛产奶监测系统的实践探索,掌握利用物联网解决问题的方法,并能迁移应用于解决其他问题。
项目需求:
⭐ 按照采集数据、传输与存储数据、分析处理数据、反馈与控制四个环节分析奶牛产奶监测系统的功能需求。
⭐ 利用电子标签和读卡器采集奶牛编号,利用超声波传感器检测奶牛的产奶量;通过按键传感器手动控制数据是否发送到物联网服务平台;通过网络远程呈现奶牛产奶数据。
二、项目功能设计
依据功能需求分析和物联网系统架构,将奶牛产奶监测系统设计为以下三个功能模块:
三、详细功能实现流程
1. 系统功能流程图
子系统系统流程分解:
2. 系统硬件连接示意图
以下为硬件搭建图,展示各模块之间的连接关系:
3. 传感器数据采集与处理逻辑
(1) 奶牛产奶量计算逻辑(超声波传感器)
- 🌟 输入:超声波传感器测量的容器液面高度。
- 🌟 原理:根据液体高度差计算容器内的奶量。
- 🌟 公式:产奶量 = 容器总高度 - 液面高度 × 容器底面积。
(2) 温湿度数据采集(DHT11)
🌟 使用 DHT11传感器读取牛舍温湿度数据。
4. 数据上传与显示
- MQTT 主题和数据:
- (1)MQTT服务器配置:参考:Mind+数据可视化面板-SIoT V2下载使用-教程
(2)主题:
🌟 温度:siot/tmp
🌟 湿度:siot/hum
🌟 产奶量:siot/cow<cow_id>
(3)数据格式(字典):
- 显示屏显示内容:
- 🌟 牛舍环境:温度: 25.3°C,湿度: 60.5%
- 🌟 奶牛编号:编号: 101
- 🌟 实时产奶量:产量: 5.6L
- 🌟 运行状态:收集数据 / 发送数据 / 发送成功
- 🌟 当前时间:年月日 时分秒
四、项目展示与课堂总结
1. 成果展示
- 🌟 硬件成果:搭建好的奶牛产奶监测系统。
- 🌟 数据展示1: OLED 显示屏实时显示数据。
- 🌟 数据展示2: Mind+可视化面板,查看奶牛产奶量与环境参数。
五、关键代码示例
1. 超声波传感器读取与产奶量计算
# .........略...........
while True:
# 读取温湿度
temp, hum = dhtsensor.read()
# 读取 RFID
rf = scan_rfid.scanning(wait=True)
cow_id = rf.serial_number() if rf else "未识别"
# 读取超声波传感器数据
liquid_height = sonic.distance() # 获取液面高度(单位:厘米)
print(liquid_height)
# 计算产奶量
milk_amount = round((container_height - liquid_height) * container_area ,2) # 产奶量(单位:立方厘米)
# 创建数据字典
data = {
"temperature": temp,
"humidity": hum,
"cow_id": cow_id,
"milk_amount": milk_amount # 计算后的产奶量
}
# .........略...........
2. 数据上传到 MQTT
# .........略...........
def send_msg(topic, msg):
mqttclient.connect(server="192.168.1.22", port=1883, user="siot", psd="dfrobot")
mqttclient.publish(topic=topic, content='->' + msg)
while True:
# 读取温湿度
# .........略...........
# 发送数据
if bt_a.status() == 0 or p8.read_digital(): # 按键 A 被按下
led.write_digital(1)
send_status = '开始发送...'
ed.text(f"运行状态: {send_status} ", 0, 190, color=0x0000FF, size=16)
send_msg('siot/temp', str(data["temperature"]))
send_msg('siot/hum', str(data["humidity"]))
send_msg(f'siot/cow{data["cow_id"]}', str(data["milk_amount"]))
send_status = '发送完成'
time.sleep(1)
send_status = '收集数据'
led.write_digital(0)
# .........略...........
六、总结
本项目结合行空版K10 和物联网技术,实现了奶牛产奶量和环境参数的实时监测与远程管理。系统结构清晰,功能模块化,具有良好的扩展性和可复用性,可推广到其他农业场景中,如土壤监测、自动灌溉等。
附录
1. 项目源码
https://gitee.com/supu/k10.git
2. 软件
🌟 编辑器:Thonny
🌟 educore 固件地址: https://www.unihiker.com.cn/wiki/k10/micropython_educore
🌟 easydisplay驱动地址: https://github.com/funnygeeker/micropython-easydisplay
🌟 MQTT服务器: Mind+数据可视化面板-SIoT V2下载使用-教程
评论