微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > 初步使用CC2541 SensorTag

初步使用CC2541 SensorTag

时间:10-02 整理:3721RD 点击:

一.订购

9月5号下的订单,好像是19号左右发的货,25号实际上就到我这个地区县城了,但是本地区联邦快递代理一般是不送到乡镇的,要去取,但是包裹单上也没有电话号码联系我。联邦快递说又向发货方要电话号码,告诉我去取。好像是9月29号自己去取到手的。

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

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





以前曾经想申请红外温度传感器,没想到实际尺寸这么小呀,就是申请到了可能还真焊接不了,太小了。

硬件电路图之类在官网如下链接找到:

BluetoothLE Reference Design Schematic

Bluetooth LEReference Design Layout

Bluetooth LE Reference Design Bill ofMaterials (BOM)




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



对照相关文档:

CC2541 SensorTag Quick Start Guide

CC2541 SensorTag Reference Design 1.4(Rev. B)

总结一下:

SensorTag基于 CC2541 与 TI 的 TPS62730(降压转换器)配合工作。它包含 TI 的 TMP006 IR MEMS 温度传感器、湿度传感器、压力传感器、加速计、回转仪和磁力计。想来除了可用来体验低功耗蓝牙BLE性能,还有这么多传感器,如果时间充裕,对于学习来说一定很能富有乐趣。实际上TI官网也介绍说:SensorTag的多功能性意味着无限的应用可能性,其中包括健康与健身、医疗、教育工具、玩具、远程控制、移动电话附件、邻近和室内定位等领域的应用。EEWORLD现在正在进行一项活动:


TI SensorTag创意设计大赛重磅开启!只等有创意的你!

SensorTag这么多传感器,参加这个活动应该随便都能想想出来可能的目的初步方案来。



四.使用BLE Device Monitor初试蓝牙连接

为了使买的SensorTag能够充分体验价值,穷人我一冲动可是花了血本呀!

在淘宝买了一套工具,没法呀,TI官网的太贵。

没有iXX什么的,我就用平常的电脑,使用BLE Device Monitor软件!

BLE Device Monitor软件下载:downloaded here

使用BLE Device Monitor软件需要硬件CC2540 USB dongle

先看指导手册:

BLE DeviceMonitor User Guide - Texas Instruments Wiki


特别需要注意的是需要按照手册中的要求重新烧写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中:

  1. /**************************************************************************************************
  2. * @fn HalIRTempRead
  3. *
  4. * @brief Read the sensor voltage and sensor temperature registers
  5. *
  6. * @param Voltage and temperature in raw format (2 + 2 bytes)
  7. *
  8. * @return TRUE if valid data
  9. **************************************************************************************************/
  10. bool HalIRTempRead(uint8 *pBuf)
  11. {
  12. uint16 v;
  13. uint16 t;
  14. bool success;

  15. if (irtSensorState != TMP006_DATA_READY)
  16. {
  17. return FALSE;
  18. }

  19. HalIRTempSelect();

  20. // Read the sensor registers
  21. success = HalSensorReadReg(TMP006_REG_ADDR_VOLTAGE, (uint8 *)&v,IRTEMP_REG_LEN );
  22. if (success)
  23. {
  24. success = HalSensorReadReg(TMP006_REG_ADDR_TEMPERATURE, (uint8 *)&t,IRTEMP_REG_LEN );
  25. }

  26. if (success)
  27. {
  28. // Store values
  29. pBuf[0] = HI_UINT16( v );
  30. pBuf[1] = LO_UINT16( v );
  31. pBuf[2] = HI_UINT16( t );
  32. pBuf[3] = LO_UINT16( t );
  33. }

  34. // Turn off sensor
  35. if (HalSensorWriteReg(TMP006_REG_ADDR_CONFIG, configSensorOff, IRTEMP_REG_LEN))
  36. {
  37. irtSensorState = TMP006_OFF;
  38. }
  39. HalDcDcControl(ST_IRTEMP,false);

  40. return success;
  41. }

复制代码

