Industrial manufacturing
Industrial Internet of Things | Industrial materials | Equipment Maintenance and Repair | Industrial programming |
home  MfgRobots >> Industrial manufacturing >  >> Manufacturing Technology >> Manufacturing process

AirOwl: Real‑Time Air Quality Monitoring for Healthier Breathing

Components and supplies

AirOwl: Real‑Time Air Quality Monitoring for Healthier Breathing
Arduino 101
×1
Dust Sensor ZH03A
×1
AirOwl: Real‑Time Air Quality Monitoring for Healthier Breathing
Adafruit Flora RGB Neopixel LEDs- Pack of 4
×1
AirOwl: Real‑Time Air Quality Monitoring for Healthier Breathing
Jumper wires (generic)
×10
AirOwl: Real‑Time Air Quality Monitoring for Healthier Breathing
Resistor 10k ohm
×3

Apps and online services

AirOwl: Real‑Time Air Quality Monitoring for Healthier Breathing
Blynk
AirOwl: Real‑Time Air Quality Monitoring for Healthier Breathing
Arduino IDE

About this project

AirOwl is the real time air quality monitoring device. It is used to monitor air quality and fetches data from the sensor and gives output on Blynk app using BLE of Arduino/Genuino 101. A project that can help us know What we Breath!

Human activities are effecting the Environment. So we decided to make a device that helps to know surrounding environment and take steps according to it.

The below image is the image of the AirOwl running on arduino 101.

AirOwl: Real‑Time Air Quality Monitoring for Healthier Breathing

Air quality can be know through 3 factors:-

1) Blynk app(BLE)

AirOwl: Real‑Time Air Quality Monitoring for Healthier Breathing

2) Color of the eyes of Airowl

AirOwl: Real‑Time Air Quality Monitoring for Healthier Breathing

If eyes color is Green, you are in safer environment.

if eyes color is Blue, need to take care.

if eyes color is Red, there is danger.

3) Serial Monitor

AirOwl: Real‑Time Air Quality Monitoring for Healthier Breathing

For the schematics and design of the Airowl please visit:-

https://github.com/anithp/AirOwl_Genuino101

After going through the schematics connect circuit.

A basic diagram for the project is shown below.

AirOwl: Real‑Time Air Quality Monitoring for Healthier Breathing

Datasheet of the dust sensor is given below for further information on sensor:

https://goo.gl/17Vgeg

Now lets start making thing:-

After making connections from schematics, upload the code.(Assuming you have installed required libraries.)

For further information refer:- http://docs.blynk.cc/

Now lets setup blynk:

First intall blynk from playstore/appstore

Playstore - https://play.google.com/store/apps/details?id=cc.blynk&hl=en

Appstore - https://itunes.apple.com/us/app/blynk-iot-for-arduino-rpi-particle-esp8266/id808760481?mt=8

After installing, make a account.

First Create New Project in Blynk

AirOwl: Real‑Time Air Quality Monitoring for Healthier Breathing

Then Select Board and give project name

AirOwl: Real‑Time Air Quality Monitoring for Healthier Breathing

AirOwl: Real‑Time Air Quality Monitoring for Healthier Breathing

AirOwl: Real‑Time Air Quality Monitoring for Healthier Breathing

After selecting board, click on create.

After you select create, it will send authentication key to your registered account. And you can also resend email from setting.

AirOwl: Real‑Time Air Quality Monitoring for Healthier Breathing

Now a window will open where we will see a blank work space.

AirOwl: Real‑Time Air Quality Monitoring for Healthier Breathing

Click on add button and add BLE, and 3 Guage.

AirOwl: Real‑Time Air Quality Monitoring for Healthier Breathing

AirOwl: Real‑Time Air Quality Monitoring for Healthier Breathing

After selecting gauge, on work space click on guage and select pin as V1, V2, V3 for all guages respectively.

AirOwl: Real‑Time Air Quality Monitoring for Healthier Breathing

After setting this final work space will look like

AirOwl: Real‑Time Air Quality Monitoring for Healthier Breathing

Now keep the arduino 101 connected to power supply and then select Bluetooth icon on work space to set bluetooth (PS- Keep bluetooth of mobile ON).

AirOwl: Real‑Time Air Quality Monitoring for Healthier Breathing

And then go to the main work space and start simulating the project.

AirOwl: Real‑Time Air Quality Monitoring for Healthier Breathing

Data will be shown in the blynk window.

For the one who wants to prototype this using breadboard, the following schematic is for you, hope it can make your experience with Airowl awesome.

AirOwl: Real‑Time Air Quality Monitoring for Healthier Breathing

Data can also be seen on serial monitor.

AirOwl: Real‑Time Air Quality Monitoring for Healthier Breathing

Schematic of the PCB is shown below.

AirOwl: Real‑Time Air Quality Monitoring for Healthier Breathing

