Máy phát hiện ô nhiễm môi trường

Category: Arduino Published: 23 December 2016
Hits: 1175

Để thực hiện project này, bạn cần những thứ sau đây:

Bước 1: Lắp ráp phần 1

  

Đối với đề tài này thì chúng ta dựa trên 2 chỉ dẫn khác nhau:

Đầu tiên bạn phải lắp màn hình giám sát môi trường. Do tính chất của đề tài này mà ta không sử dụng cảm biến ánh sáng hoặc nhiệt độ từ chỉ dẫn gốc. Điều này có nghĩa rằng code cho 2 phần của phần cứng cũng phải được xóa code.

Để lắp ráp các thiết bị điện tử, đầu tiên đặt các baseshield lên trên Arduino. Phải chắc chắn là các khe trên lá chắn phải vừa với các khe cắm trên Arduino. Tiếp theo, các cảm biến, nút, màn hình LCD phải được chèn vào base shield.

  • Cắm màn hình LCD vào khe I2C ngoài cùng bên phải trên baseshield.
  • Cắm nút bấm vào khe D8 trên baseshield.
  • Cắm cảm biến âm thanh vào khe A2 trên baseshield
  • Cắm cảm biến khí đa kênh vào khe ngoài cùng bên trái trên baseshield.
  • Phải đảm bảo là chuyển mạch trên baseshield phải được flip đối với các đèn LED màu xanh lá cây

Bước 2: import mã code chương trình

Bước tiếp theo liên quan đến việc tải code thích hợp lên Arduino.

Đầu tiên, ta nhập các thư viện thích hợp cho màn hình LCD và cảm biến khí đa kênh. Ta có tìm ở:

Sau khi các thư viện được nhập vào, ta tải lên code từ APEM.

Để cho code làm việc, code các cảm biến ánh sáng và nhiệt độ phải đã được thêm xuộc // hoặc đã bị xóa ra khỏi tài liệu như sau:

//if(buttonPushCounter==3){

// f = analogRead(0);

// lcd.setRGB(182,134,44);

// lcd.print("Light:");

// if(f>=0) lcd.print(f);

// else lcd.print("invalid");

// lcd.print(" units");}

//

// if (buttonPushCounter==4){

// g = analogRead(1);

// r = (float)(1023-g)*10000/g; //resistance calculation

// t=1/(log(r/10000)/3975+1/298.15)-273.15; //temperature in celsius

// fah=t*9/5+32;

// lcd.setRGB(255,102,255);

// lcd.print("Temp:");

// lcd.print(fah);

// lcd.print(" *F");}

// if (buttonPushCounter==5){

// g = analogRead(1);

// r = (float)(1023-g)*10000/g; //resistance calculation

// t=1/(log(r/10000)/3975+1/298.15)-273.15; //temperature in celsius

// lcd.setRGB(255,153,255);

// lcd.print("Temp:");

// lcd.print(t);

// lcd.print(" *C");

}

Bước 3: Đọc kết quả môi trường xung quanh

Sau khi lắp xong các bộ cảm biến khí, ta đi xung quanh đâu đó trong ngưỡng cảm biến khí này đọc được. Bằng cách này ta có thể lập trình để ngưỡng này phản ứng với môi trường.

Sau khi có bài đọc từ các vị trí mà ta đi qua, chúng ta đặt chúng vào một bảng tính và tính toán giá trị trung bình. Những giá trị trung bình sau đó được sử dụng như là các ngưỡng cho quạt. Nên để mức đọc cao hơn mức của quạt, quạt sẽ bật, nhả sương từ đá lạnh khô (dry ice). Đổi lại, những giá trị này có thể được thay thế bằng trung bình khu vực khác hoặc các giá trị khác, chẳng hạn như các giá trị mức khí lý tưởng nhất.

Bước 4: Lắp quạt

Để kích hoạt quạt, ta cần 1 nguồn có năng lượng lớn hơn Arduino. Để khắc phục điều này, ta cần 1 cái rơ-le để hoàn thành mạch, chuyển tiếp điện cho quạt, khi cảm biến khí đọc được giá trị bằng hoặc cao hơn giá trị cho các khí.

Để kết nối với rơ-le, ta nối 1 dây từ pin 13 vào khe IN1 trên rơ-le, 1 dây khác từ bề mặt Arduino tới bề mặt trên rơ-le, và 1 dây khác từ khe 5V trên Arduino tới VCC trên rơ-le. Sau đó ta hàn các âm cực cuối cùng của quạt tới âm cực cuối cùng của pin 9V, cực dương của pin được đục vào giữa cổng K1 trên rơ-le và cực dương của pin được lắp vào khe bên phải của K1 trên rơ-le

Bước 5: Lập chương trình cho quạt

 Để rơ-le hoạt động ta cần thêm 1 lệnh đơn giản

#include "MutichannelGasSensor.h" 

#include "rgb_lcd.h" 

rgb_lcd lcd;

const int buttonPin = 8; 

int buttonPushCounter = 0; 

int buttonState = 0; 

int lastButtonState = 0;

void setup() { 

lcd.begin(16, 2); // set up the LCD's number of columns and rows 

Serial.begin(9600); // start serial for output 

lcd.println("power on!"); 

lcd.noAutoscroll(); 

mutichannelGasSensor.begin(0x04);//the default I2C address of the slave is 0x04 //mutichannelGasSensor.changeI2cAddr(0x04); 

mutichannelGasSensor.doCalibrate(); 

pinMode(buttonPin, INPUT); 

pinMode(13,OUTPUT);

}

