Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // SIM800A-MQ2-Buzzer.ino
- /*
- Sơ đồ nối chân
- SIM800A Arduino UNO
- TX 2
- RX 3
- Power 4
- VCC VCC
- GND GND
- -----------------------
- MQ2 Arduino UNO
- AO A0
- VCC VCC
- GND GND
- -----------------------
- Mạch còi Arduino UNO
- I/O D11
- VCC VCC
- GND GND
- LED Arduino UNO
- cực dương 10
- âm GND
- */
- // #include "PCM.h"
- // #include "alarm-code.h"
- // LED Cảnh báo
- #define LED_pin 10
- // Còi Cảnh báo
- #define BUZZER 11
- // Chân analog của cảm biến MQ2
- #define MQ2_Apin A0
- // Chân điều khiển bật tắt Module SIM800A
- #define PWR_KEY 4
- // Giá trị ngưỡng để cảnh báo
- #define WARNING 5000
- // Số điện thoại cần cảnh báo
- // thay đổi số điện thoại nhận tin nhắn tại đây
- const String phone_number = "0123456789";
- // Biến chứa giá trị nồng độ đọc từ cảm biến MQ2
- int MQ2_val = 0;
- void Gsm_Power_On(); // Bat module SIM800A
- void Gsm_Init(); // Cau hinh Module SIM800A
- void Gsm_Call(); // Ham goi dien
- void Gsm_sendSMS(); // Ham nhan tin canh bao
- void setup() {
- pinMode(MQ2_Apin, INPUT);
- pinMode(LED_pin, OUTPUT);
- // Cau hinh UART de giao tiep module SIM800A
- Serial.begin(9600);
- // Khai bao chan PWR_KEY de dieu khien bat bat module SIM800A
- digitalWrite(PWR_KEY, LOW);
- pinMode(PWR_KEY, OUTPUT);
- delay(1000);
- Gsm_Power_On(); // Bat Module SIM800A
- Gsm_Init(); // Cau hinh module SIM800A
- Gsm_Call(); // Test cuoc goi
- }
- void loop() {
- // ĐỌC giá trị Analog của cảm biến MQ2
- MQ2_val = map(analogRead(MQ2_Apin), 0, 1023, 300, 10000);
- if (MQ2_val >= WARNING) {
- // nếu vượt ngưỡng báo động
- // báo động bằng buzzer, LED
- Alert();
- // gửi tin nhắn SMS báo động
- Gsm_sendSMS();
- }
- }
- void Alert() {
- // báo động bằng còi buzzer, LED
- for (uint8_t i = 0; i < 255; i = i + 2) {
- analogWrite(LED_pin, i);
- analogWrite(BUZZER, i);
- delay(10);
- }
- for (uint8_t i = 255; i > 1; i = i - 2) {
- analogWrite(LED_pin, i);
- analogWrite(BUZZER, i);
- delay(5);
- }
- for (uint8_t i = 1; i <= 10; i++) {
- analogWrite(LED_pin, 255);
- analogWrite(BUZZER, 200);
- delay(100);
- analogWrite(LED_pin, 0);
- analogWrite(BUZZER, 25);
- delay(100);
- }
- }
- void Gsm_Power_On() {
- digitalWrite(PWR_KEY, HIGH); // Du chan PWR_KEY len cao it nhat 1s
- delay(1500); // o day ta de 1,5s
- digitalWrite(PWR_KEY, LOW); // Du chan PWR_KEY xuong thap
- delay(10000); // xem trong Hardware designed SIM800A de hieu ro hon
- }
- void Gsm_Init() {
- Serial.println("ATE0"); // Tat che do phan hoi (Echo mode)
- delay(2000);
- Serial.println("AT+IPR=9600"); // Dat toc do truyen nhan du lieu 9600 bps
- delay(2000);
- Serial.println("AT+CMGF=1"); // Chon che do TEXT Mode
- delay(2000);
- Serial.println("AT+CLIP=1"); // Hien thi thong tin nguoi goi den
- delay(2000);
- Serial.println("AT+CNMI=2,2"); // Hien thi truc tiep noi dung tin nhan
- delay(2000);
- }
- void Gsm_Call() {
- Serial.println("ATD" + phone_number + ";"); // Goi dien
- delay(15000); // Sau 15s
- Serial.println("ATH"); // Ngat cuoc goi
- delay(2000);
- }
- void Gsm_sendSMS() {
- Serial.println("AT+CMGS=\"" + phone_number + "\""); // Lenh gui tin nhan
- delay(5000); // Cho ky tu '>' phan hoi ve
- Serial.print("Phat hien co khi gas: "); // Gui noi dung
- Serial.print(map(MQ2_val, 0, 1024, 300, 10000)); // gửi nồng độ gas
- Serial.println(" ppm"); // đơn vị nồng độ
- // Gui Ctrl+Z hay 26 de ket thuc noi dung tin nhan va gui tin di
- Serial.print((char)26);
- delay(5000); // delay 5s
- }
Add Comment
Please, Sign In to add comment