周末兩天深圳由于疫情開啟了靜默模式,因此沒辦法出去玩耍啦!既然沒法出去,躺平是不可能的,那么,肝起來!此次給大家帶來的一個開源項目:自適應曲線縮放傳感器顯示終端
,廢話不多說,上視頻:
這是剛開始做的效果:
新增加功能:開源倉庫:
https://github.com/Yangyuanxin/QT-Sensor
https://gitee.com/morixinguan/QT-Sensor
獲取方法:
gitclonehttps://github.com/Yangyuanxin/QT-Sensor
gitclonehttps://gitee.com/morixinguan/QT-Sensorg
該項目功能仍不完善,還需持續維護,敬請期待!
1、上位機部分
項目的上位機部分采用QT5開發,QT在嵌入式跨平臺應用來說真的是YYDS啦,因此界面和邏輯都可以在Window端開發完成,整體代碼結構如下:
最終選擇移植到的是韋東山老師的百問網imx6ull開發板,通信方式選擇USB虛擬串口來實現,即通過在Linux內核中配置虛擬串口,如下圖所示:
重新編譯內核,下載到開發板后,USB口就可以當串口來使用了!具體體現的設備節點是:
/dev/ttyUSB0
/dev/ttyACM0
/dev/tty...
我自己的板子上看到的是這樣的:
QT的上位機編寫完成以后需要進行交叉編譯,這樣才能夠移植到開發板上使用,具體步驟參考:
手把手之如何在嵌入式Linux上運行QT應用程序(以百問網imx6ull開發板為例)
另外,在使用這個程序的過程中發現LCD的背光太亮了,于是我就實現了一個調節背光的函數,這樣就可以讓背光降到較為舒適的亮度,具體實現如下:
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;
}
背光設置的亮度設置為3就可以了,不會因為屏幕太亮而傷眼睛。
2、設備端部分
設備端采用小熊派開發平臺+E53傳感器擴展板+自定義十六進制通信協議實現。整體代碼結構如下:
目錄設計思路請參考我之前的文章:
開發者成長激勵計劃-基于TencentOS Tiny FDM 3D打印機云控制系統方案
2.1、通信協議
幀頭 | 數據長度 | 傳感器類型 | 數據高位 | 數據低位 | 校驗和高位 | 校驗和低位 |
---|---|---|---|---|---|---|
1 Byte | 1 Byte | 1 Byte | 1 Byte | 1 Byte | 1 Byte | 1 Byte |
幀頭:固定為0xAA
數據長度:從傳感器模式一直到數據低位
傳感器類型:默認為0,即為MQ-2
氣體傳感器,具體類型如下表所示:
傳感器類型 | 含義 |
---|---|
0 |
E53_SF1 MQ-2 氣體傳感器 |
1 |
E53_SC1 Bh750 光強傳感器 |
2 | 待添加 |
3 | 待添加 |
數據高位:(AD_Value &0xFF00
) >> 8
數據低位:AD_Value &0x00FF
校驗和高位:((傳感器模式 + 數據高位 + 數據低位) &0xFF00
) >> 8
校驗和低位:(傳感器模式 + 數據高位 + 數據低位) &0x00FF
設備端默認以100ms
頻率上報。
2.2、結構體定義與數據打包
2.2.1、結構體定義
typedefstructSensorProtocol
{
uint8_tFrameHeader;//幀頭
uint8_tLength;//數據長度
uint8_tType;//傳感器類型
uint8_tValueHBit;//數據高位
uint8_tValueLBit;//數據低位
uint8_tChecksumHBit;//校驗和高位
uint8_tChecksumLBit;//校驗和低位
}SensorProtocol;
SensorProtocolProtocol;
2.2.2、數據打包
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;
}
目前設備端僅支持E53_SF1(MQ-2氣體傳感器)以及E53_SC1(光強傳感器),后續待持續添加。
后續,請持續關注Git倉庫,敬請期待,好了,我要繼續干活了!
-
傳感器
+關注
關注
2553文章
51390瀏覽量
756571 -
開源
+關注
關注
3文章
3402瀏覽量
42711 -
Qt
+關注
關注
1文章
308瀏覽量
38065
原文標題:開源項目-十六進制協議傳感器自適應縮放曲線顯示終端(百問網imx6ull & 小熊派結合)
文章出處:【微信號:嵌入式應用研究院,微信公眾號:嵌入式應用研究院】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論