无线单片机课程设计--基于ZigBee的厨房温度气体监控系统

本文主要是介绍无线单片机课程设计--基于ZigBee的厨房温度气体监控系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基于WSN的厨房温度气体监控系统

一、 题目的要求和意义

课程设计的目的:
本课题是学生们使用单片机和至少两种传感器实现无线通信的项目,主要实现对厨房温度和气体进行实时监测。通过在厨房里安装基于无线传感器网络的温度、气体采集节点来厨房内各点的温度和气体,并以无线传输的方式发送到PC端或者是LCD液晶屏,用户可以通过上位机软件查询数据,能够及时了解到厨房的情况。

课程设计的要求:
基本要求:
1、必须有无线通信
2、必须有两种以上(包含两种)的传感器
3、必须用单片机实现
扩展要求:
1、三个以上(包含三个)的无线通信节点
2、可构建Ad Hoc网络即一种无中心自组织的多跳无线网络

课程设计的意义:
传统的使用线缆直接连接实现信号的传输方式,将严重限制数据采集点的安放灵活性,设备布线困难。而通过无线通信的方式传递数据是一种较为理想的选择,它与有线方式相比主要成本低、携带方便、布线安装简便等特点。
基于WSN的厨房温度气体监控系统不仅可以让人们的生活质量得到提高,而且保障了人民的生命安全。

二、 硬件电路设计

1. 具体电路的设计和参数的计算;
电路的原理图、PCB设计图、3D模型图如下:
电路原理图
图1电路原理图
在这里插入图片描述
在这里插入图片描述
我负责部分的电路:OLED显示模块电路,电源模块,下载电路。

OLED显示电路设计如下
在这里插入图片描述
引脚说明:
DC:数据或命令切换
RESET:复位
SDA:双向数据线
SCL:时钟信号线
VCC:电源正3.3V
GND:电源地
由原理图可知核心板中的P0_0,P1_7,P1_3,P1_2,3V3,GND引脚分别与OLED显示屏的6个引脚对应相接。
本次设计采用模块级设计,故只需购买OLED显示屏模块即可,OLED显示屏模块的电路图如下:
在这里插入图片描述
电源模块电路设计如下
在这里插入图片描述
ASM1117-3V3是电压降压芯片,作用是将输入的5V电压降至3.3V
C1、C2是输入电容,作用是防止断电后出现电压倒置,
C3、C4是输出滤波电容,作用是抑制自激振荡和稳定输出电压。

下载电路设计如下
在这里插入图片描述
引脚说明:
第1Pin:GND
第2Pin:目标板电压检测,该信号用于支持宽目标电压,需要目标板为仿真器提供
第3、4Pin:在线调试或下载通信接口
第5、6、8、10Pin:协议分析或者由Smart Studio直接控制芯片的通信接口
第7Pin:芯片复位信号
第9Pin:仿真器提供的3.3V电压,最大可提供500MA电路
以上10个引脚中,只有GND/DC/DD/RESET为必须连接的引脚,其他均为可选。
若想要支持Packet Sniffer软件(用于抓取无线数据包),其余的SPI接口也要连接的目标板上
若想要使用仿真器对目标板进行供电,需接上9号引脚,可对目标板提供3.3V电压
为了更好的理解程序下载的实现,给出仿真器内部电路图如下:
在这里插入图片描述
2. 电路性能测试与结果分析

OLED显示电路:
通电后,经过数字万用表测量得
VCC引脚与GND引脚之间的电压为3.28V
结果分析:测量的结果在误差允许范围内
在这里插入图片描述
电源模块电路
通电后,经过数字万用表测量得
3号引脚,即未经过AMS1117芯片的引脚的电压约为5.08 V
2号引脚,即经过AMS1117芯片的引脚的电压约为3.28V
结果分析:说明AMS1117芯片起到了对输入电压起到降压的作用
在这里插入图片描述
下载电路:
通电后,经过数字万用表测量得
VCC引脚与GND引脚之间的电压为3.28V
结果分析:测量的结果在误差允许范围内
在这里插入图片描述

三、软件设计

1. 主程序流程图;
协调器节点
在这里插入图片描述
图12 协调器节点流程图

终端节点
在这里插入图片描述
图13 终端节点流程图

子程序流程图;(无)

我负责部分的软件设计:组建无线通信和组网,上位机软件制作
无线通信:一般在具体项目开发过程中,通信双方需要提前定义好数据通信的格式,一般需要包含数据头、数据、校验位、数据尾等信息,为了简化本次项目的难度,使用的数据包格式如表1所示。
在这里插入图片描述
在项目开发过程中,使用到数据包时,一般会使用共用体将整个数据包所需要的数据包含起来,这样编程效率较高,在本实验中使用的结构体定义如下:

