NRF905无线模块程序

合集下载

基于NRF905的多机床无线通信系统设计与实现

基于NRF905的多机床无线通信系统设计与实现
Ab ta t o o ra z o u e t n sr c :F r el ea c mp trwi ma y CNC c mmu i t n , h s ytm o S t i h o n c i s ti s s ao e t TCl L 0 ige hp p o es g c r , o NRF 0 6 XE s lc i r c s n o e t l n i 95
摘 要 :为 实现 以一 台计 算机 与 多 台数控 机 床 的 通信 ,该 系统 以 S C1X6 XE单 片机 为 处理核 心 。以 T 1 0
NR 9 5为 无 线 通 信 模 块 ,采 用 可 视 化 计 算 机 编 程 工具 开 发 上 位 机 程 序 ,设 计 出上 位 机 软 件 和 无 F0
Ⅳ Xi - o g,Z a Ln o HANG Ja - n in Bi ,ME u — i NG J n J e,XU B o C u o— h n
( nigIstt o T c n lg ,Najn Jagu 1 1 7 Naj ntue f eh oo y n i nig i s 2 1 6 ,Chn ) n ia
f rw ieesc mm u ia o od l ,ui g vs l e o o rls o n ct n m i u e sn i i d c mpue r g a uaz trp o rmm ig &t o e eo m e tPC r ga n o ld v l p n p o rm,te d s n gve C ot r h ei i sP sfwae g a rls no e o ue Th o hai rtenu eo st e x e m e tlrs t e o srt h tt esse o h beop rto c ln u ndwiee d sm d . r ug t m r u i se p r l e h m i na eu sd m ntae ta y tm fr a l ea n, oT n — l h e i

nRF905模块和SPI接口的点对点无线通信系统

nRF905模块和SPI接口的点对点无线通信系统
RA2 AN 2 ,
模 块 , R 4 n F 0 模 块 输入 数 据 。 由 由 C 从 R 95

RB6 P , GC RB5
RB 4
个 4MH 陶 瓷 晶 体 振荡 器为 单 片 机提 供 z
RA3 AN3 , RB3 P , GM RA4 r CKl ,0 RB2 RA5 AN4 , RBl VSS RB0 0SClCLKI / N VDD
图 1 图 2、 3所 示 。 、 图
在 图 1中 , 片 机 1 F 7 单 6 8 6输 入 输 出 口与 n F 0 R 9 5模
块 相 应接 口连 接 情 况 : C ~ n F 0 R 7 R g5模 块 时 钟 分 频 输 出 ,
R 6 R 9 5模块 地 址 匹配 输 出 AM , 5 C ~n F 0 RC ~MI(, C ~ S) R 4
引 言
在 某 些 环境 监 测 、 防 警 报 等 环 境 下 , 便 进 行 有 线 安 不
引 入 自动 重 发 , 抗 干 扰 G S 调 制 和 最 高 1 高 FK 6位 C C 校 R 验 机 制 , 保 了数 据 传 输 的可 靠 性 。 确
线路 的铺设 , 而采用无线数据通信方式 。采用一般的无线
机 通 过 R 7R B 、 B6和 R 3与 编程 器 相 连 , B 可 进 行 在线 编程 ; RC 由 5输 出数 据 到 n F 0 R 95
PI 6F 7 。 C1 8 6
+ V 5 丽可: P R 7P P B, GD
R , A0 AN0 R lANl A ,
传 输 方 式 时 可 能 因 为环 境 噪 声 大 , 扰 信 号 强 而 导致 接 收 干 数 据 的准 确 性 很 低 。针 对 这 种 情 况 , 计 一 种 低 成 本 、 设 高 准确 率 的无 线 数 据 传 输 系 统 —— 基 于 PC 6 8 6 简 称 为 I 1F 7 ( “6 86) S I n F 0 1F 7 ” 的 P 和 R g5模 块 的 点 对 点 无 线 通 信 系 统 。利用 1F 7 6 8 6和 n F 0 R 9 5模 块 直 接 进 行 S I 据 交 P 数 换, 时序 同步 性 好 , 序 编 写 简 单 。 1F 7 程 6 8 6通 过 相 应 的 I O 口连 接 到编 程 器 , 直 接进 行在 线 调 试 。鉴 于无 线 通 信 可 环 境 中噪 声 大 , 号 干 扰 大 的 特 点 , 用 的 n F 0 模 块 信 采 R 95

