955|1

190

帖子

2

资源

一粒金砂(高级)

【米尔MYD-YA15XC-T评测】+ 使用QT读取温湿度传感器数据 [复制链接]

本帖最后由 流行科技 于 2021-12-21 08:50 编辑

米尔MYC151使用报告+温湿度

 

 

本次在之前oled的基础上在测试下linux下的温湿度传感器,并通过QT界面实时显示读取数据,显示在曲线中,当然项目中也有很多不完善的地方,所以先发一个demo上来,后续可以继续增加新内容。

 

 

 

 

首先还是需要增加一下驱动的编译,这个网上也有许多的驱动源码,可以自己下载下来编译,和之前的编译过程一致,还是把Makeflie修改下。然后就能编译出。Ko文件了。

 

 

 

 

image-20211221084703-1.png  

 

 

 

 

想要使用这个,还需要修改下内核设备树,如下,在oled下增加sht20温湿度传感器的节点。

 

 

 

 

image-20211221084703-2.png  

 

 

 

 

之后我们关闭原有的桌面显示,和之前一致。

 

 

 

 

image-20211221084703-3.png  

 

 

 

 

查看下内核中的模块,这里说下,我们的QT是运行在SD卡中的,所以更新内核和设备树,以及把模块放入到文件系统中,都很方便,直接把卡拔下,插入虚拟机中即可看到所有文件,然后拷贝即可。

 

 

 

 

image-20211221084703-4.png  

 

 

 

 

现在目录中有文件了,只需执行加载驱动即可,如下:

 

 

 

 

image-20211221084703-5.png  

 

 

 

 

之后就可以开工编写qt端程序了,这里放出主要的函数代码,提供参考,需要我也可以打包上传。

 

 

 

 

#include "mainwindow.h"

#include "ui_mainwindow.h"





#define Plot2_DotColor QColor(236,110,0)

#define Plot2_LineColor QColor(246,98,0)

#define LineWidth 2

#define DotWidth 10



MainWindow::MainWindow(QWidget *parent) :

    QMainWindow(parent),

    ui(new Ui::MainWindow)

{

    ui->setupUi(this);

    dataCustomPlotInit();

    sht20_Init();



    mainTimer  = new QTimer(this);



    /* 信号与槽函数连接 */

    connect(mainTimer, SIGNAL(timeout()), this, SLOT(read_Sht20_data()));



    /* 开启定时器 */

    mainTimer->start(1000);   // 1ms秒更新一次



}



MainWindow::~MainWindow()

{

    delete ui;

}





void MainWindow::dataCustomPlotInit()

