天线|RF射频
直播中

赵勇

7年用户 189经验值
私信 关注
[问答]

请问NRF24L01如何传输传感器数据?

从传感器独到的数据不知道怎么传出去....用例程改他传出去都是ascall码,不是具体数据...比如我读到温度是20,怎么把温度传出去而不是传ascall码20

回帖(5)

康选谦

2020-6-1 16:20:04
收发都是你自己定义的呀接收端处理就可以了
举报

毛晨霞

2020-6-1 16:28:57
将温度拆开传(T为传感器采集的温度),shi=T/10;  ge=T%10;加上一个简单的包头包尾例如0xaa,shi,ge,0xbb。这样接收端接收一个数据包后只需要定义一个变量TT,然后 TT=shi*10+ge就可以了,我还是比较喜欢用ascall码传输的。我有发表的一篇NRF24L01+的学习心得希望对你有用。
举报

李阳

2020-6-1 16:44:52
用ASCALL码怎么传呀,能举个例子吗?
举报

刘佳

2020-6-1 17:03:20
你的发送buff不是32 的吗,最简单的就是弄个32长度的结构体和发送buff定义到一个共同体
typedef struct _data_struct{
u8  data1;   //占用2字节
u16 data2;   //占用2字节
u32 data3;   //占用4字节
float data4; //占用4字节
//可以继续添加,累加和小于等于32就可以了
}data_struct;
typedef union _data_union
{
   u8             tx_buff[32];
   data_struct    data_temp;
}data_union;
主函数里面
data_union  data;
data.data_temp.data1=0x0a;
data.data_temp.data2=0x123;
data.data_temp.data3=0x9876;
data.data_temp.data4=987.654;
for(i=0;i<32;i++)
{
   printf("%x,",data.tx_buff);
}
printf("rn");
下面是printf的结果
a,ff,23,1,76,98,0,0,db,e9,76,44,c8,46,0,20,c8,46,0,20,c8,46,0,20,0,0,0,0,5f,2,0,8,
上面实现了,你每次nrf发送data.tx_buff就可以了
这种方法的好处是,不用复制不同类型的数据到发送buff还要自己定位了
举报

更多回帖

发帖
×
20
完善资料,
赚取积分