大家好,本文带来的是单片机课设-基于Zigee的温度数据采集系统。

一、设计内容和要求

基于Zigbee的数据采集系统

1.1设计内容

(1)分析对比Bluetooth、Zigbee、Lora方式组网的基本原理和性能差异,撰写分析报告;
(2)系统为主从结构,主机负责显示和操作设置,从机负责采集温度,主从之间通过串口(无线模块)连接。从机可以有1台或多台;
(3)主机设有键盘和液晶显示(汉字点阵12864);
(4)从机设有传感器(LM20)和AD转换器(MCP3004);
(5)一种系统拓扑示意如下,仅供参考,可根据实际情况调整。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.2设计要求

基本功能:
(1)从机采集温度数据,数据发送到主机。主机在屏幕上显示从机编号、从机温度、是否报警;
(2)从机显示温度范围为00°C~50°C,不需显示小数位;
(3)主机可以用键盘设定高低温报警值(如温度低于05°C或者高于40°C报警),且上下报警门限可调;
(4)当从机传感器温度发生变化后,主机显示端可在10秒内刷新正确的温度值。

扩展功能:
(5) 通过主机可以设置波特率(高中低)和采样时间(5-60秒),从机自动适配;
(6) 通信过程中使用数据校验来保证通信的可靠性;
(7) 实现多路温度采集和多机通信;
(8) 在仿真的基础上,使用立创EDA制版,并完成硬件电路

实习任务及工作量
(1)在Proteus中仿真实现。编程语言可以用C或者汇编,皆可。
(2)在Proteus中的硬件电路设计图一份。
(3)C或者汇编软件一份。
(4)录制1~2分钟的截屏,非常简短的展示下效果。
(5)设计报告一份。包括硬件、软件设计思路和实现过程,心得体会等。

4 参考文献
[1] 胡汉才主编:《单片机原理及其接口技术》,清华大学出版社,2010年出版。
[2] 孙力娟主编:《微型计算机原理与接口技术》,清华大学出版社,2013年出版。
[3] 高洪志主编:《MCS51单片机原理及应用技术教程》,人民邮电出版社,2009年出版。
[4] 顾海洲,马双武:《PCB电磁兼容技术(设计实践)》,清华大学出版社,2004年出版。


以上就是本次设计任务要求,下面带来具体实现的内容!!!


二、基本原理

2.1什么是Zigee?

  1. 介绍:Zigbee技术是一种应用于短距离和低速率下的无线通信技术 主要用于距离短、功耗低且传输速率不高的各种电子设备之间进行数据传输以及典型的有周期性数据、间歇性数据和低反应时间数据传输的应用。
  2. 特点:自组织网络与高容量‌
    (1)支持星型、树型和网状(Mesh)拓扑,具备自愈功能。Mesh网络通过多跳传输扩展覆盖范围(可达几百米至几公里)。
    (2)单网络最多支持65,535个节点,区域内容纳1000个网络,满足大规模物联网需求。

在这里插入图片描述

2.2技术调研

在无线通信技术中,Bluetooth、Zigbee、Lora 是三种常见的组网方式,它们在基本原理和性能上存在显著差异,以下是具体分析:

Bluetooth:基于无线个人区域网(WPAN)技术,采用跳频扩频技术,工作在 2.4GHz ISM 频段。其通信建立在主从架构之上,主设备可同时与多个从设备进行通信,通过配对过程实现设备间的连接和数据传输。

Zigbee:基于 IEEE 802.15.4 标准,同样工作在 2.4GHz ISM 频段(部分地区也支持其他频段),采用直接序列扩频技术。它支持自组织网络,包括星型、树型和网状(Mesh)拓扑结构,具备自愈功能,网络中的节点可自动寻找路径进行数据传输。

Lora:基于扩频调制技术,工作在非授权频段(如 433MHz、868MHz、915MHz 等),采用 Chirp 扩频技术。其通信主要通过网关与终端节点之间的星形网络架构实现,终端节点将数据发送给网关,再由网关进行数据的汇总和处理。

2.3设计方案

(1)系统功能

本系统为基于 Zigbee 的数据采集系统,采用主从结构。主机负责显示和操作设置,设有键盘和液晶显示(汉字点阵 12864),可通过键盘设定高低温报警值,还能显示从机编号、从机温度以及是否报警等信息;从机负责采集温度,设有传感器(LM20)和 AD 转换器(MCP3004),从机可以有 1 台或多台。主从之间通过串口(无线模块)连接,实现数据的传输。

