基于单片机无线防丢报警器设计过程分享

目录

【功能介绍】

【原理图】

【PCB】

【实物图】

【元器件清单】

【源代码】

【模块介绍】

【参考资料】

【参考文献】


功能介绍

本设计利用51单片机结合NRF24L01无线模块进行设计,防丢器分为两个部分,分为从机和主机,即发射模块和接收模块,从机放在怕被丢失的物件上,而主机则携带在主人身上,可以实现两大功能:

  • 超出两个模块的通信距离会报警,及时通知主机,防止从机丢失;
  • 在两个模块的通信范围内,从机不知道在哪,主机可以发起寻找。

原理图

发送模块原理图

接收模块原理图

         原理图发送模块与接受模块差异点是接收模块少一个按键,其他都一样,都有单片机最小系统,指示灯电路,蜂鸣器电路,无线模块,串口电路。如需详细资料可私信作者或加微信biyezhan007

PCB

发送模块

 接收模块

实物图

 

元器件清单

  • 单片机底座*2
  • 单片机*2
  • 晶振*2
  • 瓷片电容*4
  • 电阻*4
  • 电解电容*2
  • 四脚按键*3
  • 电源座*2
  • LED灯*4
  • DIP8底座*2
  • NRF24L01模块*2
  • 蜂鸣器*2
  • 三极管*2

源代码

//发送端main.c

#include "nRF24L01.h"		   //包含头文件
#include "def.h"			   //包含头文件

void Delay_1(unsigned int s)   //延时函数
{
	unsigned int i;
	for(i=0; i<s; i++);
	for(i=0; i<s; i++);
}
void delay(unsigned int z)		//延时函数
{
	unsigned int x,y;
	for(x=z;x>0;x--)
		for(y=110;y>0;y--);
}


void main(void)					  //主函数
{
	unsigned int flag;			  //定义变量
	unsigned char t  =0,flag_1;
	unsigned char TxBuf[20]={0};	 // 数据暂存数组
	unsigned char RxBuf[20]={0};	
	
a:  init_io() ;				 //初始化
	flag_1=0;
	flag=0;					 //变量清零
	
	TxBuf[0]='c';			 //发送数据c
	
	
	while(1)				 //进入循环
	{
		//SetRX_Mode();
		if(KEY1 ==0 ) 		 //按下按键
		{
			TxBuf[0]=0;
			TxBuf[1]=1;		 //发送01
		}
		else 				 //按键没有按下
		{
			TxBuf[0]=1;
			TxBuf[1]=1;		 //发送11
		}
		nRF24L01_TxPacket(TxBuf);	// 发送缓冲区数据
		SetRX_Mode();				//发送完数据后设置成接收模式

		if(nRF24L01_RxPacket(RxBuf)) //如果接收缓冲区有数据
		{
			nRF24L01_TxPacket(TxBuf);	// 发送缓冲区数据				
			flag=0;
			flag_1=0;					//变量清零
		}
		else							//接收缓冲区无数据,也就是没有接收到数据
		{
			flag++;						//计时变量加
			if(flag>=80)				//加到80
			flag_1=1;					//变量置1
			delay(5);					//计时分辨率是5ms,计80次就是80*5=400ms
		}
		if(flag_1)						//如果变量为1,计时400ms,开启报警
		for(t=0;t<20;t++)				//for循环控制灯和蜂鸣器报警
		{
			LED2=~LED2;
			LED1=~LED1;					//取反,达到闪烁的效果
			delay(80);					//延时80ms
			if(t==19)					//t加到19时
			{
				goto a;					//回到while前面的a:
				flag_1=0;
				flag=0;
			}
		}
	}
}
//接收端main.c

#include "reg52.h"
#include "nRF24L01.h"
#include "def.h"

#include "delay.h"			  //包含头文件

uchar count_1,count_2,count_3,count,miao,fen,fen_1,fen_2,fen_3,flag_1,flag_2,flag_3;  //定义全局变量

void Delay_1(unsigned int s)		//延时函数
{
	unsigned int i;
	for(i=0; i<s; i++);
	for(i=0; i<s; i++);
}
void delay(unsigned int z)			//延时函数
{
	unsigned int x,y;
	for(x=z;x>0;x--)
		for(y=110;y>0;y--);
}

void main(void)						 //主函数
{
	unsigned int flag,f=1000;		 //定义变量
	unsigned char t ,flag_1;
	unsigned char TxBuf[20]={0};	 //缓冲区数据清零 
	unsigned char RxBuf[20]={0};	

    init_io() ;						 //初始化
	while(1)						 //进入循环
	{
		TxBuf[0] = 0;
		TxBuf[1] = 1;				 //发送数据01
		
		SetRX_Mode();				 //设置接收模式

		if(nRF24L01_RxPacket(RxBuf))		//如果接收缓冲区有数据
		{	
			nRF24L01_TxPacket(TxBuf);		//发送缓冲区数据
			if(	RxBuf[0]==0&&RxBuf[1]==1)	//如果接收的数据是01
			{ 
				for(t=0;t<10;t++)			//控制灯和震动工作闪烁
				{
					LED1=~LED1;
					LED2=~LED2;				//取反
					delay(50);				//延时
				}
			}
			RxBuf[0]= 0;
			RxBuf[1] = 0x00;	 			//接收缓冲区数据清零
			flag=0;
			flag_1=0;						//变量清零
		}
		else								//接收缓冲区无数据
		{
			flag++;							//计时开始
			if(flag==200)					//计时到1秒(200*5ms)
			{
				flag_1=1;					//变量置1
			}
			delay(5);						//5ms延时
		}
		if(flag_1)							//如果超时没有接收数据,就开启报警
		for(t=0;t<10;t++)					//for循环启动报警
		{
			LED2=~LED2;						//闪烁报警
			delay(50);						//延时
			
			if(t==9)						//闪烁一个周期
			{
				flag_1=0;					//变量清零,返回后再次判断是否有信号,如无信号,继续报警
				flag=0;
			}
		}
	}
}

【模块介绍】

        此次防丢器所用的无线模块为nRF24L01,nRF24L01是由NORDIC生产的一款工作频率在2.4~2.5GHzISM之间的新型单片射频收发器件,几乎可以连接到各种单片机芯片,并完成无线数据传送工作,nRF24L01内部包含的模块分别为频率合成器功率放大器、晶体振荡器与调制器,并与增强型的ShockBurst技术结合,可以通过SPI接口对其输出功率、频道选择与协议进行设置,因为nRF24L01有极低的工作电流,不仅功耗较低,而且处于其他低功率工作模式时,即掉电模式和待机模式下电流消耗更低,在节能设计方面占有足够大的优势。

【参考资料】

【参考文献】

[1]肖金球,冯翼.增强型51单片机与仿真技术[M].北京:清华大学出版社社, 

[2]肖金球.单片机原理与接口技术[M].北京:清华大学出版社,2004,17-128. 

[3]周鸿武.基于单片机的酒精浓度检测仪设计[J].制造业自动化2012,02. 

[4] 康华光.电子技术基础模拟部分(第五版)[M].高等教育出版社,2006年

[5] 康华光.电子技术基础数字部分(第五版)[M].高等教育出版社,2006年

[6] 纪宗南.单片机外围器件使用手册—输入通道器件分册[M].北京航空航天大学出版社,2005年 

[7]贾伯年.传感器技术[M].东南大学出版社,2000年

[8]何希才.传感器及其应用[M].国防工业出版社,2001年

[9]郑学坚.微型计算机原理及应用[M].清华大学出版社,2006年

[10]张水利. 单片机原理及应用. 黄河水利出版社,出版年:2008年8月 

[11]谭浩强. C程序设计. 第三版. 清华大学出版社,出版年:2005年7月

        本文介绍了在设计的过程的关键点,供大家参考学习,如需获取实物、或者下载链接失效、对其他单片机硬件设计感兴趣、有不明白的或者错误的,可以添加徽信biyezhan007 

郑重声明,此文章提供给大家做参考模板,杜绝一切不良学术不良行为。

 

         最后说一下,如果大家对硬件和编程感兴趣,可以点击牛客网这个连接看看,是个不错的学习网站,是学长推荐给我的,因为之前找工作的时候没有太多经验,也不知道怎么准备,去哪里搜资源,走了很多弯路,所以推荐给大家,当初在上面大量刷题还看了好多面试经验等,反正上面有很多课程+刷题+面经+求职+讨论区等资源,关键里面的资源全部公开免费,不用花钱,希望能帮助家!    

未经作者允许,不得抄袭转载,转载或有问题请私信或微信作者。

  • 6
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
火灾报警器是一种安全设备,用于检测火灾并发出警报。基于单片机的火灾报警器可以实现自动化的检测和报警功能,具有高精度、可靠性高、反应迅速等优点。 设计步骤: 1. 确定火灾检测方式:可以采用温度、烟雾、气体等多种方式进行检测。其中,烟雾检测是最常用的方式。 2. 选择传感器:根据检测方式选择合适的传感器。烟雾检测可以选择MQ-2、MQ-5等传感器。 3. 选择单片机:根据需要选择适合的单片机。一般选择AT89S52、STC89C52等单片机。 4. 编写程序:根据传感器的输出信号,编写程序进行数据处理和报警控制。程序可以分为两部分:检测模块和控制模块。检测模块用于检测传感器输出的信号,控制模块用于控制警报器的启停。 5. 设计电路:根据单片机的引脚功能和外设需要,设计电路。电路包括单片机、传感器、显示器、蜂鸣器等。 6. 组装调试:将电路和程序进行组装调试,进行测试。测试包括传感器检测、警报器启停、显示器显示等。 注意事项: 1. 火灾报警器是一种安全设备,需要严格遵守相关安全标准和要求。 2. 传感器的选择和电路设计需要根据具体情况进行调整和优化,以提高检测精度和可靠性。 3. 程序编写需要考虑到复杂的火灾情况,进行多种情况的测试和调试。 4. 在使用过程中,需要定期检查和维护,确保设备的正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸鱼弟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值