-
1 知识介绍
-
2 PPT
-
3 学习视频
-
4 讨论
-
5 大国重器
案例介绍
通过对仓储环境监测系统进行分解,得到需要完成的四个子任务,本节将要完成第二个子任务火焰传感器模块和通信模块组成开关量采集节点B。
仓储环境监测系统子任务如下:
(1) 采用温湿度传感器模块和通信模块组成数字量采集节点A
(2) 火焰传感器模块和通信模块组成开关量采集节点B
(3) A、B两个节点实时采集传感器的数据
(4) 每隔2s将采集的传感器数据通过无线网络传给汇聚节点模块
案例分析
通过对子任务3进行分析,得到需要实现的具体关键点如
采用火焰传感器模块和ZigBee模块组成一个开关量传感器采集节点,实现火焰传感器的采集,并将采集数据通过自定义协议无线传输至汇聚节点。发送节点有数据发送时,LED1 亮 100 毫秒。

知识储备
一、CC2530的ADC模块
CC2530 的 ADC 模块支持最高 14 位二进制的模拟数字转换,具有 12 位的有效数据位。如

CC2530 的 ADC 模块有如下主要特征:
(1)可选的抽取率,设置分辨率(7 到 12 位)
(2)8 个独立的输入通道,可接收单端或差分信号
(3) 参考电压可选为内部单端、外部单端、外部差分或 AVDD5
(4)转换结束产生中断请求
(5)转换结束时可发出 DMA 触发
(6)可以将片内温度传感器作为输入
(7)电池电压测量功能
对于 CC2530 的 ADC 模块,端口 P0 引脚可以配置为 ADC 输入端,依次为 AIN0~AIN7。此外,输入可以配置为单端或差分输入。在选择差分输入的情况下,差分输入包括输入对 AIN0-AIN1、 AIN2-AIN3、AIN4-AIN5 和 AIN6-AIN7。除了输入引脚 AIN0-AIN7,片上温度传感器的输出也可以选择作为 ADC 的输入用于温度测量。还可以输入一个对应 AVDD5/3 的电压作为一个 ADC 输入,在应用中这个输入可以实现一个电池电压监测器的功能。
二、CC2530相关ADC寄存器
如

任务实施
任务实施的过程主要包括新建fire_sensor.c、编写程序、建立配置模块设备和编译与下载程序四个步骤。
一、新建fire_sensor.c
新建fire_sensor.c的流程如

二、编写程序
编写程序的三个步骤如

(一)宏定义修改
打开文件 fire_sensor.c,在原温湿度传感器应用程序代码的基础上,修 改 MY_ADDR 为 0xBDCC。
(二)读取 A/D 值函数 get_adc()
该函数读取 A-D 转换的电压值,定义在文件 get_adc.c 中,如

(三)对 fire_sensor.c 文件的主函数 main 进行修改
如

三、建立配置模块设备
(一)项目配置
选择菜单“Project“菜单下的”Edit Configurations”,弹出项目的配置对话框,系统会检测出项目中存在的模块设备,如

(二)火焰传感器模块配置
单击“New”按钮,在弹出的对话框中输入模块名称为:“fire_sensor”,基于 Deubg 模块进行配置,然后单击“OK”按钮完成模块设备的建立。在项目配置对话框中就可以自动检测出刚才建立的模块设备“fire _sensor”,如

(三)模设置块设备对应的条件编译参数设置
为了给模块设备设置对应的条件编译参数,在此需要进行如下设置: 在项目工作组中选择“fire_sensor”模块,单击右键选择“Options”,在弹出的对话框中选择“C/C++ Compile”类别,在右边的窗口中选择“Preprocessor”选项卡中的 “Defined symbols:”并输入 “CC2530_DEBUG”,具体设置如

(四)排除“fire_sensor.c”配置
在 IAR 中,展开 app 组,workspace 下选择“temprh_sensor”,左击选择“fire_sensor.c”,然后右击“fire_sensor.c”,弹出菜单中点击“Option…”。在弹出的窗口中,勾选“Exclude from build”,最后点击 OK 保存,如

四、编译和下载程序
如

打开串口调试助手,设置波特率为 115200 后点击“打开” ,可以看到采集到的火焰数据显示出来了,如

验证通过后,需要把条件编译选项中的“CC2530_DEBUG”去掉,变成 “xCC2530_DEBUG”,如


