智能家居DIY-空气质量检测篇-获取温度和湿度篇
目录
前言
话说楼主终于升级当爸了,宝宝现在5个月了,宝宝出生的时候是冬天,正是魔都空气污染严重的时候,当时就想搞个自动开启空气净化器,由于种种原因一直没有时间搞,最近终于闲下来了这个事情终于提上议程了,现在是夏天,空气都还行,各种空气质量相关电子产品都打折,正是动手的好时机。
计划的主要功能有:
- 自动检测空气质量(pm2.5,Pm10)
- 自动检测温度,湿度,气压
- 定时上传空气质量数据到服务器,并通过手机App显示
- 当空气质量差的时候自动开启空气净化器并报警提示关窗
- 当空气质量净化完毕后自动关闭空气净化器
架构
计划使用ardunio连接空气质量传感器,温度,湿度,气压传感器,通过wifi模块通过http上传到服务器后台,服务器采用.net mvc架构。app使用网站提供的接口获取数据并显示
计划使用的硬件有:
Ardunio mini pro
攀藤G5 空气质量传感器
继电器
温湿度传感器
气压传感器
WIFI模块
电源模块
有些朋友可能会问为啥用ardunio pro mini,主要有两个原因,一个便宜,一个性能够用。
空气质量传感器使用攀藤的原因主要是该传感器市场反馈性能不错,经过试验确实性能不错,另外一个就是现在买便宜:-)
电源模块为啥要用两个的原因是部分传感器使用3.3v电压,部分传感器使用5v电压,计划使用交流转5v模块获得5V点,然后5v电再接一个降压模块获得3.3v电
我会用一系列的文章来记载我这次的DIY,有兴趣的朋友可以加我扣扣-1942916494,大家一起探讨。
获取温度和湿度
温度和湿度传感器使用的是 “AOSONG AM2320”, 这个传感器的特点是进度高,价格实惠
硬件连接
AM2320一共有4个接口,1接5v电源,2接ardunio的A4,3接地线,4接ardunio的A5
连接电脑
ardunio mini pro需用FTDI-232连接电脑,连线 ardunio vcc - ftdi vcc, ardunio gnd - ftdi gnd, ardunio tx - ftdi rx, ardunio rx - ftdi tx, ardunio rst - ftdi rst
如果已经用降压模块连接了ardunio的电源,不要接vcc和gnd,如果已经用降压模块连接了ardunio的电源,不要接vcc和gnd,如果已经用降压模块连接了ardunio的电源,不要接vcc和gnd
接好后,把ftdi连接到电脑的usb上,如果是第一次连接会安装驱动,装好后,会虚拟出一个com口
我的是com5
编写代码
使用官方IDE编写代码,下载地址:https://www.arduino.cc/en/Main/Software
可以下载绿色版,解压缩就能用
打开后界面是这样的
点工具,开发板选择ardunio mini or ardunio mini pro,端口选择虚拟出来的那个com口。
下载AM2320 ardunio支持库
https://github.com/Ten04031977/AM2320-master
导入库到Ardunio IDE中
ardunio IDE中点击项目-加载库-添加一个zip库,选择下载下来的zip文件即可
编写代码
打开上一次的文件或者新建一个文件,拷贝下面的代码到ardunio IDE中
#include <Wire.h>
#include <AM2320.h> #include <SoftwareSerial.h> SoftwareSerial pm25Serial(, ); // RX, TX AM2320 th; //新增 struct _panteng {
unsigned char len[];
unsigned char pm1_cf1[];
unsigned char pm2_5_cf1[];
unsigned char pm10_0_cf1[];
unsigned char pm1_0[];
unsigned char pm2_5[];
unsigned char pm10_0[];
unsigned char d[];
} panteng; float caiqarr[] = {,,,,,,,};
float cpm10arr[] = {,,,,,,,};
float cpm25arr[] = {,,,,,,,}; int caculateAiq(float * aiqarr, float * contaminatarr,int val , int size)
{
int findidx = ;
for(int i=findidx;i<size;i++,findidx++)
{
if(contaminatarr[i] >= val)
break;
} if(findidx >= size)
return (int)aiqarr[size - ]; float aiq = (aiqarr[findidx]-aiqarr[findidx - ]) / (contaminatarr[findidx] - contaminatarr[findidx - ]) * (val - contaminatarr[findidx - ]) + aiqarr[findidx - ];
return (int)aiq;
} void setup() {
// put your setup code here, to run once:
Serial.begin(); //USB串口向PC发送数据
pm25Serial.begin(); //软串口连接传感器 pinMode(, OUTPUT);//内置led digitalWrite(, HIGH);
delay();
digitalWrite(, LOW);
delay();
digitalWrite(, HIGH);
delay();
digitalWrite(, LOW);
} void loop() {
// put your main code here, to run repeatedly: unsigned char c;
char str[];
static int state = ;
static int count = ;
static int time = ;
int pm1_0, pm2_5, pm10_0; //PM1.0、PM2.5、PM10
int i; while (pm25Serial.available()) {
c = pm25Serial.read(); // say what you got:
//Serial.print("I received: ");
//Serial.println(c, DEC);
//Serial.println("read");
switch (state) {
case :
if (0x42 == c)
{
digitalWrite(, HIGH); //开始读取亮灯
state = ;
}
break;
case :
if (0x4d == c) {
state = ;
count = ;
//Serial.println(' ');
}
break;
case :
((unsigned char *) &panteng)[count++] = c;
sprintf(str, "%02X ", c); if (count > ) {
state = ;
pm1_0 = panteng.pm1_0[] * + panteng.pm1_0[];
pm2_5 = panteng.pm2_5[] * + panteng.pm2_5[];
pm10_0 = panteng.pm10_0[] * + panteng.pm10_0[]; int pm25aiq = caculateAiq(caiqarr,cpm25arr,pm2_5,);
int pm10aiq = caculateAiq(caiqarr,cpm10arr,pm10_0,);
sprintf(str, "%d\t%d\t%d\t%d\t%d\t%d", time++, pm1_0, pm2_5, pm10_0, pm25aiq, pm10aiq);
Serial.println(str); snprintf(str, , "PM2.5=%d ", pm2_5);
//新增
if(th.Read()==)
{
Serial.print("humidity: ");
Serial.print(th.h);
Serial.print("%, temperature: ");
Serial.print(th.t);
Serial.println("*C");
}
digitalWrite(, LOW); //结束读取熄灯
}
break;
default:
break;
}
} }
点击上传,IDE会自动编译,并上传代码到ardunio中。
上传完毕后,点击工具,串口监视器,在弹出的窗口中就可以看到当前的空气质量和当前的温度和湿度了
强行插入硬广告
http://www.51bilin.com/,比利牛汇聚全网优惠,为您网购省钱,自动采集当前各大电商最优惠的活动,购物前搜一搜,帮您省钱,提供Chrome插件,android客户端,iOS客户端即将推出。
智能家居DIY-空气质量检测篇-获取温度和湿度篇的更多相关文章
- DIY 空气质量检测表
DIY 空气质量检测表 前几天逛淘宝看到有空气颗粒物浓度测量的传感器,直接是 3.3V TTL 电压串口输出的,也不贵,也就 100 多一点.觉得挺好就买了个,这两天自己捣鼓了个小程序,搞了个软件界面 ...
- 智能家居DIY-空气质量检测篇-获取空气污染指数
前言 话说楼主终于升级当爸了,宝宝现在5个月了,宝宝出生的时候是冬天,正是魔都空气污染严重的时候,当时就想搞个自动开启空气净化器,由于种种原因一直没有时间搞,最近终于闲下来了这个事情终于提上议程了,现 ...
- 智能家居DIY
近期智能家居比較火,将房子简单改造下,也算体验智能家居. 本文解说的是用无线的方式,长处是:不用改造现有线路,直接安装模块就可以实现想要的功能,花的钱也较少,共六百左右 =============== ...
- Arduino 各种模块篇 粉尘传感器 dust sensor 空气质量检测
Testing a sensor from here. http://www.seeedstudio.com/wiki/Grove_-_Dust_Sensor It's a dust sensor. ...
- scrapy下载中间件结合selenium抓取全国空气质量检测数据
1.所需知识补充 1.下载中间件常用函数 process_request(self, request, spider): 当每个request通过下载中间件是,该方法被调用 process_reque ...
- 从零开始 DIY 智能家居 - 智能开窗器
前言 做完智慧浇水器之后对这种可以节省时间和精力的场景总有一种谜之向往(懒鬼是这样的),这次我准备做一个可以自动开窗的装置,结合之前的甲醛检测传感器就可以实现甲醛含量过高自动开窗通风,之后还可以把燃气 ...
- 基于ZigBee和STM32的智能家居控制系统的设计与实现(三)
基于ZigBee和STM32的智能家居控制系统的设计与实现(三) 自从前两篇博客介绍了智能家居系统的基本实现机理后,收到了好多朋友的来信,和我讨论了好多的这方面的知识,在此很高兴,虽然自己做的这个所谓 ...
- DIY智能家居——零基础入门篇
概要 本文主要根据笔者从零开始接触硬件,以小白视角开启IoT探索,根据相关资料DIY一个温湿度传感器.后经过探索发现新大陆--Home Assistant&Homebridge,最终实现了一个 ...
- 智能家居系统 Home Assistant 系列 --介绍篇
一. HomeAssistant 是什么? HomeAssistant是构建智慧空间的神器.是一个成熟完整的基于 Python 的智能家居系统,设备支持度高,支持自动化(Automation).群组化 ...
随机推荐
- 转:android实时语音问题分析
转:http://ticktick.blog.51cto.com/823160/1746136 PigeonCall:一款Android VoIP网络电话App架构分析 2016-02-29 20:1 ...
- 倍福TwinCAT(贝福Beckhoff)基础教程2.2 TwinCAT常见类型使用和转换_结构体
在DUTs文件夹上右击添加结构体,结构体中可以放基本变量类型,也可以嵌套其他结构体 使用的时候,需要声明结构体的实例,然后按照类.属性的格式来读写变量,会有代码的自动提示 你也可以声明数组,类 ...
- mac查看端口占用
Mac OS/Linux命令查询网络端口占用情况 netstat命令 netstat -an | grep 3306 3306替换成需要grep的端口号 lsof命令 通过list open fi ...
- Linux学习笔记 (三)Vi文本编辑器
vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令.由于对Unix及Linux系统的任何版本,vi编辑器是完全相 ...
- Oracle基础 自定义函数
一.函数 函数与存储过程相似,也是数据库中存储的已命名PL-SQL程序块.函数的主要特征是它必须有一个返回值.通过return来指定函数的返回类型.在函数的任何地方可以通过return express ...
- CPC23-4-K. 喵喵的神数 (数论 Lucas定理)
喵喵的神∙数 Time Limit: 1 Sec Memory Limit: 128 MB Description 喵喵对组合数比較感兴趣,而且对计算组合数很在行. 同一时候为了追求有后宫的素养的生活 ...
- Hive命令行经常使用操作(数据库操作,表操作)
数据库操作 查看全部的数据库 hive> show databases ; 使用数据库default hive> use default; 查看数据库信息 hive > descri ...
- shell脚本通过ping命令来获取平均延时
#!/bin/bash #设置环境变量 PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin" exp ...
- 按“开始”-“运行”,或按WIN+R,在[运行]窗口中输入
command--------CMD命令提示符 ipconfig查看本机IP chkdsk.exe-----Chkdsk磁盘检查 certmgr.msc----证书管理实用程序 calc--- ...
- [转]const指针与指向const的指针
经常忘记,保存一下.. #include <iostream> using namespace std; int main(int argc, char *argv[]) { ; int ...