周末兩天深圳由于疫情開啟了靜默模式,因此沒辦法出去玩耍啦!既然沒法出去,躺平是不可能的,那么,肝起來!此次給大家?guī)淼囊粋€開源項目:自適應(yīng)曲線縮放傳感器顯示終端
,廢話不多說,上視頻:
這是剛開始做的效果:
新增加功能:開源倉庫:
https://github.com/Yangyuanxin/QT-Sensor
https://gitee.com/morixinguan/QT-Sensor
獲取方法:
gitclonehttps://github.com/Yangyuanxin/QT-Sensor
gitclonehttps://gitee.com/morixinguan/QT-Sensorg
該項目功能仍不完善,還需持續(xù)維護(hù),敬請期待!
1、上位機(jī)部分
項目的上位機(jī)部分采用QT5開發(fā),QT在嵌入式跨平臺應(yīng)用來說真的是YYDS啦,因此界面和邏輯都可以在Window端開發(fā)完成,整體代碼結(jié)構(gòu)如下:
最終選擇移植到的是韋東山老師的百問網(wǎng)imx6ull開發(fā)板,通信方式選擇USB虛擬串口來實現(xiàn),即通過在Linux內(nèi)核中配置虛擬串口,如下圖所示:
重新編譯內(nèi)核,下載到開發(fā)板后,USB口就可以當(dāng)串口來使用了!具體體現(xiàn)的設(shè)備節(jié)點是:
/dev/ttyUSB0
/dev/ttyACM0
/dev/tty...
我自己的板子上看到的是這樣的:
QT的上位機(jī)編寫完成以后需要進(jìn)行交叉編譯,這樣才能夠移植到開發(fā)板上使用,具體步驟參考:
手把手之如何在嵌入式Linux上運(yùn)行QT應(yīng)用程序(以百問網(wǎng)imx6ull開發(fā)板為例)
另外,在使用這個程序的過程中發(fā)現(xiàn)LCD的背光太亮了,于是我就實現(xiàn)了一個調(diào)節(jié)背光的函數(shù),這樣就可以讓背光降到較為舒適的亮度,具體實現(xiàn)如下:
intMainWindow::SetBacklight(intLevel)
{
intRet=-1;
FILE*Fp=NULL;
charBuf[10]={0};
Fp=fopen("/sys/class/backlight/backlight/brightness","w");
if(NULL==Fp)
{
printf("fopenbacklightdevfail!
");
return-1;
}
snprintf(Buf,sizeof(Buf),"%d",Level);
Buf[strlen(Buf)]='';
Ret=fwrite(Buf,strlen(Buf)+1,1,Fp);
if(1!=Ret)
{
printf("fwritefail!
");
return-1;
}
fflush(Fp);
fclose(Fp);
Fp=NULL;
return0;
}
背光設(shè)置的亮度設(shè)置為3就可以了,不會因為屏幕太亮而傷眼睛。
2、設(shè)備端部分
設(shè)備端采用小熊派開發(fā)平臺+E53傳感器擴(kuò)展板+自定義十六進(jìn)制通信協(xié)議實現(xiàn)。整體代碼結(jié)構(gòu)如下:
目錄設(shè)計思路請參考我之前的文章:
開發(fā)者成長激勵計劃-基于TencentOS Tiny FDM 3D打印機(jī)云控制系統(tǒng)方案
2.1、通信協(xié)議
幀頭 | 數(shù)據(jù)長度 | 傳感器類型 | 數(shù)據(jù)高位 | 數(shù)據(jù)低位 | 校驗和高位 | 校驗和低位 |
---|---|---|---|---|---|---|
1 Byte | 1 Byte | 1 Byte | 1 Byte | 1 Byte | 1 Byte | 1 Byte |
幀頭:固定為0xAA
數(shù)據(jù)長度:從傳感器模式一直到數(shù)據(jù)低位
傳感器類型:默認(rèn)為0,即為MQ-2
氣體傳感器,具體類型如下表所示:
傳感器類型 | 含義 |
---|---|
0 |
E53_SF1 MQ-2 氣體傳感器 |
1 |
E53_SC1 Bh750 光強(qiáng)傳感器 |
2 | 待添加 |
3 | 待添加 |
數(shù)據(jù)高位:(AD_Value &0xFF00
) >> 8
數(shù)據(jù)低位:AD_Value &0x00FF
校驗和高位:((傳感器模式 + 數(shù)據(jù)高位 + 數(shù)據(jù)低位) &0xFF00
) >> 8
校驗和低位:(傳感器模式 + 數(shù)據(jù)高位 + 數(shù)據(jù)低位) &0x00FF
設(shè)備端默認(rèn)以100ms
頻率上報。
2.2、結(jié)構(gòu)體定義與數(shù)據(jù)打包
2.2.1、結(jié)構(gòu)體定義
typedefstructSensorProtocol
{
uint8_tFrameHeader;//幀頭
uint8_tLength;//數(shù)據(jù)長度
uint8_tType;//傳感器類型
uint8_tValueHBit;//數(shù)據(jù)高位
uint8_tValueLBit;//數(shù)據(jù)低位
uint8_tChecksumHBit;//校驗和高位
uint8_tChecksumLBit;//校驗和低位
}SensorProtocol;
SensorProtocolProtocol;
2.2.2、數(shù)據(jù)打包
voidSensorProcolPacket(uint8_tType,uint16_tval)
{
Protocol.FrameHeader=0xAA;
Protocol.Length=sizeof(Protocol.Type)+
sizeof(Protocol.ValueHBit)+
sizeof(Protocol.ValueLBit);
Protocol.Type=Type;
Protocol.ValueHBit=(val&0xFF00)>>8;
Protocol.ValueLBit=val&0x00FF;
Protocol.ChecksumHBit=((Protocol.Type+
Protocol.ValueHBit+
Protocol.ValueLBit)&0xFF00)>>8;
Protocol.ChecksumHBit=(Protocol.Type+
Protocol.ValueHBit+
Protocol.ValueLBit)&0x00FF;
}
目前設(shè)備端僅支持E53_SF1(MQ-2氣體傳感器)以及E53_SC1(光強(qiáng)傳感器),后續(xù)待持續(xù)添加。
后續(xù),請持續(xù)關(guān)注Git倉庫,敬請期待,好了,我要繼續(xù)干活了!
-
傳感器
+關(guān)注
關(guān)注
2550文章
51035瀏覽量
753063 -
開源
+關(guān)注
關(guān)注
3文章
3309瀏覽量
42471 -
Qt
+關(guān)注
關(guān)注
1文章
302瀏覽量
37899
原文標(biāo)題:開源項目-十六進(jìn)制協(xié)議傳感器自適應(yīng)縮放曲線顯示終端(百問網(wǎng)imx6ull & 小熊派結(jié)合)
文章出處:【微信號:嵌入式應(yīng)用研究院,微信公眾號:嵌入式應(yīng)用研究院】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論