首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >开源项目-十六进制协议传感器自适应缩放曲线显示终端(百问网imx6ull & 小熊派结合)

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

作者头像
杨源鑫
发布于 2022-11-28 06:03:11
发布于 2022-11-28 06:03:11
70000
代码可运行
举报
文章被收录于专栏:嵌入式开发圈嵌入式开发圈
运行总次数:0
代码可运行

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

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

这是刚开始做的效果:

新增加功能:

开源仓库:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://github.com/Yangyuanxin/QT-Sensor
https://gitee.com/morixinguan/QT-Sensor

获取方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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口就可以当串口来使用了!具体体现的设备节点是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/dev/ttyUSB0
/dev/ttyACM0
/dev/tty...

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

QT的上位机编写完成以后需要进行交叉编译,这样才能够移植到开发板上使用,具体步骤参考:

手把手之如何在嵌入式Linux上运行QT应用程序(以百问网imx6ull开发板为例)

另外,在使用这个程序的过程中发现LCD的背光太亮了,于是我就实现了一个调节背光的函数,这样就可以让背光降到较为舒适的亮度,具体实现如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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、结构体定义
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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、数据打包
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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(光强传感器),后续待持续添加。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-09-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式应用研究院 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
STM32F103ZET–RFID-RC522使用例程(战舰版)
每每有陌生人加我就是问我要这个的工程,心累,文末有工程下载链接。希望再有人加我QQ是跟我聊技术,而不是:“大神,能发个工程给我吗?”
全栈程序员站长
2022/07/22
6930
RFID-RC522/STM32F103RB/KEIL5 简单实现读取卡片ID[通俗易懂]
在这篇文章【 https://blog.csdn.net/qq_28877125/article/details/80437095 】的基础上修改完成!
全栈程序员站长
2022/09/29
1.7K0
RFID-RC522/STM32F103RB/KEIL5 简单实现读取卡片ID[通俗易懂]
STM32–RFID无线射频技术(RC522刷卡模块)
 射频识别,即RFID是Radio Frequency Ident ificat ion的缩写,又称无线射频识别,是一.种通信技术,可通过无线电讯号识别特定目标并读写相关数据,而无需识别系统与特定目标之间建立机械或光学接触。一套完整RFID硬件统由Reader 与Transponder 两部份组成,其动作原理为由Reader 发射一特定频率之无限电波能量给Transponder,用以驱动Transponder电路将內部之ID Code送出,此时Reader便接收此ID Code Transponder的特殊在于免用电池、免接触、免刷卡故不怕脏污,且晶片密码为世界唯一无法复制, 安全性高、长寿命。
