You are on page 1of 4

// cảm biến dht ở tầng 2 -> mạch tạo cháy giả dùng dây mayso

// cảm biến khói ở tầng 3 -> mạch tạo khói giả cho tầng 2 và 3
// 1 servo cửa 3 tầng lắp ở tầng 4
// 3 động cơ ròng rọc gắn ở 3 tầng

#include "DHT.h" khai báo thư viện nhiệt dộ


#include <SoftwareSerial.h> khai báo thư viện
SoftwareSerial sim(10, 11); chân cổng kết nối
int _timeout; khai báo biến timeout
String _buffer; khai báo chuỗi gửi tin nhắn
String number = "+84369588679"; sđt
#include <Servo.h> khai báo thư viện sẻvo cửa
const int DHTPIN = 5; //Đọc dữ liệu từ DHT11 ở chân 5 trên mạch Arduino DÙNG
CHO TẦNG 2
const int DHTTYPE = DHT11; loại dht

DHT dht(DHTPIN, DHTTYPE); truyền 2 biến vào hàm dht


Servo myservo; tạo đối tượng myservo
int pos = 0; vị trí của cửa là 0(độ)
int gasT3 = A1; // CẢM BIẾN KHÍ GAS TẦNG 3 (chân A1)
int do_cuong_do = A0; // đo cường độ dòng điện(chân A0)

int relay_den = 6; // bật đèn khẩn cấp(chân 6)


int relay_chuyen_dien = 7; // ngắt điện dân dụng và chuyển sang điện dự phòng(chân
7
int relay_quat = 8; // thổi khí trong lành vào(chân 8)
int relay_phun_suong = 9; // mở relay phun sương cho tầng 2 bị cháy(chân 9)
int cbt4 = 3;

void dhtt2() { (hàm khi nhiệt độ>50)


// mở servo cửa 3 tầng
myservo.write(90); mở cửa 90 độ
//tắt đèn xanh đang sáng
digitalWrite(relay_quat, HIGH);
digitalWrite(relay_den, HIGH);
// bật quạt

delay(30000); chờ 30s


}

void khoiT3() { hàm được gọi khi khói >300

// mở servo cửa 3 tầng


myservo.write(90);
//tắt đèn xanh đang sáng
digitalWrite(relay_den, HIGH);
// bật phun sương
digitalWrite(relay_phun_suong, HIGH);
// bật quạt
digitalWrite(relay_quat, HIGH);
// gọi về điện thoại và nhắn tin
SendMessage(); hàm gửi tin
delay(10000);
callNumber(); hàm gọi
delay(10000);
delay(30000);

}
void chayt4() {

// mở servo cửa 3 tầng


myservo.write(90);
//tắt đèn xanh đang sáng
digitalWrite(relay_den, HIGH);
// bật phun sương
digitalWrite(relay_phun_suong, HIGH);
// bật quạt
digitalWrite(relay_quat, HIGH);
// gọi về điện thoại và nhắn tin
SendMessage();
delay(10000);
callNumber();
delay(10000);
delay(3000);

void setup() { hàm để cài đặt các chân


delay(7000); //delay for 7 seconds to make sure the modules get the signal
Serial.begin(9600); mở màn treminal 9600
_buffer.reserve(50); nhận 50 ký tự
Serial.println("Sistem Started..."); in ra màn hình "system started"
sim.begin(9600); khởi động module sim ở mức 9600
delay(1000); chờ 1s

pinMode(gasT3, INPUT); input đầu vào


pinMode(do_cuong_do, INPUT);
pinMode(cbt4, INPUT);
pinMode(relay_quat, OUTPUT); output đầu ra
pinMode(relay_den, OUTPUT);
pinMode(relay_chuyen_dien, OUTPUT);
pinMode(relay_phun_suong, OUTPUT);
myservo.attach(4); cắm vào chân số 4
}

void loop() {
myservo.write(0); đóng cửa
int khigaT3 = analogRead(gasT3); đọc cảm biến dạng analog (0-1024)
int chay = digitalRead(cbt4); đọc cảm biến dạng digital (0-1)
float h = dht.readHumidity(); đọc giá trị độ ẩm
float t = dht.readTemperature(); đọc nhiệt độ
float data1 = digitalRead(A0); đọc cảm biến dạng digital (0-1)

if (t > 50) { nếu nhiệt độ >50


dhtt2(); hàm dhtt2
}
if (khigaT3 >300) {
khoiT3(); hàm khói t3
}
if (chay == LOW) {
chayt4(); gọi hàm khói t4
}

if (data1 == HIGH) { cảm biến dòng điện


digitalWrite(relay_chuyen_dien, HIGH); // bật relay chuyển điện -> tắt hết
thiết bị điện đang dùng và chuyển sang điện ắc quy
digitalWrite(relay_den, HIGH); // tắt đèn xanh lá
delay(3000);
digitalWrite(relay_chuyen_dien, LOW); // bật relay chuyển điện -> tắt hết thiết
bị điện đang dùng và chuyển sang điện ắc quy
digitalWrite(relay_den, LOW);

myservo.write(0);
// Bật lại đèn trong phòng
digitalWrite(relay_den, LOW);
// Tắt phun sương
digitalWrite(relay_phun_suong, LOW);
// Tắt quạt
digitalWrite(relay_quat, LOW);
// chuyển sang điện thường
digitalWrite(relay_chuyen_dien, LOW);
delay(100);

void callNumber() { hàm gọi điện


sim.print (F("ATD")); gọi theo phương thức atd từ sdt cài sẵn
sim.print (number);
sim.print (F(";\r\n"));
_buffer = _readSerial(); đọc ở màn hình có gọi đc ko
Serial.println(_buffer); in ra màn hình serial gọi đc hay ko
}

void SendMessage() gửi tin nhắn


{
//Serial.println ("Sending Message");
sim.println("AT+CMGF=1"); //Sets the GSM Module in Text Mode
delay(1000);
//Serial.println ("Set SMS Number");
sim.println("AT+CMGS=\"" + number + "\"\r"); //Mobile phone number to send
message
delay(1000);
String SMS = " Co dam chay tai Truong thcs My Dinh 1";
sim.println(SMS);
delay(100);
sim.println((char)26);// ASCII code of CTRL+Z
delay(1000);
_buffer = _readSerial();
}

String _readSerial() {
_timeout = 0;
while (!sim.available() && _timeout < 12000 )
{
delay(13);
_timeout++;
}
if (sim.available()) {
return sim.readString();
}
}

You might also like