This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

网友浅谈蓝牙Bluetooth 技术集锦

Other Parts Discussed in Thread: CC2541, TMP006, TPS62730, AES-128, CC2540, CC2560, BLE-STACK, Z-STACK, CC2500, CC3200, CC-DEBUGGER

作者:wangfuchong

作品名称:初步使用CC2541 SensorTag

一.订购

二.外观把玩
先上点外观照片,

请问这张照片中最左边多出来的透明塑料片大家安装的时候是怎么处理的?我是折回来两个孔正好对着按键,不知道对不对?


                              


以前曾经想申请红外温度传感器,没想到实际尺寸这么小呀,就是申请到了可能还真焊接不了,太小了。
硬件电路图之类在官网如下链接找到:



不知道从机械结构或光学结构上来说,用于TMP006红外温度传感器的那个孔有没有什么讲究?尤其是里面的透明塑料壳上的。



对照相关文档:

CC2541 SensorTag Quick Start Guide

总结一下:
SensorTag基于 CC2541 与 TI 的 TPS62730(降压转换器)配合工作。它包含 TI 的 TMP006 IR MEMS 温度传感器、湿度传感器、压力传感器、加速计、回转仪和磁力计。想来除了可用来体验低功耗蓝牙BLE性能,还有这么多传感器,如果时间充裕,对于学习来说一定很能富有乐趣。实际上TI官网也介绍说:SensorTag的多功能性意味着无限的应用可能性,其中包括健康与健身、医疗、教育工具、玩具、远程控制、移动电话附件、邻近和室内定位等领域的应用。
四.使用BLE Device Monitor初试蓝牙连接
为了使买的SensorTag能够充分体验价值,穷人我一冲动可是花了血本呀!
在淘宝买了一套工具,没法呀,TI官网的太贵。
没有iXX什么的,我就用平常的电脑,使用BLE Device Monitor软件!
BLE Device Monitor软件下载:downloaded here
使用BLE Device Monitor软件需要硬件CC2540 USB dongle
先看指导手册:

特别需要注意的是需要按照手册中的要求重新烧写CC2540 USB dongle的固件。然后插上CC2540 USB dongle,在电脑的设备管理器中查找记下对应的COM端口号。
打开BLE Device Monitor软件,设置选择相应的端口号,在左下框里会出现蓝牙host,如图:

  


在软件出现SCAN…提示框的时候(Autoscan默认是打开的)按一下下SensorTag的侧键使之进入广播状态,软件则会扫描到SensorTag并如下图显示在左下框网络列表里。如果错过了软件自动扫描时间,可以手动点击Scan按钮进行扫描。这时还没有连接,点击Connect按钮进行连接,连接如果成功在Status列显示Connected




右侧大框底部的Autodiscover默认是打开的,如果连接成功会列出发现的服务属性列表,如下图,也可以手动点击Discover按钮。

  



在属性列表中按级别显示服务,特性和属性,暂不详述。


作为第一次使用,当然是急着看看传感器啦,右侧框顶部切换到SensorTag标签,显示如下图:





在“Test”模式,点击“Start”可以进行检测SensorTag功能是否正常,按照提示操作即可,不详述。
在“Monitoring”模式,确定上方的传感器都选中,点击“Start”,就可以看到不断刷新的传感器数据啦。
感觉还是比较准的,例如三个传感器片内温度,相差不大,气压和气象站网站的也差不多。
这里提一下红外测温,初步测试,感觉好像弄不准,相差很大。
可是看这个官方这个视频拍的真够煽情,测咖啡的温度,多酷呀:TI蓝牙低能耗SensorTag:开启无限应用可能



顺手贴一下关于红外测温的介绍:

  依据测温原理的不同,红外测温仪的设计有三种方法,通过测量辐射物体的全波长的热辐射来确定物体的辐射温度的称为全辐射测温法;通过测量物体在一定波长下的单色辐射亮度来确定它的亮度温度的称为亮度测温法;如果是通过被测物体在两个波长下的单色辐射亮度之比随温度变化来定温的称为比色测温法。

亮度测温法无需环境温度补偿,发射率误差较小,测温精度高,但工作于短波区,只适于高温测量。比色测温法的光学系统可局部遮挡,受烟雾灰尘影响小,测温误差小,但必须选择适当波段,使波段的发射率相差不大。本文选用全辐射测温法来计算被测量物体的温度,全辐射测温法是根据所有波长范围内的总辐射而定温,得到的是物体的辐射温度。选用这种方法是因为中低温物体的波长较大,辐射信号很弱,而且结构简单,成本较低,但它的测温精度稍差,受物体辐射率影响大。

固定的予置为0.95的发射率。该发射率值是对于多数有机材料、油漆或氧化表面的表面温度,就要用一种胶带或平光黑漆涂于被测表面加以补偿。使胶带或漆达到与基底材料相同温度时,测量胶带或漆表面的温度,即为其真实温度。
这里闲扯到校准的问题,有关详细请参看官网关于TMP006的文档:TMP006 User Guide,编号: sbou107

但是SensorTag源代码中好像传输的不是计算过后的温度值,而是热电堆的电压或者芯片内置温度传感器的芯片温度,这样的话,需要在Central设备方计算?
在源文件hal_irtemp.c中:
/**************************************************************************************************
* @fn          HalIRTempRead
*
* @brief       Read the sensor voltage and sensor temperature registers
*
* @param       Voltage and temperature in raw format (2 + 2 bytes)
*
* @return      TRUE if valid data
**************************************************************************************************/
bool HalIRTempRead(uint8 *pBuf)
{
  uint16 v;
  uint16 t;
  bool success;

  if (irtSensorState != TMP006_DATA_READY)
  {
    return FALSE;
  }

  HalIRTempSelect();

  // Read the sensor registers
  success = HalSensorReadReg(TMP006_REG_ADDR_VOLTAGE, (uint8 *)&v,IRTEMP_REG_LEN );
  if (success)
  {
    success = HalSensorReadReg(TMP006_REG_ADDR_TEMPERATURE, (uint8 *)&t,IRTEMP_REG_LEN );
  }

  if (success)
  {
    // Store values
    pBuf[0] = HI_UINT16( v );
    pBuf[1] = LO_UINT16( v );
    pBuf[2] = HI_UINT16( t );
    pBuf[3] = LO_UINT16( t );
  }

  // Turn off sensor
  if (HalSensorWriteReg(TMP006_REG_ADDR_CONFIG, configSensorOff, IRTEMP_REG_LEN))
  {
    irtSensorState = TMP006_OFF;
  }
  HalDcDcControl(ST_IRTEMP,false);

  return success;
}
上面代码中在SensorTag.c中直接调用了:
static void readIrTempData( void )
{
  uint8 tData[IRTEMPERATURE_DATA_LEN];

  if (HalIRTempRead(tData))
  {
    IRTemp_SetParameter( IRTEMPERATURE_DATA, IRTEMPERATURE_DATA_LEN, tData);
  }
}

而在在源文件hal_irtemp.c中有这样一段代码是注释掉的没有使用:

/*  Conversion algorithm for die temperature
 *  ================================================
 *
double calcTmpLocal(uint16 rawT)
{
    //-- calculate die temperature [癈] --
    m_tmpAmb = (double)((qint16)rawT)/128.0;

    return m_tmpAmb;
}

*
* Conversion algorithm for target temperature
*
double calcTmpTarget(uint16 rawT)
{
    //-- calculate target temperature [癈] -
    double Vobj2 = (double)(qint16)rawT;
    Vobj2 *= 0.00000015625;

    double Tdie2 = m_tmpAmb + 273.15;
    const double S0 = 6.4E-14;            // Calibration factor

    const double a1 = 1.75E-3;
    const double a2 = -1.678E-5;
    const double b0 = -2.94E-5;
    const double b1 = -5.7E-7;
    const double b2 = 4.63E-9;
    const double c2 = 13.4;
    const double Tref = 298.15;
    double S = S0*(1+a1*(Tdie2 - Tref)+a2*pow((Tdie2 - Tref),2));
    double Vos = b0 + b1*(Tdie2 - Tref) + b2*pow((Tdie2 - Tref),2);
    double fObj = (Vobj2 - Vos) + c2*pow((Vobj2 - Vos),2);
    double tObj = pow(pow(Tdie2,4) + (fObj/S),.25);
    tObj = (tObj - 273.15);

    return tObj;
}

*/
这块的代码还没怎么看,不知道是不是这样。以后再学习钻研。


BLE Device Monitor软件好像没有源代码,不知道怎么处理的。各位使用iPAD什么的,里面有关于校准的选项么?

三.上电
按照手册装上包装盒里的CR2032纽扣电池,按下侧键,一个LED长时间闪烁后自动停止;分别按下顶部的两个按键,都是另外一颗LED闪烁一两秒钟。装上外壳,感觉一直受操作按键很方便,中指正好可以操作侧键,大拇指可以操作顶部的两个按键。顶部的两个按键尤其很有触摸感很容易不用看找到位置,据论坛中的一个帖子网友说顶部两个按键的外壳部位的几个凸点还是盲文,虽然一般人用不着盲文,但是感觉也有利于正常人操作。完整装上外壳后LED灯显得有点暗,但是还是能看到闪烁的。
看来可以初步判断收到的SensorTag应该是能够工作没有损坏的,但是穷人我没有什么ipad什么iphone之类的,还需要想法试试蓝牙连接呀!

五.低功耗的初步感觉
匆匆看了一下传感器,体验了一下直接的功能,接下来要关心的才是最重要的吆,低功耗!到底怎样?看看资料,也要体验验证一下吆
在上面第4节使用BLE Device Monitor软件过程中,我就实现按照如下图的接法接入了万用表测电流。
这是没有连接或者断开连接一段时间后电流显示值,8.4uA

                              
连接状态,但是没有选择任何传感器,电流1.08mA,注意,是毫安不是微安
选中监视所有传感器,电流跳动值在8mA~10mA。如果电池电压不够,容易到一定电压就掉线。
陀螺仪传感器电流比较大,其它加在一起电流值在3mA左右以下。
仅仅连接状态就达1mA,那么例如报道的防丢器可以几个月不换电池,是怎么实现的呢?不要着急,自己还不懂BLE就学嘛,先了解一下。
大概看了一些资料朦朦胧胧了解了一下,再看一下官方的视频:BLE课程(三):蓝牙低功耗技术的链接参数设置
原理时间关系就不细述了,还是睡觉舒服。
官方有片关于功耗测试方法的应用笔记文档,现在官网搜索打不开,没法找到链接贴出来,反正文档编号名称是:AN092 -- Measuring Bluetooth Low Energy Power Consumption_swra347a,大家感兴趣的以后自己搜索下载。
那么就自己简陋的方法先看看吧,还是如第4节中的硬件接法,还是使用BLE Device Monitor软件。
打开BLE Device Monitor软件菜单Options—GAP settings,出现设定界面,例如改成如下图设置:

