0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于 NB-IoT 通信模组的低功耗智能门磁传感器

智能物联研习社 来源:智能物联研习社 作者:智能物联研习社 2021-01-27 16:41 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

智能门磁传感器在智能安防领域扮演着重要的角色,应用的场合也越来越多。离家后不确定家中门窗是否关闭?不妨打开手机确认一下。文介绍如何使用涂鸦三明治开发板快速完成一个基于 NB-IoT 通信模组的低功耗智能门磁传感器产品原型,实现门磁电池电量两个基础功能。

MCU 方案与 SoC 方案不同,传感器和联网模组的驱动代码写在 MCU 中,您可以自行开发 MCU 代码,拥有更多的可玩性。涂鸦三明治开发板门磁传感套件中,传感器板干簧管根据开合状态输出高低电平给 MCU 控制板,MCU 通过串口 与 NB-IoT 通信板连接,使用涂鸦智能 App 配网。您可以将门磁状态展现在手机端,并与其他智能设备联动。本教程中:

  • MCU 型号为 STM32G071RB

  • Demo 例程以 Keil(MDK-ARM)为开发环境,使用 STM32CubeMX 配置生成初始化代码

物料清单

硬件 (3)

  • 涂鸦三明治 NB-IoT 通信板(NM1)数量:1

配合 MCU 使用,提供联网能力。

  • 涂鸦三明治门磁传感器功能板数量:1

通过磁铁靠近或远离干簧管使干簧管通断产生的高低电平信号来判断当前的门窗磁状态是开启或关闭。

  • NUCLEO-G71RB数量:1

第 1 步:硬件连接

本次使用的涂鸦三明治开发板门磁传感套件主要包含:

门磁传感器功能板,板载两路干簧管一路触发输出为低,一路触发输出为高,您可以根据实际情况选用。

NB-IoT MCU 通信板,板载涂鸦 NM1 模组,负责智能化连接。模组已烧录通用固件,MCU 对接涂鸦串口协议,即可使用模组+App+云涂鸦一站式智能化服务。

MCU控制板,采用ST官方 NUCLEO-G071RB 开发板,负责传感数据接收和模组通讯控制。将三明治开发板套件控制板、通讯板、功能板拼接组装,实物效果如下图。

  • 第 2 步:例程环境

软件开发过程主要使用 STM32CubeMX 来配置初始化 MCU,以 Keil5 为开发环境实现 MCU 与传感器和模组协议对接。首先调通 MCU 和模组的通讯,可以实现 App 配网,MCU 数据传输到 App。

第 3 步:创建工程和产品

您可以根据以下步骤,快速在涂鸦 IoT 平台上开发一个智能门磁。

  1. 进入 涂鸦智能IoT平台。

  2. 参考 选品类创建产品 创建一款门磁产品。其中产品属性如下:

开发方式:自定义方案

联网方式:NB-IoT

功耗类型:PSM

84508060ce274f70b7443ffcba9def5a~tplv-tt-shrink:640:0.image

3、根据页面提示选择产品的标准功能和自定义功能。功能选择门磁电池电量,本DEMO例程只支持这两个基本功能,如需其它功能需要自行实现。

3b0b27c9c18942059d490b8adf7fef2e~tplv-tt-shrink:640:0.image

4、选择您喜欢的面板,第一次开始调试也可以选择为开发调试面板,便于调试,后面也可以更换面板。

5、面板选择完后,进入硬件开发阶段,在页面拉到最下面,下载开发资料。

cbe862897b6e4354b0d54b1d801c9e8a~tplv-tt-shrink:640:0.image

6、硬件测试。

下载到 MCU 开发包后,使用开发包中的涂鸦模组调试助手,您可以使用助手模拟 MCU 模式,配合调试模组通讯板,验证模组是否通讯正常,同时也可以熟悉涂鸦串口协议提高对接效率。确定通信板正常可用的,可以跳过此步骤。若调试过程中对协议收发有疑问,也可以使用此助手协助查看正确数据交互格式。 使用步骤可参考 涂鸦模组调试助手使用说明。

第 4 步:移植 MCU SDK

在使用 STM32CubeMX 生产初始化工程代码后,即可开始移植 MCU_SDK。本章节简单介绍了移植过程和功能实现,将mcu_sdk中的文件加入工程后,编译根据报错提示,进行修改。如需查看详细的移植调试教程,请参考 MCU SDK 移植。

  1. uart_transmit_output()函数按照#error中的提示信息处理,处理后注释掉。

3f7cc3efc97d477db45ddac562f14c8e~tplv-tt-shrink:640:0.image

2、完善uart_receive_input()函数按照#error中的提示信息处理,处理后注释掉。

ad6451379b5c47b3bc1fb767731372ff~tplv-tt-shrink:640:0.image