typedef union h
{uint8 TEMP[36];struct RFRXBUF{char Head1[3] ;           //数据头'E1 ' /'E2 'char ip1[2];              //温度提示'T:'char Tvalue[4] ;          //温度数据unsigned char Tail1 ;     //温度尾 'C'unsigned char gap1 ;      //数据间隔' 'char ip2[4];              //气体提示MQ2: ,unsigned char Qvalue[2] ;  //气体数据unsigned char Tail2 ;      //气体尾 '%'char Rn[2]  ;              //回车换行'\r\n'char Led1[4]  ;            //灯提示Led:char Led2[3]  ;            //灯状态on/offunsigned char gap2 ;      //数据间隔' 'char Beep1[5] ;           //蜂鸣器提示Beep:char Beep2[3] ;           //蜂鸣器的状态on/off  }BUF ;
}TEMPERATURE

使用一个共用体来表示整个数据包,里面有两个成员变量,一个是数组TEMP,该数组有36个元素;另外一个是结构体,该结构具体实现了数据包的数据头、温度数据、气体数据、数据尾…,结构体所占的也是36个字节

ZigBee组网流程 建立网络和设备入网
平时我们只关心应用层,会组网,实现传感器的数据采集,无线传输就算掌握ZigBee通讯了,并非每个人都需要了解底层代码运行情况。
值得注意的是:ZDApp_Init(taskID++); //ZDApp层初始化,执行ZDApp_init函数后,如果是协调器将将建立网络,如果是终端设备将加入网络。

上位机软件制作
在这里插入图片描述
串口助手选用Visual C#开发语言和Visual Studio 2012开发平台进行开发,实现的主要功能如下
1需要用户名和密码才能登录软件——可以保障用户的隐私
2可用串口扫描——精确且快速的找到可以打开的串口号
3保存和读取数据——可以对数据进行保存和读取,方便后期查看
4显示接收数据的时间——用户可以知道数据到来的时间
5定时发送——用户可以设定在几秒甚至几小时后发送控制命令

四、调试记录 (重点内容)

1. 调试时间:6到10周

2. 调试中遇到的问题
问题1:移植队友写好的代码出现编译错误
问题2:如何让终端将采集的数据发送给协调器
问题3:接收到的数据无法正常显示
问题4:OLED屏无法显示温度小数后一位
问题5:无法区分是哪个终端发过来的数据

3. 解决的方法
解决1:加入相应的头文件,并在头文件里声明函数。
解决2:步骤如下
1) 定义一个事件标识符 如#define SEND_DATA_EVENT 0x01
2) 在系统事件里的网络状态改变事件中即case ZDO_STATE_CHANGE:语句后面设置自己定义事件的函数:osal_set_event(GenericApp_TaskID,SEND_DATA_EVENT);

3) 在if(events & SEND_DATA_EVENT)语句中放入发送数据的函数和下一次再执行SEND_DATA_EVENT事件的定时器函数osal_start_timerEx()。
解决3:
tvalue = floatReadDs18B20() ; //读取温度函数
qvalue = GetMq2() ; //读取MQ2的浓度
通过调用队友写好的函数返回值是一个数值,而发送到串口中的数据应该是字符串才行
可以将其转换为字符串格式再加载到数据包中:

sprintf(strTemp, "%.01f", tvalue);      //将温度数据转成字符串  
strcpy(temperature.BUF.Tvalue,strTemp); //将字符串型的温度数据复制到数据包
temperature.BUF.Qvalue[0] = qvalue / 10 + '0' ;  //将气体数据转化为字符串
temperature.BUF.Qvalue[1] = qvalue % 10 + '0' ;

解决4:
终端发送过来的数据包中温度数据中数组的第5-8位,所以可以将温度的十位、个位、小数位分别取出来,将其由字符串格式转换为数值,之所以无法显示小数后一位,是因为我对温度数据进行如下处理
uint8 t = (t1-‘0’)*10+(t2-‘0’)+(t3-‘0’)/10;
因为(t3-‘0’)/10这个值永远为0,小数部分被抹除,故做如下处理

	uint8 t1 = pkt->cmd.Data[5];//从数据包中读取温度十位uint8 t2 = pkt->cmd.Data[6];//温度个位uint8 t3 = pkt->cmd.Data[8];//温度小数位uint8  t = (t1-'0')*10+(t2-'0'); //将十位数和个位数结合 uint8 t4 = (t3-'0');           //温度小数sprintf(buff, "E1 T:%d.%d MQ2:%d", t,t4,mq2);HalLcdWriteString(buff,HAL_LCD_LINE_1);  //OLED第1行显示数据 	

解决5
由于我们的终端是同时采集温度和气体数据的,故发过来的数据难以区分。
为了区分不同终端发过来的数据,在数据包中的数据头放入ID这个宏定义,在下载终端程序的时候可以通过修改ID的宏来区分不同的终端。

#define  ID   "E1 "              //针对终端有效,取值E1 ,E2
strcpy(temperature.BUF.Head1,ID) ;  //填充数据头1

五、课程设计体会

通过此次课程设计,我更加扎实的掌握了有关单片机方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。
通过这次课程设计,我掌握了使用zigbee协议栈进行无线组网通信的方法;熟悉了上位机软件的制作;了解了通信协议的制定;以及如何提高电路的性能等等。此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研, 动脑思考,动手实践,就没有弄不懂的知识。
课程设计的过程中,也对团队精神的进行了考察,让我们在合作起来更加默契,在成功后一起体会喜悦的心情。果然是团结就是力量,只有互相之间默契融洽的配合才能换来最终完美的结果。

六、参考文献

[1] QST青软实训.ZigBee技术开发[M].北京:清华大学出版社,2015
[2]王小强. ZigBee无线传感器网络设计与实现[M].北京:北京工业出版社,2012

最后:
需要资料的可以自行下载。下载链接
下载操作:
在这里插入图片描述

这篇关于无线单片机课程设计--基于ZigBee的厨房温度气体监控系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/708842

相关文章

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识