{

    QFont font;

//    font.setPointSize(12);

    /* 实例化,设置位置、背景颜色 */

    QBrush brush(QColor(50, 50, 50));

        dataCustomPlot = new QCustomPlot(ui->widget);

        dataCustomPlot->setGeometry(0, 0, 550, 300);

        dataCustomPlot->setBackground(brush);

        dataCustomPlot->installEventFilter(this);



        /* x轴、Y轴相关配置 */

        QPen pen(Qt::white);



        font.setPointSize(8);

        dataCustomPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom);      //可拖拽+可滚轮缩放

        dataCustomPlot->xAxis->setLabelColor(QColor(Qt::white)); // X轴上标识label字体颜色

        dataCustomPlot->yAxis->setLabelColor(QColor(Qt::white));

        dataCustomPlot->xAxis->setTickPen(pen);                  //  设置x轴上坐标点上对应的刻度线的颜色

        dataCustomPlot->xAxis->setTickLabelRotation(60);//设置标签角度旋转

        dataCustomPlot->yAxis->setTickPen(pen);

        dataCustomPlot->xAxis->setBasePen(pen);                  //  设置x轴 轴线本身的颜色

        dataCustomPlot->yAxis->setBasePen(pen);

        dataCustomPlot->xAxis->setTickLabelColor(QColor(Qt::white)); // 设置x轴刻度值文本的颜色

        dataCustomPlot->yAxis->setTickLabelColor(QColor(Qt::white));

        dataCustomPlot->xAxis->setSubTicks(false);  //  隐藏x轴刻度线

        dataCustomPlot->yAxis->setSubTicks(false);  //  隐藏y轴刻度线

        dataCustomPlot->xAxis->setLabelFont(font);  //  设置x轴标识label文本字体大小

        dataCustomPlot->yAxis->setLabelFont(font);  //  设置y轴标识label文本字体大小

        font.setPointSize(10);

        dataCustomPlot->xAxis->setTickLabelFont(font);

        dataCustomPlot->yAxis->setTickLabelFont(font);

        dataCustomPlot->xAxis->setLabel("时间");

        dataCustomPlot->yAxis->setLabel("温湿度");



        /* 增加一个数据曲线 */

        pen.setColor(Qt::yellow);    // 设置画笔的颜色

        dataCustomPlot->addGraph();                // 增加曲线图

        dataCustomPlot->graph(0)->setName("温度"); // 设置曲线的名字

        dataCustomPlot->graph(0)->setPen(pen);     // 设置曲线画笔的颜色

        dataCustomPlot->graph(0)->setLineStyle(QCPGraph::lsLine); // 设置连接线的类型 两点直线连接



        dataCustomPlot->graph(0)->setScatterStyle(              //绘制打出来的点

            QCPScatterStyle(QCPScatterStyle::ssCircle,

                            QPen(Plot2_DotColor, LineWidth),

                            QBrush(Plot2_DotColor), DotWidth));

        

         dataCustomPlot->graph(0)->rescaleAxes(false);



        pen.setColor(Qt::red);    // 设置画笔的颜色

        dataCustomPlot->addGraph();                // 增加曲线图

        dataCustomPlot->graph(1)->setName("湿度"); // 设置曲线的名字

        dataCustomPlot->graph(1)->setPen(pen);     // 设置曲线画笔的颜色

        dataCustomPlot->graph(1)->setLineStyle(QCPGraph::lsLine); // 设置连接线的类型 两点直线连接



//        dataCustomPlot->graph(1)->setScatterStyle(              //绘制打出来的点

//            QCPScatterStyle(QCPScatterStyle::ssCircle,

//                            QPen(Plot2_DotColor, LineWidth),

//                            QBrush(Plot2_DotColor), DotWidth));



        dataCustomPlot->graph(1)->rescaleAxes(false);

}



void MainWindow::sht20_Init()

{





    fd=open("/dev/sht2x",O_RDWR);

    if(fd<0)

    {

        printf("App:Open dev failed.\n");

//            goto END;

    }





}



void MainWindow::read_Sht20_data()

{

    char buf[50];

    static int now = 0;

    unsigned char tmp[5];

    unsigned short tempori,humiori;//温湿度原始数据

    float temp,humi;





        if(read(fd,tmp,5)>0)

        {

            // for(int i=0;i<4;i++)

            // {

            // printf("%.2x ",tmp);//打印收到的数据

            // }

            // printf("\n");



            tempori=(tmp[0]<<8|tmp[1]);

            humiori=(tmp[2]<<8|tmp[3]);



            temp=-46.85+175.72/65536*(float)tempori;

            humi=-6.0  +125.0 /65536*(float)humiori;



            printf("SHT2x-T:%f RH:%f%%\n",temp,humi);



//            qDebug() << temp;

        }



        now++;

        dataCustomPlot->graph(0)->addData(now, temp);         //addData(double key, double value);原型





        dataCustomPlot->graph(1)->addData(now, humi);         //addData(double key, double value);原型



        dataCustomPlot->replot();



}

 

 

 

 

这里面主要是使用了定时器,以及数据曲线显示的qcustomplot

 

 

 

 

 

 

 

 

 

image-20211221084703-6.png  

 

 

 

 

新拉出一个widget用于显示曲线。

 

 

 

 

image-20211221084703-7.png  

 

 

 

 

文档大致目录。这个还是基于之前的hello world做的。

 

 

 

 

最后效果如下:

 

 

 

 

image-20211221084703-8.jpeg    QQ图片20211221084953.gif

 

 


回复

2万

帖子

71

资源

管理员

显示效果不错

个人签名

不管是哪年,都要加油!继续为中国电子行业做出小小的贡献吧! 扣扣 1206973913


回复
您需要登录后才可以回帖 登录 | 注册

相关帖子
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
    关闭
    站长推荐上一条 1/10 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表