变废为宝之DIY 甲醛测试仪 v1.0

嵌入式技术

1372人已加入

描述

       利用 MQ-138模块检测有机气体

然后利用 SSD1306定义的屏幕0.96来显示甲醛状态(第一版利用Nokia5110) 

再加上一个 DHT11进行温湿度的检测(第一版没有加入)

弄个触摸键盘进行温湿度信息和甲醛检测信息的切换(第一版未加入键盘)

加上 RTC 模块显示时间.(未加入)

然后用线性稳压 LDO 进行降压和稳压(使用 MP2359的芯片降压)

最后核心用 arduino 的328p 做核心,简易显示了模拟量,具体数值需要找公式计算.

核心板自己画一个,不做拼接了,不然做出来体积好大,目标体积是两节18650电池的大小. (已经完成)

电池盒要留出空间(已经完成)

利用3D打印机设计外壳, 如果有条件弄个激光打印机打一个贴纸.

步骤1:

先去搜一下各种传感器的 datasheet,了解一下特性,然后就有了下面这些 datasheet.

新的社区不知道哪里上传文件,所以只好给你们看看名字,自己搜索啦..

测试仪

原理图看完了就准备画图了...中间遇到很多问题, 首先是,我的苹果电脑上无法安装 AD, 跑虚拟机又觉得 windows 不习惯...

所以就安装了 eagle 这个开源的软件,其实还挺轻量级的,就是里面的封装和库都太老了... 很多都是直插...搞得我很多东西都要自己画封装...

中间省去各种折腾...终于原理图画好了!

原理图: 

测试仪

其实很简单的.你们应该一眼就看懂了.哈哈,没错~我就是用的 Atmel 的328p 的拆机芯片...

接着是 layout:

测试仪

比较丑, 各位高手, 大神手下留情,不要吐槽的太狠,这是第一版, 请别让我没有开发第二版的勇气...

我这个全开源哦,大家有兴趣都可以试着做做看..

然后各种焊接...慢工出细活儿...

话说这次打板花了我快一周的时间才拿到....之前元器件涨价比较凶..特别是电容..电阻...

还有一些瑕疵需要继续改进改进啊..

然后就是焊接....原则是,先焊小的,再焊大的,最后焊接直插件....哈哈

焊接完一定要用万用表测试一下是否短路, 一定, 一定, 一定要测试后再上电.

不然有可能遇到蘑菇云, 猛一点儿的直接一上午的工作白做了...

我使用 USB-ASP 直接下载到板子上的,没有安装 BootLoader, 因为没有引出串口. 

焊接了两个,但是只有一个 Nokia5110, 回家再找找,也准备去网上淘一下,估计价格低的出奇. 

你你如果想更小巧还可以试试 oled 的屏幕,那个看上去更高大上一些,当然了, 如果用 oled 成本也上去了.看个人的喜好了!

背面一个18650的大电池盒..

屏幕上去了,除了颜色有点儿不搭,其他的感觉还是很不错的..

再来点儿别的地方的谍照,背面看看效果,这个 mq138的传感器像不像测试酒驾的啊?

侧面也来个特写

顶部的特写,位置刚刚好,简单粗暴,还不带套~

两节之前笔记本电脑的电芯, 拆出来就是18650, 平时做树莓派小车的供电电源,今天来给我捧个电场...

开机后,需要稳定大概10秒的样子,然后读数就比较稳定了, 这个数值是我直接读取到的模拟值, 并不是甲醛的具体含量, 我查资料说 mq138品种好多..不知道这个模块是什么品种的, 我淘宝上淘来的,估计当时花了没几块钱...这个应该是最便宜的那种...

代码也非常简单:

/***************************************************************************

Created by: 骑驴玩儿漂移

License: GPL? No, 全开源! 随便你怎么折腾!

电路图和 bom 表回头放在 github 上(稍安勿躁)

***************************************************************************/

#include

#include

LCD5110 myGLCD(3, 4, 5, 6, 7);

extern uint8_t SmallFont[];

extern uint8_t MediumNumbers[];

extern uint8_t BigNumbers[];

float  mq138 = A0;

void setup(void)

{

pinMode(mq138, INPUT);

myGLCD.InitLCD();

}

void loop(void)

{

int a = 70;

myGLCD.clrScr();

myGLCD.setFont(SmallFont);

myGLCD.setContrast(a);

myGLCD.print("YOYOJACKY TECH", 0, 0);

myGLCD.print("Formaldehyde" , 0, 8);

myGLCD.print("CH2O Concent:", 0, 16);

float data = analogRead(A0);

if (data < 300.0)

{

myGLCD.printNumF(data, 2, 0, 24);

delay(200);

}

else {

myGLCD.print("Warning!!!", 12, 32);

delay(200);

}

}

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分