目录

  • 1 课程简介
    • 1.1 课程简介
    • 1.2 课程标准
    • 1.3 职业证书对接
    • 1.4 课程分工
  • 2 数据采集
    • 2.1 数据采集之数字量传感数据采集
    • 2.2 数据采集之模拟量传感数据采集
    • 2.3 数据采集之模拟量转换为数字量
    • 2.4 数据采集之开关量传感数据采集
  • 3 STM32微控制器基本外设应用开发
    • 3.1 STM32基础知识
    • 3.2 任务1 开发环境搭建和工程建立
    • 3.3 任务2 LED流水灯应用开发
    • 3.4 任务3 按键控制LED灯亮灭
    • 3.5 任务4 串行通信控制LED流水灯应用开发
    • 3.6 任务5 电池电量检测应用开发
  • 4 RS-485总线通信应用
    • 4.1 RS-485基本知识
    • 4.2 RS-485通信协议及网关通信协议
    • 4.3 Modbus通信协议
    • 4.4 任务1 案例分析及工程代码编写
    • 4.5 任务2 系统搭建及云平台项目创建
  • 5 CAN总线通信应用
    • 5.1 CAN总线基本知识
    • 5.2 CAN通信帧
    • 5.3 CAN控制器和收发器
    • 5.4 任务1 案例分析及工程代码编写
    • 5.5 任务2 系统搭建及云平台项目创建
    • 5.6 任务3 CAN通信数据抓包与解析
  • 6 BasicRF的无线通信应用
    • 6.1 BasicRF基础知识
    • 6.2 任务1创建工程项目
    • 6.3 任务2 温湿度节点数据采集
    • 6.4 任务3 火焰节点数据采集
    • 6.5 任务4 传感器节点组网
    • 6.6 任务5 传感数据汇聚
  • 7 WiFi数据通信
    • 7.1 WI-FI基础知识
    • 7.2 使用AT指令配置WI-FI工作模式
    • 7.3 WI-FI接入云平台
  • 8 NB-IoT联网通信
    • 8.1 NB-IoT技术简介
    • 8.2 利尔达NB-IoT模组介绍
    • 8.3 任务1 “智慧路灯”AT指令代码编写
    • 8.4 任务2.烧写智能路灯
    • 8.5 任务3NB-IoT接入云平台
  • 9 LoRa 通信技术
    • 9.1 基础知识
    • 9.2 项目分析与LoRa驱动移植
    • 9.3 任务2 LoRa温湿度传感器节点应用程序开发
    • 9.4 任务3 LoRa光照传感器节点数据采集
    • 9.5 任务4 LoRa网关节点汇聚传感器数据
    • 9.6 讨论
任务4 传感器节点组网
  • 1 知识介绍
  • 2 PPT
  • 3 学习视频
  • 4 大国重器

案例介绍

本次课将介绍第五单元基于BasicRF的通信应用当中的第四个任务,传感器节点组网开发。通过对仓储环境监测系统进行分解得到四个子任务,本任务将要完成第三个子任务A、B两个节点实时采集传感器的数据。

仓储环境监测系统子任务如下:

(1) 采用温湿度传感器模块和通信模块组成数字量采集节点A

(2) 火焰传感器模块和通信模块组成开关量采集节点B

(3) A、B两个节点实时采集传感器的数据

(4) 每隔2s将采集的传感器数据通过无线网络传给汇聚节点模块

案例分析

通过对案例的任务进行分析,得到需要实现的具体关键点如图 5-66所示:     

汇聚节点通过BasicRF点对点无线通信协议正确地接收温湿度和火焰传感节点采集的数据,接收到数据后,LED2亮100毫秒。

图片5-38


5-66任务分析


知识储备

传感器节点与汇聚节点间要进行通信,通信协议格式需要进行确定,如表 5-12所示。通信协议格式包括起始位、命令类型、数据长度、传感器个数、传感器类型、数据域和校验位几个部分。需要注意的是,如果有多个传感器,则每个传感器分别对应一个传感器类型和一个数据域。

5-12传感器节点上传采集信息通信协议格式

START

CMD

LEN

Count

TYPE0

DATA0

TYPE1

DATA1

...

TYPEx

DATAx

CHK

起始位

命令类型

数据长度

传感器个数

传感器类型0

数据域0

传感器类型1

数据域1

...

传感器类型x

数据域x

校验位


图 5-67是各个协议字段的解释:START字段表示起始位,一般取值0xCC。CMD字段表示命令类型,1表示获得采集数据。LEN字段表示数据总长度,即从START字节开始到CHK字节前的长度。Count字段表示传感器个数,依据传感器种类决定。如采集温湿度传感器时,个数为2。TYPE字段表示传感器类型,1代表温度传感器;2代表湿度传感器;3代表火焰传感器。DATA0-DATAN表示的是数据域。CHK表示校验位,即从START字节开始到CHK字节之前的累加和,该累加和与0xFF按位与运算(保留低8位),得到的结果就是CHK的值。

图片5-39


5-67协议各个字段解释


任务实施

