如何在无边界路由器的CC2650 SensorTag上运行CoAP(er-rest-example)?
无边界路由器环境下CC2650 SensorTag运行CoAP客户端-服务器指南
我来帮你搞定这个问题——官方文档大多聚焦边界路由器场景,无BR环境下跑CoAP确实容易踩坑,尤其是RPL网络初始化和CoAP地址配置这两块。你遇到的客户端超时、RPL DIS未处理,核心原因是默认配置依赖外部边界路由器,得调整成节点自组网的模式。
核心问题拆解
你的er-rest-server和er-rest-client能编译运行,但客户端超时,本质是:
- 默认配置下,所有节点都在等待边界路由器发送RPL DIS消息来初始化网络,没有BR的话,RPL根本起不来
- 客户端可能硬编码了BR的地址,而非服务器节点的本地地址
关键配置调整步骤
1. 改RPL配置,让节点自组网
首先要指定一个节点作为RPL根(就用你的er-rest-server节点),让网络不需要依赖外部BR:
- 打开项目的
project-conf.h文件,添加/修改以下配置:// 禁用多播监听,适合小型自组网 #define RPL_CONF_MCAST_SNOOPING 0 // 启用存储模式,让根节点维护路由表 #define RPL_CONF_STORING_MODE 1 // 允许向下路由,确保客户端能访问服务器 #define RPL_CONF_NO_DOWNWARD_ROUTES 0 // 使用经典RPL路由协议 #define NETSTACK_CONF_ROUTING rpl_classic_routing - 重点:只在服务器节点的
project-conf.h里加这行,客户端节点不要加:// 标记当前节点为RPL根 #define RPL_CONF_ROOT 1
2. 修正CoAP客户端的目标地址
默认的er-rest-client可能指向了BR的地址,得改成服务器节点的链路本地地址:
- 打开
er-rest-client.c,找到目标地址的定义,替换成你服务器节点的链路本地IPv6地址(可以从服务器的串口日志里找到,格式是fe80::xxxx:xxxx:xxxx:xxxx):static uip_ipaddr_t server_ipaddr; // 替换成你的服务器节点链路本地地址 uip_ip6addr(&server_ipaddr, 0xfe80, 0, 0, 0, 0x1234, 0x5678, 0xabcd, 0xef12); - 要是不想硬编码,也可以开邻居发现让客户端自动找服务器:
在客户端的project-conf.h里加:#define NBR_TABLE_CONF_MAX_NEIGHBORS 10 #define UIP_CONF_ND6_SEND_NA 1
3. 编译烧录的细节
- 服务器和客户端要分开编译:服务器用带
RPL_CONF_ROOT 1的配置,客户端用不带的,分别烧录到两个SensorTag。 - 烧录后用串口工具(比如
screen /dev/ttyUSB0 115200)看日志:- 服务器要能看到
RPL root initialized或者类似日志,说明根节点生效 - 客户端要能看到
neighbor added的记录,证明邻居发现成功
- 服务器要能看到
问题排查指南
要是还是超时、RPL DIS没处理,按这几步查:
- 先看服务器日志,有没有
RPL root set相关的输出,确认根节点初始化成功 - 客户端日志里有没有邻居发现的记录,要是连邻居都没找到,先排查物理距离和信号
- 用CC2650的Sniffer固件抓包,看有没有RPL DIO/DAO消息(这是RPL组网的关键包),以及CoAP请求有没有发出去
- 确认两个SensorTag在同一个802.15.4信道上,默认信道一般是11,别改乱了
额外小技巧
- 无BR场景下用链路本地地址就能通信,不需要全局IPv6地址;要是需要全局地址,可以手动配置ULA(唯一本地地址),在每个节点的
project-conf.h里加:#define UIP_CONF_IPV6_ADDR_AUTOCONF 0 #define UIP_CONF_FIXEDADDR 1 // 每个节点修改最后一段,保证唯一 #define UIP_IPADDR0 0xfd00 #define UIP_IPADDR1 0 #define UIP_IPADDR2 0 #define UIP_IPADDR3 0 #define UIP_IPADDR4 0x1111 #define UIP_IPADDR5 0x2222 #define UIP_IPADDR6 0x3333 #define UIP_IPADDR7 0x4444
内容的提问来源于stack exchange,提问作者HI_205
相关产品推荐
相关产品推荐

