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

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

3天内不再提示

涂鸦模组开发(压力传感器HX711)——4.上报传感器数据给涂鸦模块

嵌入式单片机MCU开发 来源:嵌入式单片机MCU开发 作者:嵌入式单片机MCU开 2022-11-16 10:55 次阅读

概述

涂鸦智能 (NYSE:TUYA) 是一家致力于让生活更智能的领先技术公司,涂鸦提供能够智连万物的云平台,打造互联互通的开发标准,连接品牌、OEM 厂商开发者、零售商和各行业的智能化需求,涂鸦的解决方案赋能并提升合作伙伴和客户的产品价值,同时通过技术应用使消费者的生活更加便利,涂鸦智能的智慧商业 SaaS 为丰富的垂直行业提供智能解决方案。涂鸦智能领先业界的技术,符合严格的数据保护标准和安全性。

压力传感器工业实践中最为常用的一种传感器,其广泛应用于各种工业自控环境,涉及水利水电、铁路交通、智能建筑、生产自控、航空航天、军工、石化、油井、电力、船舶、机床、管道等众多行业。

同时压力传感器可以应用于电子称重系统或者久坐系统,实现了称重显示、超限报警、校准、适应各种工作环境、远程实时监控等多种功能,可以广泛应用于各种称重场景。

本章主要是将传感器数据上报给涂鸦模组。

资料下载

https://download.csdn.net/download/qq_24312945/84796130

涂鸦智能

想更多了解涂鸦智能化开发方案,获取相关技术资料或开发物料,可点击下方报名参加,同时有30元优惠券。。

https://t.tuya.com/AY1D3R9jGr

涂鸦功能修改

由于我用的压力传感器HX711采集0-20kg,故可以修改一下,修改成如下所示。

在这里插入图片描述

压力值上报

由于主程序中每过100ms执行一次循环,频繁上报会导致mcu和涂鸦模块的压力过大,故设定3s上报一次。

在这里插入图片描述

由上图也可以得知,压力值的发送命令,故还需要定义一个发送的buff数组。

要注意数据长度,0x08代表后面还有8个数据,即功能指令应该是0-0xFFFFFFFF,不过有效的只有0-0x4e20。

/* USER CODE BEGIN PV */
uint32_t Reported_pressure=0 ;//压力值
uint32_t Reported_pressure_counter=0 ;//压力值上报计数器,防止上报过快
uint8_t Buff8[15]={0x55,0xAA,0x00,0x07,0x00,0x08,0x02,0x02,0x00,0x04,0x00,0x00,0x00,0x00,0x00};//上报压力值
/* USER CODE END PV */

在主程序中添加代码,当采集的数据为正压力值时候正常上报,在负压力值时候为0,3s上报一次。

/***********读取压力传感器值******************/		
		weight_shiji=ReadCount();
		if(weight_qupi>=weight_shiji)
		{
			weight_shiji=weight_qupi-weight_shiji;
			weight_shiji=weight_shiji/100;
//			printf("重量为:%dg",weight_shiji);
			Reported_pressure=weight_shiji;//正压力值正常赋值
		}
		else
		{
			weight_shiji=weight_shiji-weight_qupi;
			weight_shiji=weight_shiji/100;
//			printf("重量为:-%dg",weight_shiji);
			Reported_pressure=0;//负压力值为0
		}	

		
		
		Reported_pressure_counter++;//压力值上报计数器,防止上报过快
		if(Reported_pressure_counter==30)//3s上报一次
		{
			Reported_pressure_counter=0;//压力值上报计数器,防止上报过快
			Buff8[10]=0;//用不到,赋值为0
			Buff8[11]=0;//用不到,赋值为0
			Buff8[12]=Reported_pressure/256;
			Buff8[13]=Reported_pressure%256;
			Buff8[14]=0;//校验和赋值为0
			for(int i=0;i<14;i++)
			{
				Buff8[14]=Buff8[14]+Buff8[i];		
			}
			for(int i=0;i<12;i++)
			{
				Buff8[12]=Buff8[12]+Buff8[i];		
			}
			HAL_UART_Transmit(&huart3,(uint8_t*)Buff8,15,0xFFFF);	//上报压力值,向涂鸦模块发送
			HAL_UART_Transmit(&huart1,(uint8_t*)Buff8,15,0xFFFF);	//上报压力值,向涂鸦模块发送		
		}

同时涂鸦模块可能会想mcu询问压力值,故需要在uart3_data()函数中添加判断进行上报。

else if(RX_BUFF[3]==0x06&&RX_BUFF[6]==0x02)//上报压力值               
					{
					
						HAL_UART_Transmit(&huart3,(uint8_t*)Buff8,13,0xFFFF);	//上报压力值,向涂鸦模块发送
						HAL_UART_Transmit(&huart1,(uint8_t*)Buff8,13,0xFFFF);	//上报压力值,向涂鸦模块发送	
					}

在这里插入图片描述

压力状态上报

