RT-Thread X STM32 全连接大赛 智能甲醛检测仪 作者: 乔季军 开发环境:RT-Thread Studio 硬件框架:基于RT-Thread 提供的ART-PI 开发板实现,详细硬件请参考项目设计文档 【RT-Thread作品秀】智能甲醛检测仪作者:乔季军 概述家里房子装修完已经快一年了,装修完一直保持着通风,最近回家住的比较频繁,每次回去住总还是觉得比较别扭,总担心屋里的甲醛会不会还是超标,自己总想着搞一个甲醛检测仪的装置来放到屋里,这样就能够实时查看到屋里面的甲醛浓度了。调研了一番,发现市面上的比较便宜的甲醛检测装置基本都不准确,于是乎自己便开始搜寻相关传感器,寻思着能否自己DIY一个甲醛检测装置,在给自己寻找乐子的同时,也能够做一个使用的物件。 通过调研发现,目前市面上检测甲醛的传感器主要分为两类,一类是半导体式,另一类是电化学式。半导体式甲醛传感器主要是根据甲醛散发到周围空气中,导致周围空气的导电率发生变化来感知甲醛浓度的,这一类传感器主要是根据导电率的特性来检测甲醛的,很容易收到其他环境因素的影响,例如周围湿度的变化也会导致空气的导电率发生改变,因此使用这种传感器测得甲醛浓度就没有太大的参考意义了,另外一种是电化学式传感器, 这种传感器上面有一层滤膜,用来过滤空气中的其他干扰杂质,传感器中包含有一种能够和甲醛发生反应的催化剂,当催化剂和甲醛接触时,就会形成电信号的波动,电信号的波动和甲醛浓度值的变化有一定的关系,因此使用这种传感器检测的甲醛浓度相对来讲会更准确一些。 笔者在调研完之后,选择了英国达特公司设计生产的WZ-S-K 型电化学式甲醛检测传感器,用用来检测甲醛浓度值,此外,还使用到了DHT11 温湿度传感器,用于检测周围环境的温湿度信息。 该智能甲醛检测仪主要实现甲醛检测及温湿度检测功能,检测到的数据通过LCD显示屏实时的显示出来,同时还能够将传感器数据上传到ONENET物联网平台,用来记录历史传感器数据,同时也能够利用这些数据信息和其他设备联动。 开发环境硬件:ART-PI、DHT11温湿度传感器、达特WZ-S-K型甲醛传感器 RT-Thread版本:4.0.3 开发工具及版本:RT-Thread Studio 2.0.0 甲醛传感器介绍WZ-S-K 型甲醛检测传感器模组是英国达特公司设计的一款基于电化学的甲醛检测传感器,具有测量精度高、响应速度快、使用寿命长、功耗低等特点。该传感器能够直接将周围环境中的甲醛含量转换为浓度值,通过串口标准化输出,这款甲醛检测传感器能够非常方便的集成到产品中去,适用于智能家居、便携式测量仪表等产品。 RT-Thread使用情况概述使用 RT-Thread 开发物联网应用的优势已经非常明显了,借助于RT-Thread 软件包生态,开发者只需要关系自己的应用逻辑即可。 该项目使用到许多RT-Thread 的软件包,具体请参考以下截图。 演示视频: 比赛感悟这次比赛,我使用RT-Thread 从头到尾设计了一款基本满足正常使用的甲醛检测设备。整体下来,觉得使用RT-Thread 物联网操作系统进行应用开发还是非常便捷的,借助于软件生态,可以大大缩短开发周期。 设计过程中主要有两部分内容需要攻克,一部分是关于甲醛浓度检测及单位换算部分,这部分查阅了一些资料,总觉得不太合理,传感器输出的浓度单位为ppb或ppm(1ppm=1000ppb),而作为我们日常使用中,比较容易理解的单位是 mg/m3 ,从 ppb 到 mg/m3 之间的换算,网上有很多种说法,其中我找到的最不合理的说法就是 1ppm = 1mg/m3。经过深入研究,发现这其实是化学单位中常用的几个不同的单位,这两个单位之间的换算还要结合不同物质的物质的量来进行计算,经过自己实际对比验证和联系供应商验证问题,最终得出的结论为甲醛浓度单位ppm和 mg/m3 之间的换算关系为: 1ppm = 0.74666 mg/m3 这种看着不起眼的单位换算,背后还是有一些知识点需要理解的,如果单单的将 1ppm 理解为 1mg/m3 的话,最终会造成读取的数据不准确,那么这样的甲醛检测仪也就没有什么设计的意义了。 第二部分内容就是关于LCD显示部分的GUI部分,这部分开发工作相对可查的资料比较多,开源的GUI也很对,网上针对ART-PI进行的GUI适配工作也有很多分享,笔者也亲自适配了lvgl这套开源的GUI,但是对于笔者,还是希望能够在设计过程中深入理解LCD驱动和GUI部分的原理,于是乎在开发过程中,笔者自己动手编写了GUI部分的画点、画线、绘制圆、绘制矩形、显示字符等函数,在编写过程中也参考了正点原子的GUI部分的代码,但是这对于我理解GUI部分的原理已经足够了,借此机会,我还设计了几个GUI的控件,用来显示一些传感器数
2022-04-06 14:31:36 7.31MB 传感器 物联网 diy制作 开源
1
该智能小车基于STC12LE5412AD单片机设计,硬件组成:反射式光电轨迹采样电路、MCU控制部分、直流电机 H 桥驱动器部分、小车USB下载 RF接口部分。 此项目为“寻迹小车”的升级,在结构上作了改进,码盘从10(20)个/圈提高到 50(100)个圈;同时,改进了电机的驱动防护逻辑,既能实现电机的四个状态,保证不短路,还可以使PWM控制的软件耗费大大减少,而且一个电机只需使用3个I/O口(原来为 4个)。其余没做大的改动,所以程序只要要修改的是电机驱动部分。 为了能使用PCA硬件实现PWM,以便于使用RTOS,暂时取消PWM的频率修改功能,日后有更好的方案再考虑。因为程序要支持寻迹的所有功能,所以将程序分成模块化,便于阅读和调试。 程序分为: 1) 主控程序 —— 调度所有消息,初始化系统 2) 电机驱动模块 —— 包含所有与电机驱动有关的函数,接受不同的控制命令,并付诸实施; 3) 轨迹采样模块 —— 包含所有与轨迹采样有关的处理,结果为与处理后的轨迹状态; 4) 走轨迹控制模块 —— 读取轨迹采样所获取的信息,根据需求和策略输出相应的电机控制命令;将调试的相关功能也纳入此模块。 循迹小车详细资料包括电路图、软件编程源码截图:
2022-04-05 14:06:23 585KB 智能小车 diy制作 电赛 电路方案
1
这个项目是关于Arduino电压表的简单介绍。进行此操作的主要原因是基于我的个人经验,当我在实验室中进行一个实验时,我找不到电压表,因此我做出了这种修改以满足我的要求,并且我认为它也会对其他人有所帮助。 对于初学者而言,这是一个很好的项目,它使用基本概念,但功能强大的完整工具。 在运行代码时,您可以在串行监视器上找到输出。 在这里,串行监视器将显示输出,即电压。 计算电压的公式: Vout = (Val * 5.0) / 1024.00; 在这些公式中,Val是Arduino读取为模拟输入的值,再乘以Arduino提供的电压即可得到Vout,将其除以每一位所覆盖的时间周期获得价值。 Vin = Vout / (R2/R1+R2) 通过此公式,我们可以找到Vin大约为0,这间接意味着我们正在建立地面。 注意:这里没有限制使用指定数量的电阻器,可以根据电阻器的可用性来改变它。 最终建议 如果一个电阻的阻值为R ohm,另一个电阻为R'ohm,则只需更改代码中的const。 警告:确保在测试过程中不要弄乱阳极和阴极部分,否则可能会损坏Arduino板。
2022-04-02 11:19:53 283KB diy制作 电路设计方案 Arduino 电路方案
1
个人收藏的多种天线pcb封装,2.4g/433m/915m/gps/gsm/wifi/rfid/nfc等pcb封装,增益高,方向性好,稳定可靠。
2022-03-23 22:12:07 2.1MB diy制作 pcb封装 天线调试 电路方案
1
在这个项目中,我将指导您通过arduino连接继电器,并以闪烁灯泡为例。
2022-03-23 08:18:10 145KB diy制作 电路设计方案 Arduino 电路方案
1
电感电容测量仪电路图概述: 说明一下单片机用AT89S52和STC89C52均可,都已经测试过,图中R3,R8,R5觉得测试电容精度,尽量接近图中阻值(非标准阻值需串联或并连电位器慢慢调),R8,R5的阻值是实际调试出来的,主要是切换的时候是通过的8550他的导通内阻不好确定,我实验中发现8R比较合适,大家可以自己调试出更合适的阻值。电容通过2N7002放电,2N7002为小功率nmos(开始设计的时候用的是8050,结果放电放不尽,大电容的时候io驱动不起来,后改用2级,也不稳定,最后选用的nmos效果非常不错),一般的小功率nmos都行(一般在MP3。MP4等数码产品中能找到),欢迎拍砖! 测量范围: 电容:分3档1pF-500nF,500nF-500uF,500uF-1F,误差<5% 电感:1uH-10H,误差<5% 预计目标: 1、达到上述量程。---已完成 2、实现自动挡电容测量。(目前是手动切换)。---进行中 3、开机自动调零。(不然测基准电容会有偏差,导致电感测量不准,目前是手动按键调零,会影响电感的测量)。---进行中 4、自动单位换算。比如当前电容单位pF,按下按键后变nF,再次按下变uF...直到F后返回当前单位pF。电感从uH-mH-H。---已部分完成。 5、实现小电容的高精度测量,由于测量电容采用充电发,导致测小电容(<100pF)时会有5-10p的跳动,越小越不准,故拟定用LC谐振的办法测小电容预计跳动<1pF。---构思中 注:图中最后一张测220uH时误差较大,可能是基准电容没采用cbb的(找不到了用了个瓷片的),导致测基准电感就不准,待整理完后公布给大家测试,欢迎拍砖! 有什么好的构思和建议也欢迎提出。开机界面: 看下里面的组装结构吧: 背面连线: 实际测量实物截图: 总结: 实现自动挡电容测量。(目前是手动切换)。---进行中 开机自动调零。(不然测基准电容会有偏差,导致电感测量不准,目前是手动按键调零,会影响电感的测量)。---已完成 自动单位换算。比如当前电容单位pF,按下按键后变nF,再次按下变uF...直到F后返回当前单位pF。电感从uH-mH-H。---整理中预计周天能上传。 实现小电容的高精度测量,由于测量电容采用充电发,导致测小电容(<100pF)时会有5-10p的跳动,越小越不准,用LC谐振的办法测小电容跳动<0.1pF。---已完成 使用说明: 1、校0,在电容档和高精度小电容档长按该键可以就行校0,(先已加入开机自动校0,一般不需使用。 2、档位切换,在电容档,按下改键会切换档位,从1pf-500nf 、500nf-500uf、500uf-1F三档中进行循环切换。 3、电容档/高精度小电容档/电感档切换,在电容档长按此按键切换至小电容档或按下电感电容切换按键切换至电感档,在小电容档长按可切换回电容档或按下电感电容切换按键切换至电感档。 原文出处:https://www.yleee.com.cn/thread-4235-1-1.html
2022-03-20 22:52:05 223KB diy制作 测量仪 电感 电容
1
这是国外发烧友的创意,自己diy的一个数字焊台,可以比美Weller(美国威乐,世界名牌)数字焊台。有兴趣的可以试试看。 数控焊台实物图展示:
2022-03-20 19:04:11 988KB diy制作 电路方案
1
本文档介绍的是HIFI音响DIY制作,根据功能该电路设计分为前级和后级功率放大两部分。 前级PCB 3D图片展示: 后级功放PCB 3D图片展示: 成果展示: 附件内容包括: 前级和后级电路设计原理图和PCB源文件,用AD软件打开; 该HIFI音响DIY制作流程图查看链接;
2022-03-19 09:28:51 1.29MB diy制作 电路方案
1
【RT-Thread作品秀】写字机器人作者:乔城阳 概述(说明应用产生的背景、实现功能)写字机器人在实际生产线上由于效率赶不上打印机,应用不是很广,然而由于其结构简单,成本低,并且符合人手写风格,在学习阶段很有价值。写字机器人设计上包含了路径规划、直线插补、加减速控制等常用电机运动控制算法,在软件上也会用到DXF文件解析、openCV图像处理等G代码生成工具,对后期深入研究激光切割机、雕刻机、3D打印机等大型设备有很好的铺垫作用。因此我的作品以写字机器人为题目分享我的制作过程和学习体验,希望对各位小伙伴的学习有所帮助。 开发环境(所采用的软、硬件方案)硬件:ART-PI、arduino、TM4C123GXL RT-Thread版本:3.14 开发工具及版本:MDK-ARM5.31、VSCode RT-Thread使用情况概述(简要总结下应用中RT-Thread使用情况:内核部分、组件部分、软件包部分、内核、其他)内核部分:线程调度,资源分配、同步通信、设备驱动框架 组件:DFS文件系统、UART串行异步通信、CAN通信 其他:UDP通信、cJSON编解码 硬件框架(概述应用所采用的硬件方案框图,并对核心部分做介绍)软件框架说明(介绍应用所采用的软件方案框图、流程图等,并加以解说)在写字机器人设计上我将其分为三个部分: 图像处理模块 运动控制模块 G代码生成模块 图像处理模块负责把文本图像和照片等图像文件做预处理,去除杂点,然后以合适的算法将图像二值化,突现主要信息,然后提取轮廓骨架以适合机器书写。 G代码生成模块将图像轮廓序列化后进行路径规划,选取一个适合的加工精度,然后按数控加工常用的G代码规范生成NC加工文件。另外对于标准的DXF文件则通过文件解析的方法生成G代码。 运动控制模块是写字机器人中最杂的一个模块,负责各个运动机构的精准快速移动。收到G代码指令后需要结合前后指令信息生成当前指令的合适初速度、最大运行速度,根据运动轨迹进行直线插补点,最后按SPTA梯形加减速算法向电机发出脉冲。 软件模块说明(介绍应用软件关键部分的逻辑、采用的实现方式等)Grbl是一种高性能低成本的开源CNC控制器,基于ATmega328型芯片输出高速精准的电机控制脉冲,完美支持各种标准G代码,并包含了完整的前瞻性加速控制,可以实现平稳的加速和无冲击的转弯动作。 正是由于grbl的前瞻性速度控制功能,所以要保证grbl控制器内一直保持着16-20个G代码指令。这需要ART-PI通过读取grbl控制器缓冲区状态,及时发送G代码指令,避免出现缓冲溢出和缓冲区为空等现象出现。 因此需要运行RT-thread实时操作系统,通读读取SD卡上的NC文件,并与grbl控制器通信,控制设备正常运行。另外RT-thread也可提供丰富的人机交互功能,将设备工作路径、进度等状态实时显示在屏幕上,也可以增加暂停续写等功能。 演示效果(演示效果请采用3张高清图片,并录制一段不少于1min视频解说应用所实现的效果,视频上传至B站或者腾讯视频或其他视频平台,给出链接即可)演示视频 比赛感悟同样是C代码,为什么别人写得那么好,这次比赛用到两个开源软件,一个是RT-thread,负责人机交互和发送控制指令,另一个是grbl,用来完成运动控制。两款软件都设计的非常精巧,只需在2kB大小的RAM上运行,而功能却又非常强大,实现了很多复杂的功能,所有的代码封装的很好,模块启用只需打开对应的宏定义即可。这次专门去图书馆借阅了RTT相关的图书,了解线程是如何调度,设备驱动应该怎么实现,但是内部还是有很多内容不理解,后期需要继续不断充实自己。运动控制一直是我的兴趣所在,这次也终于有机会把它实现,看着电机在一行行指令的控制下乖乖地转动,听着不断变化着频率的电机声音,真正体会到了伺服servo的含义,非常开心~
2022-03-16 20:05:03 1.33MB diy制作 rt-thread 电路设计方案 电路方案
1
本项目原本设计的是一个毫欧表,为了测试C8051F350的24bit ADC,顺便兼容了一个电压表功能。一个直流电压表最关键的有3个部分:模拟前端、ADC和基准电压。这里就做简短描述,详解附件的更详细的图文讲解。 五位半电压表参数特性: - 100mV/1000mV/10V/100V四个档位,大概有50%超量程余量 - 五位半显示,最大150000 count - 支持任意值校正,通过面板按钮即可校正。精度保守一点吧,0.01% Reading+4 LSB,后面有测试图 - Fast/Slow两档速度,Fast:10次/秒,Slow:1次/秒 - 数据从USB UART输出,波特率115200(目前只输出,不能从上位机控制) - 默认5分钟自动关机,可以关闭该功能 - 使用一节锂电池供电,支持从USB充电 - 支持背光,可以关闭 - 工作电流:17mA(背光关闭);44mA(背光打开)。一节14500(5号)锂电池可以连续工作1.5~2天(背光关闭) 五位半电压表实物截图: 模拟前端 模拟前端肩负了几个重要任务:输入信号的衰减或者放大/低通滤波/阻抗变换/防护。 大家都知道一般来说ADC只有一个量程,台式的一般是10/20V,手持的三位半或者四位半是200mV,这个称为基本量程,也是精度最高的量程,其他的量程都要把输入信号放大或者衰减到这个量程再来测量。这个表的基本量程是1V,而且由于MCU内置了PGA,因此模拟前端仅需要考虑衰减。 ADC 使用C8051F350内置的24bit ADC,这个在毫欧表里面已经说的比较多了。这个表再重温一下,在PGA=1,10Hz的条件下,RMS noise是2.38uV,峰峰值 noise为2.38*6.6=15.7uV,也就是1V档的1.5个LSB(五位半),大概看到两个数在跳(极端情况可能3个),在Slow模式下,把10个读数平均,提升log(10)/log(4)=1.66bit,2^1.66=3.16LSB,因此在Slow模式基本上不会跳数了(当然,由于舍入问题导致的最后一位跳是不能避免的)。 基准电压 这里可以使用C8051F350的内置基准(最大15ppm温度系数),或者外部基准可以用REF5025(工业级:2.5ppm(典型)/3ppm(最大)温度系数;商业级:3/8ppm)或者MAX6192(A级:2/5ppm;B级:4/10ppm;C级8/25ppm)。 使用内置和外置基准的frimware是不一样的,不能搞错。
2022-03-15 20:19:09 3.67MB 电压表 diy制作 电路方案
1