AirOwl: Pemantauan Kualitas Udara Real-Time untuk Nafas Lebih Sehat
Komponen dan Perlengkapan
Arduino 101 – 1 unit
Sensor Debu ZH03A – 1 unit
Adafruit Flora RGB Neopixel LEDs- Paket 4 – 1 unit
Kabel jumper (umum) – 10 unit
Resistor 10k ohm – 3 unit
Aplikasi dan Layanan Online
Blynk – 1 unit
Arduino IDE – 1 unit
Tentang Proyek Ini
AirOwl adalah perangkat pemantauan kualitas udara real-time. Digunakan untuk memantau kualitas udara dan mengambil data dari sensor serta memberikan output pada aplikasi Blynk menggunakan BLE Arduino/Genuino 101. Sebuah proyek yang dapat membantu kita mengetahui Apa yang Kita Napas!
Aktivitas manusia mempengaruhi Lingkungan. Jadi kami memutuskan untuk membuat perangkat yang membantu untuk mengetahui lingkungan sekitar dan mengambil langkah sesuai dengan itu.
Gambar di bawah ini adalah gambar AirOwl yang berjalan pada arduino 101.
Kualitas udara dapat diketahui melalui 3 faktor:-
1) Aplikasi Blynk(BLE)
2) Warna mata AirOwl
Jika warna mata Hijau, Anda berada di lingkungan yang lebih aman.
Jika warna mata Biru, perlu berhati-hati.
Jika warna mata Merah, ada bahaya.
3) Serial Monitor
Untuk skematik dan desain AirOwl silakan kunjungi:-
https://github.com/anithp/AirOwl_Genuino101
Setelah melalui skematik hubungkan rangkaian.
Diagram dasar untuk proyek ditunjukkan di bawah ini.
Datasheet sensor debu diberikan di bawah ini untuk informasi lebih lanjut tentang sensor:
https://goo.gl/17Vgeg
Sekarang mari kita mulai membuat:-
Setelah membuat koneksi dari skematik, unggah kode.(Asumsi Anda telah menginstal perpustakaan yang diperlukan.)
Untuk informasi lebih lanjut rujuk:- https://docs.blynk.cc/
Setelah Anda pilih create, itu akan mengirim kunci autentikasi ke akun terdaftar Anda. Dan Anda juga dapat mengirim ulang email dari pengaturan.
Sekarang jendela akan terbuka tempat kita akan melihat ruang kerja kosong.
Klik tombol tambah dan tambahkan BLE, dan 3 Gauge.
Setelah memilih gauge, di ruang kerja klik gauge dan pilih pin sebagai V1, V2, V3 untuk semua gauge masing-masing.
Setelah mengatur ini ruang kerja akhir akan terlihat seperti
Sekarang biarkan arduino 101 terhubung ke sumber daya dan kemudian pilih ikon Bluetooth di ruang kerja untuk mengatur Bluetooth (PS- Biarkan Bluetooth ponsel ON).
Dan kemudian pergi ke ruang kerja utama dan mulai mensimulasikan proyek.
Data akan ditampilkan di jendela blynk.
Bagi yang ingin membuat prototipe ini menggunakan breadboard, skematik berikut untuk Anda, semoga dapat membuat pengalaman Anda dengan Airowl luar biasa.
Data juga dapat dilihat di serial monitor.
Skematik PCB ditunjukkan di bawah ini.
File papan ditunjukkan di bawah ini.
Gambar 3D pcb terlihat seperti.
Semua file gambar ini dapat ditemukan di tautan github di bawah ini.
https://github.com/anithp/AirOwl_Genuino101
Sekarang Anda dapat menggunakan Airowl dan tahu apa yang Anda napas, semoga bermanfaat.
Terima kasih :)
Kode
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); }