nRF905无线模块使用手册

nRF905无线模块使用手册

4
NBC905_V2.0 使用手册
9 10 11 12 13 MISO MOSI SPI输入 SPI时钟 SPI使能,低电平有效 地
14 GND 地 该接口可以直接和 3.3V的MCU 相连接。对于5V的MCU,为防止I/O口的输出灌电流过大烧毁 模块,该模块和 MCU 连接需作如下处理,即在IO与NRF905接口间加1个限流电阻来减小灌电流。
8
NBC905_V2.0 使用手册
SPI 读操作
SPI 写操作 1) 、 SPI 接口配置 SPI 接口由状态寄存器、射频配置寄存器、发送地址寄存器、发送数据寄存器和接收数据寄存 器 5 个寄存器组成。 状态寄存器包含数据准备好引脚状态信息和地址匹配引脚状态信息; 射频配置 寄存器包含收发器配置信息, 如频率和输出功能等; 发送地址寄存器包含接收机的地址和数据的字 节数;发送数据寄存器包含待发送的数据包的信息,如字节数等;接收数据寄存器包含要接收的数 据的字节数等信息。
7
NBC905_V2.0 使用手册
D. 当接收到一个相匹配的地址,地址匹配引脚AM被置高; E. 当一个正确的数据包接收完毕,nRF905自动移去字头、地址和CRC校验位,然后把数据准备 好引脚DR置高 F. 微控制器把TRX_CE置低,nRF905进入空闲模式; G. 微控制器通过SPI口,以一定的速率把数据移到微控制器内; H. 当所有的数据接收完毕,nRF905把数据准备好引脚DR和地址匹配引脚AM置低; I. nRF905此时可以进入ShockBurstTM接收模式、ShockBurstTM发送模式或关机模式。 当正在接收一个数据包时,TRX_CE或TX_EN引脚的状态发生改变,nRF905立即把其工作模式改 变,数据包则丢失。当微处理器接到地址匹配引脚的信号之后,其就知道nRF905正在接收数据包, 其可以决定是让nRF905继续接收该数据包还是进入另一个工作模式。 通过上面的介绍,对 nRF905 的接收流程有了一定的了解。在应用过程中一定要注意在进入接 收模式之前,nRF905 需要 650ns 的反应时间,这是不可忽略的。

基于nRF905无线模块的体温测量系统设计

基于nRF905无线模块的体温测量系统设计

T XE N、 P WR 组 成 ; S P I接 口 由 S C K、 MI S O、 MO S I 块 工 作 。本 设 计 采 用 电 压 调 节 器 1 M1 1 1 7将 + 5 V
以及 C S N组成 ; 状态输 出接 口由 C D ( 载波检测输 直 流 电 源 转 换 为 + 3 . 3 V直 流 电源 , 如 图 8所 示 。 出) 、 A M( 地址 匹配输 出 ) 、 D R( 数据 就绪 输 出 ) 组 成 。1 1 R 0 5无线收发模块 与 A T 8 9 S 5 2 单 片机 的
R F 9 0 5芯 片 开 发 而成 ( RA M) , 3 2个 外 部双 向输 入/ 输 出( 的 ) 口, 一个 6 司 推 出 的单 片 射 频 收 发 器 n 具有单 片 、 低电压 、 低功耗 、 无需 外部 S AW 滤 向量 2级 中 断结构 , 3个 1 6位 可编 程定 时 计 数 的 ,
接 口电路 如 图 5所 示 .
1 ,


3 ●




1 l
1 . 1 .
l ,
图8 + 3 . 3 V 电 源 电路 原 理 图
图5
F 9 0 5无 线 收发 模 块接 口电路 原 理 图
三、 系统 软 件 设 计
( 一) 发送部分软件设计
1 5 9
常范围则报警 。其中包括 n R F 2 4 L 0 1 模块和 L C D1 6 0 2液晶显示器的初始化 。接 收部分流程
图如图 l 0所示 。
基于 n R F 9 o 5无 线 收 发 模 块 为 核 心 的无 线 体 温 测
A T 8 9 S 5 2 单片机接 口电路 如图 3 所示 。

