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

涂鴉模組開發(fā)(壓力傳感器HX711—2壓力傳感器HX711

涂鴉模組開發(fā)(壓力傳感器HX711)—3. 涂鴉模組數(shù)據(jù)通信

涂鴉模組開發(fā)(壓力傳感器)—4.上報傳感器數(shù)據(jù)給涂鴉模塊

涂鴉模組開發(fā)(壓力傳感器HX711)——1.模塊準(zhǔn)備

涂鴉模組開發(fā)(壓力傳感器HX711)——2.壓力傳感器HX711

涂鴉模組開發(fā)(壓力傳感器HX711)——3.涂鴉模組數(shù)據(jù)通信

評論