任务的实施过程主要有编写程序、建立配置模块设备、模块连接和下载程序三个步骤。

一、编写程序

在编写程序过程中,首先在工程源码文件夹下新建collect.c文件,在IAR中将collect.c添加到workspace下的app组中,打开 collect.c,并在文件中进行汇聚节点的代码的编写。汇聚节点的程序构成如图 5-68所示。

图片5-40


5-68汇聚节点程序构成


(一)增加头文件

在collect.c文件中,添加程序需要用到的头文件,如图 5-69所示;

图片5-41


5-69头文件


(二)定义宏和变量

接下来编写好点对点通讯地址、无线参数结构、无线数据缓存数组和闪烁LED灯这几个部分的宏定义。

(三)子功能函数

代码的主体部分主要包括ConfigRf_Init、GetHexStr和TIM1_PwmInit几个子功能函数,如图 5-70所示。其中GetHexStr函数的功能为生成数组的16进制形式的字符串格式,成员间以空格隔开,第一个参数input表示指向输入缓冲区,第二个参数len表示输入数据字节长度,第三个参数output表示指向输出缓冲区,如图 5-71所示。TIM1_PwmInit()函数用于控制输出的 PWM 波,函数原型定义在 hal_pwm.c 中,具体的源码内容如图 5-72所示。

图片5-43


5-70各子功能函数功能说明图片5-44


5-71子功能函数—GetHexStr()函数
图片5-45


5-72TIM1_PwmInit()函数源码


(四)主函数main()

main主函数包括LED灯、串口、中断初始化,呼吸灯、指示CC2530启动,检查是否收到新的数据包,LED点亮100ms,串口打印接收信息几个部分的功能代码,如图 5-73所示。

main函数运行应用程序前,需要先初始化各个功能模块,halBoardInit()初始化了 LED 灯、串口、开启总中断,ConfigRf_Init()初始化了无线收发器的初始参数。初始化完成后需要执行无限循环任务,在这里面编写一个呼吸灯程序,I/O 口 P1_0 输出 PWM 波控制 LED 灯亮灭,PWM 占空比周期性渐变,从而实现 LED 的渐变,达到呼吸灯的效果。

图片5-47


5-73主函数main()


 basicRfReceive ()用来接收无线数据, uart_printf()用来往串口打印调试信息, uart_printf()的用法和 printf()一样。

图片5-48


5-74函数basicRfPacketIsReady()


图 5-74为basicRfPacketIsReady()函数,用于检查是否收到新的数据包,若有新数据,才进行后续收据接收处理。第34行,调用 basicRfReceive 函数接收数据。第 35-38,调试代码,将接收到的原始数据显示在串口调试助手上。

二、建立配置模块设备

代码编写完成后,第二个步骤是建立配置模块设备并进行配置。

(一)项目配置

首先是进行项目配置。如图 5-75所示,首先打开项目配置窗口,选择“Project菜单下的Edit Configurations”选项,弹出项目的配置对话框,系统会检测出项目中存在的模块设备。

图片5-49


5-75项目配置窗口


(二)传感器数据汇集模块配置

(1)单击“New”按钮,在弹出的对话框中输入模块名称为:“collect”,基于Debug模块进行配置;

(2)单击“OK”按钮完成模块设备的建立。如图图 5-76所示。

图片5-50


5-76New Configuration窗口


(三) 模设置块设备条件编译参数设置

接下来对设备进行条件编译参数设置,操作步骤如下:如图 5-77所示,在项目工作组中选择“collect”模块,单击右键选择“Options”,在弹出的对话框中选 择 “ C/C++ Compile ” 类别 , 在右边的窗口选择 “ Preprocessor ” 选项的 “Definedsymbols:”中输入 “CC2530_DEBUG”,操作完后点击 OK 保存。

图片5-51


5-77编译参数设置窗口


三、模块连接和下载程序

模块配置完成后,最后是模块的连接与程序的下载。

(一)温湿度传感器模块程序下载:

将插有温湿度传感器模块的 ZigBee 模块固定在 NEWLab 平台,在 Workspace 栏下选择 “temprh_sensor”模块,重新编译程序无误后,给 NEWLab 平台上电,下载程序到 ZigBee 模块中。

(二) 火焰传感器模块程序下载:

将插有温湿度传感器模块的 ZigBee 模块固定在 NEWLab 平台,在 Workspace 栏下选择 “fire_sensor”模块,重新编译程序无误后,给 NEWLab 平台上电,下载程序到 ZigBee 模 块中。

(三)汇聚节点程序下载:

选用黑色的ZigBee版模块,并为其接通5V直流电源适配器,作为汇聚节点,在Workspace 栏下选择“collect”模块,重新编译程序无误后,下载程序到汇聚节点中,如图 5-78所示。

图5-52


5-78模块程序下载


程序下载完后,将设备按图所示放在 NEWLab 平台上,程序运行效果为当发送和接收到数据有相应的 LED 闪烁,指示有数据发送和接收,如图 5-79所示。

图片5-53


5-79程序运行效果