基于nRF905无线收发模块的温湿度监控系统设计

基于nRF905无线收发模块的温湿度监控系统设计

直 到达 到 预期结 果 。 按最 优 的原理 图设计 版 图 , 然 后进 行原 理 图 一 版 图联合仿 真。原理图 一版图联合仿真把 l a y o u t 中的无源 电路 和 原 理 图 中 的元器 件 有 机结 合 在一 起 进 行仿 真 , 既 考 虑 了无 源
一、 -… … … … … … … … … … … … … …
5 结 论
本 系 统 的设 计 旨在 使 其产 品化 , 以便 于普 及应 用 在基 层 单 位。因此 , 系 统 在 元 件 布 局 时首 要 考 虑 了元 件 布 局 的 紧凑 性 。 要 想 保证 元 件 布局 的紧凑 性 , 只有 对元 件 布局 进 行优 化 , 才 能
对 传来 数据 的监 听 , 继 而将 监 听到 的数据送 到 L C D显示 屏显 示 , 与此同时 , 还将 接 收 到 的采 集端 的温湿 度 数据 与 系 统 内部预 先 设 置 的数 据进 行 比较 , 当湿度 超 过 7 0 % 时启 动继 电器动 作 , 模 拟除湿 , 当温 度超 过 3 5 q C 时 启动 相 应报 警 电路及 控 制 电路 , 模 拟制冷 , 其 工作 流 程 如 图 2 所 示 。采 集 节点 上 电启 动 后 为其 设 置 各 自的 工作 频率 ,I D 1 模 块 工 作 频率 设 置 为 4 2 8 . 4 MH Z ,I D 2 模 块 的工 作频 率设 置为 4 3 3 , 2 M H Z 。初始 化后 , 每2 秒钟 采集 一 次 终端 温湿度 传 感器 数据 , 并通 过 n R F 9 0 5 发 送 出去传 给数据 接 收端 , 与此 同 时显示 当前 此节 点采集 到 的温湿 度数据 。
4 系统 软件 设计
本 无 线温 湿 度 监控 系 统 的 主控 显示 终端 模 块 主要 负 责完 成

Nrf905无线模块使用教程

Nrf905无线模块使用教程

Nrf905无线模块使用教程nRF905是挪威NordicVLsl公司推出的单片射频收发器,工作电压为1.9一3.6V,32引脚QFN封装,工作于433/868/gl5MHz三个IsM(工业、科学和医学)频道,频道之间的转换时间小于650us。

nRF905由频率合成器、接收解调器、功率放大器、晶体振荡器和调制器组成,使用SPI接口与微控制器通信,配置非常方便。

其主要特点如下:●工作电源电压范围:1.9一3.6V;●数据包自动重发功能;●输出功率可调至IOdBm;●自动产生CRC和前导码;●低工作电流(TX),在输出功率为一10dBm时典型值为llmA;●低工作电流(RX),典型值为12.smA;的只有10个引脚。

(1)模式控制引脚由PWR、TXEN、TRX_CE三个引脚来控制NRF905芯片的工作模式各种模式的控制如下表下面这个函数将nrf905设置成发射模式,模式转换需要大于650usvoid SetTxMode(void){TX_EN=1;TRX_CE=0;Delay(1); // delay for mode change(>=650us)}下面这个函数将nrf905设置成接收模式void SetRxMode(void){TX_EN=0;TRX_CE=1;Delay(1); //delay for mode change(>=650us)}(2)SPI接口SPI接口由SCK、MISO、MOSI以及CSN这四个引脚组成。

在配置模式下单片机通过SPI接口配置无线模块的工作参数;在发射/接收模式下单片机SPI接口发送和接收数据。

:.。

基于nRF905模块和C8051F单片机内无线收发系统设计

基于nRF905模块和C8051F单片机内无线收发系统设计
器和 MWD被 动力钻 具隔 开 。传感 器 无法 用线缆 与 MWD连接 ,因此要 把
传感器 的信息 传送 给 MWD只能通 过 过上 位机 界面显示 出来 ,从而实现 短 无线通信的方法 。 本文设计 了由 C 0 1 0 0 8 5 6 6单片 F 机 和 n 9 5无线 射频器 收发 组成 的 RF 0
框 图 如 图 2所 示 。
机 ,片 内有 8通道 1 bt S D型 AD 6 i的 . C、1 8倍 P 2 GA、电
流型 D AC以及 VR F等模 拟 外设 ,可 以方便 地 与温 度压 E 力等传感器直接连接 。 使用 电流型 D AC对传感器进 行激励 , 传感 器 的输 出信号 经片 内 1 8倍 P 2 GA放 大后 进行 A D转 / 换 ,无 需额外 的信 号调理 电路 。片 内 8 L H,可 在线 K F AS



■ _一
_ 。-
88 z 6 MH 、9 5 z 3 个 l 1 MH SM
频 段 , 频 道 转 换 时 间 小 于 60s 5 p ,最 大 数 据 速 率 为 1 0 0 k is R 9 5由频率合成器 、 b /。n F 0 t 接 收解 调器 、功率 放大 器 、晶 体振荡器和 GF K调制器组成 。 S
| ; l
} ’

