4927|17

2144

帖子

3

TA的资源

五彩晶圆(中级)

楼主
 

【Atmel SAM R21创意大赛周计划】+ 6LoWPAN之应用层CoAP协议 [复制链接]

好了,趁周末发一点小结文章吧,基本上年前就完成了,一直没时间发,整理东西是个头疼的事情。。



今天的主角是6LoWPAN-Border-Router和应用层CoAP协议。关于SAM R21 Xplained Pro与6LoWPAN相关的帖子可以参考我之前的帖子,关于CoAP协议等等的东西,也可参考我一些非【Atmel SAM R21创意大赛周计划】标题的帖子,另外两篇关于为R21添加GPU的帖子这篇文章不做引用,感兴趣可自行查阅。




【Atmel SAM R21创意大赛周计划】+ 初步接触

【Atmel SAM R21创意大赛周计划】+ Contiki-OS移植篇

【Atmel SAM R21创意大赛周计划】+ 6lowpan网络单播/多播测试

【Atmel SAM R21创意大赛周计划】+边界路由器RPL-BORDER-ROUTER

【Atmel SAM R21创意大赛周计划】+RPL Simple-WebServer

【Atmel SAM R21创意大赛周计划】+openwrt网关准备(一)

【Atmel SAM R21创意大赛周计划】+购买第三块R21



之前在笔记本电脑上测试的边界路由(网关)的性能,直接用笔记本的wifi网卡连接边界路由(网关)测试的,今天在我的台式机器上面做测试的截图工作,发现ping丢包特别严重。。折腾了很久,发现是台式机的wifi-dongle的问题,不稳定啊,不晓得为啥。上网都很稳定的,就是连接网关有问题,可能是ipv6等等问题吧,不能深究了,果断换了个有线连接的,还好网关支持RJ45接口,拉个网线解决问题了。



  1. 一些说明:
复制代码



1)先来个边界路由(网关)的图

           





2)安装火狐浏览器和copper插件(用于CoAP协议)









关于这个插件的一些细节可以参考他的主页介绍。



3)给网关上电,搜索SSID为下面所示的,连接即可,如果wifi不稳定可以直接用网线连接网关和电脑

      



用iar管理了一些相关的程序,如上图所示。



4)节点用移动电源供电

      











5)网关联通性测试





6)6LoWPAN网络连通性测试







上图为边界路由(网关)内置动态网页,用于打印路由信息和邻居信息,是内建在R21内部的网页而并非是openwrt中,wr703仅仅做数据转换和IPv6到IPv4的路由宣告服务。



7)CoAP应用协议测试



采用coap://[aaaa::22] 和 coap://[aaaa::33]的地址访问节点,注意第一次使用discover来发现节点提供的服务。

这算是coap的一个重要特性,资源发现机制,相当给力的特性。将来物联网肯定都是这种自动发现的机制。

这里选择hello之后地址栏数据会发生变化,此后点击push按钮之后会接收到节点传输过来的数据 www.eeworld.com lyzhangxiang





这个也算是一个很给力的特性,消息订阅机制,主要用于异步通信,为了让节点更多的节约能量。

一般的服务机制需要一直保持alive,这种订阅机制可以使得节点在准备好数据后主动发起通信,而不是传统的客户端发起通信,例如使用在低功耗传感网络中,那这种订阅机制也是必不可少的。当然了现在比较主流的mqtt也是采用消息的订阅和推送为主体的消息机制,也是物联网的一个很好的东西。













此处展示的是如何使用CoAP协议来控制节点,这里的演示比较简单,用于控制R21上面LED0的状态。看上面的实物图应该能够看出一个节点的LED0是打开一个是关闭的。CoAP协议能做很多事情,传输数据,回传数据,订阅数据,发现机制等等。后面我会分享如何使用CoAP传输数据到板子上,当然可这一切都是基于发现机制之后的,并不是随意发送数据,发送的数据都是有意义的,都是根据发现机制发现到的内容决定的。我对这几个节点都添加了四个服务,分别是hello、push、toggle、leds。



对了,关于视频,之后再拍了上传吧,手机像素不行。。。

最新回复

很有启发,想买一套板子来弄了。6LoWPAN的网关不知道怎么弄,着急。  详情 回复 发表于 2015-6-19 11:53

赞赏

2

查看全部赞赏

点赞 关注(1)
个人签名电工
 

回复
举报

2144

帖子

3

TA的资源

五彩晶圆(中级)

沙发
 
又出现这个问题,上次发帖也是这里出问题了,下次坚决不用了,不可以使用<>来发布文字,基本上都会丢呢。。



这里补充一下,楼主位如下丢失的内容


  • 一些说明:

[color=rgb(51, 102, 153) !important]复制代码




1)边界路由(网关)IPv4地址192.168.1.1,边界路由(网关)IPv6地址aaaa::01

2)边界路由(网关)上根节点地址aaaa::11

3)网络中其他两个节点地址分别是aaaa::22和aaaa::33

4)关于IPv6地址访问需要带上[],比如http://[aaaa::11]或coap://[aaaa::22]


[color=rgb(51, 102, 153) !important]



 
个人签名电工
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

板凳
 
说漏了leds的操作,这个也比较典型,基本上是rest构架的核心体现,get、post思维,。。