Board file is shown below.

AirOwl: Real‑Time Air Quality Monitoring for Healthier Breathing

3D image of pcb looks like.

AirOwl: Real‑Time Air Quality Monitoring for Healthier Breathing

All the files of this images can found on github link mentioned below.

https://github.com/anithp/AirOwl_Genuino101

Now you can use the Airowl and know what you breath, hope it helps.

Thanks :)

Code

  • Air_owl
Air_owlC/C++
/*  Copyright (C)  2017  Anith Patel and Sohil Patel.
    Permission is granted to copy, distribute and/or modify this document
    under the terms of the GNU Free Documentation License, Version 1.3
    or any later version published by the Free Software Foundation;
    with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
    A copy of the license is included in the section entitled "GNU
    Free Documentation License". */



#include<BlynkSimpleCurieBLE.h>
#include<CurieBLE.h>

#define BLYNK_SERIAL Print //writing data for blynk

byte data[24];//refer datasheet of the dust sensor

unsigned int PM1 = 0; //initializing values for the particulate matter
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 key"; //paste auth key of Blynk

BLEPeripheral blePeripheral;


void setup() 
{
  blePeripheral.setLocalName("Airowl");     //setting BLE for blynk
  blePeripheral.setDeviceName("Airowl");
  blePeripheral.setAppearance(384);
  Blynk.begin(blePeripheral, auth);
  blePeripheral.begin();
  Serial1.begin(9600);                      //initialization of uart communication 
  Serial.begin(9600);
  pinMode(PIN1, OUTPUT);                   //led setup
  pinMode(PIN2, OUTPUT);
  pinMode(PIN3, OUTPUT);
}


void loop() 
{
 Blynk.run();                               //calls blynk
 blePeripheral.poll();
 Serial.println("Concentration of PM1 is:"); //prints in serial monitor
 Serial.println(PM1/count);
 Serial.println("Concentration of PM25 is:");
 Serial.println(PM25/count);
 Serial.println("Concentration of PM10 is:");
 Serial.println(PM10/count);
 delay(500);
 WriteData();                                //calls writedata function
 if ((PM1+PM25+PM10)/3 <= 100){
  LedColor(0, 255, 0);
  delay(500);
  }
 else if ((PM1+PM25+PM10)/3 <= 300 && (PM1+PM25+PM10)/3 > 100){
  LedColor(255, 0, 0);
  delay(500);
  } 
 else{
  LedColor(0, 0, 255);
  delay(500);
  }                                          //logic for the led data
}

void LedColor(int red, int blue, int green){
  analogWrite(PIN1, red);
  analogWrite(PIN2, blue);
  analogWrite(PIN3, green);
  }

void getWinsenData(void)                //function for getting data from sensor
{                                       //for understanding this logic do refer datasheet of the sensor
  byte i = 0;
  int checksum = 0;
  Serial1.flush();
  while (Serial1.available()) {
    data[i] = Serial1.read();                //reads serial data from sensor
    if (i <= 21)                            //condition for the sensor reading data
    {
      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]);  
              //retrives and stores data for PM1
              PM25 += ((data[6] * 256) + data[7]); 
              //retrives and stores data for PM2.5
              PM10 += ((data[8] * 256) + data[9]);
              //retrives and stores data for PM10
              count++; 
              Serial1.flush(); //waits for serial data to transmit
              break;
            }
          }
        }
      }
      else
      {
        break;
      }
    }
    i++;
    delay(10);
  }
 } 



void WriteData()                              //sending data to blynk 
{
  getWinsenData();                            //calls getWinsendata function
  Blynk.virtualWrite(V1, PM1/count);          //write data to Blynk
  Blynk.virtualWrite(V2, PM25/count);         
  Blynk.virtualWrite(V3, PM10/count);
  delay(1000);
  
  }

Custom parts and enclosures

AirOwl
https://github.com/IndiaOpenDataAssociation/AirOwl

Schematics

AirOwl Genuino 101
https://github.com/anithp/AirOwl_Genuino101

Manufacturing process

  1. SLA vs. PolyJet: Choosing the Right 3D Printing Technology for Your Project
  2. 7 Essential React Libraries Every Developer Should Master
  3. Complete Arduino 16×2 LCD Tutorial: Connect, Program, and Display Data
  4. Unlock Efficiency: Key Advantages of Lean Manufacturing
  5. AC vs DC Motors: Key Differences & How to Choose the Right One
  6. Master PCB Fabrication: Essential Tips for Prototyping Success
  7. D880 Transistor Explained: Features, Specs, and Use Cases
  8. Exploring EDM: How Electrical Discharge Machining Works & Why It Matters
  9. Understanding Stamping: The Key Process Behind Coke Can Production
  10. CNC Copper Machining: Precision, Applications & Industry Benefits