(2)系统工作框图
在这里插入图片描述

(3)模块工作原理

主机模块:主机的核心是 MCS51 单片机,通过键盘接收用户的操作指令,如设定高低温报警值等。液晶显示模块(汉字点阵 12864)用于显示从机编号、温度数据以及报警信息等。主机通过串口与无线模块连接,实现与从机之间的数据收发。

从机模块:从机同样以 MCS51 单片机为核心,传感器(LM20)负责采集温度信号,采集到的模拟信号传输给 AD 转换器(MCP3004),AD 转换器将模拟信号转换为数字信号后传输给从机的单片机,单片机再通过无线模块将数据发送给主机。

无线模块:采用 2.4G 无线串口透传模块,支持即插即用,通过 Uart 通信方式实现主从机之间的数据无线传输,波特率可根据需要进行设置。

三、电路设计

3.1主机电路

主机电路主要由 MCS51 单片机、键盘、液晶显示(汉字点阵 12864)和无线模块组成。

MCS51 单片机作为主机的核心控制单元,负责接收键盘输入的指令、处理从机发送的数据以及控制液晶显示。
键盘采用矩阵键盘设计,通过按键与单片机的 I/O 口连接,实现指令的输入。当按键按下时,相应的 I/O 口电平发生变化,单片机通过扫描识别按键信息。
液晶显示(汉字点阵 12864)通过并行或串行方式与单片机连接,接收单片机发送的显示数据并进行显示。
无线模块通过 TX、RX 引脚与单片机的串口连接,实现数据的无线收发,GND 引脚接地,保证电路的共地。

3.2从机电路

从机电路主要由 MCS51 单片机、传感器(LM20)、AD 转换器(MCP3004)和无线模块组成。

MCS51 单片机作为从机的核心控制单元,负责控制传感器采集温度、接收 AD 转换器转换后的数字信号以及通过无线模块发送数据。
传感器(LM20)的输出端与 AD 转换器(MCP3004)的输入端连接,将采集到的温度模拟信号传输给 AD 转换器。LM20 是一种高精度温度传感器,其输出电压与温度呈线性关系,在 0°C~50°C 范围内具有良好的精度。
AD 转换器(MCP3004)通过 SPI 接口与单片机连接,将模拟信号转换为数字信号后传输给单片机。MCP3004 是一款 10 位 AD 转换器,具有 4 个输入通道,满足温度信号转换的需求。
无线模块同样通过 TX、RX 引脚与单片机的串口连接,实现与主机的数据传输。

3.3参数计算过程

以 LM20 温度传感器和 MCP3004 AD 转换器为例进行参数计算:

LM20 在 0°C 时输出电压为 2.5V,温度系数为 - 6.2mV/°C(在 0°C 至 50°C 范围内)。MCP3004 的参考电压设为 5V,其分辨率为 10 位,即总共有 1024 个量化等级。

则 1 个量化等级对应的电压值为:5V / 1024 ≈ 4.88mV。
当温度为 t°C 时,LM20 的输出电压 U = 2.5V - 6.2mV/°C × t。
AD 转换器输出的数字量 N = U / 4.88mV ≈ (2500mV - 6.2mV × t) / 4.88mV。

通过该式可由 AD 转换器输出的数字量计算得到对应的温度值。

四、软件设计

4.1仿真电路设计图

在这里插入图片描述

4.2主机程序流程图

在这里插入图片描述

4.3从机程序流程图

在这里插入图片描述

五、测试与分析

5.1实际数据

在测试过程中,对系统的基本功能和部分扩展功能进行了验证,得到以下实际数据:

  1. 温度采集准确性:在 0°C~50°C 范围内,从机采集的温度与实际环境温度的误差在 ±1°C 以内,满足设计要求。
  2. 数据刷新时间:当从机传感器温度发生变化后,主机显示端能在 5 秒内刷新正确的温度值,小于要求的 10 秒。
  3. 报警功能:当设置高温报警值为 40°C,低温报警值为 5°C 时,当温度高于 40°C 或低于 5°C,主机能准确发出报警提示。
  4. 多机通信:测试了 3 台从机与主机的通信情况,主机能准确识别各从机编号并显示对应的温度数据,通信稳定。

