概述
涂鴉智能 (NYSE:TUYA) 是一家致力于讓生活更智能的領(lǐng)先技術(shù)公司,涂鴉提供能夠智連萬(wàn)物的云平臺(tái),打造互聯(lián)互通的開(kāi)發(fā)標(biāo)準(zhǔn),連接品牌、OEM 廠商、開(kāi)發(fā)者、零售商和各行業(yè)的智能化需求,涂鴉的解決方案賦能并提升合作伙伴和客戶(hù)的產(chǎn)品價(jià)值,同時(shí)通過(guò)技術(shù)應(yīng)用使消費(fèi)者的生活更加便利,涂鴉智能的智慧商業(yè) SaaS 為豐富的垂直行業(yè)提供智能解決方案。涂鴉智能領(lǐng)先業(yè)界的技術(shù),符合嚴(yán)格的數(shù)據(jù)保護(hù)標(biāo)準(zhǔn)和安全性。
壓力傳感器是工業(yè)實(shí)踐中最為常用的一種傳感器,其廣泛應(yīng)用于各種工業(yè)自控環(huán)境,涉及水利水電、鐵路交通、智能建筑、生產(chǎn)自控、航空航天、軍工、石化、油井、電力、船舶、機(jī)床、管道等眾多行業(yè)。
同時(shí)壓力傳感器可以應(yīng)用于電子稱(chēng)重系統(tǒng)或者久坐系統(tǒng),實(shí)現(xiàn)了稱(chēng)重顯示、超限報(bào)警、校準(zhǔn)、適應(yīng)各種工作環(huán)境、遠(yuǎn)程實(shí)時(shí)監(jiān)控等多種功能,可以廣泛應(yīng)用于各種稱(chēng)重場(chǎng)景。
本章主要是將傳感器數(shù)據(jù)上報(bào)給涂鴉模組。
資料下載
https://download.csdn.net/download/qq_24312945/84796130
涂鴉智能
想更多了解涂鴉智能化開(kāi)發(fā)方案,獲取相關(guān)技術(shù)資料或開(kāi)發(fā)物料,可點(diǎn)擊下方報(bào)名參加,同時(shí)有30元優(yōu)惠券。。
涂鴉功能修改
由于我用的壓力傳感器HX711采集0-20kg,故可以修改一下,修改成如下所示。
壓力值上報(bào)
由于主程序中每過(guò)100ms執(zhí)行一次循環(huán),頻繁上報(bào)會(huì)導(dǎo)致mcu和涂鴉模塊的壓力過(guò)大,故設(shè)定3s上報(bào)一次。
由上圖也可以得知,壓力值的發(fā)送命令,故還需要定義一個(gè)發(fā)送的buff數(shù)組。
要注意數(shù)據(jù)長(zhǎng)度,0x08代表后面還有8個(gè)數(shù)據(jù),即功能指令應(yīng)該是0-0xFFFFFFFF,不過(guò)有效的只有0-0x4e20。
/* USER CODE BEGIN PV */
uint32_t Reported_pressure=0 ;//壓力值
uint32_t Reported_pressure_counter=0 ;//壓力值上報(bào)計(jì)數(shù)器,防止上報(bào)過(guò)快
uint8_t Buff8[15]={0x55,0xAA,0x00,0x07,0x00,0x08,0x02,0x02,0x00,0x04,0x00,0x00,0x00,0x00,0x00};//上報(bào)壓力值
/* USER CODE END PV */
在主程序中添加代碼,當(dāng)采集的數(shù)據(jù)為正壓力值時(shí)候正常上報(bào),在負(fù)壓力值時(shí)候?yàn)?,3s上報(bào)一次。
/***********讀取壓力傳感器值******************/
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;//負(fù)壓力值為0
}
Reported_pressure_counter++;//壓力值上報(bào)計(jì)數(shù)器,防止上報(bào)過(guò)快
if(Reported_pressure_counter==30)//3s上報(bào)一次
{
Reported_pressure_counter=0;//壓力值上報(bào)計(jì)數(shù)器,防止上報(bào)過(guò)快
Buff8[10]=0;//用不到,賦值為0
Buff8[11]=0;//用不到,賦值為0
Buff8[12]=Reported_pressure/256;
Buff8[13]=Reported_pressure%256;
Buff8[14]=0;//校驗(yàn)和賦值為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); //上報(bào)壓力值,向涂鴉模塊發(fā)送
HAL_UART_Transmit(&huart1,(uint8_t*)Buff8,15,0xFFFF); //上報(bào)壓力值,向涂鴉模塊發(fā)送
}
同時(shí)涂鴉模塊可能會(huì)想mcu詢(xún)問(wèn)壓力值,故需要在uart3_data()函數(shù)中添加判斷進(jìn)行上報(bào)。
else if(RX_BUFF[3]==0x06&&RX_BUFF[6]==0x02)//上報(bào)壓力值
{
HAL_UART_Transmit(&huart3,(uint8_t*)Buff8,13,0xFFFF); //上報(bào)壓力值,向涂鴉模塊發(fā)送
HAL_UART_Transmit(&huart1,(uint8_t*)Buff8,13,0xFFFF); //上報(bào)壓力值,向涂鴉模塊發(fā)送
}
壓力狀態(tài)上報(bào)
由于主程序中每過(guò)100ms執(zhí)行一次循環(huán),頻繁上報(bào)會(huì)導(dǎo)致mcu和涂鴉模塊的壓力過(guò)大,故設(shè)定3s上報(bào)一次。
同時(shí)設(shè)定壓力值為500g以下為alarm,超過(guò)為normal。
由上圖也可以得知,壓力值的發(fā)送命令,故還需要定義一個(gè)發(fā)送的buff數(shù)組。
/* USER CODE BEGIN PV */
uint8_t Buff9[12]={0x55,0xAA,0x00,0x07,0x00,0x05,0x01,0x04,0x00,0x01,0x00,0x00};//上報(bào)壓力值
/* USER CODE END PV */
在主程序中添加代碼,當(dāng)采集的數(shù)據(jù)為壓力值為500g以下正常上報(bào),在大于500g上報(bào)告警,3s上報(bào)一次。
/***********讀取壓力傳感器值******************/
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;//負(fù)壓力值為0
}
Reported_pressure_counter++;//壓力值上報(bào)計(jì)數(shù)器,防止上報(bào)過(guò)快
if(Reported_pressure_counter==30)//3s上報(bào)一次
{
Reported_pressure_counter=0;//壓力值上報(bào)計(jì)數(shù)器,防止上報(bào)過(guò)快
Buff8[10]=0;//用不到,賦值為0
Buff8[11]=0;//用不到,賦值為0
Buff8[12]=Reported_pressure/256;
Buff8[13]=Reported_pressure%256;
Buff8[14]=0;//校驗(yàn)和賦值為0
for(int i=0;i<14;i++)
{
Buff8[14]=Buff8[14]+Buff8[i];
}
HAL_UART_Transmit(&huart3,(uint8_t*)Buff8,15,0xFFFF); //上報(bào)壓力值,向涂鴉模塊發(fā)送
HAL_UART_Transmit(&huart1,(uint8_t*)Buff8,15,0xFFFF); //上報(bào)壓力值,向涂鴉模塊發(fā)送
//設(shè)定壓力值為500g以下為alarm,超過(guò)為normal
if(Reported_pressure>500)
Buff9[10]=0;
else
Buff9[10]=1;
Buff9[11]=0;//校驗(yàn)和賦值為0
for(int i=0;i<11;i++)
{
Buff9[11]=Buff9[11]+Buff9[i];
}
HAL_UART_Transmit(&huart3,(uint8_t*)Buff9,12,0xFFFF); //上報(bào)壓力值,向涂鴉模塊發(fā)送
HAL_UART_Transmit(&huart1,(uint8_t*)Buff9,12,0xFFFF); //上報(bào)壓力值,向涂鴉模塊發(fā)送
}
同時(shí)涂鴉模塊可能會(huì)想mcu詢(xún)問(wèn)壓力狀態(tài),故需要在uart3_data()函數(shù)中添加判斷進(jìn)行上報(bào)。
else if(RX_BUFF[3]==0x06&&RX_BUFF[6]==0x02)//上報(bào)壓力值
{
HAL_UART_Transmit(&huart3,(uint8_t*)Buff8,13,0xFFFF); //上報(bào)壓力值,向涂鴉模塊發(fā)送
HAL_UART_Transmit(&huart1,(uint8_t*)Buff8,13,0xFFFF); //上報(bào)壓力值,向涂鴉模塊發(fā)送
}
增值服務(wù)
在設(shè)置中可以開(kāi)啟短信通知,這樣在觸發(fā)壓力傳感器之后,就會(huì)給手機(jī)發(fā)送一條短信。
同時(shí)也會(huì)向手機(jī)發(fā)送告警信息。
審核編輯:湯梓紅
-
壓力傳感器
+關(guān)注
關(guān)注
35文章
2155瀏覽量
163315 -
涂鴉智能
+關(guān)注
關(guān)注
7文章
198瀏覽量
19447
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論