目录

  • 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 讨论
任务1 案例分析及工程代码编写
  • 1 知识介绍
  • 2 PPT
  • 3 学习视频
  • 4 讨论
  • 5 超级工程

一、系统构成

1

通过系统拓扑图可以看到,需要一台PC机作为上位机,也就是可以直接发出操控命令的机器;一个网关,通过它将我们获取到的数据上传到云平台;三个CAN节点,一个CAN网关节点;分别需要两个温湿度传感器和一个火焰传感器;一个USB接口的CAN调试器,通过它可以看到终端节点数据。

二、系统数据通信协议分析

CAN数据帧又分为标准格式和扩展格式,它们的区别在于长度的不同而已,其他内容的格式基本相同。通过观察表中的帧ID可以发现,这里使用的是标准格式的数据帧。其中帧类型RTR为1位,数据为0时是数据帧,为1时是远程帧;标识符ID类型IDE也是一位,当数据为0时表示标准帧,为1时表示扩展帧;最后是数据长度和数据段,前者是数据的大小,后者是存放数据的位置。

2

网关节点需要通过 RS-485 网络将采集到的传感器数据上报至网关。其中表中的每个字段的说明如下:帧起始符:固定为 0xDD;地址域:为发送节点的地址,低位在前,高位在后;如地址为 0x1234,则 DstAddr0=0x34,DstAddr1=0x12;命令码域:0x01 代表上报 CAN 网络的数据,0x02 代表上报 RS-485 网络的数据;数据长度域:固定为 0x09;传感器类型:1 温湿度传感器,2 人体红外传感器,3 火焰传感器,4 可燃气体,5 空气质量传感器,6 光敏二极管,7 声音传感模块,8 红外传感模块,9 心率传感 器,10 其他;数据域:占 2 个字节,高 8 位和低 8 位。如:对应温湿度传感器,高 8 位为温度 值,低 8 位为湿度值。则温度 24℃对应 0x18,湿度 64%对应 0x40;校验码域:采用和校验方式,计算从“帧起始符”到“数据域”之间所有数据的累加和,并将该累加和与 0xFF 按位与而保留低 8 位,将此值作为 CS 的值。

3

三、系统工作流程分析

网络中的 CAN 终端节点每隔 1.5 秒钟上传一次数据至 CAN 网关节点。CAN 网关节点收到传感器数据后,通过 RS-485 网络将其上报至网关。同时,CAN 网关节 点每隔 1.5 秒也将自身采集的温湿度数据上报给网关。网关收到传感器数据后,将通过 TCP 协议上传至云平台。

4

四、完善工程代码

先是打开资源包里的CAN基础工程(路径:..\CAN总线通信应用\CAN_BASE\MDK-ARM\CAN_BASE.uvprojx);然后在如下函数中依次添加右图的代码:user_can.c的void CAN_User_Config(CAN_HandleTypeDef* hcan )函数。

上面的图是user_can.c的void can_start(void)函数;下面的图是user_can.c的void can_stop (void)。再是在user_can.c的uint8_t Can_Send_Msg_StdId(uint16_t My_StdId,uint8_t len,uint8_t Type_Sensor)添加下图的所有函数。接着在user_can.c的HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan)同样添加下图函数。将该工程配置为网关节点工程,在main.c的int main(void)函数中添加如下代码 紧接着编译代码,在该工程目录(CAN_BASE\MDK-ARM\CAN_BASE)中找到CAN_BASE.hex;第五步在资源包: “..\CAN总线通信应用\”目录下新建文件夹 “网关节点固件”;第六步将CAN_BASE.hex剪切到“网关节点固件”文件夹中,重命名为CAN_GATEWAY.hex第七步将该工程配置为终端节点工程,在main.c的int main(void)函数中将上一步添加的代码删除,添加新的代码;第八步是编译代码,在该工程目录(CAN_BASE\MDK-ARM\CAN_BASE)中找到CAN_BASE.hex;最后一步是在资源包:“..\CAN总线通信应用\”目录下新建文件夹“终端节点固件”,将CAN_BASE.hex复制到“终端节点固件”文件夹中