当前位置:网站首页 > 编程语言 > 正文

时钟代码怎么编写出来(时钟代码怎么编写出来的)



前阵子开源了一个基于物联网操作系统的危险气体探测仪项目,这次,我们再来开源一个新的项目-甲醛检测仪,但是做项目之前,有必要了解下接下来要做的一些模块以及如何来进行集成。

WZ-S型甲醛检测模组是英国达特公司开发的,是用于将环境中甲醛的含量转换成浓度值,标准化数字输出,便于系统集成。

2、特点
3、典型应用场景
4、硬件引脚及技术指标
5、传感器通讯协议

该传感器采用的是串行通讯方式,也就是我们常用的串口,串口配置参数如下:

传感器在出厂后默认为主动上报,每隔1s上报一次浓度值,命令行格式如下:

一般情况下我们直接拿来用即可。

6、软件编程(以STM32为例)

以下开发板为TOS_EVB_GO开发板,也就是前阵子TencentOS公众号发表的一篇文章的那个,链接如下:

TOS_EVB_G0 开发板是由腾讯TencentOS-tiny团队设计的一款物联网开发板,板载资源如下:

基于该开发板编写的达特传感器驱动例程位于:

以上拓展模块是腾讯基于E53接口设计的一个传感器模块,所以小熊派也是支持的,如下:

由于在小熊派上使用比较顺手,所以现在我已经对它爱不释手了,无论是工作做实验还是平时练习,以下配置、编程基于小熊派开发板。

6.1、STM32CubeMX关于传感器的配置

配置DMA接收,个人习惯DMA+空闲中断的方式。

6.2、其它配置
6.2.1 时钟
6.2.2 SWD调试口
6.2.3 调试串口
6.2.4 SPI OLED配置

其余的部分直接复用之前文章的一些接口即可,然后生成工程:

6.3 程序编写

在程序编写之前先来了解一些基本的概念,有助于我们后面产品的实现。

(1)ppm、ppb、ppt是什么?

表达溶液的浓度时,1ppm=1ug/mL;表达固体中成分含量时,1ppm即为1ug/g或1g/t。

所以1ppb=1ppm的千分之一,ppm即百万分之一,ppb即1亿分之一,ppt即千亿分之一。

所以ppm是10的-6次方,ppb是10的-9次方,ppt是10的-12次方

(2)浓度及浓度单位换算

1ppm = 1000ppb

1ppb = 1000ppt

ppm 即:mg/L(毫克/升)

ppm 即:mg/L(毫克/升)

ppm 即:mg/L(毫克/升)

6.3.1 达特传感器通讯协议解析

由于达特甲醛传感器出厂时固定是发9个字节,所以我们可以直接用下面这个结构体来表示:

针对以上结构体我们很容易根据官方手册说明写出如下解析函数:

关于这个Data是怎么直接转结构体的,可以参考我的一位朋友邓工最近发表的一篇文章,里面图文并茂的说明了这种骚操作,文章链接如下,点击即可跳转:

在用户层次,用户不需要关心协议是怎么解析的,所以我们只需要给用户提供一个获取数据的结构体和函数即可,然后通过头文件提供给用户,而协议解析部分直接放在文件里就可以了,如下:

获取浓度函数的实现:

我看过的大多数浓度单位标识都是ppm,也就是xxx/mg/L的这种表示方法,所以这个接口就设计成下面这样。

6.3.2 达特传感器通讯库封装

既然用户不需要关心过程,那我们可以给这个简单的解析过程做一个lib,这样就相当于一个模块,提供.h和.lib即可,接下来建立一个STM32L431的工程,然后将.c和.h放在一个文件夹内,通过Keil包含进来

然后在Output下选择创建库,接下来点击编译即可生成:

注意,这里建立的这个库仅在该环境下适用。思考一下,如何做到平台通用呢?

6.3.3 案例编写

(1)开启串口空闲中断

(2)串口空闲中断处理 串口接收数据结构:

以下是数据采集过程,非常简单:

当接收到空闲中断时,代表数据已经接收到了,此时置1,代表数据已经接收完成。

(3)数据解析处理与应用逻辑 在while循环中编写如下代码:

如何判断接收到的这帧数据到底对不对呢?我们只需要根据协议手册判断前两个字节是否为0xff和0x17即可。

7、运行结果
8、指标衡量

模块咱们用起来了,如何判断来衡量甲醛含量的技术指标呢?下面这张图截的是淘宝上某个商家对检测标准的说明:

9、思考与练习

前面我开源了一个基于的危险气体探测仪项目,是否能在那个项目上稍微改改,变成一个新的产品级项目,让一个新项目:甲醛探测仪迅速开发出来呢?

淘宝上其实已经有很多优秀的产品案例,如下所示,界面做得相当漂亮了:

是否能做出一个跟以上界面类似的开源项目呢?

如下图所示,小熊派开源生态社区工作小组的阿正大佬已经做出来了一个类似的作品,给他点赞!

同时也希望更多热爱开源的小伙伴加入我们的小熊派开源生态社区工作小组,该工作小组为高质量社区,不同于一般群,只玩技术不闲聊,不接受潜水大佬,所以人不在多而在于精;无论小伙伴们玩的是什么平台(不局限于小熊派),只要是热爱开源,有创意有想法,乐于持续分享,且目前在码云/Github等社区有作品的玩家即可(私聊我的微信,拉你入群)

本节代码已同步到码云的代码仓库中,获取方法如下:

1、新建一个文件夹
2、使用git clone远程获取小熊派例程存放的代码仓库

项目开源仓库:

我还将之前做的一些项目以及练习例程在近期内全部上传完毕,与大家一起分享交流:

到此这篇时钟代码怎么编写出来(时钟代码怎么编写出来的)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 蓝牙地址(蓝牙地址怎么查)2026-03-08 20:00:07
  • 合并数组和非合并数组怎么区分(如何合并数组)2026-03-08 20:00:07
  • jhj是哪个明星(jh是哪位明星)2026-03-08 20:00:07
  • 预训练适应仪哪个牌子好(预适应训练仪禁忌人群)2026-03-08 20:00:07
  • 速排蚂蚁编辑器下载(速排小蚂蚁编辑器是什么)2026-03-08 20:00:07
  • 哔哩哔哩如何二维码登录(哔哩哔哩如何二维码登录另一个手机)2026-03-08 20:00:07
  • 安装虚拟机需要多大内存才能用(安装虚拟机需要多少空间)2026-03-08 20:00:07
  • pilows翻译成英语(pissed off翻译英文)2026-03-08 20:00:07
  • pfna是什么材料做的(fpp是什么材料)2026-03-08 20:00:07
  • 跨域步态是指什么意思(跨阈步态是什么步态)2026-03-08 20:00:07
  • 全屏图片