记录一下整的无线通讯小车,第一次使用NRF905无线模块,查了一堆资料,做了个采集小车,在此记录,防止忘记。

mmexport1648565535394

功能

遥控器部分:

遥控器:遥控器上电时候停留在主菜单界面,此时通过上下按钮可选择以下三个功能

-时间设置- 用来设置时间日期

-历史记录- 用来记录采集历史

-控制界面- 用来遥控小车和接收采集数据,在控制界面实时显示时间日期、按键时候相关指令以及按下采集时候接收到的温湿度数据。

采集车部分:

采集小车:采集小车主要接收指令,oled显示控制状态,根据接收的指令可以进行上下左右移动,以及当收到采集指令时候采集当前地点温湿度,反馈给遥控器,同时更新oled上的数据。

硬件

遥控器原理图:

小车原理图:

软件

软件主要介绍几个功能函数、存储用的AT24C02,没用51内部的EEPROM,这里后面再改吧。

菜单初始化:

用来显示对应的界面(主界面,时间设置界面,历史记录界面,控制界面)

Init_Menu(unsigned char Menu)
{OLED_Clear();delay_ms(10);switch(Menu){case 0:Init_Set();;break;case 1:Read_Time();Set_mode(0);break;case 2:Show_History();break;case 3:Show_main();break;}Set_Flag=0;
}

按键对应的逻辑功能

如时间具体设置,保存、遥控、采集等指令

