基于NB-IoT的智慧路灯监控系统(硬件开发)

作者: cnbzlj 发布时间: 2019-09-29 浏览: 4399 次 编辑

目录

1、设备选型

1.1、主控制器

1.2、NB-IoT无线通信模块和GPS模块

1.3、光照检测模块

1.4、输出控制模块

1.5、电能检测模块

2、硬件开发

2.1、开发软件

2.2、STM32CubeMX底层环境搭建

2.3、Keil5编写控制模块实现代码


1、设备选型

基于NB-IoT的智慧路灯监管系统在感知层可实现实时采集路灯节点的工作状态(亮灭状态)、电压、电流、功率、功率因数、耗电量、产生二氧化碳、频率、环境光照度、路灯亮度、路灯故障地理位置11种传感数据信息。

路灯控制终端节点主要由主控制器、NB-IoT无线通信模块、GPS模块、光强检测模块、电能检测模块以及输出控制模块组成,路灯控制节点模块硬件实物如下图所示:

1.1、主控制器

主控制器选用STM32L432KC超低功耗单片机作为微控制器,NUCLEO-L432KC 开发板是首个集成一款QFN32微型封装微控制器的Nucleo-32开发板,板载一颗STM32L432KCU6 微控制器(UFQFPN32),允许用户直接使用ARM在线开发工具,板载Arduino Nano针脚布局可简化功能扩展,集成的ST-Link调试器/编程器支持大容量存储器和无探针调试,可以完全满足智慧路灯节点数据处理的基本要求。

1.2、NB-IoT无线通信模块和GPS模块

NB-IoT通信模块采用功耗极低的上海移远BC20通信模组,以及SIM卡座、串口电路、滤波天线、复位电路组成,由电源模块供电。BC20支持GNSS,内置GNSS模块,支持GPS定位,北斗双模定位,实现卫星对路灯节点定位,极大方便用户使用。本模块接收来自主控制器的路灯实时状态、路灯节点功耗传感数据以及模块获取的GPS数据等信息,通过Internet将数据发送给华为IoT云平台,并接收用户通过Intemet发送来的控制命令。

1.3、光照检测模块

光强检测模块利用光照模块检测外界光照强度,并将信号通过ADC方式传入主控制器,根据环境光照强弱自动调节路灯节点亮度。

1.4、输出控制模块

输出控制模块使用YYAC-3S 模块,该模块采用原装可控硅,输入与输出光耦完全隔离,通过单片机IO口输出PWM调节占空比去改变220V交流电压从而达到调光调速调节功率等功能。

1.5、电能检测模块

电能检测模块采用UART接口和RS485接口,支持与PLC通信,刷新速度500MS,可读取电压、电流、功率、电能和频率因数参数通过RS485或UART口输出16进制数据。设计有继电器模块,结合路灯节点耗能情况和阈值报警,用户设置多种模式(分时间段控制道路两侧路灯全亮模式、自动调整模式、隔杆亮灯模式和深夜模式)实现路灯智能管理。

2、硬件开发

接下来进行嵌入式硬件编程开发,通过电能检测模块实现实时采集路灯节点电压、电流、功率、总耗电量、功率因子、路灯开关状态、耗能产生二氧化碳、光照度、路灯亮度、环境光照度、GPS位置11种传感数据,通过NB-IoT模组实现对华为云物联网平台数据上传及下发获取,达到联动控制效果。

2.1、开发软件

嵌入式硬件开发使用STM32CubeMX和Keil5实现,STM32CubeMX搭建NUCLEO-L432KC开发板GPIO底层配置,Keil5实现NUCLEO-L432KC开发板编程开发。

STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,也是配置和初始化 C 代码生成器(STM32 configuration and initialization C code generation),也就是自动生成开发初期关于芯片相关的一些初始化代码。STM32CubeMX 包含了 STM32 所有系列的芯片,包含示例和样本(Examples and demos)、中间组件(Middleware Components)、硬件抽象层(Hardwaree abstraction layer)。

STM32CubeMX简介、下载及安装参见:https://blog.csdn.net/m0_38106923/article/details/89458297

Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。

Keil5简介、下载、安装及破解参见:https://blog.csdn.net/m0_38106923/article/details/89492257

2.2、STM32CubeMX底层环境搭建

使用STM32CubeMX搭建NUCLEO-L432KC开发板GPIO底层配置,主要配置微控制器晶振、定时器PWM接口UART1、UART2ADC接口LED状态指示灯接口,具体实现如下:

2.3、Keil5编写控制模块实现代码

在Keil5开发环境中需要编写硬件基础底层配置功能、电能电耗检测功能、GPS定位功能、环境光照检测功能、NB-IoT模组通信功能和云端交互功能。

NB-IoT模组配置实现代码如下:

电能电耗监测功能实现代码如下:

GPS定位功能实现代码如下:

环境光照检测功能实现代码如下:

NB-IoT模组模组通信功能实现代码如下:

云端交互功能实现代码如下:

基于NB-IoT的智慧路灯监控系统(云端部署及AI模型训练)


本文链接:https://blog.csdn.net/m0_38106923/article/details/97925200