智能家居DIY-空气质量检测篇-获取温度和湿度篇

目录

智能家居DIY-空气质量检测篇-获取空气污染指数

前言

话说楼主终于升级当爸了,宝宝现在5个月了,宝宝出生的时候是冬天,正是魔都空气污染严重的时候,当时就想搞个自动开启空气净化器,由于种种原因一直没有时间搞,最近终于闲下来了这个事情终于提上议程了,现在是夏天,空气都还行,各种空气质量相关电子产品都打折,正是动手的好时机。

计划的主要功能有:

  1. 自动检测空气质量(pm2.5,Pm10)
  2. 自动检测温度,湿度,气压
  3. 定时上传空气质量数据到服务器,并通过手机App显示
  4. 当空气质量差的时候自动开启空气净化器并报警提示关窗
  5. 当空气质量净化完毕后自动关闭空气净化器

架构

计划使用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(8, 9); // RX, TX

AM2320 th; //新增

struct _panteng {
  unsigned char len[2];
  unsigned char pm1_cf1[2];
  unsigned char pm2_5_cf1[2];
  unsigned char pm10_0_cf1[2];
  unsigned char pm1_0[2];
  unsigned char pm2_5[2];
  unsigned char pm10_0[2];
  unsigned char d[20];
} panteng;

float caiqarr[8]  = {0,50,100,150,200,300,400,500};
float cpm10arr[8] = {0,50,150,250,350,420,500,600};
float cpm25arr[8] = {0,35,75,115,150,250,350,500};

int caculateAiq(float * aiqarr, float * contaminatarr,int val , int size)
{
  int findidx = 1;
  for(int i=findidx;i<size;i++,findidx++)
  {
    if(contaminatarr[i] >= val)
      break;
  }

  if(findidx >= size)
    return (int)aiqarr[size - 1];

    float aiq  = (aiqarr[findidx]-aiqarr[findidx - 1]) / (contaminatarr[findidx] - contaminatarr[findidx - 1]) * (val - contaminatarr[findidx - 1]) + aiqarr[findidx - 1];
    return (int)aiq;
}

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);        //USB串口向PC发送数据
  pm25Serial.begin(9600);        //软串口连接传感器

  pinMode(13, OUTPUT);//内置led

   digitalWrite(13, HIGH);
   delay(1000);
    digitalWrite(13, LOW);
    delay(1000);
      digitalWrite(13, HIGH);
      delay(1000);
    digitalWrite(13, LOW);
}

void loop() {
  // put your main code here, to run repeatedly:

  unsigned char c;
  char str[100];
  static int state = 0;
  static int count = 0;
  static int time = 0;
  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 0:
        if (0x42 == c)
        {
          digitalWrite(13, HIGH); //开始读取亮灯
          state = 1;
        }
        break;
      case 1:
        if (0x4d == c) {
          state = 2;
          count = 0;
          //Serial.println(‘ ‘);
        }
        break;
      case 2:
        ((unsigned char *) &panteng)[count++] = c;
        sprintf(str, "%02X ", c);

        if (count > 28) {
          state = 0;
          pm1_0 = panteng.pm1_0[0] * 256 + panteng.pm1_0[1];
          pm2_5 = panteng.pm2_5[0] * 256 + panteng.pm2_5[1];
          pm10_0 = panteng.pm10_0[0] * 256 + panteng.pm10_0[1];

          int pm25aiq = caculateAiq(caiqarr,cpm25arr,pm2_5,8);
          int pm10aiq =  caculateAiq(caiqarr,cpm10arr,pm10_0,8);
          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, 16, "PM2.5=%d    ", pm2_5);
//新增
           if(th.Read()==0)
           {
              Serial.print("humidity: ");
            Serial.print(th.h);
            Serial.print("%, temperature: ");
            Serial.print(th.t);
            Serial.println("*C");
           }
          digitalWrite(13, LOW); //结束读取熄灯
        }
        break;
      default:
        break;
    }
  }

}

点击上传,IDE会自动编译,并上传代码到ardunio中。

上传完毕后,点击工具,串口监视器,在弹出的窗口中就可以看到当前的空气质量和当前的温度和湿度了



强行插入硬广告

http://www.51bilin.com/,比利牛汇聚全网优惠,为您网购省钱,自动采集当前各大电商最优惠的活动,购物前搜一搜,帮您省钱,提供Chrome插件,android客户端,iOS客户端即将推出。

时间: 2024-10-07 08:57:49

智能家居DIY-空气质量检测篇-获取温度和湿度篇的相关文章

DIY 空气质量检测表

