终端节点编程时,需要解决两个问题:将温度检测函数放在什么地方?如何发送温度数据?使用ZigBee协议栈进行无线传感器网络开发时,将传感器操作有关的函数(如读取传感器数据的函数)放在协议栈的App目录下,如图12-5所示。
图12-5 将传感器操作有关的函数放在协议栈的App目录下
Sensor.h文件内容如下:
CC2530单片机内部有温度传感器,使用该温度传感器的步骤:
(1)使能温度传感器。
(2)连接温度传感器到ADC。
然后,就可以初始化ADC、确定参考电压、分辨率等,最后启动ADC读取温度数据即可。
上述函数中有个温度数据的校正,不是很准确,CC2530自带的温度传感器校正比较麻烦,读者可以暂不考虑温度的校正,只需要掌握传感器和ZigBee协议栈的接口方式。
此时,温度读取函数就完成了,只需要在Enddevice.c函数中调用该函数读取温度数据,然后发送即可。
Enddevice.c文件内容如下:
可以使用上述代码实现温度数据的读取与发送。
第1行,定义了1个变量用于存储温度数据。
第2行,定义了1个TEMPERATURE类型的变量temperature,这是发送和接收双方共同使用的数据包格式,使用共同的数据包格式主要是为了便于数据处理及校验等。
第3行,填充命令头。(www.xing528.com)
第4行,读取温度数据。
第5、6行,将温度数据转换为ASCII码。
第7行,填充命令尾。
第8~11行,初始化目的地址以及发送格式,在此使用的发送模式是单播发送,协调器的网络地址是0x0000。
第12行,调用数据发送函数AF DataRequest()进行数据发送。注意,发送数据的长度使用sizeof关键字计算得到。
虽然上述代码较为简单,但是向读者展示了在无线传感器网络中,传感器和ZigBee无线网络的接口方式。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。