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开发环境,快速搭建一款智能门磁传感器产品原型。

审核编辑:符乾江

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

    关注

    2574

    文章

    54382

    浏览量

    786128
  • mcu
    mcu
    +关注

    关注

    147

    文章

    18613

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

    无线传感器核心工作原理

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

    MEMS定向短节相较于传感器的优势在哪里?

      传感器得益于其的高精度和稳定性,在地质勘探、电流传感等静态磁场测量场合下被广泛应用。然而,
    的头像 发表于 07-07 14:30 470次阅读

    低功耗蓝牙模组功耗到底有多低

    ,那么可以得出,这个产品的使用寿命是:220mAh*0.8/9.8uA=2年的使用寿命。 工具链接如下,不仅可以用来评估BLE产品的功耗,蜂窝产品(cat-M、NB-IOT)、wifi产品方案,都可以快速
    发表于 05-27 22:37

    NB-IoT模组选型指南:2025十大NB窄带传输设备品牌厂家盘点与应用方案解析

    随着物联网(IoT)技术的不断发展,NB-IoT(窄带物联网)作为支持海量连接、低功耗、广覆盖的通信技术,正在推动智能设备和行业应用的全面升
    的头像 发表于 04-21 09:55 1207次阅读

    基于NB-IoT单灯控制的智慧路灯应用案例及效果分析

    基于NB-IoT单灯控制的智慧路灯应用案例及效果分析
    的头像 发表于 04-07 15:16 801次阅读
    基于<b class='flag-5'>NB-IoT</b>单灯控制<b class='flag-5'>器</b>的智慧路灯应用案例及效果分析

    关于Cat.1网络会取代NB-IoT技术吗?

    标准支持 :NB-IoT 是 5G 海量物联网(mMTC)的核心技术之一,长期受运营商支持。 超低功耗需求 :对电池供电设备(如烟感、追踪)仍是最佳选择。 政策推动 :中国等国家强制要求
    发表于 04-03 08:46

    Nordic NRF9151低功耗蜂窝模组 助力卫星物联网应用.

    的蜂窝物联网解决方案,具有业界领先的电池寿命性能。 nRF9151 模组已通过全球认证,支持 LTE-M、NB-IoT 和DECT NR+调制解调以及开放式应用 MCU 内核,带有 GNSS
    发表于 03-24 11:12

    LoRaWAN无线系统工作原理方案

    摘要 LoRaWAN无线是一种基于低功耗广域网(LPWAN)的智能安防设备,通过检测门窗开闭状态,结合LoRaWAN远距离通信技术,实现
    的头像 发表于 03-07 09:52 1040次阅读
    LoRaWAN无线<b class='flag-5'>门</b><b class='flag-5'>磁</b>系统工作原理方案

    安信可NB-IoT模组:体积小、功耗低、稳定可靠

    安信可3款NB-IoT系列模组:EC-01、EC-01G和EC-01F。搭载移芯EC616S芯片平台,超低成本、超低功耗和超高集成度的NB-IoT SoC芯片。 01搭载EC616S、
    的头像 发表于 03-06 08:48 915次阅读
    安信可<b class='flag-5'>NB-IoT</b><b class='flag-5'>模组</b>:体积小、<b class='flag-5'>功耗</b>低、稳定可靠

    NB-IOT物联网基站是如何通信的呢?

    、测试、应用和网络发展。 一、NB-IOT物联网网络组成有哪些呢? 包括NB-IOT终端、NB-IOT基站、NB-IOT分组核心网、物联网连接管理平台和工业应用服务
    的头像 发表于 01-02 15:55 2853次阅读
    <b class='flag-5'>NB-IOT</b>物联网基站是如何<b class='flag-5'>通信</b>的呢?

    芯讯通NB-IoT模组E7025 R3实现大规模部署

    作为全球知名物联网通信模组提供商,芯讯通拥有全制式、全品类模组产品线,所打造的产品已遍布全球五大洲,为各产业合作伙伴的终端通信连接提供助力。芯讯通推出的
    的头像 发表于 12-09 16:56 1555次阅读