— — — — — — — —
i l
=-— —
l 一
^ “ r … 一



式 和 S o k us h c B rt发 射 模 式 ;

… { …
E 霸— 1

I :
…l 4

: = =

905无线模块 温度发送 AVR单片机程序

905无线模块 温度发送 AVR单片机程序
0x44, //地址宽度设置,为4字节
0x04,0x04, //接收发送有效数据长度为4字节
0xCC,0xCC,0xCC,0xCC, //接收地址
0x58, //CRC充许,8位CRC校验,外部时钟信号不使能,16M晶振
0x7f,0x6f,0x40,0x00,0X39};
uchar seg1[10]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,
0xff,0xef};
///////////DS18B20*****PA5*****//////////////////////////
#define Hign_nrf905_PWR PORTB |= (1 << PB1);
#define Low_nrf905_PWR PORTB &= ~(1 << PB1);
///////////////////////////SPI口定义////////////////////////////////////
#define Hign_nrf905_TX_EN PORTB |= (1 << PB0);
#define Low_nrf905_TX_EN PORTB &= ~(1 << PB0);
////////////////////// nrf905_TRX_CE PD4 //输出1////////////////////////////
void ReadTemperature(void);
void work_temp();
void StartUART(void);
void R_S_Byte(uchar R_Byte);
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