全栈程序员站长
2022/09/17
3.7K0
STM32–RFID无线射频技术(RC522刷卡模块)
基于STM32的RC522模块读写数据块以及电子钱包充值扣款系统的设计
本人也是正在学习单片机知识的萌新一枚,在这里记录下自己完成这个小设计的过程跟大家分享一下,也请大家指出我哪里还有不足可以改进的地方。秉着和大家一起学习进步发布了这篇文章
全栈程序员站长
2022/10/02
3.2K2
基于STM32的RC522模块读写数据块以及电子钱包充值扣款系统的设计
RC522(RFID模块)实践总结
此次使用RC522模块和S50卡实现近场通讯功能(开发板与RC522通讯方式为硬件SPI),就实践过程中的一些知识点进行总结:
全栈程序员站长
2022/07/22
3.8K0
RC522(RFID模块)实践总结
基于stm32门禁系统_老式门禁
RC522射频门禁识别模块非常常用,某宝卖家提供的程序基本都是使用软件模拟SPI的方式进行驱动的,但是实测使用软件模拟SPI识别速率、准确性没有硬件SPI驱动时高,因此本篇博客用于记录使用STM32硬件SPI驱动RC522门禁模块。
全栈程序员站长
2022/09/30
1K0
基于stm32门禁系统_老式门禁
Linux驱动开发-编写RFID-RC522射频刷卡模块驱动
MFRC522是应用于13.56MHz非接触式通信中高集成度的读写卡芯片,针对“三表”应用推出的一款低电压、低成本、体积小的非接触式读写卡芯片,是智能仪表和便携式手持设备研发的较好选择。便携式手持设备研发的较好选择。MFRC522利用了先进的调制和解调概念,集成了在13.56MHz下所有类型的被动非接触式通信方式和协议。支持14443A兼容应答器信号。数字部分处理ISO14443A帧和错误检测。此外,还支持快速CRYPTO1加密算法,用语验证MIFARE系列产品。MFRC522支持MI FARE系列更高速的非接触式通信,双向数据传输速率高达424kbit/s。作为13.56MHz高集成度读写卡系列芯片族的新成员,MFRC522与MF RC500和MFRC530有不少相似之处,同时也具备许多特点和差异。它与主机间通信采用SPI模式,有利于减少连线,缩小PCB板体积,降低成本。
DS小龙哥
2022/04/08
3.1K0
Linux驱动开发-编写RFID-RC522射频刷卡模块驱动
rfid-rc522使用教程_RFID读写方式是什么
我们常见的RC522大概如下所示,PCB部分是主机,然后白色的和绿色的都是IC卡,IC卡可以存储信息,通过靠近PCB主机部分就可以被感应到从而触发主机做出相应的动作,比如读取IC卡信息,写入数据等操作。
全栈程序员站长
2022/10/02
2.4K0
rfid-rc522使用教程_RFID读写方式是什么
i.MX283开发板SPI驱动——RC522
内核版本:2.6.35 Linux下SPI驱动和I2C驱动很类似,他们都是一种总线,且都不支持热拔插,因为一般情况下spi或者i2c设备都是直接焊接在板子上的,不像USB设备那样随时插拔,所以根据总线——设备——驱动模型,spi和i2c设备都可以通过xxx_board_info结构体进行注册,Linux下spi驱动的架构如下:
知否知否应是绿肥红瘦
2025/02/19
1670
i.MX283开发板SPI驱动——RC522
rfid-rc522模块中文资料_驱动模块
1.每张卡有唯一的序列号,32位 2.卡的容量是8Kbit的EEPROM 3.分为16个扇区,每个扇区分为4块,每块16个字节,以块为存取单位 4.每个扇区都有独立的一组密码和访问控制
全栈程序员站长
2022/11/04
3.6K1
rfid-rc522模块中文资料_驱动模块
STM32+MFRC522完成IC卡号读取、密码修改、数据读写
完整工程源码下载: https://download.csdn.net/download/xiaolong1126626497/18905806
DS小龙哥
2022/01/17
4.8K0
STM32+MFRC522完成IC卡号读取、密码修改、数据读写
基于STM32设计的校园一卡通项目
信息时代的校园, 离不开信息化的管理, 数字化"校园一卡通"建设是校园信息化建设的重要组成部分, 是为信息化校园提供信息采集的基础工程也是获取学校信息化服务的主要方式之一。
DS小龙哥
2022/01/06
1.5K0
基于STM32设计的校园一卡通项目
基于HL-1开发板开发RFID(RC522模块)射频电路基础
图片中重点写出引脚的相应接口名称。 —————————————————————手动分割线———————————————————–
全栈程序员站长
2022/09/14
1.3K0
基于HL-1开发板开发RFID(RC522模块)射频电路基础
RFID RC522门禁系统「建议收藏」
RFID RC522门禁系统说明: 基于51单片机的RFID RC522门禁系统的主要功能是,在本系统中主要是演示了RFID RC522门禁系统,在单片机内部的RAM中IDBUFFER中存了学号:1505106001对应 16进制就是5b b6 18 51 ;然后在RFID RC522开卡系统中,为第一张卡在块地址0x08处,写入了学号,当卡中的内容和单片机上的内容相配时,门打开。 具体程序如下所示: MAIN.C
全栈程序员站长
2022/10/02
9480
基于STM32的RFID-RC522门禁系统
这是一个基于STM32的RFID-RC522门禁系统,LCD1602显示当前状态,当检测到IC卡时,如果这个IC卡已经登记过,LCD1602上会显示IC卡的卡号,继电器打开,如果没有登记则报警。部分代码如下,需要源码的朋友可以在文章下方链接下载。
全栈程序员站长
2022/07/29
6880
RC522 射频读卡器模块(MINI型)
二、[主芯片介绍] MF RC522是应用于13.56MHz非接触式通信中高集成度的读写卡芯片,是NXP公司针对“三表”应用推出的一款低电压、低成本、体积小的非接触式读写卡芯片,是智能仪表和便携式手持设备研发的较好选择。 MF RC522利用了先进的调制和解调概念,完全集成了在13.56MHz下所有类型的被动非接触式通信方式和协议。支持14443A兼容应答器信号。数字部分处理ISO14443A帧和错误检测。此外,还支持快速CRYPTO1加密算法,用语验证MIFARE系列产品。MFRC522支持MIFARE系列更高速的非接触式通信,双向数据传输速率高达424kbit/s。 作为13.56MHz高集成度读写卡系列芯片家族的新成员,MF RC522与MF RC500和MF RC530有不少相似之处,同时也具备许多特点和差异。它与主机间通信采用连线较少的串行通信,且可根据不同的用户需求,选取SPI、IIC或串行UART模式之一,有利于减少连线,缩小PCB板体积,降低成本。
全栈程序员站长
2022/09/06
1.3K0
RC522 射频读卡器模块(MINI型)
单片机_MFRC522射频模块使用方法(含代码)
522模块总共有8个引脚,除去复位、GND接地、3.3V电源、NC端悬空、SCK时钟端,剩余3个引脚,起数据作用。
全栈程序员站长
2022/09/17
2.4K0
单片机_MFRC522射频模块使用方法(含代码)
rc522优点_51单片机rc522接线图
公司需要做刷卡模块,因此选了RC522做demo程序。下面就RC522知识做简要的总结。 本人使用stm32的硬件spi接口搭建工程,相关的配置如下: spi配置: 引脚配置 SDA ——-PA4 SCLK —-PB13 MOSI ——-PB15 MISO ——PB14 IRQ —没接 RST —- PB0
全栈程序员站长
2022/11/04
6680
rc522优点_51单片机rc522接线图
基于STM32设计的校园一卡通项目-详解原理
常用的IC卡一般是M1卡,也称为S50卡,购买RC522刷卡模块送的白卡,蓝色钥匙扣、公交卡、地铁卡都是S50卡。S50卡内部有16个分区,每分区有AB两组密码,总容量为8Kbit。
DS小龙哥
2022/05/11
1.2K0
基于STM32设计的校园一卡通项目-详解原理
stm32sd卡读写_stm32f103c8t6能干嘛
链接: https://pan.baidu.com/s/1Qob5o4tv0_gBXrRk6AvLSQ
全栈程序员站长
2022/11/04
4790
stm32sd卡读写_stm32f103c8t6能干嘛
推荐阅读
相关推荐
STM32F103ZET–RFID-RC522使用例程(战舰版)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验