用户试用分享篇-+ SensorTag TMP007红外温度传感器服务加入BLE协议栈
TMP007 - 带集成数学引擎的红外热电堆传感器,非接触式红外线温度传感
TMP007 是一款红外 (IR) 热电堆传感器,此传感器在无需接触物体的情况下测量这个物体的温度。 集成热电堆吸收物体在传感器感测范围内发出的红外能量。 热电堆电压被数字化,并且作为输入,连同芯片温度 (TDIE) 一起提供给集成数学引擎。 然后,数学引擎计算相应的物体温度。
缺省校准和热瞬态系数被存储在内置非易失性 ERPOM 存储器中。 可存储应用特定值来提升准确度。 可提供一个警报功能,并且此功能可在比较器或中断模式下设定。
TMP007 与 I2C 和 SMBus 接口兼容,并且可在一条总线上支持多达 8 个器件。 低功耗连同低运行电压是电池供电应用的理想选择。
TMP007 提供便捷的、非接触式热解决方案来测量经厂家校准的温度。 这款器件还适用于具有用户定制系统校准的工业和消费类应用。
TMP007特性:
数据表地址:
http://www.ti.com/lit/ds/symlink/tmp007.pdf
在原理图中的电路图
与处理器之间采用IIC接口通信。
芯片内部框图:
Pin脚定义:
SCL和SDA使用开漏输出,必须接上拉,典型值为10K。ALERT报警输出,也是采用开漏输出,比较接上拉。
IIC接口描述:
TMP007只能作为从机。
TMP007确定地址:
我们的电路上ADR1为1,ADR0为0;所以地址为1000100.
在程序就中就是对寄存器操作了。
在协议栈中添加TMP007服务,使用了TI-RTOS。直接加一个进程就可以了。
SensorTagTmp_createTask()就是为TMP007添加的任务的入口。
回调sensorTaskFxn函数是TMP007的任务处理函数。
ICall_registerApp()注册到BLE协议栈。sensorTaskInit()初始化任务。
IRTemp_addService()在协议栈中添加TMP007服务。
GATTServApp_RegisterService函数中的sensorAttrTable参数是一个数组,定义参照下表:
接着说sensorTaskInit()中的SensorTagTmp_reset(),这个初始化TMP007传感器。
然后回到任务函数中sensorTaskFxn
这里就是读取温度值,并传送到客户端。
sensorTmp007Enable是使能或禁止传感器。看寄存器02h的第12位。
sensorTmp007Read是读取传感器值。
首先读取状态,看是否转换完成。没有完成置一个错误的数据。转换完成,读取温度值。
读取后 sensorTmp007Enable(false);休眠传感器,节省功耗。
最后到我们最关键的一步,就是把读取的值上传到客户端。
IRTemp_setParameter上传函数。调用GATTServApp_ProcessCharCfg这个函数把数据发送出去。
读取值乘以0.03125 就是实际温度值。
这个热电堆传感器很好用,可以用于防盗,确认是有人靠近了,安装在门窗等处。挺不错的方案