由于主程序中每过100ms执行一次循环,频繁上报会导致mcu和涂鸦模块的压力过大,故设定3s上报一次。

同时设定压力值为500g以下为alarm,超过为normal。

在这里插入图片描述

由上图也可以得知,压力值的发送命令,故还需要定义一个发送的buff数组。

/* USER CODE BEGIN PV */
uint8_t Buff9[12]={0x55,0xAA,0x00,0x07,0x00,0x05,0x01,0x04,0x00,0x01,0x00,0x00};//上报压力值

/* USER CODE END PV */

在主程序中添加代码,当采集的数据为压力值为500g以下正常上报,在大于500g上报告警,3s上报一次。

/***********读取压力传感器值******************/		
		weight_shiji=ReadCount();
		if(weight_qupi>=weight_shiji)
		{
			weight_shiji=weight_qupi-weight_shiji;
			weight_shiji=weight_shiji/100;
//			printf("重量为:%dg",weight_shiji);
			Reported_pressure=weight_shiji;//正压力值正常赋值
		}
		else
		{
			weight_shiji=weight_shiji-weight_qupi;
			weight_shiji=weight_shiji/100;
//			printf("重量为:-%dg",weight_shiji);
			Reported_pressure=0;//负压力值为0
		}	

		
		
		Reported_pressure_counter++;//压力值上报计数器,防止上报过快
		if(Reported_pressure_counter==30)//3s上报一次
		{
			Reported_pressure_counter=0;//压力值上报计数器,防止上报过快
			
			Buff8[10]=0;//用不到,赋值为0
			Buff8[11]=0;//用不到,赋值为0
			Buff8[12]=Reported_pressure/256;
			Buff8[13]=Reported_pressure%256;
			Buff8[14]=0;//校验和赋值为0
			for(int i=0;i<14;i++)
			{
				Buff8[14]=Buff8[14]+Buff8[i];		
			}
			HAL_UART_Transmit(&huart3,(uint8_t*)Buff8,15,0xFFFF);	//上报压力值,向涂鸦模块发送
			HAL_UART_Transmit(&huart1,(uint8_t*)Buff8,15,0xFFFF);	//上报压力值,向涂鸦模块发送
			
			//设定压力值为500g以下为alarm,超过为normal
			if(Reported_pressure>500)
				Buff9[10]=0;
			else
				Buff9[10]=1;
			Buff9[11]=0;//校验和赋值为0
			for(int i=0;i<11;i++)
			{
				Buff9[11]=Buff9[11]+Buff9[i];		
			}
			HAL_UART_Transmit(&huart3,(uint8_t*)Buff9,12,0xFFFF);	//上报压力值,向涂鸦模块发送
			HAL_UART_Transmit(&huart1,(uint8_t*)Buff9,12,0xFFFF);	//上报压力值,向涂鸦模块发送
					
		}

同时涂鸦模块可能会想mcu询问压力状态,故需要在uart3_data()函数中添加判断进行上报。

else if(RX_BUFF[3]==0x06&&RX_BUFF[6]==0x02)//上报压力值               
					{
					
						HAL_UART_Transmit(&huart3,(uint8_t*)Buff8,13,0xFFFF);	//上报压力值,向涂鸦模块发送
						HAL_UART_Transmit(&huart1,(uint8_t*)Buff8,13,0xFFFF);	//上报压力值,向涂鸦模块发送	
					}

在这里插入图片描述

增值服务

在设置中可以开启短信通知,这样在触发压力传感器之后,就会给手机发送一条短信。

在这里插入图片描述

在这里插入图片描述

同时也会向手机发送告警信息

在这里插入图片描述

审核编辑:汤梓红

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

    关注

    34

    文章

    2062

    浏览量

    162598
  • 涂鸦智能
    +关注

    关注

    6

    文章

    153

    浏览量

    19301
