开源项目-十六进制协议传感器自适应缩放曲线显示终端(百问网imx6ull 小熊派结合)...
点击上方“嵌入式应用研究院”,选择“置顶/星标公众号”
干货福利,第一时间送达!
来源 | 嵌入式应用研究院
整理&排版 | 嵌入式应用研究院
周末两天深圳由于疫情开启了静默模式,因此没办法出去玩耍啦!既然没法出去,躺平是不可能的,那么,肝起来!此次给大家带来的一个开源项目:自适应曲线缩放传感器显示终端
,废话不多说,上视频:
这是刚开始做的效果:
新增加功能:
开源仓库:
https://github.com/Yangyuanxin/QT-Sensor
https://gitee.com/morixinguan/QT-Sensor
获取方法:
git clone https://github.com/Yangyuanxin/QT-Sensor
git clone https://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的背光太亮了,于是我就实现了一个调节背光的函数,这样就可以让背光降到较为舒适的亮度,具体实现如下:
int MainWindow::SetBacklight(int Level)
{int Ret = -1;FILE *Fp = NULL;char Buf[10] = {0};Fp = fopen("/sys/class/backlight/backlight/brightness", "w");if(NULL == Fp){printf("fopen backlight dev fail!\n");return -1;}snprintf(Buf, sizeof(Buf), "%d", Level);Buf[strlen(Buf)] = '\0';Ret = fwrite(Buf, strlen(Buf) + 1, 1, Fp);if(1 != Ret){printf("fwrite fail!\n");return -1;}fflush(Fp);fclose(Fp);Fp = NULL;return 0;
}
背光设置的亮度设置为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、结构体定义
typedef struct SensorProtocol
{uint8_t FrameHeader; //帧头uint8_t Length; //数据长度uint8_t Type; //传感器类型uint8_t ValueHBit; //数据高位uint8_t ValueLBit; //数据低位uint8_t ChecksumHBit; //校验和高位uint8_t ChecksumLBit; //校验和低位
}SensorProtocol;
SensorProtocol Protocol;
2.2.2、数据打包
void SensorProcolPacket(uint8_t Type, uint16_t val)
{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仓库,敬请期待,好了,我要继续干活了!
往期精彩
深圳云之手科技开源炫酷RGB灯板DIY项目
开源STM32产品:无线点菜宝使用评测
STM32F103产品级开源项目:iLook.Time设计解读
一个超酷的开源uHand2.0机械手掌项目
觉得本次分享的文章对您有帮助,随手点[在看]
并转发分享,也是对我的支持。
开源项目-十六进制协议传感器自适应缩放曲线显示终端(百问网imx6ull 小熊派结合)...相关推荐
- 【开源掌机】百问网DShanMCU-Mio开源掌机(爻-澪)项目,完美支持运行10多个模拟器!
众筹说明 定金翻倍,即定金19.9元,在付尾款时可抵40元(成品售价不会超过120元)!达标当天就开搞,满100人加速搞尽量在年前发货,让大家先玩起来!如果不达标则原路退款,项目取消. 众筹时间:20 ...
- 【众筹】百问网DShanMCU-Mio开源掌机(爻-澪)项目,完美支持运行10多个模拟器!
众筹说明 定金翻倍,即定金19.9元,在付尾款时可抵40元(成品售价不会超过120元)!达标当天就开搞,满100人加速搞尽量在年前发货,让大家先玩起来!如果不达标则原路退款,项目取消. 众筹时间:20 ...
- 违反开源项目GPL协议,法院判罚了!国内首例
点击上方"码农突围",马上关注 这里是码农充电第一站,回复"666",获取一份专属大礼包 真爱,请设置"星标"或点个"在看 整理 ...
- 第一个开源项目---halcon图像显示控件(缩放/roi操作)
终于下定决心将图像控件开源,欢迎下载及建议 地址 https://github.com/linyugang/VisionControl 项目依据halcon自带C#实例修改而成,相对于原生有以下优化 ...
- Android优秀开源项目
Android经典的开源项目其实非常多,但是国内的博客总是拿着N年前的一篇复制来复制去,实在是不利于新手学习.今天爬爬把自己熟悉的一些开源项目整理起来,希望能对Android开发同学们有所帮助.另外, ...
- 2016年初Android开源项目总结
Android经典的开源项目其实非常多,把自己熟悉的一些开源项目整理起来,希望能对Android开发同学们有所帮助 项目篇: 1.Apollo音乐播放器 就一个很好的播放器,但是实现的特别好!!! 地 ...
- 【收藏】Android开源项目和 框架
Android四款系统架构工具 http://dev.yesky.com/281/35399281.shtml AOSP http://source.android.com/index. ...
- 各种好的开源项目-转载
1,豆瓣相册https://github.com/TonnyTao/DoubanAlbum 2,voa在线英语https://github.com/cubewang/NewsReader 3,电竞第一 ...
- 阿里成了冤大头??1亿美元收购的开源项目,核心团队出走造竞品,转头又卖了1个亿...
鱼羊 发自 凹非寺 量子位 | 公众号 QbitAI 阿里这波遭"背刺"了: 花了1亿美元收购的开源项目,创始团队离职出走,结果二次创业项目不到一年又卖出去了. 关键是,这个二次创 ...
最新文章
- 与15级新加入团队同学的约定
- 陆奇新动向:将担任拼多多独立董事
- Ajax 中XmlHttp 乱码 的解决方法 (UTF8,GB2312 编码 解码)
- 开发人员学Linux(10):CentOS7安装配置代码质量管理平台SonarQube6.4
- 黑马程序员pink老师前端入门教程,零基础必看的h5(html5)+css3+移动端前端视频教程(精灵图,字体图标,技巧)
- spring boot中data truncation data too long for column问题
- 浅谈零样本网络表示学习
- linux 命令 空格转义,在Linux中,如何转义SCP复制路径中的空格?
- python教程下载百度云盘到手机_Python教程百度云盘哪里找
- Java基本数据类型的自动转换_彻底理解Java中的基本数据类型转换(自动、强制、提升)...
- sql:MySQL 6.7 表,视图,存储过程结构查询
- 又见程序媛 | 从索引的创建角度分析热门“面试题”
- ssh无密码登录设置
- 爬虫实例十二 沪深证券股票全站数据爬取
- Python实现截图AI文字识字小工具
- iSCSI客户端配置
- Virtual Private Network(虚拟专用网络隧道)详解
- PowerShell 实现批量下载文件
- Scala简介以及基本语法(一)
- 如何用漏斗模型进行数据分析