5.2分析

  1. 总结分析:
    从测试数据来看,系统的基本功能均能正常实现,且性能指标符合设计要求。在温度采集准确性方面,误差较小,能满足一般温度监测的需求;数据刷新及时,保证了温度数据的实时性;报警功能准确可靠,可及时提醒用户温度异常;多机通信稳定,说明系统的组网能力较好。

  2. 分析改进:
    在测试过程中也发现一些问题,如在距离较远时(超过 500 米),无线通信的稳定性有所下降,数据传输偶尔会出现延迟或丢失的情况,这可能与无线模块的传输距离限制有关。在后续优化中,可考虑更换传输距离更远的无线模块或采用中继节点来增强通信效果。


六、基础问答

基本功能:
(1)问:从机采集温度数据,数据发送到主机。主机在屏幕上显示从机编号、从机温度、是否报警?
答:可以

(2)问:从机显示温度范围为00°C~50°C,不需显示小数位?
答:可以
在这里插入图片描述

(3)问:主机可以用键盘设定高低温报警值(如温度低于05°C或者高于40°C报警),且上下报警门限可调吗?
答:可以
(4)问:当从机传感器温度发生变化后,主机显示端可在10秒内刷新正确的温度值吗?
答:可以

扩展功能:
(5) 问: 通过主机可以设置波特率(高中低)和采样时间(5-60秒),从机自动 适配吗?
答:未实现
(6) 问:通信过程中使用数据校验来保证通信的可靠性了吗?
答:未实现
(7) 问:实现多路温度采集和多机通信了吗?
答:已实现,一主机两从机
在这里插入图片描述

(8) 问:在仿真的基础上,使用立创EDA制版,并完成硬件电路?
答:未实现
(9)问:给显示屏上温度显示加上单位符号?
答:已实现,如图:
在这里插入图片描述

(10)问:能修改波特率吗?
答:可以。按以下步骤具体实现:

1.定义常用波特率初值宏
#include “uart.h” // 晶振频率11.0592MHz,SMOD=0(PCON=0x00)时的波特率初值 #define BAUD_2400 0xF3 // 2400bps(低) #define BAUD_9600 0xFD // 9600bps(中,默认) #define BAUD_19200 0xFE // 19200bps(高) unsigned char rx_data_addr_temperature[3] = {0}; // 新增:存储当前波特率状态(0=低,1=中,2=高),用于主机设置后从机适配 unsigned char current_baud = 1; // 默认9600bps

2.重构初始化函数,支持动态修改波特率
// 初始化串口框架(不包含波特率设置) void Uart_Init_Frame(void) { SCON = 0x50; // UART方式1:8位UART,允许接收(REN=1) PCON = 0x00; // SMOD=0,波特率不加倍 TMOD = 0x20; // T1工作在方式2(自动重装载) TR1 = 1; // 启动定时器T1 ES = 1; // 允许串口中断 EA = 1; // 开总中断 } // 设置波特率(通过主机键盘指令传入参数baud:0=低,1=中,2=高) void Uart_SetBaudRate(unsigned char baud) { current_baud = baud; // 更新当前波特率状态 switch(baud) { case 0: // 低波特率:2400bps TH1 = BAUD_2400; TL1 = BAUD_2400; break; case 1: // 中波特率:9600bps(默认) TH1 = BAUD_9600; TL1 = BAUD_9600; break; case 2: // 高波特率:19200bps TH1 = BAUD_19200; TL1 = BAUD_19200; break; default: // 默认保持9600bps TH1 = BAUD_9600; TL1 = BAUD_9600; break; } } // 初始化时调用(默认9600bps) void Uart_Init(void) { Uart_Init_Frame(); Uart_SetBaudRate(1); // 初始化为中波特率 }