void Key_Set()//设置功能按键
{if(!Up_control){delay_ms(1);if(!Up_control){if(Menu_Flag==0){if(Set_Flag==0)Set_Flag=3;Set_Flag--;}else if(Menu_Flag==1){if(Set_Flag==0)Set_Flag=6;Set_Flag--;Set_mode(Set_Flag);}while(!Up_control);}}if(!Down_control){delay_ms(1);if(!Down_control){//初始界面时候if(Menu_Flag==0){Set_Flag++;if(Set_Flag>2)Set_Flag=0;                }else if(Menu_Flag==1){Set_Flag++;if(Set_Flag>6)Set_Flag=0;  Set_mode(Set_Flag);}        while(!Down_control);}  }if(!Collect_control){delay_ms(1);if(!Collect_control){if(Menu_Flag==0){Menu_Flag=Set_Flag+1;while(!Collect_control);Init_Menu(Menu_Flag);}else if(Menu_Flag==1){if(Set_Flag==6){DS1302Init();OLED_Clear();OLED_ShowString(26,5,"Save_OK",12);delay_ms(20);Menu_Flag=3;Set_Flag=0;Init_Menu(Menu_Flag);}else{OLED_Clear();OLED_ShowString(26,5,"No Save ",12);delay_ms(20);Menu_Flag=0;Set_Flag=0;Init_Menu(Menu_Flag);                 }               // 保存时间 while(!Collect_control);}}  }if(!Left_control){delay_ms(1);if(!Left_control){if(Menu_Flag==1){Set_Time(Set_Flag,1);//时间设置加while(!Left_control);}else if(Menu_Flag==2){}}    }if(!Right_control){delay_ms(1);if(!Right_control){if(Menu_Flag==1){Set_Time(Set_Flag,0);//时间设置加while(!Right_control);}else if(Menu_Flag==2){               }}  }}

主函数逻辑代码如下

int main(void)//这里是遥控器端的{    nRF905Init();  //初始化设置Config905();    //设置配置寄存器OLED_Init();OLED_Clear();Init_Set();Data_Time=ReadSet(0);while(1) {  if(Menu_Flag==0){Show_Set();}else if(Menu_Flag==1){Show_Set_Time();     }else if(Menu_Flag==3){Show_Time();Key();TxPacket();Show_Temp();}//显示时钟}
}int main(void)//这里是采集小车端的{ OLED_Init();delay_ms(200);nRF905Init();OLED_Clear();Config905();                // Config nRF905 moduledelay_ms(200);Show_main();Show_temp();SetRxMode();while(1) { RX();if(rx_Buffer[1]==0x01){Move_Forward();}else if(rx_Buffer[1]==0x02){Move_Back();}else if(rx_Buffer[1]==0x03){Turn_left();}else if(rx_Buffer[1]==0x04){Turn_right();}else if(rx_Buffer[1]==0x05){//DR=0; Show_temp();send_bruff[0]=dat_ws[0];//湿度数据send_bruff[1]=dat_ws[2];//温度整数send_bruff[2]=dat_ws[3];//温度小数sender_bruff();delay_ms(50);sender_bruff();delay_ms(50);DR=1; delay_ms(100);SetRxMode();}else{Stop_L();}Show_Mode();}
}

NRF905无线通讯小车相关推荐

  1. 基于51单片机的无线通讯公交报站系统

    近些年来,随着经济的飞速发展,人们对出行有了更高要求,公交车行业发展成为一个城市必不可少的交通工具,城市公交系统也开始快速发展,不仅公交车的型号不断更新换代,而且为了公司效益目前已经全部改成无人售票车 ...

  2. NRF905无线通讯模块的距离到底有多远呢?

    NRF905无线通讯模块的距离到底有多远呢? 我们店铺里有NRF905无线模块出售,但是,我遇到很多的客户都弄不清楚,MRF905模块的通讯距离到底有多远? 有些客户,已经买了905模块,但是通讯距离 ...

  3. 如何实现斗轮机与就地程控站DCS系统间远距离无线通讯?

    电厂输煤系统设备一般包括燃料运输.卸煤机械.受煤装置.煤场设施.输煤设备.煤量计量装置和筛分破碎装置.集中控制和自动化以及其它辅助设备与附属建筑.斗轮机又叫斗轮堆取料机,该设备有堆料.取料和物料直通三 ...

  4. Lora和Zigbee无线通讯技术的对比

    物联网应用中的无线技术有很多种,从大的方向分为两种,一种是局域网,另外一种是广域网. 最常见的广域网,是基于电信公司网络通讯的无线技术,例如2G,3G,4G,5G等,以及现在比较流行的NB-Iot.  ...

  5. 局域网通讯工具_自动称重带无线通讯WIFI传输功能设备

    自动称重带无线通讯WIFI传输功能设备详情内容/ Content details 支持: 远程数据库功能,支持OPCUA协议,能实时上传各种称重信息:通过SQLServer等实现称重数据与记录的上传到 ...

  6. 5G 对无线通讯芯片产业链的影响

    来源:乐晴智库精选 ▌无线通信芯片概要:未来五年增速放缓,射频前端成为主要驱动力 在智能手机普及的带动下,2012-2017五年无线通信芯片实现9.7%的复合增长率,根据iHS的数据,2017年市场规 ...

  7. c#rs232与三菱通讯_MCGS 与 FX3U PLC 之间的无线通讯实例

    本方案主要详述了如何实现 MCGS 触摸屏与 FX3UPLC 之间 Modbus 协议的无线通讯.方案中所用到的无线通讯终端是 DTD435MC--等日系 PLC 专用的无线通讯终端.1. 方案概述1 ...

  8. 外设驱动库开发笔记27:ESP8266无线通讯驱动

    我们的物联网产品所使用的平台都支持无线通讯,而且无线通讯本身更的成本较低,受到大家的欢迎.在本篇文章中,我们将详细讨论并实现ESP8266无线通讯模块的驱动. 1.功能概述 ESP8266是由乐鑫公司 ...

  9. 外设驱动库开发笔记26:nRF24L01无线通讯驱动

    现在无线在我们的生活中无处不在.而我们开发的物联网产品也大量使用无线通讯.在这一篇文章中,我们将讨论nRF24L01无线通讯模块驱动程序的开发与实现. 1.功能概述 nRF24L01是一款工作在2.4 ...

最新文章

  1. Mac 升级系统 pod 命令无效
  2. Ext 整合 Jquery
  3. Leetcode: Balanced Binary Tree
  4. [云炬创业管理笔记]第6章制定创业行动测试4
  5. 【浅谈数据结构】《数据结构》Data Structure
  6. 06_1.Pytorch中如何表示字符串、word embedding、One - hot、Embedding(Word2vec、BERT、Glove)【学习总结】
  7. python3 for计数_python怎么实现计数?
  8. bash mysql count()_【MySQL】性能优化之 count(*) VS count(col)
  9. Exponential notation 思维题
  10. IOS 正则表达式匹配文本中URL位置并获取URL所在位置(解决连接中文问题)
  11. 牛客网 牛客练习赛7 A.骰子的游戏
  12. 剑指Offer——完美+今日头条笔试题+知识点总结
  13. 数据分析——实习僧数据分析岗招聘信息分析
  14. Java内存Happen-Before
  15. mysql 统计连续天数,mysql计算延续天数,mysql连续登录天数,连续天数统计_mysql...
  16. 8 Babylonjs基础入门 相机,模型碰撞和重力效果
  17. 企业如何做新闻软文发布? 软文推广和新闻源发布有何不同之处?
  18. SYBASE 12.5 维护手册 3. 技术专刊
  19. 调试 Windows 中的调试
  20. day01-初识计算机

热门文章

  1. 修改计算机基本信息,windows10系统下怎样更改基本信息中的制造商型号
  2. Linux文本三剑客
  3. esp8266 mixly blynk远程控制 + NTP+天气预报及一体 智能钟
  4. bergerAimi
  5. Springboot快速开发-书本信息管理系统(项目源码)
  6. 计算机木马是如何产生的?原理是什么?
  7. 同时在写四门编程语言是怎样一种体验?
  8. 印刻出版 盛可以 限量《死亡賦格》
  9. 编码格式之间进行文本内码转换的库
  10. [DirectX]DirectX9使用Effect和Vertexshader、PixelShader的区别