- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式计算系统实验:三
学院: 计算机与通信工程
专业: 物联网工程
实验三 射频无线通信
一、实验目的
1. 掌握对射频通信的原理。
2. 掌握通过sniffer获取数据包信息的方法。
二、实验内容
无线计算器的实现
两个节点可以通过无线发送数据(01bsp_radio)
一个节点向另外一个节点发送数据时,将其格式设为:
[xx][o][yy][rrr]
其中每一个字母代表一个字节,[xx]与[yy]表示两个两位十进制整数。[o]表示的运算符号.我们用0,1,2,3分别表示加,减,或 和异或运算,[rrr]为两个整数的运算结果。
发送方会填写[xx][o][yy]字节,当接收方接收到该数据包时,获得到数据包中的数据。然后将计算结果填写到[rrr]对应的字节位置。之后将数据包送回给发送方。发送方接收到结果后,通过串口将数据输出。
综合作业 (需要查看数据手册来完成此次作业)
作业要求:
根据AT86RF231手册,编写radio_setTxPower(para)函数修改射频发送功率
读取射频接收数据时,读取RSSI的值
读取射频接收数据时, 读取LQI的值
综合应用:(需要完成前三项作业要求)
将两个节点摆放到相距为1m的两个位置。一个作为发送节点,一个作为接收节点。发送节点每秒发送100包数据,当接收节点接收到每一包数据时,记录下该数据包的RSSI和LQI值。并打印在屏幕上。
采用以下参数,重复上述实验,将实验结果填入表中。
采用-7dbm为发送功率,改变两个节点之间的距离。重复上述时延,将结果计入下表。
参考:
AT86RF231数据手册page105
三、实验步骤
1. 实验名称
(1)实验接线图:略
(2)实验步骤和现象
实现计算器:
在代码中引入串口文件
在while(1)函数中定义变量:
//定义无线计算器所需要的临时变量
//int x,y,z,op;
//其中x,y为第一个和第二个加数,z为结果,op为运算符号
在接受函数中添加代码:
x = (app_vars.packet[0]-48)*10+(app_vars.packet[1]-48);//数据包位数从左到右排列,第一个二位十进制整数,由于packet包发送的是ascii,需要转换为数字
op = app_vars.packet[2]-48;//一位操作符位,ascii码值减去48后,表示具体的数字
y = (app_vars.packet[3]-48)*10+(app_vars.packet[4]-48);//第二个二位十进制数
//当接受的是运算请求时,最后三位没有数字,是默认值0x99,即预定义的ID
if(app_vars.packet[5]==ID || app_vars.packet[6]==ID || app_vars.packet[7]==ID ){
switch(op){
case 0: z=x+y;break;
case 1: z=x-y;break;
case 2: z=x^y;break;
case 3: z=x|y;break;
}
app_vars.packet_len = sizeof(app_vars.packet);
app_vars.packet[5] = (z/100)%10+48;
app_vars.packet[6] = (z/10)%10+48;
app_vars.packet[7] = z%10+48;
radio_loadPacket(app_vars.packet,app_vars.packet_len);
radio_txEnable();
radio_txNow();
本人专注于k12教育,英语四级考试培训,本人是大学本科计算机专业毕业生,专注软件工程计算机专业,也可承接计算机专业的C语言程序设计,Java开发,Python程序开发。
文档评论(0)