NRF905无线通讯小车
记录一下整的无线通讯小车,第一次使用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无线通讯小车相关推荐
- 基于51单片机的无线通讯公交报站系统
近些年来,随着经济的飞速发展,人们对出行有了更高要求,公交车行业发展成为一个城市必不可少的交通工具,城市公交系统也开始快速发展,不仅公交车的型号不断更新换代,而且为了公司效益目前已经全部改成无人售票车 ...
- NRF905无线通讯模块的距离到底有多远呢?
NRF905无线通讯模块的距离到底有多远呢? 我们店铺里有NRF905无线模块出售,但是,我遇到很多的客户都弄不清楚,MRF905模块的通讯距离到底有多远? 有些客户,已经买了905模块,但是通讯距离 ...
- 如何实现斗轮机与就地程控站DCS系统间远距离无线通讯?
电厂输煤系统设备一般包括燃料运输.卸煤机械.受煤装置.煤场设施.输煤设备.煤量计量装置和筛分破碎装置.集中控制和自动化以及其它辅助设备与附属建筑.斗轮机又叫斗轮堆取料机,该设备有堆料.取料和物料直通三 ...
- Lora和Zigbee无线通讯技术的对比
物联网应用中的无线技术有很多种,从大的方向分为两种,一种是局域网,另外一种是广域网. 最常见的广域网,是基于电信公司网络通讯的无线技术,例如2G,3G,4G,5G等,以及现在比较流行的NB-Iot. ...
- 局域网通讯工具_自动称重带无线通讯WIFI传输功能设备
自动称重带无线通讯WIFI传输功能设备详情内容/ Content details 支持: 远程数据库功能,支持OPCUA协议,能实时上传各种称重信息:通过SQLServer等实现称重数据与记录的上传到 ...
- 5G 对无线通讯芯片产业链的影响
来源:乐晴智库精选 ▌无线通信芯片概要:未来五年增速放缓,射频前端成为主要驱动力 在智能手机普及的带动下,2012-2017五年无线通信芯片实现9.7%的复合增长率,根据iHS的数据,2017年市场规 ...
- c#rs232与三菱通讯_MCGS 与 FX3U PLC 之间的无线通讯实例
本方案主要详述了如何实现 MCGS 触摸屏与 FX3UPLC 之间 Modbus 协议的无线通讯.方案中所用到的无线通讯终端是 DTD435MC--等日系 PLC 专用的无线通讯终端.1. 方案概述1 ...
- 外设驱动库开发笔记27:ESP8266无线通讯驱动
我们的物联网产品所使用的平台都支持无线通讯,而且无线通讯本身更的成本较低,受到大家的欢迎.在本篇文章中,我们将详细讨论并实现ESP8266无线通讯模块的驱动. 1.功能概述 ESP8266是由乐鑫公司 ...
- 外设驱动库开发笔记26:nRF24L01无线通讯驱动
现在无线在我们的生活中无处不在.而我们开发的物联网产品也大量使用无线通讯.在这一篇文章中,我们将讨论nRF24L01无线通讯模块驱动程序的开发与实现. 1.功能概述 nRF24L01是一款工作在2.4 ...
最新文章
- Mac 升级系统 pod 命令无效
- Ext 整合 Jquery
- Leetcode: Balanced Binary Tree
- [云炬创业管理笔记]第6章制定创业行动测试4
- 【浅谈数据结构】《数据结构》Data Structure
- 06_1.Pytorch中如何表示字符串、word embedding、One - hot、Embedding(Word2vec、BERT、Glove)【学习总结】
- python3 for计数_python怎么实现计数?
- bash mysql count()_【MySQL】性能优化之 count(*) VS count(col)
- Exponential notation 思维题
- IOS 正则表达式匹配文本中URL位置并获取URL所在位置(解决连接中文问题)
- 牛客网 牛客练习赛7 A.骰子的游戏
- 剑指Offer——完美+今日头条笔试题+知识点总结
- 数据分析——实习僧数据分析岗招聘信息分析
- Java内存Happen-Before
- mysql 统计连续天数,mysql计算延续天数,mysql连续登录天数,连续天数统计_mysql...
- 8 Babylonjs基础入门 相机,模型碰撞和重力效果
- 企业如何做新闻软文发布? 软文推广和新闻源发布有何不同之处?
- SYBASE 12.5 维护手册 3. 技术专刊
- 调试 Windows 中的调试
- day01-初识计算机