简单智能的空气净化器系统
组件和用品
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
必要的工具和机器
| ||||
| ||||
|
应用和在线服务
| ||||
| ||||
| ||||
|
关于这个项目
家庭、办公室和其他人类环境中灰尘的存在是不可避免的。事实上,据环境保护局称,室内空气的污染程度可能是室外空气的 2 至 5 倍。这种空气传播的污染会导致轻微的烦恼,如眼睛发痒、打喷嚏和人类头痛。更糟糕的是,它可能是导致严重过敏、危及生命的哮喘的主要因素。
为了解决这个问题,一台工作中的空气净化器很好地解决了这个问题。但是,我想利用物联网的优势让空气净化器变得更智能。不同于传统的整天开着空气净化器的方式,我想实现一个“大脑-微控制器”和“传感器”,只有在灰尘的存在达到一定程度的意识时才运行,这样可以节省大量电力!而且每当我到世界任何地方旅行时,我的笔记本电脑或任何“支持 MQTT 的客户端”设备中的“终端窗口”都可以看到运行状态。
第 1 步:收集所有组件 图> 图> 图>
要查看所有组件,您可以从我的 Dropbox 下载 BOM 列表。
或参考我的组件和耗材部分。
第 2 步:确保所有作品都有意义
我拿到所有组件后的第一件事就是立即对其进行测试,以确保我的组件的功能按其应有的方式运行。
图> 图>对于GP 2Y1010AU0F 锋利灰尘传感器 设置,您可以参考 Cyrille Médard de Chardon 和 Christophe Trefois 的这篇博客教程。该教程涵盖了从接线连接到编码的最佳内容。
对于中继模块 设置,我只是使用一个简单的切换(开和关)状态来测试继电器功能的连接。
第 3 步:编码
编码是直截了当的。这里的挑战是使用 AWS IoT 将数据从传感器传输到任何支持 MQTT 的设备(就像我的情况一样,我使用的是笔记本电脑)。请参阅编码部分。有趣的是,我还为 AWS CLI IoT 创建了一个视频教程,因此任何人都可以了解它。
(请注意:由于制作此视频的时间仅涵盖测试版)
第 4 步:接线 图> 图> 图>
第 5 步:获取结果
视频演示
未来改进
我知道这个项目还有很多可以改进的地方,尤其是“IoT 项目”。但是由于白天的工作,我只能将部分空闲时间用于这个项目的开发。然而,“数据监控的实时方式”应用程序(提示:NodeJS)让我感兴趣。它将在未来作为该项目的愿望清单(或待办事项)添加。敬请期待!
结论
做这个项目有很多乐趣,尤其是“IoT - Internet of Things”。物联网的可能性和改进仍然很大。此外,我喜欢学习如何使用 AWS 提供的 IoT 服务,因为它使用起来非常方便(使用 AWS IoT 仪表板进行简单设置)并通过加密保护每个连接。
问题 |问题 |评论 |建议
可能这个项目有一些我不知道的技术问题,您可以评论或私信我,您的反馈非常宝贵!
复制此项目的任何问题或问题,您可以与我联系或在下面发表评论。我会尽力帮助你的,我们又来一起学硬件了!
欢迎提出各种意见和建议。
代码
- 简单智能空气净化器系统.ino
- iot_config.h
- iot_config.cpp
- dust_config.h
- dust_config.cpp
- aws_iot_config.h
- 许可证
简单智能空气净化器-System.inoArduino
Arduino 主代码/* 简单智能空气净化器系统的源代码由 Aaron Kow 编写 许可证:麻省理工学院许可证*/#include "iot_config.h"#include "dust_config.h"aws_iot_setup aws_iot;dust_setupdust_sensor;int measurePin =4;int ledPower =12;int relayPin =13;浮动结果;void setup() { pinMode(ledPower, OUTPUT); pinMode(relayPin, OUTPUT); aws_iot.config();}void loop() { // 设置灰尘密度结果 result =dust_sensor.init(measurePin, ledPower); // 用于实时数据监控的 AWS IoT MQTT aws_iot.data(result); // 如果粉尘密度超过 0.25 毫克/立方米,则打开空气过滤器 if (result> 0.25){ digitalWrite(relayPin, HIGH); } else { digitalWrite(relayPin, LOW); } 延迟(1000);}
iot_config.hC/C++
我的物联网配置的头文件/* 由 Aaron Kow 编写的简单和智能空气净化器系统的源代码许可证:麻省理工学院许可证*/#ifndef iotconfig_h#define iotconfig_h#include#include #include #include "aws_iot_config.h"class aws_iot_setup { public:void config(void);无效测试(无效); void data(float);};#endif
iot_config.cppC/C++
我的 IoT 配置文件/* * 版权所有 2010-2015 Amazon.com, Inc. 或其附属公司。版权所有。 * * 根据 Apache 许可,版本 2.0(“许可”)获得许可。 * 除非符合许可,否则您不得使用此文件。 * 许可证副本位于 * * http://aws.amazon.com/apache2.0 * * 或此文件附带的“许可证”文件中。该文件*在“原样”基础上分发,没有任何形式的保证或条件,*明示或暗示。有关管理许可下的许可和限制的特定语言,请参阅许可。 *//* * 本源代码为简单智能空气净化器系统修改 * 由 Aaron Kow 撰写 */#include "iot_config.h"aws_iot_mqtt_client myClient; // init iot_mqtt_clientchar msg[32]; // 读写 bufferint cnt =0; // 循环计数int rc =-100; // 返回值 placeholdervoid msg_callback(char* src, int len) { Serial.println("CALLBACK:");国际我; for(i =0; i0.25){ sprintf(mqtt, "Dust density:%s mg/m3, air filter is ON", msg); } else { sprintf(mqtt, "粉尘密度:%s mg/m3, 空气过滤器关闭", msg); } if((rc =myClient.publish("dustlevel", mqtt, strlen(mqtt), 1, false)) !=0) { Serial.println("发布失败!"); Serial.println(rc); // 失败 =-6 } // 用于调试打印 Serial.print("Dust density:");串行打印(数据); Serial.println("mg/m3");}
dust_config.hC/C++
灰尘传感器配置源代码的头文件/* 由 Aaron Kow 编写的简单智能空气净化器系统的源代码许可证:麻省理工学院许可证*/#ifndef dadconfig_h#definedustconfig_h#includeclassdust_setup { public:float init(int, int);};#endif
dust_config.cppC/C++
灰尘传感器配置源代码/* 与 Arduino Fio 和 Sharp 光学灰尘传感器 GP2Y1010AU0F 一起使用的独立草图 博客:http://arduinodev.woofex.net/2012/12/01/standalone-sharp-dust-sensor / 代码:https://github.com/Trefex/arduino-airquality/ 对于 Pin 连接,请查看博客或 github 项目页面作者:Cyrille Mdard de Chardon (serialC), Christophe Trefois (Trefex) 更新日志:2012-Dec -01:清理代码 本作品根据知识共享署名-非商业性使用-相同方式共享 3.0 未移植许可证获得许可。要查看此许可证的副本,请访问 http://creativecommons.org/licenses/by-nc-sa/3.0/ 或致函 Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA .*//* * 本源代码为简单智能空气净化器系统修改 * 由 Aaron Kow 撰写 */#include "dust_config.h" int samplingTime =280;int deltaTime =40;int sleepTime =9680;浮动 voMeasured =0;浮动 calcVoltage =0;浮动灰尘密度 =0;浮动dust_setup::init(int measurePin, int ledPower){ digitalWrite(ledPower,LOW); // 开启 LED delayMicroseconds(samplingTime); voMeasured =analogRead(measurePin); // 读取灰尘值 delayMicroseconds(deltaTime);数字写入(ledPower,高); // 关闭 LED delayMicroseconds(sleepTime); // 0 - 5V 映射到 0 - 1023 个整数值 // 恢复电压 calcVoltage =voMeasured * (5.0 / 1024); // 线性方程取自 http://www.howmuchsnow.com/arduino/airquality/ // Chris Nafis (c) 2012 灰尘密度 =0.17 * calcVoltage - 0.1;回尘密度; // 单位:mg/m3}
aws_iot_config.hC/C++
AWS IoT 配置的头文件/* * 版权所有 2010-2015 Amazon.com, Inc. 或其附属公司。版权所有。 * * 根据 Apache 许可,版本 2.0(“许可”)获得许可。 * 除非符合许可,否则您不得使用此文件。 * 许可证副本位于 * * http://aws.amazon.com/apache2.0 * * 或此文件附带的“许可证”文件中。该文件*在“原样”基础上分发,没有任何形式的保证或条件,*明示或暗示。有关管理许可下的许可和限制的特定语言,请参阅许可。 */#ifndef config_usr_h#define config_usr_h// 将您的配置复制并粘贴到此文件中//==============================================================#define AWS_IOT_MQTT_HOST ""#define AWS_IOT_MQTT_PORT 8883 // 你的port#define AWS_IOT_CLIENT_ID " "#define AWS_IOT_MY_THING_NAME " "#define AWS_IOT_ROOT_CA_FILENAME " "#define AWS_IOT_CERTIFICATE_FILENAME " 定义 AWS_IOT_PRIVATE_KEY_FILENAME " "//==============================================================// SDK 配置,请勿修改#define AWS_IOT_PATH_PREFIX "./certs/"#define AWS_IOT_ROOT_CA_PATH AWS_IOT_PATH_PREFIX AWS_IOT_ROOT_CA_FILENAME // 在配置调用中使用它#define AWS_IOT_CERTIFICATE_PATH AWS_IOT_PATH_PREFIX AWS_IOT_CERTIFICATE_FILENAME // 在配置调用中使用它#define AWS_IOT_PRIVATE_KEY_PATH AWS_IOT_PATH_PREFIX AWS_IOT_PRIVATE 调用中使用这个#pret_config //使用这个 许可证Markdown
MIT 许可证MIT 许可证 (MIT)Copyright (c) 2015 AaronKowPermission 特此免费授予任何获得本软件和相关文档文件(“软件”)副本的人,以不受限制地处理本软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售本软件的权利,并允许向其提供本软件的人这样做,但须符合以下条件:上述版权通知和此许可通知应包含在软件的所有副本或重要部分中。该软件“按原样”提供,不提供任何类型的、明示或暗示的保证,包括但不限于适销性保证、适用于特定目的并且不侵权。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任,无论是在合同诉讼、侵权行为或其他方面,由软件或软件的使用或软件的使用或其他原因引起的,或与之相关的。 /预>简单智能的空气净化器系统源代码
简单智能空气净化器系统的 GitHub 存储库 https://github.com/AaronKow/Simple-and-Smart-Air-Purifier-System
示意图
我使用schematic.com来绘制这个原理图制造工艺