AirOwl - 知道你呼吸的是什么!
组件和用品
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 10 | ||||
| × | 3 |
应用和在线服务
| ||||
|
关于这个项目
AirOwl 是实时空气质量监测设备。它用于监测空气质量并从传感器获取数据并使用 Arduino/Genuino 101 的 BLE 在 Blynk 应用程序上提供输出。一个可以帮助我们了解我们呼吸的项目!
人类活动正在影响环境。所以我们决定制作一个有助于了解周围环境并据此采取措施的设备。
下图是AirOwl在arduino 101上运行的图片。
空气质量可以通过3个因素来判断:-
1) Blynk 应用程序(BLE)
2) Airowl的眼睛颜色
如果眼睛的颜色是绿色,则说明您处于更安全的环境中。
如果眼睛颜色是蓝色,需要小心。
如果眼睛颜色为红色,则有危险。
3) 串口监视器
有关 Airowl 的原理图和设计,请访问:-
https://github.com/anithp/AirOwl_Genuino101
通过原理图连接电路后。
该项目的基本图如下所示。
下面给出了灰尘传感器的数据表,以获取有关传感器的更多信息:
https://goo.gl/17Vgeg
现在让我们开始制作:-
从原理图建立连接后,上传代码。(假设您已经安装了所需的库。)
有关更多信息,请参阅:- http://docs.blynk.cc/
现在让我们设置 blynk:
首先从 playstore/appstore 安装 blynk
Playstore - https://play.google.com/store/apps/details?id=cc.blynk&hl=en
应用商店 - https://itunes.apple.com/us/app/blynk-iot-for-arduino-rpi-particle-esp8266/id808760481?mt=8
安装完成后,创建一个帐户。
首先在 Blynk 中新建项目
然后选择板并给出项目名称
选择板后,点击创建。
选择创建后,它会将验证密钥发送到您的注册帐户。您还可以通过设置重新发送电子邮件。
现在将打开一个窗口,我们将在其中看到一个空白的工作空间。
单击添加按钮并添加 BLE 和 3 Guage。
选择仪表后,在工作区点击仪表,分别为所有仪表选择引脚为V1、V2、V3。
设置好这个最终工作空间后看起来像
现在保持 arduino 101 连接到电源,然后在工作区选择蓝牙图标以设置蓝牙(PS-保持手机蓝牙开启)。
然后进入主工作区,开始模拟项目。
数据将显示在 blynk 窗口中。
对于想要使用面包板进行原型制作的人,以下示意图适合您,希望它可以让您对 Airowl 的体验非常棒。
数据也可以在串口监视器上看到。
PCB原理图如下所示。
电路板文件如下所示。
pcb 的 3D 图像看起来像。
这张图片的所有文件都可以在下面提到的github链接上找到。
https://github.com/anithp/AirOwl_Genuino101
现在您可以使用 Airowl 并知道您呼吸的是什么,希望对您有所帮助。
谢谢:)
代码
- Air_owl
Air_owlC/C++
/* 版权所有 (C) 2017 Anith Patel 和 Sohil Patel。根据 GNU 自由文档许可证 1.3 版或自由软件基金会发布的任何更新版本的条款,被授予复制、分发和/或修改本文档的权限;没有不变部分,没有封面文本,也没有封底文本。许可证的副本包含在标题为“GNU 自由文档许可证”的部分中。 */#include#include #define BLYNK_SERIAL Print //为blynkbyte data[24] 写入数据;//参考灰尘传感器的数据表unsigned int PM1 =0; //初始化颗粒物值unsigned int PM25 =0;unsigned int PM10 =0;unsigned int count =0;const int PIN1 =3;const int PIN2 =5;const int PIN3 =6;char auth[] ="Auth钥匙”; //粘贴 BlynkBLEPeripheral 的认证密钥 blePeripheral;void setup() { blePeripheral.setLocalName("Airowl"); //为blynk设置BLE blePeripheral.setDeviceName("Airowl"); blePeripheral.setAppearance(384); Blynk.begin(blePeripheral, auth); blePeripheral.begin(); Serial1.begin(9600); //初始化uart通信Serial.begin(9600); pinMode(PIN1,输出); //led设置pinMode(PIN2, OUTPUT); pinMode(PIN3, OUTPUT);}void loop() { Blynk.run(); //调用blynk blePeripheral.poll(); Serial.println("PM1的浓度为:"); //在串行监视器中打印Serial.println(PM1/count); Serial.println("PM25的浓度为:"); Serial.println(PM25/count); Serial.println("PM10的浓度为:"); Serial.println(PM10/count);延迟(500);写数据(); //调用writedata函数 if ((PM1+PM25+PM10)/3 <=100){ LedColor(0, 255, 0);延迟(500); } else if ((PM1+PM25+PM10)/3 <=300 &&(PM1+PM25+PM10)/3> 100){ LedColor(255, 0, 0);延迟(500); } else{ LedColor(0, 0, 255);延迟(500); } //led数据逻辑}void LedColor(int red, int blue, int green){analogWrite(PIN1, red);模拟写入(PIN2,蓝色);模拟写入(PIN3,绿色); }void getWinsenData(void) //从传感器获取数据的函数{ //为了理解这个逻辑,请参考传感器字节的数据表 i =0; int 校验和 =0; Serial1.flush();而 (Serial1.available()) { data[i] =Serial1.read(); //从传感器读取串行数据 if (i <=21) //传感器读取数据的条件 { checksum +=data[i]; } if (i ==23) { if (checksum ==((256 * data[22]) + data[23])) { if (data[0] ==66) { if (data[1] ==77) { if (i ==23) { PM1 +=((data[4] * 256) + data[5]); //检索并存储 PM1 PM25 +=((data[6] * 256) + data[7]) 的数据; //检索并存储 PM2.5 PM10 +=((data[8] * 256) + data[9]) 的数据; //检索并存储 PM10 count++ 的数据; Serial1.flush(); //等待串行数据传输中断; } } } } else { 休息;我++;延迟(10); } } void WriteData() //发送数据到blynk { getWinsenData(); //调用getWinsendata函数Blynk.virtualWrite(V1, PM1/count); //写数据到Blynk Blynk.virtualWrite(V2, PM25/count); Blynk.virtualWrite(V3, PM10/count);延迟(1000); }
定制零件和外壳
AirOwl
https://github.com/IndiaOpenDataAssociation/AirOwl示意图
AirOwl Genuino 101
https://github.com/anithp/AirOwl_Genuino101制造工艺