leds资源,服务,代码如下


  1. /* Global Variables ----------------------------------------------------------*/
  2. RESOURCE(res_leds,
  3.          "title="LEDs: ?color=r|g|b, POST/PUT mode=on|off";rt="Control"",
  4.          NULL,
  5.          res_post_put_handler,
  6.          res_post_put_handler,
  7.          NULL);


  8. /* Local Functions -----------------------------------------------------------*/

  9. /**
  10. * brief  res_post_put_handler
  11. * note   POST/PUT处理
  12. * param  None
  13. * retval None
  14. */
  15. static void res_post_put_handler(void *request, void *response, uint8_t *buffer, uint16_t preferred_size, int32_t *offset)
  16. {
  17.     size_t len = 0;
  18.     const char *color = NULL;
  19.     const char *mode = NULL;
  20.     uint8_t led = 0;
  21.     int success = 1;
  22.    
  23.     if ((len = REST.get_query_variable(request, "color", &color))) {
  24.         PRINTF("color %.*s\n", len, color);
  25.         
  26.         if (strncmp(color, "r", len) == 0) {
  27.             led = LEDS_RED;
  28.         } else if (strncmp(color, "g", len) == 0) {
  29.             led = LEDS_GREEN;
  30.         } else if (strncmp(color, "b", len) == 0) {
  31.             led = LEDS_BLUE;
  32.         } else {
  33.             success = 0;
  34.         }
  35.     } else {
  36.         success = 0;
  37.     }
  38.    
  39.     if (success && (len = REST.get_post_variable(request, "mode", &mode))) {
  40.         PRINTF("mode %s\n", mode);
  41.         
  42.         if (strncmp(mode, "on", len) == 0) {
  43.             leds_on(led);
  44.         } else if (strncmp(mode, "off", len) == 0) {
  45.             leds_off(led);
  46.         } else {
  47.             success = 0;
  48.         }
  49.     } else {
  50.         success = 0;
  51.     }
  52.    
  53.     if (!success) {
  54.         REST.set_response_status(response, REST.status.BAD_REQUEST);
  55.     }
  56. }
复制代码



为了演示,我这里使用的是同一个灯也就是LED0咯,加个继电器控制实际的灯就免了,太low了,不想折腾。





这里比较全,可以post直接搞定也可以用数据区,随你怎么办,同时CoAP提供java库,所以会玩的不要担心什么web,apps啊。


 
个人签名电工
 
 

回复

4996

帖子

19

TA的资源

裸片初长成(初级)

4
 
很强,很全,感谢分享。。。

点评

谢谢 支持,活动太多了。。。  详情 回复 发表于 2015-3-7 13:52
 
个人签名我的博客
 
 

回复

165

帖子

0

TA的资源

一粒金砂(中级)

5
 
高大上的东西,楼主厉害啊!羡慕。。

点评

没有啦,核心的东西都还来不及弄,rpl文档好多呢都是老外写的rfc6550这个是主文档。。 后面要把cooja的仿真搞起来,这种东西回归理论才好,单纯的coding没啥意思。。  详情 回复 发表于 2015-3-7 13:54
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

6
 
感謝樓主的分享!

点评

多谢 支持,有问题可以跟帖啊  详情 回复 发表于 2015-3-7 13:54
 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

7
 
zhaojun_xf 发表于 2015-3-7 10:00
很强,很全,感谢分享。。。

谢谢 支持,活动太多了。。。


 
个人签名电工
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

8
 
小硕硕 发表于 2015-3-7 10:54
高大上的东西,楼主厉害啊!羡慕。。

没有啦,核心的东西都还来不及弄,rpl文档好多呢都是老外写的rfc6550这个是主文档。。
后面要把cooja的仿真搞起来,这种东西回归理论才好,单纯的coding没啥意思。。



 
个人签名电工
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

9
 
Tomcute 发表于 2015-3-7 11:49
感謝樓主的分享!
多谢 支持,有问题可以跟帖啊



 
个人签名电工
 
 

回复

1204

帖子

1

TA的资源

纯净的硅(初级)

10
 
好有钱啊

点评

穷人一枚。。。  详情 回复 发表于 2015-3-7 18:01
 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

11
 

  穷人一枚。。。


 
个人签名电工
 
 

回复

2886

帖子

0

TA的资源

五彩晶圆(初级)

12
 
不错,很强大

点评

评分了哇 非常感谢,。  详情 回复 发表于 2015-3-7 22:05
 
个人签名昵称:灰小子
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

13
 

评分了哇   非常感谢,。



 
个人签名电工
 
 

回复

1291

帖子

0

TA的资源

纯净的硅(中级)

14
 
楼主NB,那个TI的移动电源我也有

点评

在论坛搞得吧  详情 回复 发表于 2015-3-8 17:22
 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

15
 
强仔00001 发表于 2015-3-8 15:53
楼主NB,那个TI的移动电源我也有


在论坛搞得吧

点评

对额  详情 回复 发表于 2015-3-8 19:11
 
个人签名电工
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

16
 




新的web,简介大方。。放这里比较合适
 
个人签名电工
 
 

回复

1291

帖子

0

TA的资源

纯净的硅(中级)

17
 
对额



 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

18
 
很有启发,想买一套板子来弄了。6LoWPAN的网关不知道怎么弄,着急。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表
  缈昏瘧锛