3、将nbiot_uart_service()函数按照#error中的提示信息处理,处理后注释掉。

35bebbeb056847fda67ce1b3e1e3cb89~tplv-tt-shrink:640:0.image

4、nbiot_protocol_init()函数按照#error中的提示信息处理,处理后注释掉。

接下来便是all_data_update()函数,该函数会自动上报系统中所有 DP 信息,您不要调用该函数。

第 5 步:编写嵌入式程序

  1. 新建一个user_func.h文件,在其中定 + 义一个结构体,用来记录门磁设备的各种状态。

//传感器上报标志typedefenum{
	STATE_IDLE=0,
	STATE_DOOR_NEED_UP=1	}sensor_state_t;//门开关状态typedefenum{
	STATE_CLOSE=0,
	STATE_OPEN=1	}door_state_t;typedefstruct{
door_state_tdoor_state;
	sensor_state_tsensor_state;	unsignedchardoor_up_lock;//门状态上报锁
	unsignedcharremaining_power;//设备剩余电量,单位百分比}device_status_t;
  1. 在新建的user_func.c文件中实现一些自定义的功能函数,同时在nbiot.h文件中添加头文件#include "user_func.h"

  2. main.c文件中,添加头文件#include "nbiot.h"。MCU上电启动后,进入while(1){}循环前,除了常规的配置IO口、串口、ADC以外还需要执行的:

nbiot_protocol_init();//使能低功耗模式时钟__HAL_RCC_PWR_CLK_ENABLE();//初始化NB模组唤醒脚的电平HAL_GPIO_WritePin(GPIOA,GPIO_PIN_10,GPIO_PIN_SET);

while(1){}循环内:

while(1)
{nbiot_uart_service();
power_detect_poll();
user_sensor_up_poll();
}
  • nbiot_uart_service()是SDK提供的串口数据处理函数,解析并处理NB-IoT模组返回的数据。

  • power_detect_poll()是电池电量检测函数,在函数内通过ADC采样和换算得出大概的剩余电量并保存。由您自行实现。

  • user_sensor_up_poll()是传感器上报任务处理函数,根据NB模组的设备状态等多种因素判读是否做上报数据发送处理以及是否需要让MCU进入STOP低功耗模式。由您自行实现。

voiduser_sensor_up_poll(void){	
	//	当NB模组为已绑定连接状态且门状态上报锁打开的情况下。门状态上报锁在收到模组上报成功回码后会打开
	if((NB_STATE_DEVICE_BINDED==mcu_get_nbiot_work_state())&&(device_status_s.door_up_lock)){		//判读有未处理的门状态上报任务,开始向NB模组发送上报数据。
		if(STATE_DOOR_NEED_UP==device_status_s.sensor_state){
			device_status_s.sensor_state=STATE_IDLE;
mcu_dp_bool_update(DPID_DOORCONTACT_STATE,device_status_s.door_state);
			device_status_s.door_up_lock=0;				
		}else{			
			//判断剩余电量是否低于电量上报阈值,发送电量上报数据并降低阈值
			if(device_status_s.remaining_power<= power_threshold) {
				mcu_dp_value_update(DPID_BATTERY_PERCENTAGE, device_status_s.remaining_power);				if(power_threshold >=25){
					power_threshold-=25;	
				}
			}			//打开NB模组PSM休眠锁
			mcu_set_nbiot_sleeplock(0);			//MCU进入低功耗模式
			enter_lowpower_mode();							
		}
	}
}

实现进入和退出低功耗模式两个函数:

voidenter_lowpower_mode(){	
	HAL_GPIO_WritePin(GPIOA,GPIO_PIN_10,GPIO_PIN_SET);

	lowpower_gpio_init();

	HAL_ADC_Stop(&hadc1);
	HAL_ADC_DeInit(&hadc1);

	HAL_UART_DeInit(&huart3);	//HAL_TIM_Base_DeInit(&htim3);

	//关闭时钟
	__HAL_RCC_DMA1_CLK_DISABLE();
	__HAL_RCC_GPIOB_CLK_DISABLE();
	__HAL_RCC_GPIOC_CLK_DISABLE();
	__HAL_RCC_GPIOC_CLK_DISABLE();
	__HAL_RCC_GPIOD_CLK_DISABLE();
	__HAL_RCC_GPIOF_CLK_DISABLE();

	HAL_SuspendTick();	//进入stop模式	
	HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON,PWR_STOPENTRY_WFI);
}voidleave_lowpower_mode(){
	SystemClock_Config();

	MX_GPIO_Init();	//MX_TIM3_Init();

	MX_USART3_UART_Init();
	__HAL_UART_ENABLE_IT(&huart3,UART_IT_RXNE);

	MX_ADC1_Init();
	HAL_ADC_Start(&hadc1);	//拉低引脚唤醒NB模组
	HAL_GPIO_WritePin(GPIOA,GPIO_PIN_10,GPIO_PIN_RESET);	//传感器需要上报门开关状态
	device_status_s.sensor_state=STATE_DOOR_NEED_UP;
}

