前言
- 👑由于无线传感器网络(也即是Zigbee)作为🌐
物联网工程
的一门必修专业课,具有很强的实用性,因此很多院校都开设了zigbee的实训课程; - 👑同时最近很多使用了我的单片机课设的同学又来私信咨询我
基于Zigbee的的课程设计
的相关问题; - 👑所以为了帮助各位有需要的同学顺利完成自己的课程设计,有个顺利的假期,同时为了方便各位想要学习ZigBee的同学查找学习,建立了本专栏。
- 💞但是由于笔者正在读研,每天的任务比较重,只能在从实验室回来后,晚上抽一个小时的时间来写,所以,更新不易,靠爱发电。
正在更新中~ ✨

🚨 我的项目环境:
- 平台:Windows 11
- 编译器:IAR for 8051 8.10
- Zigbee协议栈:Zstack-CC2530-2.5.1a
- 芯片型号:CC2530
🎊无线传感器网络专栏地址:【Zigbee课程设计系列文章】(附详细使用教程+完整代码+原理图+完整课设报告)
提示:以下是本篇文章正文内容,下面案例可供参考,代码链接以及电路图已经放在文末,点击获取,如失效请私信
基于无线传感器网络的无线火灾报警系统(附详细使用教程+完整代码+原理图+完整课设报告)
1 实物图与功能介绍
- 终端1获得烟雾浓度传感器的数据,无线发送至协调器节点
- 终端2获得温度传感器的数据,无线发送至协调器节点
- 协调器接收各个终端节点数据进行汇总处理
- 协调器的LCD上显示当前环境的烟雾浓度数据与温度数据
- 报警功能:协调器根据阈值上限,对当前环境中的温度与烟雾浓度数据进行判断,当有任意一项出现异常时,进行蜂鸣器报警处理
- 协调器串口将汇总得到的环境数据使用串口发送至电脑串口软件进行显示
2 系统总体设计
本系统采用CC2530单片机作为主控制器,通过集成烟雾浓度传感器、温度传感器和ZigBee无线通信模块构建了一个环境监测系统。烟雾浓度传感器与终端节点1通过GPIO端口相连接,温度传感器则与终端节点2相连,分别部署于监控区域,用于采集实时的烟雾浓度和温度数据。当两个终端节点分别获取到烟雾浓度和温度数据后,利用ZigBee网络组网后,终端节点通过zigbee网络将数据传输至协调器节点。
协调器节点不仅汇总了来自各个终端节点的数据并通过串口通信方式发送至上位机,还配备了LCD屏幕,用于本地显示当前环境中的烟雾浓度和温度数据,实现数据的可视化呈现与远程监控。此外,根据预设的阈值,如果检测到的烟雾浓度或温度超出安全范围,协调器将触发蜂鸣器报警,以及时提醒相关人员注意异常情况。
如下图所示:
3 硬件设计原理图
4 软件设计
对于本文而言,软件主要是依靠zigbee协议栈完成,对其SampleApp代码进行了修改,完成了本软件的设计。一个ZigBee网络可以包含协调器、路由器和终端设备设备类型。
4.1 终端节点代码设计
对于本文中的终端设备来说,软件设计包括了系统的初始化,首先调用协议栈中的串口初始化函数
函数来初始化串口,并通过MT_UartRegisterTaskID()将当前任务ID注册到串口模块
。这使得可以处理来自串口的输入,并且能够对信息进行串口输出。接着需要配置协议栈的ADC转换以及引脚功能配置
,确保引脚能够接入ADC转换模块
,并作为模拟输入
使用。最后为了确保设备能够正确地与其他节点通信,我们需要设置目标地址
。
4.2 烟雾浓度节点传感器读取代码设计
烟雾浓度的读取是通过ADC转换得到的,通过 CC2530 的 ADC(模数转换器)读取气体烟雾浓度传感器的数据,并将数据进行处理、显示在 LCD 屏幕上,同时通过串口输出提示信息。首先,为 ADC 模块配置参考电压。读取 ADC 数据:从指定的 ADC 通道读取模拟信号并转换为数字值。数据转换:将原始 ADC 值转换为百分比形式的烟雾浓度值。数据存储:将转换后的值拆分为高低字节,方便后续传输。数据显示:将烟雾浓度值显示在 LCD 屏幕上。串口输出:通过串口发送提示信息。
//获取气体烟雾浓度
HalAdcSetReference( HAL_ADC_REF_AVDD );
Adc=HalAdcRead(HAL_ADC_CHANNEL_6, HAL_ADC_RESOLUTION_12);
//转化
Value=((2047-Adc)/2047.0)*100;
//****略*******//
str[2] = Adc & 0xFF; // 存储低字节
4.3 温湿度节点传感器读取代码设计
首先在初始化部分对data引脚进行初始化后,设置定时器,当定时器时间到后,就会执行dht11读取函数,
void DHT11(void) //温湿传感启动
{
DATA_PIN=0;
Delay_ms(19);
DATA_PIN=1;
DATA_PIN_INPUT;
略
if(!DATA_PIN)
{
略
}
else
{
shidu=0;
wendu=0;
}
DATA_PIN_OUTPUT;
}
4.4 协调器节点软件设计
同终端节点一样,协调器在刚刚上电的时候也需要进行初始化。首先是调用Z-Stack协议栈
中MT层的串口初始化函数
,并对串口的任务进行注册,使得能够正常进行串口的输入输出。其次是对蜂鸣器引脚进行初始化配置
,能够驱动高电平蜂鸣器进行工作。其次是对信息接收处理函数的编写,代码中对终端节点的数据进行了处理
,首先获得其net地址,并以此为根据在顺序表中进行查找,如果没有找到就新增数据并将其存储在当中,如果有,就更新数据。
开启了定时器,当定时器时间到后,启动串口输出,将当前终端温湿度、烟雾浓度数据进行串口输出,并将数据以及阈值显示在OLED屏幕上
,这样做的好处是能够将信息的接收与数据的显示刷新分离开来,完成程序之间的解耦。对数据进行阈值判断
,当温度数据或者烟雾浓度数据超出阈值范围内时候,就启动蜂鸣器进行报警
。
篇幅所限,本文略去部分软件设计思路以及流程讲解,报告中更加详细,可点击链接自取所需资料。
5 实物展示
如上图所示,终端节点1连接烟雾浓度传感器,测当前环境烟雾浓度;终端节点2连接温度传感器,测当前的温度传感器。
如下图所示,协调器接收到两个节点上传的数据后进行处理,将得到的数据显示在OLED屏幕上,能够直观地看到当前系统的数据状态,同时通过串口将温度与烟雾浓度发送到电脑串口助手上。
在本系统中,设置了烟雾浓度以及温度的阈值,当任意环境状况超出阈值,蜂鸣器会长鸣报警
6 链接
下载链接1🔐:点击跳转下载➡️基于无线传感器网络的无线光照强度采集系统(附详细使用教程+完整代码+原理图+完整课设报告)
链接易失效,亦可直接私信我要!