周末两天深圳由于疫情开启了静默模式,因此没办法出去玩耍啦!既然没法出去,躺平是不可能的,那么,肝起来!此次给大家带来的一个开源项目:自适应曲线缩放传感器显示终端
,废话不多说,上视频:
这是刚开始做的效果:
新增加功能:开源仓库:
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仓库,敬请期待,好了,我要继续干活了!
-
传感器
+关注
关注
2550文章
51042浏览量
753105 -
开源
+关注
关注
3文章
3323浏览量
42473 -
Qt
+关注
关注
1文章
302浏览量
37899
原文标题:开源项目-十六进制协议传感器自适应缩放曲线显示终端(百问网imx6ull & 小熊派结合)
文章出处:【微信号:嵌入式应用研究院,微信公众号:嵌入式应用研究院】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论