MCU的Stop低功耗模式主要由中断来唤醒,所以需要在中断回调函数中调用nbiot_uart_service()并记录门的开关状态:

voidHAL_GPIO_EXTI_Falling_Callback(uint16_tGPIO_Pin){
	leave_lowpower_mode();
	device_status_s.door_state=STATE_OPEN;
}voidHAL_GPIO_EXTI_Rising_Callback(uint16_tGPIO_Pin){
	leave_lowpower_mode();
	device_status_s.door_state=STATE_CLOSE;
}

由于NB模组从PSM模式中唤醒需要重新连接涂鸦云,唤醒时第一次门状态上报会失败,所以需要在模组连接成功并返回工作状态回码时重新发送一次上报状态,即在system.c文件下data_handle函数的工作状态回码处理case中添加代码实现:

//工作状态	caseNBIOT_STATE_CMD:
nbiot_work_state=nbiot_uart_rx_buf[offset+DATA_START];
nbiot_uart_write_frame(NBIOT_STATE_CMD,0);	if(STATE_DOOR_NEED_UP==mcu_get_nbiot_work_state()){	
mcu_dp_bool_update(DPID_DOORCONTACT_STATE,device_status_s.door_state);
device_status_s.sensor_state=STATE_IDLE;
	}break;

system.c文件下data_handle函数的上报回码处理case中添加代码:

caseSTATE_UPLOAD_CMD:
	//判断result的值,确认收到模组返回的信息后,打开门状态上报锁,准备下一次上报
device_status_s.door_up_lock=1;break;

第 6 步:(可选)场景联动

产品功能调试通过后,App 端已经可以接收到门磁感器的数据。智能传感器最大的应用场景是用来收集传感数据来和其它产品进行联动。如果您已经拥有了其他涂鸦生态设备或开发板,可以在 App 端实现场景联动功能的配置。详细步骤,请参考 场景联动设置。

6dd7cd82e65d4e7a8b88c9db13e01d8e~tplv-tt-shrink:640:0.image

auth.tuya.com/?from=https%3A%2F%2Fiot.tuya.com%2F&_source=795a75d7c1af33f95d8ea55409e4b22e

基于涂鸦智能 IoT 平台,您可以使用三明治开发板、STM32CubeMX、Keil开发环境,快速搭建一款智能门磁传感器产品原型。

