Chương 2: Cơ sở lý thuyết Chi tiết các chân như sau: 3V3: Chân cung cấp nguồn 3.3V cho module GND: Chân nói đất VIN: Chân này cung cấp nguồn 5V đề chuyên sang 3.3V thông qua bộ chuyển đ
Trang 1
HOC VIEN CONG NGHE BUU CHINH VIEN THONG
KHOA CONG NGHE THONG TIN
BAO CAO
Môn học: IOT và ứng dụng
Đề tài: Xây dựng hệ thống cảnh báo rò rỉ khí gas
Giảng viên: Trần Thị Thanh Thủy
Mã lớp học: INTI14149 nhóm 04
Thành viên: Đỗ Nhật Minh - B2IDCCN52I
Nguyễn Mạnh Hùng - B2IDCCN413 Dao Hai Dang — B21DCCN197
Trang 2
Chương 2: Cơ sở lý thuyết - - 5 ST E121 21211 1 HE t1 treo 5
1 Thiết bị phần cứng + 5s E11 1t E212 1 tt HH ng HH hàng 5
2 Phần mềm -2222:2222122211.2221222112221211 re 10
3 Mô phỏng hệ thống 5 S1 SE E211 11211711 11c r1 ru 10
Trang 3Sự phát triển của [oT mang đến nhiều lợi ích vượt trội, giúp tôi ưu hóa quy trình sản xuất, nâng cao hiệu suất công việc, và cải thiện chất lượng cuộc sông Các ứng dụng của loT trải rộng từ những tiện ích nhỏ như điều khiên đèn và nhiệt độ trong nhà cho đến những
hệ thông phức tạp hơn như quán lý thành phố thông minh, sản xuất tự động và theo dõi
sức khỏe cá nhân Không chỉ dừng lại ở việc kết nối các thiết bị đơn lẻ, loT còn mở ra cơ
hội cho việc phân tích đữ liệu lớn, cung cấp thông tin chỉ tiết và đự báo cho các doanh nghiệp và chính phủ trong việc đưa ra quyết định
Mặc dù tiềm năng của loT là rất lớn, nhưng nó cũng đặt ra nhiều thách thức Các vẫn đề
về bảo mật thông tin và quyền riêng tư là những môi quan tâm hàng đầu Khi ngày càng nhiều thiết bị được kết nối với nhau, nguy cơ bị tần công mạng và mắt kiêm soát dữ liệu
cũng tăng lên Do đó, việc phát triển các hệ thông bảo mật mạnh mẽ và các khung pháp lý
phù hợp là điều cần thiết dé dam bao rang IoT duoc ap dụng một cách an toàn và hiệu quả
Internet of Things đang và sẽ tiếp tục thay đôi cách chúng ta sông, làm việc và tương tác với thế giới xưng quanh Với khả năng kết nối và tự động hóa mạnh mẽ, [oT mang lại những tiềm năng fo lớn cho các ngành công nghiệp, chính phủ, và cuộc sống hàng ngày Tuy nhiên, dé khai thác tối đa lợi ích cua IoT, cần có sự đầu tư nghiêm túc vào nghiên cứu, phát triển và bảo mật đề đảm bảo rằng chúng ta có thể tận dụng những cơ hội mà IoT
mang lại một cách an toàn và bền vững
Trang 4Nội dung nghiên cứu
dụng
3 Pham vi
Phạm vi của hệ thông cảnh báo rò rỉ khí gas bao gồm:
‹« Khu vực nhà ở và bếp: Giám sát an toàn trong không gian sinh hoạt hằng ngày
khí gas
« Tòa nhà thông minh: Tích hợp với hệ thống giảm sát và tự động hóa
Hệ thống có thê được triển khai ở nhiều quy mô khác nhau, từ gia đình đến công nghiệp
Trang 5Chương 2: Cơ sở lý thuyết
Chi tiết các chân như sau:
3V3: Chân cung cấp nguồn 3.3V cho module
GND: Chân nói đất
VIN: Chân này cung cấp nguồn 5V đề chuyên sang 3.3V thông qua bộ chuyển đổi điện áp trên board
EN: Chan Enable, khi duoc kéo cao, no sé bat module
RST: Chân reset, khi được kéo xuống thấp sé reset module
TXD0/TXDI: Chân truyền dữ liệu (TX)
RXD0/RXDI: Chân nhận dữ liệu (RX)
GPIO: Chan I/O da nang cua module
¢ - GPIO0: Chân đa năng, thường dùng đề khởi động chế độ Flash
¢ GPIO1 (TX): Dung lam chan TX cho UART.
Trang 6GPIO2: Chan da nang, thuong sir dung dé diéu khién dén LED trén board GPIO3 (RX): Dung lam chan RX cho UART
GPIO4, GPIOS: Cac chan I/O thong dung
GPIO9, GPIO10: Thường được dùng trong giao tiếp với bộ nhớ flash SPI GPIO12, GPIO13, GPIO14: Các chân giao tiép SPI (MOSL MISO, SCLK) GPIO15: Chan giao tiép SPI hoặc làm đầu ra thông thường
GPIOI6: Thường dùng đề đánh thức module từ chế độ ngủ (wake-up)
MOSI, MISO, SCLK, CS: Các chân này dùng đề giao tiếp với thiết bị ngoại vi thông qua giao thức SPI (Serial Peripheral Interface):
¢ MOSI (Master Out Slave In): Dữ liệu từ Master dén Slave
« MISO (Master In Slave Out): Dir ligu tir Slave dén Master
¢ SCLK (Serial Clock): Déng hé SPI
ADCO (ADC0): Chan doc gia trị tương tự (analog), có thé doc các tín hiệu điện áp analog với mức điện áp từ 0 đến IV
e - Tích hợp Wi-Fi: ESP8§266 cũng có thê được lập trình để gửi cảnh báo qua internet,
ví dụ như thông báo đến điện thoại thông qua ứng dụng Blynk
-Module relay 5V 1 kênh kích mức HIGH/LOW: Điều khiển bật/tắt hệ thống cảnh báo
e _ Chân điều khiến (IN): Chân này nhận tín hiệu từ một chân GPIO của ESP8266 (chăng hạn như D6) đề đóng/ngắt mạch Khi chân này được điều khiển ở mức logic HIGH, cuộn dây trong ro le sẽ được cấp nguồn và đóng mạch
e = Chan NC (Normally Closed): Mac dinh, khi ro le khong duoc kích hoạt, chân NC
sẽ nối với chân COM (common), cho phép dong dién chay qua
COM cho phép dòng điện đi qua và bật thiết bị kết nỗi với nó
Chức năng: Khi phát hiện khí gas, ESP8266 sẽ kích hoạt rơ le để đóng mạch và có thé
điều khiên một thiết bị điện cao hơn như quạt hoặc hệ thông thông gió đề đây khí gas ra ngoài
Trang 7
¢ Chân GND: Nối với chân GND (mass) của ESP8266 đề hoàn thành mạch điện
chuyền từ mức logie LOW (0) sang HIGH (1) Tín hiệu từ chân OUT được kết nối với một trong các chân GPIO (General Purpose Input/Output) cua ESP8266, ví dụ như chân D5 (trong hình)
Hoạt động của MQ2:
® MQ-2 là loại cảm biến phát hiện khí gas như LPG, propan, methane, hydrogen,
khói, và cồn Cảm biến này hoạt động dựa trên sự thay đổi điện trở của một vật liệu khi
nó tiếp xúc với khí gas
© _ Khi nồng độ khí gas vượt ngưỡng an toàn, cảm biến sẽ phát hiện và gửi tín hiệu
HIGH đến bộ điều khiển ESP8266.
Trang 8
-Buzzer 3V: Cảnh báo bằng âm thanh khi phát hiện nồng độ khí gas vượt ngưỡng cho
phép
* Chan điều khiển: Được ni với một chân GPIO của ESP8266, ví dụ như D7
thanh
Chức năng: Còi kêu lên khi có rò rỉ khí gas đề cảnh báo trực tiếp cho người dùng
ESP8266 sẽ điều khiến việc tăt/bật còi dựa trên tình trạng rò rỉ khí
Trang 9
- 1 Button dé bat/tat hé thong
© Chân điều khiển: Được nỗi với một chân GPIO khác của ESP8266, chăng hạn như
D8
Chức năng: Đèn LED sáng khi phát hiện rò ri khí gas, cung cấp cảnh báo trực quan bên
cạnh cảnh báo âm thanh từ còi1
f
y
/
Trang 102 Phần mềm
- _ Blynk: Blynk được cấu hình đề nhận thông báo từ ESP8266 khi có sự có, cho phép người dùng theo đối và tắt mở hệ thông từ xa
- Arduino IDE: Chuong trinh diéu khién duoc lap trinh trén Arduino IDE, trong do
ESP8266 nhận dữ liệu từ cảm biến và điều khiển relay, buzzer
- ESP8266 sé thiết lập các chân GPIO đề sẵn sàng nhận tín hiệu từ cảm biến và điều
khiển các thiết bi dau ra
Trang 11- Cam bién MQ-2 sẽ bắt đầu quá trình khởi động ban đầu (warming-up) Quá trình nay mắt khoảng vài giây đến vài phút đề cảm biến ồn định và bắt đầu phát hiện nồng độ khí gas chính xác
2) Quá trình giám sát khí øas
- Cam bién MQ-2 liên tục đo đạc nồng độ khí gas trong không khí Cảm biến này
hoạt động bằng cách sử dụng một vật liệu bán dẫn, khi tiếp xúc với khí gas, điện trở của
vật liệu thay đôi Thay đổi điện trở này được chuyến đổi thành tín hiệu điện áp tại chân
OUT của cảm biến
-_ Chân OUT của MQ-2 kết nối với một chân GPIO của ESP8266 (ví dụ như D5)
- Trong trường hợp bình thường (nồng độ khí gas ở mức an toàn), chân OUT của MQ-2 sẽ ở mức logic LOW (tương đương 0V) ESPS266 đọc giá trị này và không thực hiện bất kỳ hành động nào, các thiết bị báo động (còi, đèn LED, rơ le) sẽ tắt
3) Phát hién ro ri khi gas
- Khi có rò ri khí gas (LPG, methane, propan, v.v.) và nồng độ khí gas trong môi trường vượt quá ngưỡng an toàn mà cảm biến đã được cài đặt, điện trở của MQ-2 thay đối, làm thay đôi điện áp tại chân OUT của cảm biến
-_ Lúc này, chân OUT của MQ-2 sẽ chuyển sang mức logic HIGH (thường là 3.3V hoặc 5V, tùy theo nguồn cấp), điều này báo hiệu cho ESP8266 rằng có sự hiện diện của khí gas ở mức nguy hiểm
ESP8266 đọc tín hiệu mức HIGH từ MQ-2 qua chân GPIO (ví dụ D5) và ngay lập
tức xử lý tín hiệu này đề kích hoạt hệ thông báo động
4) Kích hoạt hệ thống báo động
- Bat cdi bao déng (Buzzer): ESP8266 sé dat mirc logic HIGH trén chan GPIO kết
nỗi với còi (ví dụ như D7) Khi chân này được kích hoạt, còi sẽ phát ra âm thanh lớn dé
cảnh báo người dùng về sự cố
- Bat dén LED (LED cảnh báo): Đồng thời, ESP8266 sẽ điều khiển một chân GPIO
khác (ví dụ D8) đê cung cấp tín hiệu HIGH cho đèn LED Đèn LED sé sang dé cung cap
cảnh báo trực quan về rò rỉ khí gas
o ESP8266 cing diéu khién chan GPIO nối với ro le (vi du D6) dé kich hoat ro le
Khi rơ le được kích hoạt, nó sẽ đóng mạch và điều khiển các thiết bị lớn hơn như hệ thống
thông gió hoặc cắt điện cho các thiết bị nguy hiểm (như bếp gas, máy nước nóng)
o_ Rơ le có thể điều khiển dòng điện hoặc thiết bị có công suất cao hơn so với các chân GPIO của ESP8266, bảo đảm sự an toàn khi vận hành các thiết bị công suất lớn
- _ Thông báo từ xa (nếu có Wi-Fi): ESP8266 sẽ gửi thông báo qua internet đến Blynk
để cảnh báo người dùng về tinh trạng rò rỉ khí gas thông qua điện thoại di động Đây là một tính năng giúp nâng cao tính tiện lợi và cảnh báo kịp thời khi không có người ở hiện trường
5) Xử lý sau cảnh báo
Trang 12không khí
LOW tro lai chan OUT, va ESP8266 sẽ:
o_ Ngắt còi báo động (bằng cách đặt mức logic LOW trên chân GPIO điều khiên còi)
o_ Tắt đèn LED cảnh báo
o_ Ngắt rơ le (mở mạch đê tắt các thiết bị như hệ thống thông gió, bếp, v.v.)
- _ Hệ thống sau đó quay lại trạng thái giám sát bình thường và tiếp tục theo đối môi trường
6) Trường hợp hệ thống tiếp tục báo động
- _ Nếu nỗng độ khí gas không giảm hoặc tiếp tục tăng, hệ thống sẽ duy trì trạng thái
cảnh báo Còi và đèn LED sẽ tiếp tục hoạt động cho đến khi khí gas trở vẻ mức an toàn
hoặc có người dùng can thiệp dé tắt cảnh báo
- _ Hệ thống có thể được lập trình thêm đề gửi cảnh báo nhiều lần, thông báo qua Wi-
Fi cho đến khi tình trạng nguy hiểm được giải quyết
Trang 13Chương 3: Thực nghiệm và kết quả
1 Giao diện Blynk
Gas Sensor - oiine
© AẠ 4 xw%x «= & Edit
- Live status (Trạng thái trực tiếp)
o Thời gian giám sat (Live, lh, 6h, 1d, lw, v.v.): Đây là các tùy chọn đề lựa chọn khoảng thời gian bạn muốn giám sát nồng độ khí
Trang 14o Nếu cảm biến đã được kết nối với mang blynk thi mau tim sé chuyén sang trang
thai nhap nhay
- Warning status (Trang thai canh bao)
Đây là nơi sẽ kích hoạt cảnh báo và hiển thị màu đỏ khi nồng độ khí gas vượt quá ngưỡng đã thiết lập
- Gas concentration (Néng d6 khi gas)
Biểu đồ này thể hiện nồng độ khí hiện tại đo được bởi cảm biến MQ-2 Nong độ này
duoc do bang ppm (parts per million), cho thấy nồng độ khí cụ thể trong không khí Kim chỉ báo hiền thị trực quan trên vòng cung từ 0 đến 1000 ppm Cac gia tri ppm
đại diện cho sự hiện điện của khí gas hoặc các chất gây cháy trong môi trường
- Warning level (Mức độ cảnh báo)
Đây là thanh trượt cho phép điều chỉnh ngưỡng cảnh báo khi nồng độ khí vượt quá
giới hạn an toàn thiết lập
- Operating mode (Ché dé hoat déng)
Đây là một công tác bật/tắt để điều khiển chế độ hoạt động của cảm biến Khi bật, cảm biến sẽ hoạt động và gửi đữ liệu liên tục về mức khí phát hiện được
Trang 15pinMode( buzzer, OUTPUT) ;
pinMode( relay ,OUTPUT) ;
pinMode( ledMode, OUTPUT) ;
digitalwrite(buzzer,Low); //Tat buzzer digitalwrite(relay,LOW);
Trang 16tloat ratio = voltage / 1.4;
mq2_value = 1000.0 * pow(10, ((logia(ratio) - 1.0278) / @.6629));
Serial.println("pa tat cảnh báo!”);
Trang 17#define dprint( ) | Serial.print( VA_ARGS )
#define dprintin( ) Serial.printin(_ VA ARGS_ )
volatile bool btSetupPressed = false;
volatile uint32_t btSetupPressTime = -1;
volatile uint32_t blinkTime = millis();
#define btSetupHoldTime 19000
Trang 18template<typename T, int size>
void copyString(const String& s, T(&arr)[size]) {
Trang 19volatile State state = MODE_MAX_VALUE;
State get() { return state; }
bool is (State m) { return (state == m); }
Trang 20dprintln("Load Configuration stored”);
memset (&configstore, 0, sizeof(configStore));//clear vùng nhớ đệm về @
//Vùng nhớ bằng với size biến cấu trúc + config start
dprintln(”EEPROM config size: "+String(sizeof(ConfigStore)));
State currState = espState::get();
if(btSetupPressed && (millis() - btSetupPressTime) >btSetupHoldTime) {
digitalwrite(ledsignal, !digitalRead(ledsignal));
jelse if (btSetupPressed) {
blinkLed(1000) ;
Trang 21ICACHE_RAM_ATTR void btSetupChange(){
bool btState = !digitalRead(btSetup) ;
if (btState && !btSetupPressed) {
Trang 22dprintln("AP SSID: ”+ssid_ap);
dprintln("AP IP: "4+WiFi.softAPIP().toString());
int wifi_nets = WiFi.scanNetworks(true, true);
const uint32_t t = millis();
while (wifi nets < @ && millis() - t < 20000){
Trang 23String ssid= webServer.arg("ssid_sta");
String pass = webServer.arg("pass_sta");
content = “Configuration invalid";
webServer.send(200, “application/json", content);
Trang 24if (espState::is(MODE_CONFIGURING) && WiFi.softAPgetStationNum() == 9) {
WiFi.mode(WIFI_STA);
return;
int n=0;
unsigned long timeoutMs = millis() + WIFI_NET_CONNECT_TIMEOUT;
Trang 25unsigned long timeoutMs = millis() + WIFI_CLOUD_CONNECT_TIMEOUT; while ((timeoutMs > millis()) &
(WiFi.status() == WL_CONNECTED) &&
(!Blynk.isTokenInvalid()) &
(Blynk.connected() == false))
Trang 26espState: : set(MODE_ RUNNING) ;
connectBlynkRetries = WIFI_CLOUD_MAX_RETRIES; } else if( connectBlynkRetries <= 0){ espState: :set(MODE_ERROR);