点击上方“嵌入式应用研究院”,选择“置顶/星标公众号

干货福利,第一时间送达!

来源 | 嵌入式应用研究院

整理&排版 | 嵌入式应用研究院

周末两天深圳由于疫情开启了静默模式,因此没办法出去玩耍啦!既然没法出去,躺平是不可能的,那么,肝起来!此次给大家带来的一个开源项目:自适应曲线缩放传感器显示终端,废话不多说,上视频:

这是刚开始做的效果:

新增加功能:

开源仓库:

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 小熊派结合)...相关推荐

  1. 【开源掌机】百问网DShanMCU-Mio开源掌机(爻-澪)项目,完美支持运行10多个模拟器!

    众筹说明 定金翻倍,即定金19.9元,在付尾款时可抵40元(成品售价不会超过120元)!达标当天就开搞,满100人加速搞尽量在年前发货,让大家先玩起来!如果不达标则原路退款,项目取消. 众筹时间:20 ...

  2. 【众筹】百问网DShanMCU-Mio开源掌机(爻-澪)项目,完美支持运行10多个模拟器!

    众筹说明 定金翻倍,即定金19.9元,在付尾款时可抵40元(成品售价不会超过120元)!达标当天就开搞,满100人加速搞尽量在年前发货,让大家先玩起来!如果不达标则原路退款,项目取消. 众筹时间:20 ...

  3. 违反开源项目GPL协议,法院判罚了!国内首例

    点击上方"码农突围",马上关注 这里是码农充电第一站,回复"666",获取一份专属大礼包 真爱,请设置"星标"或点个"在看 整理 ...

  4. 第一个开源项目---halcon图像显示控件(缩放/roi操作)

    终于下定决心将图像控件开源,欢迎下载及建议 地址 https://github.com/linyugang/VisionControl 项目依据halcon自带C#实例修改而成,相对于原生有以下优化 ...

  5. Android优秀开源项目

    Android经典的开源项目其实非常多,但是国内的博客总是拿着N年前的一篇复制来复制去,实在是不利于新手学习.今天爬爬把自己熟悉的一些开源项目整理起来,希望能对Android开发同学们有所帮助.另外, ...

  6. 2016年初Android开源项目总结

    Android经典的开源项目其实非常多,把自己熟悉的一些开源项目整理起来,希望能对Android开发同学们有所帮助 项目篇: 1.Apollo音乐播放器 就一个很好的播放器,但是实现的特别好!!! 地 ...

  7. 【收藏】Android开源项目和 框架

    Android四款系统架构工具      http://dev.yesky.com/281/35399281.shtml AOSP   http://source.android.com/index. ...

  8. 各种好的开源项目-转载

    1,豆瓣相册https://github.com/TonnyTao/DoubanAlbum 2,voa在线英语https://github.com/cubewang/NewsReader 3,电竞第一 ...

  9. 阿里成了冤大头??1亿美元收购的开源项目,核心团队出走造竞品,转头又卖了1个亿...

    鱼羊 发自 凹非寺 量子位 | 公众号 QbitAI 阿里这波遭"背刺"了: 花了1亿美元收购的开源项目,创始团队离职出走,结果二次创业项目不到一年又卖出去了. 关键是,这个二次创 ...

最新文章

  1. 与15级新加入团队同学的约定
  2. 陆奇新动向:将担任拼多多独立董事
  3. Ajax 中XmlHttp 乱码 的解决方法 (UTF8,GB2312 编码 解码)
  4. 开发人员学Linux(10):CentOS7安装配置代码质量管理平台SonarQube6.4
  5. 黑马程序员pink老师前端入门教程,零基础必看的h5(html5)+css3+移动端前端视频教程(精灵图,字体图标,技巧)
  6. spring boot中data truncation data too long for column问题
  7. 浅谈零样本网络表示学习
  8. linux 命令 空格转义,在Linux中,如何转义SCP复制路径中的空格?
  9. python教程下载百度云盘到手机_Python教程百度云盘哪里找
  10. Java基本数据类型的自动转换_彻底理解Java中的基本数据类型转换(自动、强制、提升)...
  11. sql:MySQL 6.7 表,视图,存储过程结构查询
  12. 又见程序媛 | 从索引的创建角度分析热门“面试题”
  13. ssh无密码登录设置
  14. 爬虫实例十二 沪深证券股票全站数据爬取
  15. Python实现截图AI文字识字小工具
  16. iSCSI客户端配置
  17. Virtual Private Network(虚拟专用网络隧道)详解
  18. PowerShell 实现批量下载文件
  19. Scala简介以及基本语法(一)
  20. 如何用漏斗模型进行数据分析

热门文章

  1. win32 CreateCompatibleDC
  2. 常用生物信息 ID的介绍
  3. 批量合成图片的小工具
  4. ImageMagick windows历史版本
  5. 如何将U盘作为虚拟光驱使用呢?
  6. winform DevExpress contextMenuStrip右键事件
  7. Java程序员必经的实践之路:docker离线导入镜像
  8. Python一看就懂系列(零)
  9. NSA,放开那头魔兽!
  10. WebGL Shader