发射#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned charsbit TX_EN= P3^5;sbit TRX_CE=P1^1;sbit PWR_UP=P3^4;sbit CD=P3^3;sbit AM=P1^3;sbit DR=P3^2;sbit MISO=P1^6;sbit MOSI=P1^4;sbit SCK=P1^7;sbit CSN=P1^5;sbit led=P3^0;sbit key1=P1^2;sbit key2=P1^0;sbit key3=P3^7;uchar key_value=0;void Delay(uint x){uint i;for(i=0;i<x;i++){_nop_();}}void SpiWrite(uchar date){uchar i=8;while (i--){Delay(10);MOSI=(bit)(date&0x80);date<<=1 ;Delay(10);SCK=1;Delay(10);SCK=0;}}void TxPacket(void){PWR_UP=1;TX_EN=1;TRX_CE=0;Delay(2);CSN=0;SpiWrite(0x22); //写发送地址,后面跟4字节地址//SpiWrite(0xE7);SpiWrite(0xE7);SpiWrite(0xE7);SpiWrite(0xE7);CSN=1;Delay(2);CSN=0;SpiWrite(0x20); //写发送数据命令,后面跟三字节数据//SpiWrite(0x01);SpiWrite(0x02);SpiWrite(key_value);CSN=1;Delay(5);TRX_CE=1; //使能发射模式//Delay(500); //等带发送完成//TRX_CE=0;while(!DR);}////////////初始化配置寄存器////////////////void Ini_System(void){CSN=1;SCK=0;PWR_UP=1;TRX_CE=0;TX_EN=0;Delay(2);CSN=0;SpiWrite( 0x00); //配置命令//SpiWrite( 0x6C); //CH_NO,配置频段在433.2MHZSpiWrite( 0x0C); //输出功率为10db,不重发,节电为正常模式SpiWrite( 0x44); //地址宽度设置,为4字节SpiWrite( 0x03);SpiWrite( 0x03); //接收发送有效数据长度为3字节SpiWrite( 0xE7);SpiWrite( 0xE7);SpiWrite( 0xE7);SpiWrite( 0xE7); //接收地址SpiWrite( 0xDE);CSN=1;PWR_UP=1;TRX_CE=1;TX_EN=0;Delay(1000);}void main(void){Ini_System();DR=1;TRX_CE=0;Delay(1000);TX_EN=0;TRX_CE=1;PWR_UP=1;key_value=0x00;while(1){if(!key1) //senfing key1{Delay(5);if(!key1){ Delay(3);while(!key1);key_value=0xa0;}}elseif(!key2) //senfing key2{Delay(5);if(!key2){ Delay(3);while(!key2);key_value=0xa1;}}if(!key3) //senfing key3{Delay(5);if(!key3){ Delay(3);while(!key3);key_value=0xa2;}}if(key_value!=0x00){led=0;TxPacket();key_value=0x00;TX_EN=0;TRX_CE=1;PWR_UP=1;Delay(6000);led=1;}}}接收#include <reg52.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charsbit TX_EN= P0^0;sbit TRX_CE=P0^1;sbit PWR_UP=P0^2;sbit CD=P0^3;sbit AM=P0^4;sbit DR=P0^5;sbit MISO=P0^6;sbit MOSI=P0^7;sbit SCK=P2^0;sbit CSN=P2^1;sbit led1=P1^1;sbit led2=P1^2;sbit led3=P1^3;uchar TxRxBuffer[3];bit success_flag=0;void Delay(uint x){uint i;for(i=0;i<x;i++)_nop_();}void SpiWrite(uchar date){uchar i=8;while (i--){Delay(10);MOSI=(bit)(date&0x80);date<<=1 ;Delay(10);SCK=1;Delay(10);SCK=0;}}uchar SpiRead() //from 905 read data{uchar i=8,date1=0;;while (i--){date1<<=1 ;date1|=MISO;SCK=1 ;Delay(10);SCK=0 ;Delay(10);}return date1;}void Ini_System(void) /*初始化配置寄存器*/{CSN=1;SCK=0;PWR_UP=1;TRX_CE=0;TX_EN=0;Delay(2);CSN=0;SpiWrite(0x00); //配置命令//SpiWrite(0x6C); //CH_NO,配置频段在433.2MHZSpiWrite(0x0C); //输出功率为10db,不重发,节电为正常模式SpiWrite(0x44); //地址宽度设置,为4字节SpiWrite(0x03);SpiWrite(0x03); //接收发送有效数据长度为3字节SpiWrite(0xE7);SpiWrite(0xE7);SpiWrite(0xE7);SpiWrite(0xE7); //接收地址SpiWrite(0xDE);CSN=1;PWR_UP=1;TRX_CE=1;TX_EN=0;Delay(1000);}void Wait_Rec_Packet(void){if(DR){TRX_CE=0;//如果数据准备好,则进入待机模式,以便SPI口操作CSN=0;SpiWrite(0x24);//接收数据包TxRxBuffer[0] = SpiRead();TxRxBuffer[1] = SpiRead();TxRxBuffer[2] = SpiRead();CSN=1;while(DR);TRX_CE=1;if((TxRxBuffer[0]==0x01)&&(TxRxBuffer[1]==0x02)){TxRxBuffer[0]=0xff;TxRxBuffer[1]=0xff;success_flag=1;if(TxRxBuffer[2]==0xa0){ led1=~led1; }elseif(TxRxBuffer[2]==0xa1){ led2=~led2; }elseif(TxRxBuffer[2]==0xa2){ led3=~led3; }Ini_System();}}}void main(void){Ini_System();PWR_UP=0;DR=1;led1=0;led2=0;led3=0;success_flag=0;TRX_CE=0;Delay(1000);TX_EN=0;TRX_CE=1;PWR_UP=1;while(1){Wait_Rec_Packet(); //等待接收完成if(success_flag){TX_EN=0;TRX_CE=1;PWR_UP=1;Delay(5000);Delay(5000);success_flag=0;Delay(10000);}}}。

相关文档
最新文档