收藏 人收藏

    评论

    相关推荐

    压力传感器HX711的一些疑问,求解答

    想用20Kg量程的压力传感器HX711做一个电子秤,灵敏度是2.0mv/v,空载情况下怎么处理从HX711得出的数据使得LCD显示0KG呢?求助!!!
    发表于 05-24 21:34

    求一个用HX711压力传感器和STM32组合的开关程序

    想求一个用HX711压力传感器和STM32组合的开关程序,有压力时STM32的led亮,无压力时蜂鸣器响,最好有程序注解和接线方式
    发表于 07-25 09:29

    压力传感器模块5Kg电子秤开发教程

    基于HX711压力传感器模块的电子秤开发教程,简单易操作
    发表于 02-13 21:07

    HX711压力传感器模块-电子秤程序分享

    基于HX711压力传感器模块的电子秤程序分享
    发表于 02-13 21:12

    HX711模块怎么转单通道?HX711模块连接称重有四根线,怎么转两根线接压力传感器

    HX711模块连接称重4根接线,怎么转两根接线,让它连接压力传感器压力传感器只有两个接口。
    发表于 10-08 11:59

    stm32压力传感器的步进电机

    压力传感器测量平台上的压力,在将数字量传输给单片机,单片机控制步进电机正反转。且可通过串口1发送数据HX711HX711是一款专为高精度电
    发表于 06-29 06:35

    怎样去使用hx711压力传感器模块

    hx711是什么?怎样去使用hx711压力传感器模块呢?
    发表于 10-19 06:04

    STM32压力传感器信号采集-24位AD HX720 HX711原理是什么?

    STM32压力传感器信号采集-24位AD HX720 HX711原理是什么?
    发表于 01-27 07:01

    HX711压力传感器资料合集(含51的软件驱动代码即部分说明)

    HX711压力传感器资料合集(含51的软件驱动代码即部分说明)
    发表于 02-08 16:36 75次下载

    涂鸦模组开发压力传感器HX711)—1.模块准备

    的解决方案赋能并提升合作伙伴和客户的产品价值,同时通过技术应用使消费者的生活更加便利,涂鸦智能的智慧商业 SaaS 为丰富的垂直行业提供智能解决方案。涂鸦智能领先业界的技术,符合严格的数据保护标准和安全性。
    发表于 03-11 17:54 653次阅读
    <b class='flag-5'>涂鸦</b><b class='flag-5'>模组</b><b class='flag-5'>开发</b>(<b class='flag-5'>压力传感器</b><b class='flag-5'>HX711</b>)—1.<b class='flag-5'>模块</b>准备

    涂鸦模组开发(压力传感器HX711—2压力传感器HX711

    的解决方案赋能并提升合作伙伴和客户的产品价值,同时通过技术应用使消费者的生活更加便利,涂鸦智能的智慧商业 SaaS 为丰富的垂直行业提供智能解决方案。涂鸦智能领先业界的技术,符合严格的数据保护标准和安全性。
    发表于 03-14 14:29 2554次阅读
    <b class='flag-5'>涂鸦</b><b class='flag-5'>模组</b><b class='flag-5'>开发</b>(<b class='flag-5'>压力传感器</b><b class='flag-5'>HX711</b>—2<b class='flag-5'>压力传感器</b><b class='flag-5'>HX711</b>

    涂鸦模组开发压力传感器)—4.上报传感器数据涂鸦模块

    的解决方案赋能并提升合作伙伴和客户的产品价值,同时通过技术应用使消费者的生活更加便利,涂鸦智能的智慧商业 SaaS 为丰富的垂直行业提供智能解决方案。涂鸦智能领先业界的技术,符合严格的数据保护标准和安全性。
    发表于 03-14 15:42 586次阅读
    <b class='flag-5'>涂鸦</b><b class='flag-5'>模组</b><b class='flag-5'>开发</b>(<b class='flag-5'>压力传感器</b>)—<b class='flag-5'>4.</b><b class='flag-5'>上报</b><b class='flag-5'>传感器</b><b class='flag-5'>数据</b>给<b class='flag-5'>涂鸦</b><b class='flag-5'>模块</b>

    涂鸦模组开发压力传感器HX711)——1.模块准备

    压力传感器是工业实践中最为常用的一种传感器,其广泛应用于各种工业自控环境,涉及水利水电、铁路交通、智能建筑、生产自控、航空航天、军工、石化、油井、电力、船舶、机床、管道等众多行业。 同时压力传感器
    的头像 发表于 11-16 10:38 863次阅读
    <b class='flag-5'>涂鸦</b><b class='flag-5'>模组</b><b class='flag-5'>开发</b>(<b class='flag-5'>压力传感器</b><b class='flag-5'>HX711</b>)——1.<b class='flag-5'>模块</b>准备

    涂鸦模组开发压力传感器HX711)——2.压力传感器HX711

    压力传感器是工业实践中最为常用的一种传感器,其广泛应用于各种工业自控环境,涉及水利水电、铁路交通、智能建筑、生产自控、航空航天、军工、石化、油井、电力、船舶、机床、管道等众多行业。 同时压力传感器
    的头像 发表于 11-16 10:49 3472次阅读
    <b class='flag-5'>涂鸦</b><b class='flag-5'>模组</b><b class='flag-5'>开发</b>(<b class='flag-5'>压力传感器</b><b class='flag-5'>HX711</b>)——2.<b class='flag-5'>压力传感器</b><b class='flag-5'>HX711</b>

    涂鸦模组开发压力传感器HX711)——3.涂鸦模组数据通信

    压力传感器是工业实践中最为常用的一种传感器,其广泛应用于各种工业自控环境,涉及水利水电、铁路交通、智能建筑、生产自控、航空航天、军工、石化、油井、电力、船舶、机床、管道等众多行业。 同时压力传感器
    的头像 发表于 11-16 10:52 1403次阅读
    <b class='flag-5'>涂鸦</b><b class='flag-5'>模组</b><b class='flag-5'>开发</b>(<b class='flag-5'>压力传感器</b><b class='flag-5'>HX711</b>)——3.<b class='flag-5'>涂鸦</b><b class='flag-5'>模组</b><b class='flag-5'>数据</b>通信