3.配合主机指令实现“从机自动适配”
void UART_Routine() interrupt 4 { static unsigned char i = 0; unsigned char cmd; // 指令缓存 if(RI == 1) { RI = 0; cmd = SBUF; // 接收主机发送的指令 // 若接收到波特率设置指令(示例:0x01=低,0x02=中,0x03=高) if(cmd == 0x01) { Uart_SetBaudRate(0); // 切换到2400bps } else if(cmd == 0x02) { Uart_SetBaudRate(1); // 切换到9600bps } else if(cmd == 0x03) { Uart_SetBaudRate(2); // 切换到19200bps } // 否则按原逻辑接收温度数据 else { if(i < 3) { rx_data_addr_temperature[i] = cmd; // 原数据接收逻辑 i++; } if(i >= 3) { i = 0; } } } }


以上就是全部内容了,如有帮助,还请一键三连!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/90548.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/90548.shtml
英文地址,请注明出处:http://en.pswp.cn/web/90548.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ATH12K 驱动框架分析

文章目录 Linux Wireless 驱动框架深入分析 **1. 核心框架层次结构** **1.1 cfg80211 子系统 (`net/wireless/`)** **1.2 mac80211 子系统 (`net/mac80211/`)** **2. ath12k 驱动架构分析** **2.1 核心管理文件** **2.2 数据路径文件** **2.3 平台接口文件** **2.4 功能模块文件…

OSPF路由协议单区域

RIP的不足 以跳数评估的路由并非最优路径 如果RTA选择S0/0传输&#xff0c;传输需时会大大缩短为3sRIP协议限制网络直径不能超过16跳 收敛速度慢 RIP定期路由更新 – 更新计时器&#xff1a;定期路由更新的时间间隔&#xff0c;默认30秒。 – 失效计时器&#xff1a;失效计时器…

Kubernetes部署与管理Scrapy爬虫:企业级分布式爬虫平台构建指南

引言&#xff1a;Kubernetes在爬虫领域的战略价值在大规模数据采集场景中&#xff0c;​​容器化爬虫管理​​已成为企业级解决方案的核心。根据2023年爬虫技术调查报告&#xff1a;采用Kubernetes的爬虫系统平均资源利用率提升​​65%​​故障恢复时间从小时级缩短至​​秒级​…

Web-Machine-N7靶机攻略

一.环境准备&#xff08;VBox&#xff0c;kali虚拟机&#xff0c;靶机&#xff09; 1.1Vbox下载地址: Downloads – Oracle VirtualBox 1.2将N7导入到这个虚拟机中 1.3将kali和Vbox都设置成桥接模式 1.4开启靶机 若鼠标出不来可以使用组合技,CtrlAltDelete强制退出 二.信息…

用毫秒级视频回传打造稳定操控闭环之远程平衡控制系统技术实践

在工业自动化、远程机器人、无人装备等复杂作业场景中&#xff0c;远程实时操控正逐步取代传统“监控指令”模式&#xff0c;成为提升效率与保障安全的关键能力。尤其在高风险、高精度的应用环境中&#xff0c;操作者不仅要“能控”&#xff0c;更要“看得准、反应快”。 真正…

瑞萨电子RA-T MCU系列新成员RA2T1——电机控制专家

RA2T1系列微控制器基于64MHz ArmCortex-M23内核设计&#xff0c;专为单电机控制应用而优化。RA2T1集成PWM定时器&#xff0c;以及配备3个采样保持电路的A/D转换器等先进的模拟功能&#xff0c;适用于电动工具&#xff0c;风扇和家用电器等高效的低端电机控制方案。RA2T1支持1.6…

Java排序算法之<选择排序>

目录 1、选择排序 1.1、介绍 1.2、稳定性 2、执行流程 3、java实现 4、优缺点 总结&#xff1a;Java 排序算法进阶路线 O(n) 算法&#xff08;适合学习原理&#xff09; 冒泡排序&#xff08;最慢&#xff09;→ 选择排序 → 插入排序&#xff08;推荐先学&#xff09; …

ESP8266 http收发数据

1.先修改基础配置 make menuconfig 打开配置菜单 选择component config 然后选择 修改波特率为115200 保存退出 2.修改彩色日志打印的 在component config目录下找到log output 选中点击空格关掉彩色日志输出&#xff0c;这样正常串口打印就没有乱码了 然后保存退出 3…

ZLMediaKit 源代码入门

ZLMediaKit 是一个基于 C11 开发的高性能流媒体服务器框架&#xff0c;支持 RTSP、RTMP、HLS、HTTP-FLV 等协议。以下是源代码入门的详细指南&#xff1a; 1. 源码结构概览 主要目录结构&#xff1a; text ZLMediaKit/ ├── cmake/ # CMake 构建配置 ├── …

智能Agent场景实战指南 Day 21:Agent自主学习与改进机制

【智能Agent场景实战指南 Day 21】Agent自主学习与改进机制 文章内容 开篇 欢迎来到"智能Agent场景实战指南"系列的第21天&#xff01;今天我们将深入探讨智能Agent的自主学习与改进机制——这是使Agent能够持续提升性能、适应动态环境的核心能力。在真实业务场景…

微信小程序中英文切换miniprogram-i18n-plus

原生微信小程序使用 miniprogram-i18n-plus第一步&#xff1a;npm install miniprogram-i18n-plus -S安装完成后&#xff0c;会在项目文件文件夹 node_modules文件里生成 miniprogram-i18n-plus&#xff0c; 然后在工具栏-工具-构建npm&#xff0c;然后看到miniprogram_npm里面…

LeetCode 127:单词接龙

LeetCode 127&#xff1a;单词接龙问题本质&#xff1a;最短转换序列的长度 给定两个单词 beginWord 和 endWord&#xff0c;以及字典 wordList&#xff0c;要求找到从 beginWord 到 endWord 的最短转换序列&#xff08;每次转换仅改变一个字母&#xff0c;且中间单词必须在 wo…

docker搭建ray集群

1. 安装docker 已安装过docker 没安装流程 启动 Docker 服务&#xff1a; sudo systemctl start docker sudo systemctl enable docker # 设置开机即启动docker验证 Docker 是否安装成功&#xff1a; docker --version2. 部署ray # 先停止docker服务 systemctl stop docker…

【iOS】SideTable

文章目录前言1️⃣Side Table 的核心作用&#xff1a;扩展对象元数据存储1.1 传统对象的内存限制1.2 Side Table 的定位&#xff1a;集中式元数据仓库2️⃣Side Table 的底层结构与关联2.1 Side Table 与 isa 指针的关系2.2 Side Table 的存储结构2.3 SideTable 的工作流程3️⃣…

【Spring Cloud Gateway 实战系列】高级篇:服务网格集成、安全增强与全链路压测

一、服务网格集成&#xff1a;Gateway与Istio的协同作战在微服务架构向服务网格演进的过程中&#xff0c;Spring Cloud Gateway可与Istio形成互补——Gateway负责南北向流量&#xff08;客户端到集群&#xff09;的入口管理&#xff0c;Istio负责东西向流量&#xff08;集群内服…

一文说清楚Hive

Hive作为Apache Hadoop生态的核心数据仓库工具&#xff0c;其设计初衷是为熟悉SQL的用户提供大规模数据离线处理能力。以下从底层计算框架、优点、场景、注意事项及实践案例五个维度展开说明。 一、Hive底层分布式计算框架对比 Hive本身不直接执行计算&#xff0c;而是将HQL转换…

SeaweedFS深度解析(三):裸金属单机和集群部署

#作者&#xff1a;闫乾苓 文章目录2.2.4 S3 Server&#xff08;兼容 Amazon S3 的接口&#xff09;2.2.5 Weed&#xff08;命令行工具&#xff09;3、裸金属单机和集群部署3.1 裸金属单机部署3.1.1安装 SeaweedFS3.1.2 以Master模式启动2.2.4 S3 Server&#xff08;兼容 Amazon…

相机ROI 参数

相机的 ROI&#xff08;Region of Interest&#xff0c;感兴趣区域&#xff09; 参数&#xff0c;是指通过设置图像传感器上 特定区域 作为有效成像区域&#xff0c;从而只采集该区域的图像数据&#xff0c;而忽略其他部分。这一功能常用于工业相机、科研相机、高速相机等场景&…

Vue基础(24)_VueCompinent构造函数、Vue实例对象与组件实例对象

分析上一节代码中的school组件&#xff1a;该组件是一个名为VueCompinent的构造函数。截取部分vue.js源码&#xff0c;分析Vue.extend&#xff1a;// 定义一个名为VueComponent的构造函数对象Sub&#xff0c;往Sub对象调用_init(options)方法&#xff0c;参数为配置项&#xff…

萤石云替代产品摄像头方案萤石云不支持TCP本地连接-东方仙盟

不断试错东方仙盟深耕科研测评&#xff0c;聚焦前沿领域&#xff0c;以严谨标准评估成果&#xff0c;追踪技术突破&#xff0c;在探索与验证中持续精进&#xff0c;为科研发展提供参考&#xff0c;助力探路前行 萤石云价格萤石云的不便于使用 家庭场景&#xff1a;成本可控与隐…