DIY 空气质量检测表 前几天逛淘宝看到有空气颗粒物浓度测量的传感器,直接是 3.3V TTL 电压串口输出的,也不贵,也就 100 多一点.觉得挺好就买了个,这两天自己捣鼓了个小程序,搞了个软件界面的空气质量检测表.程序写的很简单,但是感觉这个小软件还是挺实用的,所以就写篇博客,大家用我的代码很容易就自己 DIY 一套. 硬件准备 传感器用的是 攀藤科技 PMS7003M .除了攀藤科技,还有几家这种传感器做的应该也不错,不过我没去用过,也没仔细调研.(之所以用的这家,不过是因为在 newsm

智能家居DIY-空气质量检测篇-获取空气污染指数

前言 话说楼主终于升级当爸了,宝宝现在5个月了,宝宝出生的时候是冬天,正是魔都空气污染严重的时候,当时就想搞个自动开启空气净化器,由于种种原因一直没有时间搞,最近终于闲下来了这个事情终于提上议程了,现在是夏天,空气都还行,各种空气质量相关电子产品都打折,正是动手的好时机. 计划的主要功能有: 自动检测空气质量(pm2.5,Pm10) 自动检测温度,湿度,气压 定时上传空气质量数据到服务器,并通过手机App显示 当空气质量差的时候自动开启空气净化器并报警提示关窗 当空气质量净化完毕后自动关闭空气净

智能家居DIY

最近智能家居比较火,将房子简单改造下,也算体验智能家居. 本文讲解的是用无线的方式,优点是:不用改造现有线路,直接安装模块即可实现想要的功能,花的钱也较少,共六百左右 =======================正文开始分割线======================== 一.最终要实现的效果: 用智能手机可以控制家中的电视.空调.灯光.窗帘.热水器.电饭煲 实现上述功能,大概费用几百块钱左右 二.具体的实现过程 整体流程:A------>B------>C 1.这里A表示手机,需要是智能

基于Linux的智能家居的设计(1)

写在前面:做了半年的毕业设计,找到的工作与这个完全无关,发现自己现在有写不甘心,但是我还是在关注这方面的发展,自己的摸索和前人的帮助我完成了智能家居的一部分,希望这个能够给一些初学者 能够一些便利,毕竟技术是一个开放的,不属于某一个人的. 摘要 本课题主要目的是设计和实现一个基于Linux开发平台的智能家居系统.本系统主要使用PVC板做成的家居模型.本系统硬件使用基于ARM架构的samsung S3C6410芯片做成的OK6410开发板为手持终端,利用Zigbee实现网络通讯,并结合各种电子元器

空气质量在线检测系统制作 之Smart Airbox 制作流程

已刊登在<无线电>8月刊 在帝都生活的小伙伴们,想必对空气质量一定是不能再敏感,十几米的能见度想想也是醉了.一遇到久违的蓝天,朋友圈就被各种炫蓝天的照片刷屏.既然已经无法奢望室外空气,就在室内空气上下点功夫吧,毕竟一天中的大多数时间还是在室内度过的.于是乎,小熊决定做一个智能空气盒子,实时检测家里的空气是否达标.关爱绳命,从一呼一吸开始- 项目简介 智能空气盒子(Smart AirBox)是空气质量在线检测系统的雏形.该系统可以监测周围的空气质量(VOC.PM2.5.温度.湿度等),并将参数数

智能家居能为酒店智能化带来什么?

随着智能家居概念的不断深入,这一领域也被越来越多的巨头所看好,有业内人士分析,智能家居将成为继智能手机.智能电视之后又一具备革命性意义的新兴领域,不过,目前这一领域仍处于发展初期,要真正实现规模化发展还来日方长. 在这种背景下,厂商除了要加强智能家居产品的研发与创新之外,在产业合作层面也要打破门规,通过广泛的对外合作.跨界合作加快智能家居的部署.最近国内中高端度假公寓在线服务商途家携手海尔联合打造智能酒店就是一次智能家居的跨界合作.那么二者的合作究竟如何开展?又能为产业带来什么启示呢? 智能酒店

0055-空气质量检测

空气质量检测 难度级别:A: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 我国空气质量标准是:空气质量指数0-50空气质量为优,51-100空气质量为良,101-150为轻度污染,151-200为中度污染,201-300为重度污染,>300为严重污染.先给你当天的空气质量指数,编写程序计算并输出当天的空气质量. 输入 一个正整数,表示当天的空气质量指数(AQI).  输出 当天的空气质量. 输入示例 237 输出示例 重度污染 跟前面的

【智能家居篇】wifi网络结构(上)

转载请注明出处:http://blog.csdn.net/Righthek 谢谢! WIFI是什么,相信大家都知道,这里就不作说明了.我们需要做的是深入了解其工作原理,包括软硬件.网络结构等.先说明一下WIFI是遵循IEEE802.11协议的,802.11是最早被国际标准组织认可的无线局域网协议,应该是1999年,到现在都有15年了.那时候哥还在读小学,连电脑都没摸过!太落后了...后来发展出很多以字母为后缀的802.11标准协议,如a.b.g.n.ac等. 本章节不作802.11协议的讲解,后

【智能家居篇】嵌入式WIFI与普通WIFI的区别

转载请注明出处:http://blog.csdn.net/Righthek 谢谢! 既然我们这系列的文章名称为<智能家居篇>,那么我们有必要提出一个与智能家居相关的概念.曾经一次在TI的无线研讨会上,提及这个概念.究竟是TI提出的,还是其他无线厂家提出的,这个就不去深究了.这个概念就是嵌入式WIFI,也有叫WIFI的IoT(全称:Internet of Things)解决方案,那么它和普通的WIFI又有什么区别呢?请继续阅读下文.         1.嵌入式WIFI的来源 我们都知道笔记本.手