void loop() { 

digitalWrite(13,HIGH); 

float c; 

float d; 

float e; 

int f; 

float g; 

int h; 

float r; 

float t; 

float fah; 

mutichannelGasSensor.powerOn(); 

buttonState = digitalRead(buttonPin); // compare the buttonState to its previous state 

if (buttonState != lastButtonState) 

if (buttonState == HIGH) 

buttonPushCounter++; 

// Delay a little bit to avoid bouncing 

//delay(50); 

}

 

if (buttonPushCounter==0){ 

c = mutichannelGasSensor.measure_NH3(); 

lcd.setRGB(155,221,255); 

digitalWrite(13,HIGH); 

lcd.print("NH3:"); 

if(c>=0){lcd.print(c); 

if(c>=.213){ 

digitalWrite(13,LOW); 

else{ 

digitalWrite(13,HIGH); 

else lcd.print("invalid"); 

lcd.print(" ppm"); 

}

if (buttonPushCounter==1){ 

d = mutichannelGasSensor.measure_CO(); 

lcd.setRGB(196,216,226); 

lcd.print("CO:");

if(d>=0) {lcd.print(d); 

if(d>=1.36){ 

digitalWrite(13,LOW); 

else{ 

digitalWrite(13,HIGH); 

else lcd.print("invalid"); 

lcd.print(" ppm");

}

 

if (buttonPushCounter==2){ 

e = mutichannelGasSensor.measure_NO2(); 

lcd.setRGB(204,255,255); 

lcd.print("NO2:"); 

if(e>=0) {

lcd.print(e); 

if(e>=.359)

digitalWrite(13,LOW); 

else{ 

digitalWrite(13,HIGH); 

else lcd.print("invalid"); 

lcd.print(" ppm");

}

// if (buttonPushCounter==3){ 

// f = analogRead(0); 

// lcd.setRGB(182,134,44); 

// lcd.print("Light:");

// if(f>=0) lcd.print(f); 

// else lcd.print("invalid"); 

// lcd.print(" units");} 

// 

// if (buttonPushCounter==4){ 

// g = analogRead(1); 

// r = (float)(1023-g)*10000/g; 

//resistance calculation 

// t=1/(log(r/10000)/3975+1/298.15)-273.15; 

//temperature in celsius 

// fah=t*9/5+32; 

// lcd.setRGB(255,102,255); 

// lcd.print("Temp:"); 

// lcd.print(fah); 

// lcd.print(" *F");}

// if (buttonPushCounter==5){ 

// g = analogRead(1); 

// r = (float)(1023-g)*10000/g; 

//resistance calculation 

// t=1/(log(r/10000)/3975+1/298.15)-273.15; 

//temperature in celsius 

// lcd.setRGB(255,153,255); 

// lcd.print("Temp:"); 

// lcd.print(t); 

// lcd.print(" *C");}

 

if(buttonPushCounter==3){ 

h = analogRead(2); 

lcd.setRGB(8,30,63); 

lcd.print("Noise:"); 

if(h>=0){lcd.print(h); 

if(h>=26.25){ 

digitalWrite(13,LOW); 

else{ 

digitalWrite(13,HIGH); 

else lcd.print("invalid"); 

lcd.print(" units");

}

if (buttonPushCounter==4){ 

buttonPushCounter=0; 

lcd.setRGB(255,255,255); 

delay(250); 

lcd.clear(); 

}

Để thay đổi các ngưỡng giá trị, chỉ cần thay đổi mỗi giá trị trong câu lệnh if. Ví dụ, nếu việc thay đổi ngưỡng âm thanh, trong các lệnh nói rằng nếu (h >= 26.25), thay thế 26.25 với giá trị tương ứng. Điều này sẽ không làm thay đổi cách hiển thị giá trị của LCD.

Bước 6: Cố định các cấu kiện và hộp chứa

Giữ cố định các thành phần và để trong 1 cái thùng lớn, thích hợp hơn là không bị rò rỉ và cách được nhiệt  (điều này không cần thiết lắm). Ghim tất cả các phần cứng khác vào 1 tấm gỗ để cố định, sau đó đưa Arduino và các phần cứng kia vào thùng để không bị ướt. Vít quạt vào nắp thùng container (như hình)

Bước 7: Chạy thử

Để kiểm tra các thiết bị, chỉ cần cắm pin 9V cho Arduino. Đi quanh quanh với thiết bị này và phải chắc chắn là nó tương tác với môi trường. Một khi nó kích hoạt quạt tại ngưỡng thích hợp thì thêm 1 khối đá khô và đổ nước nóng vào để tạo sương mù. Một ít sương mù sẽ bị rò rỉ trên nắp, nhưng phần lớn là không xảy ra trừ khi các cảm biến giám sát tại giá trị cao hơn ngưỡng phù hợp.

Bước 8: kết luận

Mặc dù đề tài này hoạt động theo cách mà chúng ta muốn, chúng ta có thể cải tiến 1 số thiết kế như chúng ta muốn:

  • Cải tiến quạt 12V để phù hợp với container nhỏ hơn
  • Cần có lá chắn để giảm sự tiếng ồn tíc-tắc của rơ-le
  • Tốc độ của quạt thường làm tiêu tan sương. Ta cần cải tiến để khắc phục điều này, kết hợp với 1 bộ điểu khiển tốc độ quạt nào đó chẳng hạn để tránh thổi sương tan quá nhanh.

Nguồn: http://www.instructables.com/id/Environment-Sensing-Fog-Machine/

tuanhluyenkim
Author: Bùi Thị Tú Anh
About: Tu Anh is a senior at Hanoi University Of Science and Technology (HUST), 1 Dai Co Viet road, phone +84 (0)985179402, https://www.facebook.com/buithi.tuanh.7

Donate

Donate using PayPal
Amount: