当前位置:   article > 正文

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

单片机 防丢失 设计

目录

【功能介绍】

【原理图】

【PCB】

【实物图】

【元器件清单】

【源代码】

【模块介绍】

【参考资料】

【参考文献】


功能介绍

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

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

原理图

发送模块原理图

接收模块原理图

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

PCB

发送模块

 接收模块

实物图

 

元器件清单

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

源代码

  1. //发送端main.c
  2. #include "nRF24L01.h" //包含头文件
  3. #include "def.h" //包含头文件
  4. void Delay_1(unsigned int s) //延时函数
  5. {
  6. unsigned int i;
  7. for(i=0; i<s; i++);
  8. for(i=0; i<s; i++);
  9. }
  10. void delay(unsigned int z) //延时函数
  11. {
  12. unsigned int x,y;
  13. for(x=z;x>0;x--)
  14. for(y=110;y>0;y--);
  15. }
  16. void main(void) //主函数
  17. {
  18. unsigned int flag; //定义变量
  19. unsigned char t =0,flag_1;
  20. unsigned char TxBuf[20]={0}; // 数据暂存数组
  21. unsigned char RxBuf[20]={0};
  22. a: init_io() ; //初始化
  23. flag_1=0;
  24. flag=0; //变量清零
  25. TxBuf[0]='c'; //发送数据c
  26. while(1) //进入循环
  27. {
  28. //SetRX_Mode();
  29. if(KEY1 ==0 ) //按下按键
  30. {
  31. TxBuf[0]=0;
  32. TxBuf[1]=1; //发送01
  33. }
  34. else //按键没有按下
  35. {
  36. TxBuf[0]=1;
  37. TxBuf[1]=1; //发送11
  38. }
  39. nRF24L01_TxPacket(TxBuf); // 发送缓冲区数据
  40. SetRX_Mode(); //发送完数据后设置成接收模式
  41. if(nRF24L01_RxPacket(RxBuf)) //如果接收缓冲区有数据
  42. {
  43. nRF24L01_TxPacket(TxBuf); // 发送缓冲区数据
  44. flag=0;
  45. flag_1=0; //变量清零
  46. }
  47. else //接收缓冲区无数据,也就是没有接收到数据
  48. {
  49. flag++; //计时变量加
  50. if(flag>=80) //加到80
  51. flag_1=1; //变量置1
  52. delay(5); //计时分辨率是5ms,计80次就是80*5=400ms
  53. }
  54. if(flag_1) //如果变量为1,计时400ms,开启报警
  55. for(t=0;t<20;t++) //for循环控制灯和蜂鸣器报警
  56. {
  57. LED2=~LED2;
  58. LED1=~LED1; //取反,达到闪烁的效果
  59. delay(80); //延时80ms
  60. if(t==19) //t加到19时
  61. {
  62. goto a; //回到while前面的a:
  63. flag_1=0;
  64. flag=0;
  65. }
  66. }
  67. }
  68. }
  1. //接收端main.c
  2. #include "reg52.h"
  3. #include "nRF24L01.h"
  4. #include "def.h"
  5. #include "delay.h" //包含头文件
  6. uchar count_1,count_2,count_3,count,miao,fen,fen_1,fen_2,fen_3,flag_1,flag_2,flag_3; //定义全局变量
  7. void Delay_1(unsigned int s) //延时函数
  8. {
  9. unsigned int i;
  10. for(i=0; i<s; i++);
  11. for(i=0; i<s; i++);
  12. }
  13. void delay(unsigned int z) //延时函数
  14. {
  15. unsigned int x,y;
  16. for(x=z;x>0;x--)
  17. for(y=110;y>0;y--);
  18. }
  19. void main(void) //主函数
  20. {
  21. unsigned int flag,f=1000; //定义变量
  22. unsigned char t ,flag_1;
  23. unsigned char TxBuf[20]={0}; //缓冲区数据清零
  24. unsigned char RxBuf[20]={0};
  25. init_io() ; //初始化
  26. while(1) //进入循环
  27. {
  28. TxBuf[0] = 0;
  29. TxBuf[1] = 1; //发送数据01
  30. SetRX_Mode(); //设置接收模式
  31. if(nRF24L01_RxPacket(RxBuf)) //如果接收缓冲区有数据
  32. {
  33. nRF24L01_TxPacket(TxBuf); //发送缓冲区数据
  34. if( RxBuf[0]==0&&RxBuf[1]==1) //如果接收的数据是01
  35. {
  36. for(t=0;t<10;t++) //控制灯和震动工作闪烁
  37. {
  38. LED1=~LED1;
  39. LED2=~LED2; //取反
  40. delay(50); //延时
  41. }
  42. }
  43. RxBuf[0]= 0;
  44. RxBuf[1] = 0x00; //接收缓冲区数据清零
  45. flag=0;
  46. flag_1=0; //变量清零
  47. }
  48. else //接收缓冲区无数据
  49. {
  50. flag++; //计时开始
  51. if(flag==200) //计时到1秒(200*5ms)
  52. {
  53. flag_1=1; //变量置1
  54. }
  55. delay(5); //5ms延时
  56. }
  57. if(flag_1) //如果超时没有接收数据,就开启报警
  58. for(t=0;t<10;t++) //for循环启动报警
  59. {
  60. LED2=~LED2; //闪烁报警
  61. delay(50); //延时
  62. if(t==9) //闪烁一个周期
  63. {
  64. flag_1=0; //变量清零,返回后再次判断是否有信号,如无信号,继续报警
  65. flag=0;
  66. }
  67. }
  68. }
  69. }

【模块介绍】

        此次防丢器所用的无线模块为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 

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

 

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/163384
推荐阅读
相关标签
  

闽ICP备14008679号