开源项目-十六进制协议传感器自适应缩放曲线显示终端(百问网imx6ull & 小熊派结合)

简介: 开源项目-十六进制协议传感器自适应缩放曲线显示终端(百问网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、上位机部分

640.png

640.png

项目的上位机部分采用QT5开发,QT在嵌入式跨平台应用来说真的是YYDS啦,因此界面和逻辑都可以在Window端开发完成,整体代码结构如下:

640.png

最终选择移植到的是韦东山老师的百问网imx6ull开发板,通信方式选择USB虚拟串口来实现,即通过在Linux内核中配置虚拟串口,如下图所示:

640.png

重新编译内核,下载到开发板后,USB口就可以当串口来使用了!具体体现的设备节点是:

/dev/ttyUSB0
/dev/ttyACM0
/dev/tty...

我自己的板子上看到的是这样的:

640.png

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传感器扩展板+自定义十六进制通信协议实现。整体代码结构如下:

640.png

目录设计思路请参考我之前的文章:

开发者成长激励计划-基于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机械手掌项目

目录
打赏
0
0
0
0
70
分享
相关文章
从零开始的PICO开发教程(4)-- VR世界 射线传送、旋转和移动
这篇文章是PICO开发系列教程的第四部分,详细介绍了在VR世界中实现射线传送、视角旋转和人物移动的方法,包括使用Teleportation组件进行区域传送和锚点传送,通过Snap Turn Provider组件实现视角快速旋转,以及创建PlayControl脚本来控制人物移动,并通过手柄与脚本组件的交互来增强VR体验。
Ardupilot — EKF3使用TOF作为高度源代码梳理
Ardupilot — EKF3使用TOF作为高度源代码梳理
146 1
【史上最全面esp32教程】激超声波模块测距篇
【史上最全面esp32教程】激超声波模块测距篇
787 0
【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验二十九:LCD模块
实验二十九:LCD模块 据说Alinx 301支持 7”TFT,好奇的朋友一定疑惑道,它们3.2”TFT以及7”TFT等两者之间究竟有何区别呢?答案很简单,前者自带控制器也有图像内存。换之,后者好似缩小版台式的液晶,它除了接口以外什么也没有。
1533 0
基于小熊派光强传感器BH1750状态机驱动项目再度升级(带上位机曲线显示)
基于小熊派光强传感器BH1750状态机驱动项目再度升级(带上位机曲线显示)
93 0
【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验二十八:TFT模块 - 触屏
实验二十八:TFT模块 - 触屏 读者在上一个实验所玩弄过的 TFT LCD模块,除了显示大小为 320 × 240,颜色为16位RGB的图像信息以外,它还支持触屏。所谓触屏就是鼠标还有键盘以外的输入手段,例如现在流行平板还有智能手机,触屏输入对我们来说,已经成为日常的一部分。
1039 0
【史上最全面esp32教程】激光与食人鱼模块篇
【史上最全面esp32教程】激光与食人鱼模块篇
263 0
【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验二十七:TFT模块 - 显示
实验二十七:TFT模块 - 显示 所谓TFT(Thin Film Transistor)就是众多LCD当中,其中一种支持颜色的LCD,相较古老的点阵LCD(12864笑),它可谓高级了。黑金的TFT LCD除了320×240大小以外,内置SSD1289控制器,同时也是独立模块。
966 0
启明云端分享| 基于ESP32-S2模块的彩屏86盒应用有哪些吸睛之处呢
WT-86-32-3ZW1 是一款多接口可视触控 86 型智能开关面板,配备 esp32-S2 处理器,支持高达 240 MHz 的时钟频率。原生音频功效是 8Ω 1W(支持 4Ω 3W 的音频外放)。
331 0
启明云端分享| 基于ESP32-S2模块的彩屏86盒应用有哪些吸睛之处呢
巧用千寻位置GNSS软件|CAD功能全解析
千寻位置GNSS软件中的CAD功能,用于已有 CAD的图形的导入和编辑,并且可以对 CAD图形已有线条进行线放样,在日常测绘工作中十分常见。下面向各位介绍CAD功能的使用技巧。 点击【测量】->【CAD】,进入 CAD功能如图 5.3-1所示。以下详细介绍此界面。点 击【3D】,进入 3D视图,如图 5.3-2所示。
巧用千寻位置GNSS软件|CAD功能全解析

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等