那么在仅仅连接的情况下电流多大呢?由于是使用的万用表,没法避免抖动,只能大概体验一下,用20mA档,显示0.01mA,抖动到0.1mA(忘记了,好像我间隔设置的可能四1S),总之反正不是原来那么大啦。提高频率,万用表可能不抖,更利于较精确比较,时间关系就不再做了,感兴趣的自己可以试验一下,例如原来间隔20mS,改成40mS,这样对比就很直观了。当然用示波器之类的更好吧。
因此,像防丢器那样不可思议的能够至少使用几个月不是吹嘘的。
  • 作者:wangfuchong

    作品名称:SensorTag学习开发随笔1_1 --BLE概念

    我也是初接触,也只是自己的猜测,说出来大家共同学习。错误之处请不吝指出。


    我好像曾使用BLE4.0这样的称呼,主要为了方便随口这样叫。也许可能这样的称呼并不严格规范。


    肯定,看到BLE,首先想到的应该是BLE是什么的缩写?
    BLE,“Bluetooth LowEnergy”的缩写,汉译好像叫做“低功耗蓝牙”。


    那么低功耗蓝牙(BLE)和一般的统称“蓝牙”是个什么关系具有什么特点呢?


    蓝牙(Bluetooth),是一种无线个人局域网(Wireless PAN),最初由爱立信创制,后来由蓝牙技术联盟订定技术标准。来自古老北欧国王Harald Blåtand,借国王的姓“Blåtand”当名称,直接翻译成中文为“蓝牙”(Blå=蓝、Tand=牙)。
    蓝牙(Bluetooth)一词是古北欧语Blåtand/Blåtann的一个英语化变体,蓝牙的标志是 ᚼ HagallRunic letter)和 BjarkanRunicletter)的组合。
    蓝牙的标志: 
    2006年,蓝牙技术联盟组织(www.bluetooth.org)已将全球中文译名统一改采直译为“蓝牙”。
    为什么当初起蓝牙这个名称呢?
    网传据说因为这个第十世纪的丹麦国王喜欢吃蓝莓,牙龈每天都是蓝色的,所以叫蓝牙。
    在行业协会筹备阶段,需要一个极具有表现力的名字来命名这项高新技术。行业组织人员,在经过一夜关于欧洲历史和未来无线技术发展的讨论后,有些人认为用 Blatand 国王的名字命名再合适不过了。Blatand 国王将现在的挪威,瑞典和丹麦统一起来;他的口齿伶俐,善于交际,就如同这项即将面世的技术,技术将被定义为允许不同工业领域之间的协调工作,保持着各个系统领域之间的良好交流,例如计算,手机和汽车行业之间的工作。名字于是就这么定下来了。
    作为一种技术标准规范,由于不断的发展,产生了版本衍进。
    蓝牙最早由爱立信公司(唉,我的第一个手机就是爱立信的,经典呀)于1994年始创。东芝、爱立信、IBM、Intel和诺基亚于1998年共同创立了蓝牙技术联盟(Bluetooth SIG)。
    目前,蓝牙已累计颁布了6个版本:V1.1/1.2/2.0/2.1/3.0/4.0,其标准规格不断得到更新和加强。


    版本区别:
    蓝牙1.1 为最早期版本,传输率约在748~810kb/S,因是早期设计,容易受到同频率之产品所干扰下影响通讯质量。


    蓝牙1.2  同样是只有 748~810kb/S 的传输率,但在加上了抗干扰跳频功能。版本Class A 是用在大功率/远距离的蓝牙产品上,但因成本高和耗电量大,不适合作个人通讯产品之用(手机/蓝牙耳机/蓝牙 Dongle 等等),故多用在部分商业特殊用途上. 版本Class B是最流行的制式,多用于手机内/蓝牙耳机/蓝牙 Dongle 的个人通讯产品上,耗电量和体积较细,方便携带。无论 1.1/1.2 版本的蓝牙产品,本身基本是可以支持 Stereo音效的传输要求,但只能够作(单工)方式工作,加上音带频率响应不太足够,并未算是最好之 Stereo 传输工具。


    蓝牙2.0 版本  蓝牙2.0 是 1.2 的改良提升版,其意义主要体现在用于 EDR(增强数据速率)扩展这个方面。(通常写成 BT2.0 +EDR)。如果使用 EDR,则可以增加带宽(比 BT 1.2 约高 3 倍)。传输率约在 1.8M/S~2.1M/S,可以有(双工)的工作方式。即一面作语音通讯,同时亦可以传输档案/高质素图片,2.0 版本当然也支持 Stereo 运作。虽然Bluetooth 2.0+EDR标准在技术上作了大量的改进,但从1.X标准延续下来的配置流程复杂和设备功耗较大的问题依然存在。


    蓝牙2.1   应用最为广泛的是Bluetooth2.0+EDR标准,虽然Bluetooth 2.0+EDR标准在技术上作了大量的改进,但从1.X标准延续下来的配置流程复杂和设备功耗较大的问题依然存在。为了改善蓝牙技术存在的问题,蓝牙SIG组织(Special Interest Group)推出了Bluetooth 2.1+EDR版本的蓝牙技术,对配对流程进行了简化,同时加入了减速呼吸(sniff subrating)模式,大幅度降低了蓝牙芯片的工作负载,增强了节能效果。


    蓝牙3.0 "(蓝牙核心规范3.0版 高速),蓝牙3.0的核心是"GenericAlternate MAC/PHY"(AMP),这是一种全新的交替射频技术,允许蓝牙协议栈针对任一任务动态地选择正确射频。蓝牙3.0的传输速度更高,而秘密就在IEEE 802.11无线协议上,是蓝牙2.0的八倍,可以轻松用于录像机至高清电视、PC至PMP、UMPC至打印机之间的资料传输。功耗方面,通过蓝牙3.0高速传送大量数据自然会消耗更多能量,但由于引入了增强电源控制(EPC)机制,再辅以802.11,实际空闲功耗会明显降低,蓝牙设备的待机耗电问题有望得到初步解决,高速蓝牙兼容传统蓝牙,程序可以在之间切换。


    蓝牙4.0是传统蓝牙、高速蓝牙技术和低功耗蓝牙三种规格合而为一,分别,这三个规格可以组合或者单独使用。蓝牙4.0的改进之处主要体现在三个方面,电池续航时间、节能和设备种类上。拥有低成本,跨厂商互操作性,3毫秒低延迟、超长连接距离、AES-128加密等诸多特色此外,蓝牙4.0的有效传输距离也有所提升。


    按照通信距离所有蓝牙可以分为两类:
      a)Class A 是用在大功率/远距离的蓝牙产品上,但因成本高和耗电量大,不适合作个人通讯产品之用(手机/蓝牙耳机 /蓝牙 Dongle 等等),故多用在部分商业特殊用途上,通讯距离大约在 80~100M 距离之间。
      b)Class B 是目前最流行的制式,通讯距离大约在 8~30M 之间,视产品的设计而定,多用于手机内/蓝牙耳机/蓝牙 Dongle 的个人通讯产品上,耗电量和体积较小,方便携带。


    根据蓝牙技术联盟组织(www.bluetooth.org)的声明,目前好像V1.1/1.2已经为作废标准,v2.0 +EDR正在作废处理中。


    蓝牙4.0以前的版本,都有在便携设备上因过于耗电而无法长时间使用的弊病。
    蓝牙低功耗技术是蓝牙 v4.0核心规范的组成部分,是其标志性组成功能。拥有以下特征:
    超低的峰值、平均值和待机能耗;
    使用标准纽扣电池足以运行数年;
    低成本;
    不同制造商的设备也能实现相互操作;
    射程有所加强。


    蓝牙低功耗使得蓝牙无线连接成为低成本、低容量电池即可操作需要数月甚至数年电池寿命的设备。蓝牙低功耗因而可使大量新的扩展应用能够从蓝牙无线技术中获益,包括手表、防盗钥匙扣、运动和健身传感器、医疗保健传感器和遥控器。根据蓝牙 SIG 指导原则,蓝牙低功耗技术可归为蓝牙智能标记类别。


    如前所述,蓝牙4.0实际上是三种规格的整合,也即传统蓝牙和低功耗蓝牙的结合,并且可以组合或单独使用。核心体系结构如下图所示:
    详细就不在本文中叙述了。
    因为可以组合或者单独使用,所以蓝牙4.0规范定义了两类设备:双模(dual mode)设备能够支持低功耗蓝牙以及蓝牙BR/EAR(传统蓝牙技术),而单模(simple mode)设备仅支持低功耗蓝牙。
    相应的芯片供应商如TI、CSR、Broadcom等相应的蓝牙4.0硬件芯片也分为两类。就TI来说,像CC2540/CC2541就是单模芯片,CC2560/2564就是双模芯片。SensorTag中使用的就是CC2541。
    为了能够使用户快速识别蓝牙设备是否支持蓝牙4.0版本,蓝牙技术联盟组织(www.bluetooth.org)有增加了两个新的标志,所以蓝牙标志又多了两兄弟:
    根据蓝牙技术联盟(SIG)的报告中指出,凡是只要贴上Bluetooth Smart Ready标志的手机、平板计算机、笔记本电脑,甚至是电视机…等等,都是使用蓝牙4.0版本的「双模」无线标准。而另一个标志Bluetooth Smart则是用在低功耗的蓝牙4.0版本「单模」无线标准上,适用于使用钮扣式电池的装置,像是心跳监测器、器步器和收集特定信息的传感器电子设备。


    那么兼容关系是怎样的呢?
    如图:
    假如你的装置贴有表格左侧标志,那么它就能够与贴有右边标志的产品相链接。举例来说,现有装置上如果贴的是Bluetooth标志,就只能与贴有Bluetooth及Bluetooth SmartReady标志的装置做链接,无法与Bluetooth Smart装置链接哦!
    如果用蓝牙通讯协议的方式表示就是:


    现在回过头来看本人篇首提的那个链接的问题:http://bbs.eeworld.com.cn/thread-420509-1-1.html
    BLE,也许应该就是指蓝牙4.0中的单模模式,BLE4.0的提法似乎应该是不规范的说法,大家只要知道指什么就可以了,BLE应该只是指蓝牙4.0规范中的一部分而不能代替全指蓝牙4.0。
    至于帖子中涉及到的另外一个连接识别问题应该在深入的部分讨论,本文仅介绍BLE是什么。


    德州仪器(TI)公司推出的低功耗蓝牙开发套件SensorTag基于TI的低功耗蓝牙单模芯片CC2541,上面集成了6个常用传感器,包括压力传感器、湿度传感器、温度传感器、罗盘、加速计以及陀螺仪,可支持健康与保健、教育工具、玩具遥控以及手机附件等多种应用,是熟悉学习蓝牙4.0 BLE的有力工具。TI为套件开发了专门的App应用(支持iOS和Android系统),这样设计人员不需要专门的嵌入式软件知识,通过智能手机或者平板电脑就可对所有传感器进行单独控制;应用的源代码可从TI的网站上下载,同时TI还提供免专利费的BLE-Stack软件与SensorTag配套使用;而在参考软件部分,无论是和传感器的连接还是蓝牙协议栈都已在CC2541上做好,用户不需要花太多时间在CC2541的软件设计。这样用户可以根据实际应用场合的需要,对传感器功能进行组合,开发出各种不同的应用场景。SensorTag还包含了很多低功耗蓝牙无线设计,很多客户对无线设计特别是天线设计没有太多经验,SensorTag可以提供一个很好的参考。TI通过了FCC、IC、ETSI认证,用户未来要想通过这些认证可以直接复制TI的设计,不需要花很多时间设计天线,这样认证时就可以节省很多时间。


    欲进一步了解确切的概念定义规范,可参看官方的规范文档,蓝牙4.0的详细官方英文规范直接下载(目前地址):


  • 作者:蓝雨夜

    作品名称:【SensorTag】BTool工具的使用

    BTool工具需要硬件支持

    方案1CC2540 USB dongle
    方案2SmartRF05EB  CC2541EM 评估板。
    方案3:USB转TTL232=》SensorTag 方案    http://bbs.eeworld.com.cn/thread-427983-1-1.html



    一、运行BTool工具
    根据自己的通讯端口选择相应的COM口,其他参数可以默认
    二、初始状态
    1、Derices Found:0  没有一个设备,并且Link Control 链路控制部分 Slave BDA:None  没有从机地址
    2、开启Sensor Tag侧边按钮,然后 点击扫描 Scan

    三、扫描完成
    1、Derices Found:1 一个从机,同时Slave BDA获取了从机地址 BC:6A:29:AC:14:BA
    左边 显示了所有通讯数据报文
    四、连接设置
    1、所有参数都按默认值
    2、连接建立  Establish
    3、断开连接 Terminate
    五、读写测试
    1、参考BLE_SensorTag_GATT_Server.pdf文件,见附件,了解配置表内容
    2、读“红外温度值” 对应的handle 0x0025,返回4个字节
    Sub-Procedure 选择 Read Characteristic Value / Descriptor
    Characteristic Value Handle 输入0x0025  点击Read ,返回 00 00 00 00
    六、读红外温度配置值
    对应的handle 0x0029,返回1个字节
    Sub-Procedure 选择 Read Characteristic Value / Descriptor
    Characteristic Value Handle 输入0x0029  点击Read ,返回 00 原来当前红外温度是关闭睡眠状态
    七、写红外温度传感器配置值
    Characteristic Value Handle 输入0x0029  
    Value 输入1
    点击Write  返回状态Success
    八、回读红外温度传感器配置值Characteristic Value Handle 输入0x0029 
    Value 显示 1  点击Read 返回状态Success
    九、再读红外温度值读“红外温度值” 对应的handle 0x0025,返回4个字节
    Sub-Procedure 选择 Read Characteristic Value / Descriptor
    Characteristic Value Handle 输入0x0025  点击Read ,返回 55 12 34 AA  


  • 晕,谁呀,刚接触时不成熟的老帖子也拿来发,虽然作为不作为权威的参考介绍也许还可以看看。再说,其他人这样类似的帖子也多了去了。

    竟然称我为资深达人,叫我哪儿找条缝钻进去呀。

    能不能删掉此帖呀,起码修改一下标题呀

  • 作者:蓝雨夜

    作品名称:让SensorTag变身成开发工具! 

    在学习BLE少不了BLEDevice Monitor这个工具,可需要硬件工具配合才可以使用。
    方案1CC2540 USB dongle
    方案2SmartRF05EB  CC2541EM 评估板。
    现在我们自己通过改装SensorTag 实现方案2的功能!
    一、硬件连接说明
      
    上图是SmartRF05EB 评估板上的RS232转换成TLL232通过P5P6连接下图CC2541EM 评估板的P1P2
      
    这里可以搞明白了硬件连接了
    BLE Device Monitor CC2541的连接
    RXD<->TXDP0.3),
    TXD<->RXDP0.2),
    RTS<->CTSP0.4),
    CTS<->RTSP0.5
    我的硬件连接是PL-2303 连接CC2541
    这里需要把P0.2P0.3P0.4的硬件连接断开,然后连接到PL2303上。
      
    二、CC2541cc debug烧入专用hex
    BLE Device Monitor的安装目录下的firmware文件夹下的CC2541_SmartRF_HostTestRelease_All.hex
    C:\Program Files\Texas Instruments\BLEDevice Monitor\firmware
      


  • 作者:southwolf1813

    作品名称:通过BLE Device Monitor连接SensorTag

    第一篇教程给大家介绍了手机App升级SensorTag OAD升级功能。现在来给大家讲一讲如何用USB Dongle来通过电脑连接SensorTag。
    今天需要用到的东西有: CC Debugger, USB Dongle,以及我们的SensorTag
      


    需要用到的软件包括 Flash Programmer, BLE Device Monitor 和 SensorTag 固件包

    首先 安装Flash Programmer 和 BLE Device Monitor,连接CC Debugger和USB Dongle(线做得丑,求别黑…)。按几下CC Debugger上的reset,指示灯绿了证明USB Dongle已经识别。打开Flash Programmer应该也能看到
      
      

    然后找到 BLE Device Monitor的固件(C:\Program Files (x86)\Texas Instruments\BLE Device Monitor\firmware\CC2540_USBdongle_HostTestRelease_All.hex) 下载之。

    下载完成之后 直接把USB Dongle插上,打开BLE Device Monitor。扫描的过程中,按下SensorTag的侧键,就可以搜索到了。在左下方窗格里 点击找到的设备。
    点击Connect,再次按侧键,就可以连接到SensorTag进行调试了!
      


  • 作者:southwolf1813

    作品名称: 通过手机App给SensorTag OAD升级固件

    今天来说一下SensorTag的OAD(Over the Air Download) 无线下载升级固件功能

    大家都知道 单片机开发测试一般需要用JTAG下载器烧写固件,但如果是开发产品都会面临一个比较头疼的问题,如果产品已经投放市场,又需要增加新的功能,或者修改Bug,总不能把所有的产品全部召回,
    一个一个用JTAG重新烧吧? 所以,让用户能直接更新固件就非常重要了。

    实现固件更新的基本原理就是单片机内置一个Bootloader,可以提供Flash等内部存储的更新和引导,这样就可以通过外部接口(USB、蓝牙、web界面等)加载新固件。

    SensorTag的“芯”是TI CC2541,我们可以把它理解为一个带有蓝牙协议栈的51单片机。TI在SenorTag上实现的OAD功能,就是通过一个51的bootloader来控制固件的更新和加载。我们来看一下OAD升级固件的过程

    首先,从App Store或者Google Play下载 TI SensorTag app, 扫描并连接SensorTag——如果扫描不到,证明SensorTag没有开广播,需要按一下侧面的按钮即可。

    连接上SensorTag之后 APP会提示"检测到旧版固件,请使用OAD profile 更新":

      

    这时候我们需要点击进入Profile菜单,进行固件更新

      
    选择OAD,此时会提示其他profile都会停用
        
    选择新的固件。固件A其实是SensorTag自带的固件 所以选择A会提示错误——版本号相同。选择B才是更新的固件。

         
    然后固件就开始上传了。大概需要3分钟——蓝牙4.0BLE为了降低功耗,把数据传速度也拉低了……

      
    OK 固件更新完毕!

      
    这时候查看系统信息,得到的就是新版固件的SensorTag啦!

  • 作者:southwolf1813

    作品名称:使用techBASIC直接在iPad上编写SensorTag应用

    大家都知道安卓系统是基于linux的,完全可以拿来做一台小电脑来用,甚至可以装个开发编译环境,但是安卓对 BLE 的支持实在是不理想,而iOS虽然对BLE支持很好,但是没有苹果电脑就没法开发程序,怎么办呢?

    前不久我找到了一款软件 techBASIC (收费的→_→),可以直接在iPad上开发一些简单的程序,包括BLE程序。对于像我这样有时候不方便开电脑的简直是神器啊…立马咬咬牙狠狠心掏出98大元买了一发。软件长得像这样:


       


    虽然是古董级别的BASIC语言,虽然软件还是很简陋,不过至少满足了我的需求:不开电脑,开发 SensorTag 应用。

    语法也比较简单,比如最简单的例子,扫描蓝牙设备并列出名称和RSSI信号强度

    DIM tag AS BLEPeripheral
    discoveredPeripheral = 0
    BLE.startBLE
    DIM uuid(0) AS STRING
    BLE.startScan(uuid)
    
    // 回调函数,发现 BLE 从设备时需要进行的操作
    SUB BLEDiscoveredPeripheral(time AS DOUBLE, peripheral AS BLEPeripheral, 
    services() AS STRING, advertisements(,) AS STRING, rssi AS SINGLE)
    IF NOT discoveredPeripheral THEN
    discoveredPeripheral = 1
    somePeripheral = peripheral
    PRINT "Device: "; peripheral.bleName

    看过techBASIC的手册之后,发现这个软件还是能够实现一些基本的BLE应用,比如扫描、连接、查看Service,测量信号强度,控制BLE设备等。

    我们来看一个操作 SensorTag LED的程序, 只用了100行左右的代码,实现了一个完整的BLE扫描、连接、Service/Characteristic操作和简单GUI界面,是不是方便多了!

    // 指定 Test Service 的 UUID
    DIM sensorTag AS BLEPeripheral
    
    DIM servicesHeader AS STRING, testService AS STRING
    servicesHeader = "-0451-4000-B000-000000000000"
    testService = "F000AA60" & servicesHeader
    
    // 扫描 BLE 外设
    BLE.startBLE
    DIM uuid(0) AS STRING
    BLE.startScan(uuid)
    DIM testChar AS BLECharacteristic
    
    DIM LED1 AS Button, LED2 AS Button, quit AS Button
    
    // 显示界面
    setUpGUI
    
    // 发现外设的回调函数
    SUB BLEDiscoveredPeripheral (time AS DOUBLE, peripheral AS BLEPeripheral, services() AS STRING, advertisements(,) AS STRING, rssi)
    IF peripheral.bleName = "TI BLE Sensor Tag" THEN
      sensorTag = peripheral
      BLE.connect(sensorTag)
      BLE.stopScan
      PRINT "Discovered SensorTag."
    END IF
    END SUB
    
    // 查找服务
    SUB BLEPeripheralInfo (time AS DOUBLE, peripheral AS BLEPeripheral, kind AS INTEGER, message AS STRING, err AS LONG)
    IF kind = 1 THEN
      peripheral.discoverServices(uuid)
    ELSE IF kind = 2 OR kind = 3 THEN
      BLE.connect(sensorTag)
    ELSE IF kind = 4 THEN
      DIM availableServices(1) AS BLEService
      availableServices = peripheral.services
      FOR a = 1 TO UBOUND(availableServices, 1)
        IF testService = availableServices(a).uuid THEN
          PRINT "Test Service Found"
          peripheral.discoverCharacteristics(uuid, availableServices(a))
        END IF
      NEXT
    END IF
    END SUB
    
    // 查找特征值
    SUB BLEServiceInfo (time AS DOUBLE, peripheral AS BLEPeripheral, service AS BLEService, kind AS INTEGER, message AS STRING, err AS LONG)
    IF kind = 1 THEN
      DIM characteristics(1) AS BLECharacteristic
      characteristics = service.characteristics
      FOR i = 1 TO UBOUND(characteristics, 1)
        IF characteristics(i).uuid = ("F000AA62" & servicesHeader) THEN
          PRINT "Test Char Found"
          testChar = characteristics(i)
          DIM value(1) as INTEGER
          value = [$80]
          peripheral.writeCharacteristic(testChar, value, 0)
        END IF
      NEXT
    END IF
    END SUB
    
    // 设置界面
    SUB setUpGUI
    Graphics.setPixelGraphics(0)
    
    DIM title AS Label
    title = Graphics.newLabel(20, 20, Graphics.width - 40, 50)
    title.setText("TI Sensor Tag")
    title.setAlignment(2)
    title.setFont("Arial", 36, 1)
    
    LED1 = Graphics.newButton(Graphics.width / 2 - 200, Graphics.height / 2 - 40)
    LED1.setTitle("LED1")
    LED1.setBackgroundColor(1, 1, 1)
    LED1.setGradientColor(0.6, 0.6, 0.6)
    
    LED2 = Graphics.newButton(Graphics.width / 2 + 100, Graphics.height / 2 - 40)
    LED2.setTitle("LED2")
    LED2.setBackgroundColor(1, 1, 1)
    LED2.setGradientColor(0.6, 0.6, 0.6)
    
    quit = Graphics.newButton(Graphics.width - 92, Graphics.height - 57)
    quit.setTitle("Quit")
    quit.setBackgroundColor(1, 1, 1)
    quit.setGradientColor(0.6, 0.6, 0.6)
    
    System.showGraphics
    END SUB
    
    // 按键处理
    SUB touchUpInside (ctrl AS Button, time AS DOUBLE)
    IF ctrl = LED1 THEN
      DIM value(1) as INTEGER
      value = [$81]
      sensorTag.writeCharacteristic(testChar, value, 1)
    END IF
    IF ctrl = LED2 THEN
      DIM value(1) as INTEGER
      value = [$82]
      sensorTag.writeCharacteristic(testChar, value, 1)
    END IF
    IF ctrl = quit THEN
      DIM value(1) as INTEGER
      value = [0]
      sensorTag.writeCharacteristic(testChar, value, 1)
      STOP
    END IF
    END SUB



  • 作者:qwqwqw2088

    作品名称:Sensor Tag搭建环境-安装IAR for 8051过程分享

    Sensor Tag活动遇到的麻烦太多了,除了收到Sensor Tag后,用的TI提供的APK,找了ipad mini平板演示了几个传感器,然后下载各种开发套件的硬件资料,CC2540DK-MIN的PDF,看TI的视频等等,,,,
    不能不说之初对各个具体过程提供的教程资料和开发工具了解的真是太少了,,误入歧途的人不知一个(之前比较熟悉的除外),当然有很多问题没有搞明白,之前是先把几个软件装了,今天有空把安装IAR for 8051过程分享一下吧,,
    编程环境的搭建要装的东西可不少,很多软件都可以在TI 官方下的到,,
    比如SmartRF Studio 7 ,SmartRF Flash Programmer,BLE DeviceMonitor,Packet Sniffer
    以上几个从TI官网下载最新版本安装即可。安装完后,直接连接CC Debugger 电脑会显示。
    IAR for 8051软件时开发TI Z-Stack协议栈应用程序的必备软件,所有程序的编译、仿真调试均需使用该软件,
    而IAR for 8051的下载需要到其他地方找,找到的是 V8.10估计是较新版本啦,,几经折腾安装成功,下面把安装的过程给大家分享,,,
    安装包目录下的 软件工具文件夹下,如下图:
      
    已经带有破解文件了,,开始安装过程,运行autorun.exe,然后再跳出的画面中选择第二项,Install IAR Embedded Workbench   
    接下来,根据提示一路next,到Enter UserInformation这一项,提示输入license之前先打开keygen_IAR.exe这个是个dos下运行的东西,,因为要用,就直接选a,,版本选 V8.10  
    把这个东西复制出来,,license号和license key,备用根据提示一路next,到Enter User Information这一项,提示输入license,,  
    把刚才的License number复制到IAR安装向导中的License#文本框内,单击next,然后再将License Key复制到IAR安装向导的License Key文本框内。然后一路next,直到软件安装结束。
      
      

    至此,其实以上过程跟安装编译msp430的基本一样,,,,下面就是有关的设置创建project 运行 IAR Embedded Workbench,单击菜单Project->Create New Project,出现下列对话框:选择“Empty project”,单击OK,然后会询问保存project,选择一个合适的目录,然后填入合适的工程名,然后单击OK  
    在左边的Workspace中右击保存的工程Project。在出现的对话框中,第一件事情就是选择该project所使用的Device,单击…按钮选择Device    

    在出现的对话框中,第一件事情就是选择该project所使用的Device,单击…按钮选择Device选择如上图中CC2541F256.i51,该文件位于IAR安装目录C:\Program Files\IAR Systems\Embedded Workbench 6.0\8051\config\devices\Texas Instruments(该路径为默认安装路径)。选择完后回到Device information中会出现设备列表,如上图  


    在Z-Stack协议栈中,使用large memory model来支持CC2541F256 ,这样协议栈可以存储在XDATA区域,以上设置结束后,如图所示。以下设置是根据一些资料进行设置,基本上没有变化,先这样吧,,在Banked code model中,有一些额外的选项需要注意,选择Code Bank tab,如下图,CC2541使用7个code banks,为了访问整个256K的Flash空间,Number of必须设置为0x07,Register 0x9F是CC2541的FMAP寄存器,用来控制当前那个code bank映射到8051的地址空间,第三个Register未使用,最好设置0xFF。   
    要配置IDE怎样使用Linker来链接程序代码,,,
       

    在Debugger选项中,选择Texas Instruments为Driver。  

    简单编译一个工程sensortag2014315,编译一下,,  

    基本没有什么问题,,,接下来就可以连接仿真器到目标板,下载程序和仿真调试了,根据提示修改。并且给目标板上电。
  • 作者:chuck_pz

    作品名称:基于sensorTag的EE智能家居系统

    先用TI提供的sensorTag工程编译烧写代码,装上TI给的参考APP,看下效果,不过android的App确实做得不怎么样。通过看资料和实际操作了解到sensorTag有6个传感器:IR温度,湿度,陀螺仪,加速度,气压计,3轴磁力计,考虑到时间不够和不需要这么多的传感器,我将sensorTag的工程做了修改。
      
        由于每个传感器都有一个GATT service,android会出现发现服务不了或不全的现象,所以我去掉所有的传感器服务,自定义了一个GATT service,保留了IR温度,湿度,加速度的值,通过通知(15bytes数据)的形式发给android app,通过监测各个传感器的值,来做了一个IR温度报警功能,本来可以加入更多的应用的,但没有这么多时间做了,就做了个简单的功能。这个就是传感器设备,在视频演示中可以更加清楚的认识和了解。
        智能蓝牙灯泡:通过手机端控制蓝牙设备发PWM波来实现对蓝牙灯泡的调色,开关等功能。
        首先是调PWM波,通过看cc2540的datasheet可以看出timer1,timer3,timer4都可以用来产生PWM波,这里我选用timer1来做,用得P0_4,P0_5,P0_6来控制RGB3种颜色,由于没有白色的灯,所以不能来调亮度,只能调色。
        通过看datasheet,我选用模模式来产生PWM波,T1CC0为PWM的周期,T1CCn值可用来调占空比,通过一段时间的调试,可以产生PWM波,通过手机修改其频率和占空比了。各位如果想要PWM波产生的代码的话,我可以给你们的。
      
        通过改变PWM频率和周期就可以设置RGB颜色了,这里就不多说了。
        下面介绍一下android的界面,其功能可以通过看视频了解了。
    1.专门为EEWORLD做的欢迎界面
      
    2.智能设备界面,做得有点戳,多包涵
      
    3.蓝牙灯泡的设置界面
      
    4.传感器界面
      

    视频展示链接,欢迎点击查看:http://v.youku.com/v_show/id_XNzA0MDc2ODA4.html

    总结:通过sensorTag创意活动可以让我们更加了解TI的蓝牙4.0芯片的使用,看到坛友们提出的各种创意,会有冲动,让我们做出更多更有创意贴近生活的智能蓝牙产品,也感谢phantom7给我这次机会去参加这样的活动,收货也颇多。没有做不到的,只有你想不到的,学到老学到老,只有不断的学习才能有更加强大的自己。

  • 作者:蓝雨夜

    作品名称:基于TI Sensortag BLE的车库门控制

    一、简介
    通过身边的智能手持设备通过BLE来控制车库门,不用独立携带专用无线遥控器或下车手动开,关车库门。
      
    二、系统框图
      
    三、功能说明
    系统由市电模块与后备蓄电池提供电源,使系统一直连续工作,即使停电也可有蓄电池供电工作。有电供给状态下,BLE一直处于广播状态,等待智能手持设备的请求连接。SensorTag板载两按键,实现手动的开,关门作用。
    S2: 手动开门
    S3:手动关门
    门状态开到位限位开关检测输入:P1_5
    门状态关到位限位开关检测输入:P1_4
    输出门开:P1_3  兰色LED
    输出门关:P1_2  红色LED
    1、手动模式
    视频展示链接:
    http://v.youku.com/v_show/id_XNzA1Njc4Njcy.html
    当按下S2开门,门不是开到位状态,输出1有效,等待门开限位开关有效,停止输出开门信号,输出1无效。
    当按下S3关门,门不是关到位状态,输出2有效,等待门关限位开关有效,停止输出关门信号,输出2无效。
    2、BLE无线控制模式
    视频展示链接:
    http://v.youku.com/v_show/id_XNzA1NjgwMDAw.html
    测试工具:LightBlue
    扫描到广播信号
      
    输入配对密码123456
      
    找到对应UUID  AA60
    开,关门UUID AA62

      
    HEX:02  开门
    HEX:04  关门

      


  • 作者:yueyuanque

    作品名称:运动评估系统——集思广益

    1. 建立连接

    【SensorTag】 BLE Device Monitor 测试

    Texas InstrumentsWiki 上面有一篇文章BLEDevice Monitor User Guide”写得挺好的,只是英文读起来有点,呵呵…

    不过文章思路挺清晰的,很容易上手,安装BLE Device Monitor软件,在设备管理器查看设备串口端口号(前提是你的USBdongle固件被更新为Monitor模式)

    打开启动BLE Device Monitor软件,按一下SensorTag的侧面按钮使其处于广播模式,在软件界面左下方可以看到如下画面



    双击查找到的设备即可建立连接


    下面介绍一下BLE Device Monitor的SensorTag tab,主要有两个功能,一个是测试(Test)功能,一个是实时显示(monitor)功能。

    选择界面下方的‘Test’模式,点击‘Start’,即开始测试,会看到各个传感器的值依次更新,LED依次闪烁...




    选择‘Montioring’模式,点击‘Start’即开始实时显示各个传感器的状态,这时转动一下SensorTag就会看到各个数值的变化了



    2. 轨迹记录
    手机里面有几个自认为很不错的小软件,今天就像大家介绍一下其中之一 :GPSLogger——GPS记录仪
    PS. 我要做的是基于蓝牙的室内运动记录仪和这个倒是挺像的

    先上几张图大家欣赏一下

    下图左侧是实时轨迹图,右侧是速度曲线及当前位置的经纬度、速度、前进方向

      

    再来一个夜间模式的图,这个是一段‘的士’的行车轨迹图,根据速度曲线可以看到
    红绿灯路口还是挺多的

      

    下面这个是我的一段登山轨迹,速度整体还是很平稳的哈! 高度也有记录的,这里就不展示了,大家可以根据经纬度猜猜看这是哪座山 

      

    上面这个图在我爬山的时候还是很有用的,上山走的是常规路线,没什么感觉,下山时选了一条人迹稀少的小道,有了这个图就知道和起点的相对位置了,也不至于迷失方向!喜欢出游的人可以下一个玩玩,我的手机是黑莓的GPS定位精度在5m之内,还是很好用的

     CC Debuger 与 USB Dongle建立连接
    收到CC Deburger 与 UsbDongle之后,一直没试着USB Dongle的第二功能,今天有空就弄了一下,过程很曲折。。。
    店家给的转接板预留了USB Dongle的下载接口,可是。。。没有连接线,而且还是2mm间距的,这个只能自己动手改造了
    下图是连到USB Dongle的样子,看起来还不错吧
    不要太高兴,虽然硬件连接上了,但是软件无法识别
    这时想起了一个图
    虽然说下载接口只需要 GND, DC, DD, RESETn 即可,但是pin2 是‘TargetVoltage Sense’,必须对该引脚加电CC debugger才能识别
    纠结,不想改动那块小板了。没办法,直接放弃那块转接板,直接自己做了一个跟转接线:一端是普通的14pin下载线,另外一端仅把GND, DC, DD, RESETn焊接到2mm的排座上面,另外一定记得把2脚和9脚短接(即默认USBdongle一直是上电状态,不过下载的时候USB dongle必须通过USB口供电才能正确下载)
    分别连接USB Dongle及CCdebugger,打开软件,bingo,成功识别,打开固件,烧录,顺利完成,分享一下喜悦,O(∩_∩)O哈哈哈~

    5.png
    3.  运动分析
        下面的这个图是我一次出行的汇总报表,还是很全面的,给大家分享一下(Come from Endondo PRO)
          

        下面的是速度及高度信息图表,一目了然!
          

    4. 总结
       Sensortag集成了多个传感器,强大功能为开发者提供了非常广阔的应用空间;BLE打破了有线的束缚,灵活度更高,同时也降低了功耗,小巧玲珑的设计很适合随身携带。不过对于擅长硬件而对蓝牙协议不甚了解的人来说,完成这个设计还是很困难的,这里姑且把我的畅想先记录下来,待自己或有识之士能够去补充完善,愿科技创造美好生活!


  • 作者:啸风916636

    作品名称:CC2540初体验

             最近有一个方案需要用到蓝牙,经过一轮的选型,已经选定CC2540.之前也就用过透传的HC05蓝牙模块,简单易操作,这次选用CC2540也是看重它的(BLE技术):       <1>高可靠性

           <2>低成本、低功耗
           <3>快速启动、瞬间链接
           <4>传输距离极大提高
           <5>高安全性
         
            另外,可以不像HC05那样还需一颗MCU(也可以做成HC05一样的模块,但是成本上去了)。第一次接触BLE,很多概念性的知识还是需要掌握一下,这里推荐TI的BLE视频。

          初次接触BLE的,此教程还是不错的选择,选择CC2540还有一个原因是他的资料特别多,CC2540是一款完全兼容8051内核的无线射频单片机,51内核的MCU很多初学者多多少少都会有所接触的,蓝牙也可以说是他的一个外设,一个简单的应用参考手册或者网络资源是很容易实现的。除了硬件部分,APP的设计也是需要进行开发的(根据自己的需要),项目已经启动了,后面有时间将不定期的更新BLE相关的笔记。

  • 作者:蓝雨夜

    作品名称:TI下不同架构的无线产品

    一、不限控制平台
    CC2500可以搭配自己习惯的MCU,通过库文件可以驱动起来
      
    二、无线搭配430
    CC430系列,含无线的430,以前在别人看到过各种温度无线采集记录的应用
      
    三、物联IOT
    现在热火的应用,WIFI+CORTEX M4的CC3200
    各大公司都是往物联网进军。
      

    TI在无线方面还有很多产品!不同的架构,使应用可以有不同的选择。

  • 作者:蓝雨夜

    作品名称:BLE应用

    前段时间参与了论坛的SensorTag活动,然后了解了CC2541。

    现在自己弄个板子,焊上CC2541,DOWN 官方的例程BLELight

    PCB图
      

    焊接完成后
      


    RGBLED指示
      

    调整G色
      
    LED显示G
      

    调整到B色
      

    调整到B色
      

  • 作者:mars4zhu

    作品名称:BLE设备互操作性(一)——使用TI的BLE芯片测试ST的BLE芯片

    最近接触了蓝牙4.0的BLE技术,评估了TI、Nordic等公司的芯片,并集中以TI的CC254x平台为开发,在技术评估阶段刚好这段时间论坛里有ST的BlueNRG活动,于是使用使用TI的CC2540-USB-dongle对所有BLE芯片进行调试,记录如下


    使用TIBLE设备调试工具调试STM32L053+BlueNRG


    使用TIBLE USB Dongle插入电脑,然后开启BLE Device Monitor调试软件,点击scan后,可以发现如下BLE设备(同时开启了TISensorTagSTBlueNRG),可以看到对应的地址、设备名、RSSI等信息。


    点击connect,连接到BlueNRG

    右边的Services窗口可以看到BlueNRG提供的Service

    第一个service是能够提供一个 “Service change”的norification

    第二个service是通用的device info service, 有设备名、appearancecharacteristic

    第三个service就是按键之后可以使得app的立方体旋转的那个功能,在设置configuration01:00之后,每按键一次,就获得一个notification,将value值增加,使用BLE Device Monitor只能看到value的变化,而app就将value转化为角度,显示旋转的一个立方体。


    第四个service就是模拟的温湿度的值。双击之后可以看到数值在更新。

     

  • 作者:mars4zhu

    作品名称:BLE互操作性(二)——使用TI-BLE芯片操作博通BLE设备 

    本人有幸获得博通公司的WICED-Sense Kit,类似于TISensorTag,也是一个BLE小设备,具备很多传感器。

    为了测评WICED-Sense Kit的详细通讯,试用TI的基于CC2540BLE USB-Dongle,利用BLE Device Monitor软件,进行BLE数据通讯调试。

    1、连接BLE Device MonitorUSB-Dongle,扫描到BLE设备如图:
    扫描到的广播数据,可见为可连接非指定广播(Connectable Undirected  Advertisement)。


    点击BLE Device MonitorHCI命令列表,右键DiscAllCharDes点击Send,则可以发现GATT所有的servicecharacteristicattribute



    双击可以查看各种service或者characteristic的数据。
    以下是进行安全绑定过程


    3
    最后则是显示试用串口调试助手直接连到USB-Dongle后,发送BLE Device Monitor的同样的通讯数据,则可以看到同样的回复数据。因此理论上只需要掌握Dongle的串口通讯数据格式,做一个自己的BLE监听软件也是可行的。


  • 作者:mars4zhu

    作品名称:BLE芯片选型

    BLE芯片选型经验

    目前主流的Ble单模的芯片主要有CSR的CSR1000系列,TI的cc254X,NORDIC的nrf800x和nrf51822,博通的bcm20732

    蓝牙4.02010年规范制定后已经有多家芯片厂商推出BLE的单模芯片,那么我们在BLE开发中该怎样选择合适自己项目的芯片呢?本文对比较主流的BLE单模芯片介绍,开发者可以根据自己的需要加以选择。

        上一篇博文介绍了比较主流的BLE单模芯片有CSRCSR1000系列,TICC254x系列,NORDICnrf800xnrf51822broadomBCM20732,此外还有一些厂家也有BLE的芯片,但是资料比较少,国内用的人不是很多,此外,由于 broadom的芯片本人没有用过,所以本文主要对前3家的芯片进行介绍和比较,这3家的芯片同时也是市场上用的比较多的BLE芯片。

        CSRCSR1000系列芯片包括1000100110101011四种,主要区别在于IO管脚数目的多少和有无正交解码器,其它内部资源是一样的。下图是CSR1000的资源介绍。

      

        TICC254X系列包括CC2540CC2541,两者区别主要是CC2541没有cc2540usb device 2.0的外设,但是增加了一个IIC外设,同时,CC2540最大TX power4dBm,而CC2541的只有0dBm,下图是CC2540的内部资源。

      

        NORDICBLE芯片包括nrf8001nrf8002nrf51822,前2个没有用户编程能力,nrf8001可以通过ACI接口(其实就是 SPI)外接一个MCU控制,nrf8002通过一个2线uart进行DTM和配置下载。本文主要介绍nrf51822,下图是它的资源介绍。

      那么我们应该怎么选择适合我们项目的BLE芯片呢,这要从硬件和软件两方面进行比较。

      从硬件资源看,CSR1000系列包括一个16bitcpu64KBrom64KBram,但是它还需要外接一个最少64KBEEprom或者SPI flash存储代码和参数。同时,它的外设也是3家中最少的。

      TICC254x系列的芯片包括一个32MHz8bit增强型8051内核,有128KB256KBflash8kram,外设也是比较多的。

      NORDICnrf51822包含一个32bit16MHzcortexm0cpu,有128KB或者256KBflash16kBram,外设也是3家中最为丰富的。

      从芯片价格上看,3者中CSR1000最便宜,但是需要外加一个eeprom,所以3者方案的价格差别不是不大。
      cpu处理能力上看,nrf5182232bit16MHzcortexm0cpu0.9mips的处理能力,cc254x32MHz 8bit增强型8051内核,主频比51822高,但是是8bitcpucsr100016bitcpu,主频是80MHz(这点不是很确定)。

      从存储器上面看,csr1000的代码和数据要共享64KBramnrf51822cc254x都提供128KB256KB两种规格,nrf51822ramcc254x8KBram

      从外设资源上看,nrf51822内置的外设最为丰富,CC254x次之,csr1000系列最少。

      从功耗和射频上面看,nrf51822radio功耗最低,CSR1000能提供最高7.5dBmTX power,传输距离同等条件下最远。

      所以,从硬件角度选择,csr1000系列芯片适合简单,单一功能的场合,nrf51822适合需要一定运算能力,需要实现多种功能的场合,cc2540usb device接口,尤其适合做usb gongle或者类似需要的场合,同时,也可以用于需要一定运算能力,多种功能的场合。

      软件方面在下面的博文中会继续介绍,敬请期待。

    目前蓝牙(BT)依旧是赋予穿戴产品最大希望的传输方式,很多优秀的蓝牙方案逐渐被大家所重视。新的产品一般会乐于采用支持BLEBT4.0产品,因为可以在极低的功耗下工作。

       在BT4.0方面,目前iWatch旗下的EM以及NordicBCMToshibaTICSRBroadcomqunticSTE RDA等都有对应方案,相对来说,EMnordic更集中在于非手机类应用;EMBTBLE单芯片,不含单片机。TI的有CC254X系列,TI CC254x系列的芯片包括一个32MHz8bit增强型8051内核,有128KB256KBflash8kram,外设也是比较多的。 Nordic的芯片有NRF800XNRF51822NRF51822包含一个32bit16MHzcortexm0CPU,有128KB或 者256KBflash16kBram,外设也非常丰富。另外,它和quntic都以功耗见长。

      Toshiba最近也在这块市场发力,而且获得较大突破,例如它近期推出了集成了一个高效的DC-DC转换器(峰值电流消耗低于6mA,深度休眠电流消耗低于100nA)的BLE蓝牙芯片(TC35667,如下图)。

    file:///C:\Users\JamesChu\AppData\Local\Temp\ksohtml\wpsC596.tmp.png

      图注:这款集成电路还集成了一个ARM处理器,支持下载和执行存储在EEPROM中的客户程序。支持应用自定义,无需使用任何外部微控制器。小封装(QFN406mmx6mm0.5mm间距)可为穿戴式医疗保健设备、传感器和玩具等小型设备带来蓝牙低功耗通信技术优异体验。

      CSR因为其xIDE开发比较容易上手,芯片拿过来基本可以直接使用;有OTAU的协议,可以支持wireless的更新应用。而且属于SOC的芯片,不需要外部的处理器。适合简单,单一功能的场合。从软件角度来看的话,当然是CSR系列的容易开发。但它买开发板比较贵,另外支持不是特别的及时,存储器较小。

    蓝牙4.0主要芯片对比表
    项目
    CC254X
    Nrf51822
    Csr101X
    MCU
    增强型8051
    32位ARM,CORTEX-M0
    16位XAP,RISC
    内存(ROM)
    256KB
    256KB
    64KB(需外挂)
    RAM
    8KB
    16KB
    125KB
    最高输出功率
    0dBm
    4dBm
    7.5dBm
    接收器灵敏度
    -94dBm
    -93dBm
    -92.5dBm
    工作模式RX电流
    17.9mA
    13mA
    16mA
    工作模式TX(0dBm)电流
    18.2mA
    10.5mA
    18.0mA
    电源电压
    2.0V~3.6V
    1.8V~3.6V
    1.8V~3.6V
    封装
    6X6mm
    6X6mm
    5X5mm
    外设
    ◆1x16+2x8 bittimers
    ◆ADC
    ◆Comparator
    ◆Up to 2 SPI orUART
    ◆1X2W/s
    ◆tempsensor
    ◆23GPIO
    ◆2X16 bittimers
    ◆RTC
    ◆PPI
    ◆ADC
    ◆lowpower comparator
    ◆Up to2X SPI or 2W master
    ◆1x SPIslave
    ◆1xUART
    ◆Tempsensor
    ◆Quadrature decoder
    ◆Timerbase pwm
    ◆31GPIO
    ◆timers
    ◆ADC
    ◆DAC
    ◆tempsensor
    ◆1x SPImaster
    ◆1x 2Wmaster
    ◆1xUART
    ◆4XPWM
    ◆15 or 35GPIO

    我总结一下作为手机通讯的附件, 选择传统蓝牙(Classic BT)和低功耗蓝牙(BLE)的对比讨论过程;

    首先明确我们的功能是用手机跟附件通讯, 实现手机查看状态(数据流方向:附件->手机),和控制附件(数据流方向:手机->附件)。通讯数据有外部传感器的小数据,也有外围模块的AT命,

    A、手机支持程度。

    1Classic BT被所有智能手机/平板支持,不过要实现我们的功能, 苹果系列产品需要MFI认证。(只有一些常用的传统蓝牙profile才不需要MFi认证。比如免提、高级音频等)。

    2BLEandroid4.3以上支持(截止2014-08月,android4.3及以上的市场占有率约30%), 苹果iphone4S以上(iphones4S上市以两年多,可以认为社会上在用的iphone手机版本>=4S)支持。且BLE不需要苹果的MFi认证。

    3BLE不支持音频。

    从上述来看,折中考虑BLEMFi认证, BLE相对而言比Classic BT更有优势。

    当然有条件,采用传统蓝牙+MFi认证,这样基本上可以覆盖所有智能手机。

    B、芯片功能及成本

    找了很久, 没有找到单芯片集成MCUclassic BT以及其协议栈、profileSoC, 而采用MCU+HCI层蓝牙,功能不是特别适合我们(外围元件多,PCB面积大、成本高)。要重新去了解蓝牙HCI层和profile协议栈。

    C、结论

    牺牲掉音频功能, 只传输小数据, 单芯片SOC实现MCU+BLE+协议栈,而且价格(如CC254xNRF51822等)比较便宜,外围电路少,因此确定采用BLE经过试用TICC254xBLE芯片之后,决定采用CC254x作为开发平台。

  • 作者:地瓜patch

    作品名称:曲折的Sensortag,从海龟壕说起。

    手头上有一块TI的Sensortag,下图是Sensortag的简单介绍。
      
    之前的不久,Eeworld有大活动推广该板卡。该板卡体积小功能强,传感器多。最主要的是支持蓝牙4.0,作为电子攻城狮紧跟技术潮流。
    这个套件的来历惊险曲折,在Eeworld活动中我使劲使劲写了个帖子,真不容易啊。此处省略5k字。最终结果是经过TI的审核我的公司有zf军工背景,然后竟然给拒了。那心啊,哇凉哇凉的。咱已经走过了追板子的时代了。这不看上个高大上的Sensortag还被拒了。悲催的。


    天无绝人之路。


    不久前来公司一海龟,据说特牛,自我介绍说北大毕业,后来在惠普,英特而,三星等等好多牛x的公司工作过。然后现在自己创业了,其公司主要核心业务是芯片3D集成的。说了这么多,然后该Sensortag出场了。他拿出一片Sensortag的板子说,他们的业务就类似于TI的这块Sensortag。ti是把不同的芯片放在一片板子上,他们是把不同芯片放在一颗芯片中。我感觉类似soc。


    后来私下聊天的时候谈到我申请Sensortag的不公平遭遇,他表示了深切同情与理解。但此时并没有表示出将Sensortag送我的意思。


    一起吃饭的时候,又闲扯到Sensortag,此时他爽快的将其赠予。上图
      

      

      


    sensortag的调试接口定义
      

    传感器参数信息
      

    cc2541的最小系统图

      

    六种传感器的连接原理图
      

    sensortag的电源电路
      
    该板卡的最大特点就是让工程师抛开底层软件开发工作,集中精力与自己的应用开发。
    该板卡的app适合多种设备应用。
      

    正在学习该板卡的各种应用,应该说,TI给的开发包还是很全面的。作为蓝牙新手的我,现在只是在例程的基础上修改测试,自我感觉上手还算是不慢,。
    下图是使用过程中pad上的截图。从app中可以很直观的看到各种数据的曲线图表及柱状图。这样的移动端app极大的方便了广大电工的测试工作。节省人力物力。


      
      
      

  • 作者:ddllxxrr

    作品名称:CC2540蓝牙串通两电脑 

    两个模块,一个作为服务器,一个作为客户端,客户端接收串口数据并写入特征值.服务器接收串口数据并密致入特征值,再通知主机.
    本实验需要用到两个特征值,两个特征值的属性各不相同,我们同样在SimpleGATTProfile建立两个特征值表:一个用于服务器接收客户端的串口数据.一个用于客户端接收服务器的串口数据.发数据时把要发的数据写到特征值中,然后再向串口发一下.接收端把收到的数据也写到特征值中并在串口也发一下.
    接触过蓝牙,我觉得就是事件驱动的,那个OSAL操作系统不干别的就是在等事件,而事件又是在HAL那层发生然后通过一些函数写到特征值,最后由特征值来完成数据的交换.
    现在这个东东,没有细扣,就是每次通讯得按一下连接,在连接的情况下才能正常通讯.
    以下两台电脑串口通讯视频:http://v.youku.com/v_show/id_XODM2NDc0NzA0.html 

    发送端电脑照片:
      
    接收端电脑照片:

  • 作者:joe2

    作品名称:蓝牙鼠标

    公司项目的关系开始接触Ti的蓝牙cc2540,也是平时用电脑看电视电影比较多,手边的蓝牙鼠标用起来有点不方便,就想着用cc2540自己做一个蓝牙鼠标,还不用换电池!然后连接到手机上,同时也为了学习一下android系统开发,找了几个android开发蓝牙的例子,慢慢的就给做出来了!有点小兴奋,但是我只实现了鼠标,没有实现键盘,图片是我最新做的板子,打算做蓝牙的墙壁开关,自己做一套蓝牙的“智能家居”!!加油!!
    软件方面,ti的协议栈提供很全的一套api,只要是把这一套api看顺了,很快就可以做出来,几乎不需要去看蓝牙协议的!TI的例子没有蓝牙鼠标,我是在HIDAdvRemoteDongle的基础上修改出来的。
    PCB的话TI也有例子,Ti的dongle是四层板,我做的是2层板的,天线的性能也不错,至少在家里的话连接是没有问题的!具体多远没有机会测试过,我感觉20米应该没问题。
    2014-11-01-176.jpg

    2014-11-01-177.jpg


  • 作者:fyaocn

    作品名称:领跑一步的TI的BLE CC2540/2541

          通过参加TI DAYS的活动,开始接触TI BLE的技术。TI在很多方面一直是领先者,在BLT上也是这样,最早提出低功耗蓝牙的实用概念并推出产品,应用在多个产品创新大会上都获得大奖,在TI DAYS提到有一种用蓝牙监测花盆含水率的应用就此得了大奖。TI 最近丰富了BLT的开发板系列,提供了更多的选择。我看目前有TI keyBob,SensorTag,PostageStamp,还有支持蓝牙的空气传感器范例。 具体的不同和特点可以从ti的网站上获得丰富的资料,就不逐个介绍了。就其中的心得如下:
    1. 有关的资料丰富,TI 还是非常大气的,提供的文档不仅实用,还有理论,还直接提供了BOM和PCB设计图。文档中对于天线的选择和设计还有专门的文章理论介绍和测试数据一应俱全。这个是其他厂家无法比拟的。
    2. CC254x系列是低功耗的集成芯片,内置8051内核,可以一片全包。不过需要注意的8051是有些改进的地方的,和标准8051不是完全兼容的,适应无线应用的方式,取消了一些状态,在芯片文档中关于8051的章节专门逐个强调,在编程时是需要注意的。
    3. 芯片外围设备,和专业厂家开发的板上天线和射频耦合器件,实现了更大的集成度。众所周知,天线的尺寸是无法缩小的,采用SMD的天线一下就可以把产品的尺寸缩小到邮票那么大。如果开发精简系统应用时,是再好不过了。
    4. CC254x集成度很高,只要很少的芯片外围器件就可以实现蓝牙的功能。
    5. 围绕低功耗蓝牙的技术是IoT技术的重要部分,如果实现智慧生活的重要手段,我认为比ZigBee还有发展潜力。当然,TI的ZigBee芯片也可以说是独步江湖。快速的软件开发,可以通过更多的个性化产品,满足未来的需求。
    6. 当然竞争也是激烈的,单说蓝牙低功耗芯片也有可以选择的其他厂商提供了,另外还有采用蓝牙射频+ARM-M0的SoC,当然是性能比8051更强大了。不过BLT的应用对内核及主频的要求没有那么强,CC254X足够了。不过后又追兵的情况下,TI恐怕会再推出更有杀伤力的产品。
        仅仅有TI提供的开发板有些不过瘾了,还是在消化吸收这些设计的基础上,开发出独立的产品才更有意思。这时候,就又显出TI的绝对优势和大家风范了,只要采用TI的芯片,这些参考设计和开发软间都是免费的。后续搞出来,陆续给大家分享啦。 无线相关经验、使用心得等。

  • 作者:hu44778

    作品名称:DIY 了一个2540的开发板

    新设计的一款开发板,驱动12864LCD,

    新增加一个模拟IIC的接口来驱动RDA5802M的收音机模块,但目前还没有调试成功

    开发板具有USB Dongle功能

    视频过几天补,

    下面地址是一个与开发板无关的视频

    公开连接
    http://pan.baidu.com/s/1q2RJS

  • 作者:yangking91

    作品名称:sensortag和无线手表之初次接触

    sensortag和无线手表都收到好多天了,一直没有时间玩,自己也对无线通讯技术这一块不了解。今天抽空拿出来看一看,摆弄一下。
    先上无线手表的图片
      
    外包装
       
    左边的是RF access point,右边的是仿真器,要想使用仿真器来仿真手表的话要将手表拆开才行
      
    手表的金属壳有橡胶圈,不知道能不能起到防水的作用,还有记得将电池拆掉
      
    这就是仿真器接好的样子,接下来的步骤就是连接到电脑上就可以仿真啦。
    下面来一张全家福
      
    接下来介绍一下sensortag,SensorTag 集成了来自第三方的 6 种 MEMS 传感器,其中包括 InvenSense(陀螺仪)、Kionix(加速计)、Sensirion(湿度和温度)、TDK(气压计)以及磁力计和 TI IR 温度传感器 (TMP006)。可以有很多应用。途中的那个螺丝钉貌似没什么用。
       

    IMG_20130916_223617.jpg
    IMG_20130928_115125.jpg
    先找资料,站在巨人的肩膀上嘛,有用的链接:
    BLE Device Monitor User Guide:http://processors.wiki.ti.com/index.php/BLE_Device_Monitor_User_Guide
    CC2541 迷你开发套件:http://www.ti.com.cn/tool/cn/cc2541dk-mini#0,这个开发套件包含1 个 CC2540 USB 软件狗:此器件将用作 BLE 主设备。它连接 Windows PC 的 USB 端口,并预先载入了主设备演示应用软件。1 张 CC2541 密钥卡:此器件将用作 BLE 从属设备。密钥卡可以安装在随附的塑料外壳内。它使用一颗 CR2032 钮扣电池供电,并包含双色 LED、蜂鸣器、加速计和两个按钮。1 个带有附件的 CC 调试器:用于将软件闪存到 USB 软件狗以及密钥卡上。它还可以用于通过 IAR 嵌入式工作平台调试软件。
    bluetooth sensortag:http://processors.wiki.ti.com/index.php/Bluetooth_SensorTag
    sensortag user guide:http://processors.wiki.ti.com/index.php/SensorTag_User_Guide很好的入门资料
    sensortag firmware:http://processors.wiki.ti.com/index.php/SensorTag_Firmware
    CC2540 USB Evaluation Module Kit: http://www.ti.com/tool/cc2540emk-usbDebugger and Programmer for RF System-on-Chips:http://www.ti.com/tool/cc-debugger
    EZ430-chronos: http://processors.wiki.ti.com/index.php/EZ430-Chronos先找这么多,找多了也看不完,如果还有以后再补
    自己找的蓝牙4.0开发教程:http://pan.baidu.com/s/1rEQSj
    为什么买sensortag?一个原因是ti的促销活动,第二个原因是senortag上的资源,再加上看了一个sensortag应用的短篇,决定购买了。付完款后,提示缺货,要两个星期以后才发货,就等吧。等到发货后的第三天,突然提示我地址错误,电话错误,终止送货。打电话才知道ti把电话号码弄错了,又拖了5-6天才搞定。货到手上了,打开包装,做工果然不错。使用的时候才发现自己手机的蓝牙无法连接,下载android app也无法安装成功,总提示无法安装。查了网上才知道,sensortag是蓝牙4.0的,而我的手机上的蓝牙是2.1的,两者不兼容,2.1蓝牙无法搜寻到4.0的蓝牙设备。需要android 4.3才能安装上那个软件。支持的手机型号不多,主要有这些:
    • Nexus 4 (JWR66V)
    • Nexus 7 (2012) (JWR66V)
    • Nexus 7 (2013) (JSS15J)
    • Samsung S4 (JWR66V.S11.130708)
    • HTC One (0.1.0.0 - 20130728)
    还有苹果的产品:
    • iPhone 4S and newer
    • iPad(3) and newer
    • iPad mini
    • iPod Touch (5. gen)
    傻眼了,这些东西都没有,肿么办?还好有个orico的蓝牙4.0的usb适配器,用的是csr8510的芯片。用这个试一试,看看能不能使用
    将适配器插到usb口,可以成功搜寻到sensortag,然后我安装了ble device monitor和btool,以为这样可以通过蓝牙串口来和sensortag通讯。
    可是,事实上,需要CC2540 USB dongle 这个东西,我没有,在taobao上查了一下98元一个。看来还缺东西,电脑上也用不了。我想问一下为什么不能用这个orico的蓝牙适配器呢,不是已经成功搜到了sensortag吗?那个cc2540 usb dongle也是一个蓝牙适配器嘛,只不过芯片不同而且个头大一些没外壳。是不是要开发一个基于csr8510的软件才能在电脑上观察sensortag传感器的数据呢?
    光有这个usb dongle还不够,想开发sensortag的固件程序还要一个仿真器,叫cc-debugger,在taobao上查了一下,不多不少还是98元。看来干什么都得查清楚需要些什么,有什么条件等,不能盲目购买。
  • 作者:长毛小兔

    作品名称:CC2541 SensorTag 与iPhone 连接初体验

    前几天就收到货了,苦于没有iPhone 4S 或者 iPhone 5,迟迟没有试用CC2541 SensorTag。今天借了一个iPhone,简单体验了一下。在此向借我iPhone的朋友表示感谢。
        先来一张合影:

      

        然后点按“TI BLE Sensor Tag”,进入到传感器列表:

      

    抬头第一行“TI Simple Keys Service”,此时没按下按钮。然后我按下位于左上角的左侧按键,如图所示,软件中显示左键被按下:

      

    同理,右键被按下:

      

    然后我们实验一下加速度计(Accelerometer),果然很灵敏,只不过静态的图片拍不出那种感觉:

      


    再下面一项便是磁力计(Magnetometer),是检测磁场的仪器。可以通过点击“Calibrate”(校准)对磁力计校正:

      

    接下来便是陀螺仪(Gyroscope)了,同样十分灵敏,同样可以进行校准:

      

    下面两个是最常用的啦,分别是IR Temperature(红外温度计)和Ambient Temperature(环境温度计):

      

    倒了一杯热水,试验一下:

      

    下面是气压计(barometer)和湿度计(Humidity),气压计可进行校准:

      

    最后面是设备信息(Device Information)和接收信号强度指示 (RSSI):

      

        相信这款SensorTag可以通过iPhone等智能手机获得更多更有趣的应用~~~

  • 作者:southwolf1813

    作品名称:用IAR 8.3编译TI BLE Stack遇到Segment ISTACK Too Long的解决方案

    IAR 8.3以后的版本编译TI BLE Stack会报类似如下的错误

    Error[e16]: Segment ISTACK (size: 0xc0 align: 0) is too long for segment definition. At least 0xe more bytes needed. The problem occurred while processing the segment  
    placement command "-Z(IDATA)ISTACK+_IDATA_STACK_SIZE#08-_IDATA_END", where at the moment of placement the available memory ranges were "IDATA:4e-ff"

    解决办法是:

    找到

    C:\Texas Instruments\BLE-CC254x-1.4.0\Projects\ble\common\cc2540\ti_51ew_cc2540b.xcl

    把里面的

    -Z(DATA)VREG+_NR_OF_VIRTUAL_REGISTERS=08-7F

    这一句  改成

    -Z(DATA)VREG=08-7F

    即可




  • 作者:蓝雨夜

    作品名称:SensorTag Development Kit P1口上UART使用注意连接

    【SensorTag】SensorTag Development Kit P1口上UART使用注意连接


    CC2541 SensorTag Development Kit 的P1口上UART使用注意连接
      
    参考
    CC2540/41 System-on-Chip Solution for 2.4-
    GHz Bluetooth® low energy Applications
    User's Guide
    第81页中对UART脚配置的管脚使用位
      
    外设控制寄存器U0CFG,U1CFG位


  • 作者:tianshuihu

    作品名称:SensorTag 第一周 之 SensorTag 与 ipad成功连接

    刚收到SensorTag就试了一下与各种设备的连接:黑莓9780iphone 5 ,三星I9000 ipad 4(这些设备只有9780是我的,其他都是从各位土豪借来的)
    分别打开手机蓝牙,试了半天结果:9780收到的是未知设备 iphone 5和三星I9000直接没有任何信号,ipad也搜索不到


    之前了解到iphone 5ipad 4 是肯定可以连接的,但是手机是别人的不好瞎弄,所以只好对pad下手了

    既然直接连不可以,难道需要什么软件?尝试着在iStore 上搜索了一下,居然收到了3个软件


      
    也不知道哪个好,干脆就都下载下来了

    软件装好之后,按了一下SensorTag左侧的按键,板上黄色的LED开始闪烁,再打开ipad上面的Multitool软件,居然一下子就搜索到了,点击连接,几乎瞬间就建立连接了。
    下面是连接成功之后的界面,各种传感器的参数一目了然
      
      
      

    按下Sensortag上面的按键,pad上面显示的按键会同步按下
      
      


  • 作者:ddllxxrr

    作品名称:The third week开发环境的安装

    由于CCS54*内集成51核,又因为例程基于IAR 8051的所以我也用IAR 8051.
    IAR 开发环境的安装包应从IAR网站或EEW-BLE4.0蓝牙技术交流群共享里得到。
    下边我写下如何破解安装的:
      

    当IAR 8051开发环境安装时会出现如上图的显示,这时点安装。
      

    这时出现了,如上的画面,这时你不装序列号也得装否则进行不下去。
      

    这时打开破解文件,选择 8051那一项,然后回车。
      

    上个步骤是关键,在空黑处点右键选择全选。
      

    然后打开记事本,按CTL+V,这时就符在了记事本上。
    然后,把序号复制到空白处。
    下一项是要密钥,把序号下边的字母复制到空白处就可。

    为了方便及MARK,我传一下破解文件:

  • 作者:szqt

    作品名称:CCDEBUGEER 用四线刷Dongle 的问题和解决方法

    收到CCDEBUGEER后刷了下 SensorTag的固件一切正常,然后想把四线刷机口的Dongle 刷成支持btool,结果CCDEBUGEER一直显示红灯无法连接。看了各个说明都说四线是可以刷CC2540 ,就去研究了一下SensorTag的10线刷机口的接线图。


      
    接口的9和2 分别接了3.3 和VCC_EXT ,把接口的2和9短接 CCDEBUGEER 就识别目标版了。下图白线就是拉高2脚连线,应该在加个电阻比较好。


      

  • 作者:tianshuihu

    作品名称:USB Dongle 两种工作模式切换 

    准备工作
    硬件USB Dongle  CCdebugger ,还有一根连接接线
    烧写软件‘SmartRF Flash Programmer’ Setup_SmartRFProgr_1.12.7),SensorTag 传感信号显示软件 ‘BLEDevice Monitor’ ,然后就是很重要的两个Hex固件文件

    软件安装完成之后,在下面的目录可以找到固件CC2540_USBdongle_HostTestRelease_All.hex.
    X :\Program Files\Texas Instruments\BLE Device Monitor\firmware

    如果你想切换为sniffer模式需要用到固件sniffer_fw_cc2540_usb.hex,目录如下
    X :\Program Files\Texas Instruments\SmartRFTools\Packet Sniffer\bin\general\firmware

    软件硬件都有了,就可以开工了,把USB dongleCC Debugger连接上,并记得给USB dongle上电,再把CC Debugger连接到电脑,这时如果没有问题的话CC Debugger的指示灯应该是绿色的
    打开SmartRF Flash Programmer,选择固件路径,而后点击“ Performactions”等待期完成即可

    BLE Device Monitor 模式

      


    完成后

      

      

    Packet Sniffer模式

      

      

      


  • 作者:anqi90

    作品名称:智能风铃

    项目名称:智能风铃

    功能特点:通过在PC端(也可以是其他支持蓝牙4.0BLE的移动设备)模拟出一个3D风铃,实时反馈Sensortag的运动姿态,同时可以查看当前环境的温湿度等参数,也可以进行数据的记录、分析。

    实施方案描述(包括所用到的核心器件):运行在pc端的上位机程序获取到Sensortag的各个传感器的数据后,计算出相应的信息,实时反馈在程序中的3d风铃上,向用户展示相应信息。

    由于各种原因,导致最终此次设计未能完成,实际的完成度约为80%,已能够与Sensortag建立连接,但未能完成控制。
    3D模型的导入及控制已基本完成,只是周围部件的撞击效果由于计算稍为复杂,暂时还没有加入
    目前可以通过鼠标拖动模拟风铃的摆动效果,如视频所示:

    http://www.tudou.com/programs/view/HyosbkavnSw/?resourceId=67662470_06_02_99

    通过此次设计活动,我仍然对蓝牙 4.0 ble有了更加深入的了解,包括工作方式、协议栈等方面。

     

  • 作者:战马

    作品名称:电脑桌面自动切换

    项目名称: 电脑桌面自动切换
    功能特点: 在实验室玩游戏被导师撞见,在办公室看电影被老板发现,这些经历是否让你很不爽,现在就让本系统来帮你自动切换电脑桌面,防止没人提醒而酿成悲剧,大家再也不用担心各种被抓了。

    SensorTag采用蓝牙4.0BLE,由于经典蓝牙无法与BLE设备连接,考虑到一般的电脑端无法连接到SensorTag(总不能用调试工具来连接吧),按之前的想法用USB适配器来连接SensorTag是无法实现的。由于电脑端不能直接连接到SensorTag(用调试工具其实也可以),所以想到了以下的解决方案。手机蓝牙通过多线程同时连接到SensorTag(4.0BLE)和PC(2.0),然后将SensorTag的数据转发到PC机,这样就可以了。

    需要开发Android的APP应用和PC端的上位机来配合使用。

    第一步:VC上位机的设计

    为了通过蓝牙与手机进行通信,需要先添加蓝牙虚拟串口,然后可以通过该串口与手机通信,因此可以设计一个类似串口调试助手的上位机来完成相关工作。借用了一个网上用MFC做的串口调试助手源程序,修改了一点,在原有基础上主要是增加了串口号和最小化显示桌面的功能。打开调试助手,选择相应的串口号(下拉列表中会列出当前COM1到COM20中可用的串口,选择蓝牙适配器对应的串口号),然后打开串口,然后打开手机蓝牙,连接即可。此时为正常模式,及串口调试。点击“娱乐模式”按钮,这时接收数据窗口不在显示接受到的数据,而是会对其进行判断,是否切换到桌面。附件内为串口调试助手的源码[url=]串口通信.zip[/url]

    手机蓝牙连接电脑的过程:

    1、插入蓝牙适配器(台式机)打开Bluetooth设备,选择“添加”,如下图所示

    2、打开手机蓝牙,并使设备可以被检测,然后勾选电脑对话框“添加Bluetooth设备向导”中的“我设备已经设置并且准备好,可以查找”,然后点击“下一步”,如下图所示。

    3、选择我的设备,(先打开自己的手机蓝牙,然后电脑会开始寻找附近的蓝牙设备)然后下一步。

    4、选择“让我选择自己的密钥”,此处输入的为“00000000”,然后下一步。
    5、出现如图所示的对话框,此时手机上会有提示输入密钥进行配对,输入刚才设置的密钥(此处为“00000000”),确定,添加完成。
    6、打开设备管理器,发现并没有虚拟的蓝牙串口。再次打开Bluetooth设备,选择“COM端口”选项卡,发现里面为空白。选择“添加”,选择“传入(设备初始化连接)”,然后确定,计算机会自动安装一个虚拟的串口。(如果要添加“传出COM口”,此时只能搜索工作站、服务器、计算机,因此无法为手机添加“传出COM口”。)
    7、添加好的传入COM口如下图所示,此处添加的为COM14。
    8、打开串口调试助手,选择COM14,然后打开串口。
                 
    可以先用手机端的蓝牙串口调试助手(华茂科技开发的蓝牙串口调试助手[url=]HMComAssistant.rar[/url])来进行连接,输入密钥(“00000000”)然后就可以与PC通信了。(注意要先打开PC机上的虚拟串口,否则会提示手机端连接异常)
    二、基于SensorTag的APP开发
    之前没接触过Android,没办法,只能是从头开始学。
    首先是安装开发环境,JDK、Eclipse、SDK 、ADT安装,然后下载SensorTag Android App (Rev. 1.10),安装打开。
    找到src文件夹下Sensor.java,可以看到:IR_TEMPERATURE()、ACCELEROMETER()、HUMIDITY()、MAGNETOMETER()、GYROSCOPE()等传感器有关的函数都已经写好了,此处要用到的是加速度计,也就是ACCELEROMETER()函数
    思路是开双线程,分别连接SensorTag和PC,将SensorTag中的加速度传感器的数据传到PC,然后根据数值来判断门是否被打开(切换到桌面)。之前没接触过Java,只有一点C和C++的基础,深感智商不够用 。没办法,只能一点一点看咯,另身边没有Android4.2以上的手机,无法调试,这部分目前还没有完成。

  • 作者:yangwillie

    作品名称:使用sensortag控制ardrone无人机

    功能特点: 通过在支持蓝牙4.0BLE的android手机端的信号转发,实现利用sensortag将动作信息通过蓝牙发送到手机端,在手机端再通过wifi实现对ardrone的控制。
    实施方案描述(包括所用到的核心器件): 运行在支持蓝牙4.0BLE的android手机端程序获取到Sensortag的各个传感器的数据后,计算出相应的方向信息,实时反馈在ardrone无人机上,主要是读取加速度信息,当加速度超过设定值时则无人机按照加速度方向飞行,实现Sensortag指向控制无人机飞行的效果

    http://v.youku.com/v_show/id_XNzA4MjczNzQ0.html

    在开发的过程中调试官方的sdk花费了很长时间,主要是对于安卓开发不熟悉以及官方的sdk有一定的问题,控制段的程序是从http://schemas.android.com/apk/res/android中获取的部分程序,视频和图片随后上传。
    感谢编辑的辛苦工作,在调试过程当中eeworld的信息也非常给力!thanks

  • 作者:jsxykj1

    作品名称:宠物智能随身衣服

    功能特点: 智能衣服能够对家中宠物在户外遛达时进行智能化的管理,利用传感器对其运动方向,以及检测传感器是否在适用范围内进行安全检测和提示,我们还能通过温度和湿度进行测量。

    刚开始对底层BLE驱动开,了解SensorTag传感器参数的传递规律和参数的利用方式,但是最开始的想法不是用手机来做APP,因为自己不会写应用层,但是经过后面大家都用安卓,IOS操作系统来进行开发,我也感觉到了蛋疼大家都直接用APK,让我最后放了一段时间,由于ZIGBEE项目要完工所以接触的时间也变少了。接下来,我熟悉开发环境和Zigbee差不,如果蓝牙能够有两块用单片机开发就顺利多了

  • 作者:upc_arm

    作品名称:基于SensorTag的儿童蹦蹦床实时监控系统

    功能特点:儿童在蹦蹦床等类似游戏时,若出现意外,后果不堪设想。使用SensorTag上的传感器实时监控儿童的运动状态,并通过蓝牙发送到监控设备,若出现意外发出警报,并自动执行保护措施,从而保证儿童的安全。

    使用到的器件:SensorTag、CC Debuger、USB Dongle
    先把USB Dongle设置成蓝牙适配器模式,连接电脑,SensorTag每隔一定时间向USB Dongle发送传感器数据,USB Dongle通过USB口将数据发送到电脑,若数据超出阈值则发出警报。
    演示视频:
    http://v.youku.com/v_show/id_XNzA4MDAzNDYw.html

    1、项目目标:
      
    如图所示的蹦蹦床,小孩玩的时候可能会出现意外。为了防止意外的发送,可以利用SensorTag的加速度和陀螺仪传感器,监控小孩的运动状态,判断小孩是否出现意外。若出现意外则发出警报,并自动执行保护程序,从而保证小孩的安全。
    小孩在玩耍的时候携带着SensorTag,SensorTag时时刻刻监控加速度传感器,并通过蓝牙将数据传输给监控设备(手机、电脑),若数据超出阈值,则报警。

    2、项目基本完成,总体来说没有原来想象的那么好。原因是:蓝牙的协议栈确实比较麻烦,而且本项目设计较多的硬件,先前没有接触过蓝牙,刚开始的时候比较难。困难有:
    (1)、手机不支持蓝牙4.0,因此无法进行手机APP开发,只能在电脑上监控数据。
    (2)、购买了CC Debuger、USB Dongle,这些是开发蓝牙必备工具。
    (3)、只有一个SensorTag,手机又不支持蓝牙4.0,只能将USB Dongle烧成适配器模块,连接电脑,通过电脑监控数据。

    3、连接示意图:
    SensorTag---------------(通过蓝牙无线)--------->USB Dongle--------------------->PC机(在电脑上通过串口监控数据)
    (烧写SensorTag的                                           (烧写适配器程序)
    示例程序)

    4、使用到了 HCI Interface Protocol,是一个标准的蓝牙接口,可发送命令、接收的事件,和发送和接收数据。它可以通过一个串行接口来实现。
    大家使用的 BLE Device Monitor 还有 BTool 软件就是根据该协议做的。
    4、SensorTag时时刻刻监控加速度传感器,并通过蓝牙将数据传输给USB Dongle,USB Dongle把数据传给PC机。
    在电脑端,打开程序,监控SensorTag的加速度数据,如果数据超出阈值,说明小孩可能出现意外,理解报警,并自动执行保护出现。

    演示视频:
    http://v.youku.com/v_show/id_XNzA4MDAzNDYw.html

  • 作者:southwolf1813

    作品名称:SensorTag"气功大师"情景灯光控制

    功能特点:利用SensorTag里的各种传感器和iBeacons功能,控制Yeelight等智能灯光设备,从而实现与周围环境的情景感知和互动

    实施方案描述(包括所用到的核心器件):

    传感器: SensorTag

    iOS设备: iPad

    蓝牙智能灯: Yeelight

    先让我们来认识一下Yeelight。来自青岛的创业团队,我们的好基友。Yeelight Blue是基于TI CC254x系列的BLE蓝牙智能灯,也算是我们SensorTag的同门了。
    Yeelight支持包括调色,定时开关,以及根据音乐节奏和照片颜色进行情景互动等功能。
      

    我们今天要做的就是通过SensorTag的传感器操控Yeelight灯光。比如把SensorTag拿在手上,利用加速度、陀螺仪等传感器,检测人的动作,控制Yeelight进行相应的灯光颜色、亮度调节,让我们也能化身能够“隔山打牛”的“气功大师”。

    Yeelight 也是通过操作Characteristic来控制灯光的,操作方法可以在Yeelight网站上找到文档
      

    就是通过操作FFF0 Service中的FFF1 Characteristic 来改变颜色,控制指令长度为18字节ASCII,不足18字节的用逗号补齐.
    格式为 <R>,<G>,<B>,<L>,,, 其中R,G,B是颜色,0~255, L是亮度0~100

    之前的文章里已经描述过采用techBASIC可以快速开发iOS平台的BLE程序,这次我们仍然采用techBASIC。

    简单测试,向Yeelight发送指令 "0,100,200,60,,,,,,"。注意writeCharacteristic只接受整形数组的value,所以需要先把字符转成ASCII

    IF service.uuid = ylServices(lightCtrl%) THEN
          IF characteristics(i).uuid = "FFF1" THEN
            PRINT "Light Ctrl Found."
    DIM value(18) as INTEGER
    value = [$30, $2c, $31, $30, $30, $2c, $32, $30, $30, $2c, $36, $30, $2c, $2c, $2c, $2c, $2c, $2c] 

    可以工作,证明我们的控制指令是没有问题的。

    然后就是把SensorTag的传感器数据转化为控制灯光的指令,我们这里选择加速度,X轴、Y轴控制颜色,Z轴控制亮度。
    由于SensorTag默认的加速度传感器量程为 ±2G,考虑到我们拿在手上运动不剧烈的时候一般也就 ±1G,所以转换范围就定到±1G了。另外视频里为了取得较好的演示效果,把小于0.05的加速度(可以认为是静止状态)忽略了。不然,就会导致一停下就恢复到原来颜色的囧状况……

    通过读取手机加速度,再转换为颜色、亮度的数值,就可以控制Yeelight啦!请叫我气功大师!

    视频演示地址:

    http://v.youku.com/v_show/id_XNzA4MjgyNTk2.html


  • 太神奇了,我想问一下 你怎么获得X轴的加速度的,怎么我只能获得X轴角度,Y轴角度, Z轴角度加速度,及X轴角度 ,Y轴角度,Z轴角度  。