上面代码中在SensorTag.c中直接调用了:

  1. static void readIrTempData( void )
  2. {
  3. uint8 tData[IRTEMPERATURE_DATA_LEN];

  4. if (HalIRTempRead(tData))
  5. {
  6. IRTemp_SetParameter( IRTEMPERATURE_DATA, IRTEMPERATURE_DATA_LEN, tData);
  7. }
  8. }

复制代码

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

  1. /* Conversion algorithm for die temperature
  2. * ================================================
  3. *
  4. double calcTmpLocal(uint16 rawT)
  5. {
  6. //-- calculate die temperature [癈] --
  7. m_tmpAmb = (double)((qint16)rawT)/128.0;

  8. return m_tmpAmb;
  9. }

  10. *
  11. * Conversion algorithm for target temperature
  12. *
  13. double calcTmpTarget(uint16 rawT)
  14. {
  15. //-- calculate target temperature [癈] -
  16. double Vobj2 = (double)(qint16)rawT;
  17. Vobj2 *= 0.00000015625;

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

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

  32. return tObj;
  33. }

  34. */

复制代码

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


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

三.上电

按照手册装上包装盒里的CR2032纽扣电池,按下侧键,一个LED长时间闪烁后自动停止;分别按下顶部的两个按键,都是另外一颗LED闪烁一两秒钟。装上外壳,感觉一直受操作按键很方便,中指正好可以操作侧键,大拇指可以操作顶部的两个按键。顶部的两个按键尤其很有触摸感很容易不用看找到位置,据论坛中的一个帖子网友说顶部两个按键的外壳部位的几个凸点还是盲文,虽然一般人用不着盲文,但是感觉也有利于正常人操作。完整装上外壳后LED灯显得有点暗,但是还是能看到闪烁的。

看来可以初步判断收到的SensorTag应该是能够工作没有损坏的,但是穷人我没有什么ipad什么iphone之类的,还需要想法试试蓝牙连接呀!



五.低功耗的初步感觉

匆匆看了一下传感器,体验了一下直接的功能,接下来要关心的才是最重要的吆,低功耗!到底怎样?看看资料,也要体验验证一下吆

在上面第4节使用BLE Device Monitor软件过程中,我就实现按照如下图的接法接入了万用表测电流。

这是没有连接或者断开连接一段时间后电流显示值,8.4uA


连接状态,但是没有选择任何传感器,电流1.08mA,注意,是毫安不是微安

选中监视所有传感器,电流跳动值在8mA10mA。如果电池电压不够,容易到一定电压就掉线。

陀螺仪传感器电流比较大,其它加在一起电流值在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,这样对比就很直观了。当然用示波器之类的更好吧。

因此,像防丢器那样不可思议的能够至少使用几个月不是吹嘘的。



六.使用Btool



七.协议栈的初步了解



八.使用展望



CC2540 USB dongle哪买的,好用码?

顶一下。花了血本的土豪。我也没爱疯。安卓不支持吗。。。

全部要支持BT4.0硬件的设备,apple全中,google要亲儿子和新出的手机,笔记本要新出的

买不起了。。。

这个怎么说呢?非要问

国内山寨官方的,搜索很容易找到

谢谢分享

麻烦问一下,用cc debuger怎么进行调试。另外,编程是用IAR吗?可以使用其他的编译器吗?

我的塑料片直接粘在PCB的背面。

m_tmpAmb = (double)((qint16)rawT)/128.0;

Vobj2 *= 0.00000015625;
能不能给我讲讲这两句,为啥两个byte 一高一低拼在一块 要除以128?
还有 物体温度怎么根据环境温度 换算的?0.00000015625系数和 128有什么关系么?

我想问一下 低功耗先关的问题 1.我现在跟你测试的一样,我连接上为2ma 可是怎么也降低不了 ,我也按照你那种方法试验了。可是还是降低不了。还要设置什么吗?

你好 , 看了你得关于senortag的帖子 ,受益匪浅。最近要买个senortag连接电脑进行数据提取,有一些问题想要请教一下,能否留个QQ号交流一下呢

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top