Guest User

Untitled

a guest
Nov 17th, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.66 KB | None | 0 0
  1. // SIM800A-MQ2-Buzzer.ino
  2.  
  3. /*
  4. Sơ đồ nối chân
  5. SIM800A Arduino UNO
  6.  
  7. TX 2
  8. RX 3
  9. Power 4
  10. VCC VCC
  11. GND GND
  12. -----------------------
  13. MQ2 Arduino UNO
  14.  
  15. AO A0
  16. VCC VCC
  17. GND GND
  18. -----------------------
  19. Mạch còi Arduino UNO
  20.  
  21. I/O D11
  22. VCC VCC
  23. GND GND
  24.  
  25. LED Arduino UNO
  26. cực dương 10
  27. âm GND
  28. */
  29. // #include "PCM.h"
  30. // #include "alarm-code.h"
  31. // LED Cảnh báo
  32. #define LED_pin 10
  33. // Còi Cảnh báo
  34. #define BUZZER 11
  35. // Chân analog của cảm biến MQ2
  36. #define MQ2_Apin A0
  37.  
  38. // Chân điều khiển bật tắt Module SIM800A
  39. #define PWR_KEY 4
  40.  
  41. // Giá trị ngưỡng để cảnh báo
  42. #define WARNING 5000
  43.  
  44. // Số điện thoại cần cảnh báo
  45. // thay đổi số điện thoại nhận tin nhắn tại đây
  46. const String phone_number = "0123456789";
  47.  
  48. // Biến chứa giá trị nồng độ đọc từ cảm biến MQ2
  49. int MQ2_val = 0;
  50.  
  51. void Gsm_Power_On(); // Bat module SIM800A
  52. void Gsm_Init(); // Cau hinh Module SIM800A
  53. void Gsm_Call(); // Ham goi dien
  54. void Gsm_sendSMS(); // Ham nhan tin canh bao
  55.  
  56. void setup() {
  57. pinMode(MQ2_Apin, INPUT);
  58. pinMode(LED_pin, OUTPUT);
  59. // Cau hinh UART de giao tiep module SIM800A
  60. Serial.begin(9600);
  61.  
  62. // Khai bao chan PWR_KEY de dieu khien bat bat module SIM800A
  63. digitalWrite(PWR_KEY, LOW);
  64. pinMode(PWR_KEY, OUTPUT);
  65.  
  66. delay(1000);
  67. Gsm_Power_On(); // Bat Module SIM800A
  68. Gsm_Init(); // Cau hinh module SIM800A
  69. Gsm_Call(); // Test cuoc goi
  70. }
  71.  
  72. void loop() {
  73. // ĐỌC giá trị Analog của cảm biến MQ2
  74. MQ2_val = map(analogRead(MQ2_Apin), 0, 1023, 300, 10000);
  75. if (MQ2_val >= WARNING) {
  76. // nếu vượt ngưỡng báo động
  77. // báo động bằng buzzer, LED
  78. Alert();
  79. // gửi tin nhắn SMS báo động
  80. Gsm_sendSMS();
  81. }
  82. }
  83. void Alert() {
  84. // báo động bằng còi buzzer, LED
  85. for (uint8_t i = 0; i < 255; i = i + 2) {
  86. analogWrite(LED_pin, i);
  87. analogWrite(BUZZER, i);
  88. delay(10);
  89. }
  90. for (uint8_t i = 255; i > 1; i = i - 2) {
  91. analogWrite(LED_pin, i);
  92. analogWrite(BUZZER, i);
  93. delay(5);
  94. }
  95. for (uint8_t i = 1; i <= 10; i++) {
  96. analogWrite(LED_pin, 255);
  97. analogWrite(BUZZER, 200);
  98. delay(100);
  99. analogWrite(LED_pin, 0);
  100. analogWrite(BUZZER, 25);
  101. delay(100);
  102. }
  103. }
  104. void Gsm_Power_On() {
  105. digitalWrite(PWR_KEY, HIGH); // Du chan PWR_KEY len cao it nhat 1s
  106. delay(1500); // o day ta de 1,5s
  107. digitalWrite(PWR_KEY, LOW); // Du chan PWR_KEY xuong thap
  108. delay(10000); // xem trong Hardware designed SIM800A de hieu ro hon
  109. }
  110.  
  111. void Gsm_Init() {
  112. Serial.println("ATE0"); // Tat che do phan hoi (Echo mode)
  113. delay(2000);
  114. Serial.println("AT+IPR=9600"); // Dat toc do truyen nhan du lieu 9600 bps
  115. delay(2000);
  116. Serial.println("AT+CMGF=1"); // Chon che do TEXT Mode
  117. delay(2000);
  118. Serial.println("AT+CLIP=1"); // Hien thi thong tin nguoi goi den
  119. delay(2000);
  120. Serial.println("AT+CNMI=2,2"); // Hien thi truc tiep noi dung tin nhan
  121. delay(2000);
  122. }
  123.  
  124. void Gsm_Call() {
  125. Serial.println("ATD" + phone_number + ";"); // Goi dien
  126. delay(15000); // Sau 15s
  127. Serial.println("ATH"); // Ngat cuoc goi
  128. delay(2000);
  129. }
  130.  
  131. void Gsm_sendSMS() {
  132. Serial.println("AT+CMGS=\"" + phone_number + "\""); // Lenh gui tin nhan
  133. delay(5000); // Cho ky tu '>' phan hoi ve
  134. Serial.print("Phat hien co khi gas: "); // Gui noi dung
  135. Serial.print(map(MQ2_val, 0, 1024, 300, 10000)); // gửi nồng độ gas
  136. Serial.println(" ppm"); // đơn vị nồng độ
  137. // Gui Ctrl+Z hay 26 de ket thuc noi dung tin nhan va gui tin di
  138. Serial.print((char)26);
  139. delay(5000); // delay 5s
  140. }
Add Comment
Please, Sign In to add comment