审核编辑:符乾江

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2578

    文章

    55892

    浏览量

    795750
  • mcu
    mcu
    +关注

    关注

    147

    文章

    19262

    浏览量

    405285
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    AI-NB81 NB-IoT模组:物联网通信的得力助手

    AI-NB81 NB-IoT模组:物联网通信的得力助手 在物联网飞速发展的今天,无线通信模组作为
    的头像 发表于 05-09 11:55 363次阅读

    NB-IoT 倾角传感器:上海南京步行街广告牌的智能安全卫士

    直川科技ZCT330E2-SWP-N-YK NB-IoT倾角传感器,为上海南京东路步行街广告牌提供实时倾斜监测方案,替代传统人工巡检,24小时智能预警,低功耗续航5年,大幅提升安全响应
    的头像 发表于 04-23 10:04 1120次阅读
    <b class='flag-5'>NB-IoT</b> 倾角<b class='flag-5'>传感器</b>:上海南京步行街广告牌的<b class='flag-5'>智能</b>安全卫士

    无线通信模块的作用

    ,解决布线麻烦、距离远、移动设备无法接线的问题。 低功耗远距离通信 像 LoRa、NB-IoT 模块,适合电池供电、野外、地下室等远距离、难布线场景。 常见类型与用途 WiFi 模块:连路由
    发表于 04-22 15:03

    NB-IoT 倾角传感器:守护千年古建筑的智能防线

    直川科技以ZCT系列NB-IoT倾角传感器,为庐山普同塔等古建筑提供无损安装的实时倾斜监测方案,24小时智能预警,积累的历史数据支撑科学保护决策。该方案获多项专利,已落地龙华寺等场景,推动古建保护向数字化转型。
    的头像 发表于 04-22 10:20 454次阅读
    <b class='flag-5'>NB-IoT</b> 倾角<b class='flag-5'>传感器</b>:守护千年古建筑的<b class='flag-5'>智能</b>防线

    低功耗采集传感器联网,对接物联网平台

    自动化等。 一、核心构成 - 前端采集:温湿度、气压、加速度、霍尔、电流/电压等传感器/信号接口(模拟量/RS485等)。 - 主控与处理:低功耗MCU/SoC,含ADC、数据预处理、阈值触发与边缘智能。 -
    的头像 发表于 04-17 16:35 167次阅读

    直川科技 ZCT330M:NB-IoT 无线倾角传感器筑牢房屋安全监测防线

    直川科技ZCT330M-SWP-N-YKC1 NB-IoT无线倾角传感器,以NB-IoT广域传输、高精度双轴监测为核心,解决老旧房屋、古建筑的结构安全监测痛点。无需布线、低功耗长续航,
    的头像 发表于 04-08 10:30 344次阅读
    直川科技 ZCT330M:<b class='flag-5'>NB-IoT</b> 无线倾角<b class='flag-5'>传感器</b>筑牢房屋安全监测防线

    直川 NB-IoT 倾角传感器:益海嘉里智慧仓储的货架安全守护者

    益海嘉里(金龙鱼)为解决传统货架巡检时效性差、精度低的痛点,采用直川 ZCT330M-SWP-N-YK NB-IoT 倾角传感器,构建智能监测系统,实现高精度实时监测、低功耗长续航、多
    的头像 发表于 03-20 15:22 490次阅读
    直川 <b class='flag-5'>NB-IoT</b> 倾角<b class='flag-5'>传感器</b>:益海嘉里智慧仓储的货架安全守护者

    NB-IoT 倾角传感器赋能:施耐德实现仓储货架智能监测转型

    直川科技为施耐德电气部署ZCT330E NB-IoT无线倾角传感器,以0.005°高精度24小时监测货架形变,通过NB-IoT广域通信实现智能
    的头像 发表于 03-10 10:07 747次阅读
    <b class='flag-5'>NB-IoT</b> 倾角<b class='flag-5'>传感器</b>赋能:施耐德实现仓储货架<b class='flag-5'>智能</b>监测转型

    LoRa、LoRaWAN、NB-IoT、4G DTU 有什么区别? 工业无线方案选型分析

    把 5 个传感器(Modbus 协议)的数据传到 3 公里外的办公室。选哪个? 答案 : 高功率 LoRa 数传电台 。理由:有稳定电源,不怕功耗;没手机信号,不适合采用 NB-IoT 或 4G 方案
    发表于 03-09 17:19

    直川NB-IoT倾角传感器:伊利货架安全智能守护者

    传统人工监测货架效率低、隐患难察觉,直川科技为伊利集团定制NB-IoT无线倾角传感器(ZCT330E-SWP-N-YK),实时监测货架倾角变化,精准捕捉形变风险并报警,助力智能仓储高效安全管理。
    的头像 发表于 03-02 09:55 764次阅读
    直川<b class='flag-5'>NB-IoT</b>倾角<b class='flag-5'>传感器</b>:伊利货架安全<b class='flag-5'>智能</b>守护者

    掘金新蓝海!利尔达重磅推出NB-IoT全球通模组

    //截至2025年,全球已部署137张NB-IoT网络,中国市场占据了全球84%的连接数,海外则仍是一片充满机遇与挑战的广阔蓝海。近日,利尔达重磅推出基于移芯新一代平台的NB-IoT全球通模组
    的头像 发表于 09-11 18:02 1623次阅读
    掘金新蓝海!利尔达重磅推出<b class='flag-5'>NB-IoT</b>全球通<b class='flag-5'>模组</b>

    NB-IoT 网络对功耗的真实影响:Otii实测 Thales 模组的注册与连接行为全解析

    设备,网络注册过程变得极为复杂且能耗很高。 本文使用Thales(泰雷兹)的NB-IoT Cinterion EXS82 模组来演示网络注册对能耗的影响。 在自动模式下,设备总是尝试首先注册到SIM卡
    发表于 09-02 17:44

    NB-IoT无线模组咨询

    我们公司是做外贸的, 目前想配NB-IoT无线模组在设备上, 由于对NB-IoT无线模组不熟悉, 想咨询关于移远,利尔达等无线模组(对应Ba
    发表于 09-01 23:42

    电流传感器

    电流传感器的工作原理是基于易饱和芯(如铁或镍合金、坡莫合金等)的特性,用激励使之交变饱和,利用该交变磁场的饱和效应测量外部电流磁场的变化。如下图
    的头像 发表于 08-13 16:14 1881次阅读
    <b class='flag-5'>磁</b>通<b class='flag-5'>门</b>电流<b class='flag-5'>传感器</b>

    无线传感器核心工作原理

    LoRaWAN无线传感器,其利用分离感应原理,实时监控门窗开/合状态并通过无线 LoRaWAN
    的头像 发表于 08-04 08:50 1687次阅读
    无线<b class='flag-5'>门</b><b class='flag-5'>磁</b><b class='flag-5'>传感器</b>核心工作原理