LOI MO DAU Ngày nay, khi khoa học công nghệ phát triển một cách mạnh mẽ, việc ứng dụng cho các hệ thông nhúng ngày cảng trở nên phố biến vào đời sông, từ những ứng dụng đơn giản như: điề
Trang 1
HOC VIEN CONG NGHE BUU CHINH VIEN THONG
KHOA CONG NGHE THONG TIN
BAO CAO
Mon hoc: [OT 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: INT14149 nhóm 04 Nhóm BTL: 04
Thành viên: Đỗ Nhật Minh - B21IDCCN521
Nguyễn Mạnh Hùng - B21DCCN413 Dao Hai Dang - B21DCCN197
Hà Nội - 2024
Trang 2
MUC LUC
LOI MO DAU
PHAN CONG NHIEM VU
CHUONG 1: TONG QUAN VE DE TAI NGHIEN CUU
2 Danh gid két qua
Tài liệu tham khảo
Trang 3LOI MO DAU
Ngày nay, khi khoa học công nghệ phát triển một cách mạnh mẽ, việc ứng dụng cho
các hệ thông nhúng ngày cảng trở nên phố biến vào đời sông, từ những ứng dụng đơn giản
như: điều khiên LED, bật tắt thiết bị điện tử đến những ứng dụng cho xã hội như: Điều
khién đèn giao thông, hệ thông cầu thang máy, cửa tự động cho đến những ứng dụng lớn như Robot, phi thuyền không người lái, kiêm soát nhà máy hạt nhân Các hệ thống tự động trước đây sử dụng nhiều công nghệ khác nhau như các hệ thông tự động hoạt động bằng nguyên lý khí nén, thủy lực, relay cơ điện, mạch điện tử số, các thiết bị máy móc tự động bằng các cam chốt cơ khí Các thiết bị, hệ thông này có chức năng xử lý và mức độ
tự động thấp so với các hệ thong tự động hiện đại được xây dựng trên nền tảng của các hệ
thống nhúng
Với những kiến thức đã được học và tìm hiểu từ trường học và khoa học công nghệ
của cuộc sống hiện đại, chúng em cũng muốn góp thêm phần phát triển xã hội bằng cách học hỏi và đưa ra những sản phần có ích cho cuộc sông.Chúng em xin giới thiệu một sản pham rat thiết thực cho cuộc sống của chúng ta: “Hệ thống cảnh báo rò rỉ khí gas” Với ý tưởng trên chúng em mong muốn được góp phần bảo vệ cho những gia đình,
tập thê hay công ty có sử dụng khí Gas được an toàn hơn Mạch phát hiện sự rò rỉ khí Gas
sẽ cảnh báo cho chúng ta biết được có khí Gas bị rò rỉ ra khỏi bình chứa hoặc ống dan dé
tránh được những tai nạn đáng tiếc xảy ra
Trang 4PHAN CONG NHIEM VU
STT Ho va tén Mã sinh viên Nhiệm vụ
Nguyễn Mạnh Hùng B21DCCN413 Lap mach, lam slide, stra
bao cao, tim hiéu ma nguôn chương trình
Đỗ Nhật Minh B21DCCN521 Lắp mạch, sửa báo cáo,
tìm hiêu mã nguôn chương trình
ly giao diện, tìm hiệu mã nguôn chương trình
Trang 5
CHUONG 1: TONG QUAN VE DE TAI NGHIEN CUU
1 Lý do lựa chọn đề tài
Ngày nay với sự phát triển vượt bậc của khoa học kỹ thuật, điện tử đã được ứng dụng ở rất nhiều lĩnh vực trong thực tế để phục vụ nhu cầu : chăm sóc sức khỏe, bảo vệ tính
mạng và tài sản cho con người
Khi đời sống con người được cải thiện thì việc sử dụng bếp gas hay các sản phẩm
của øas làm nhiên liệu đun nau dang pho biến Bên cạnh việc tiện lợi của gas, một vấn đề
khác của gas cũng được quan tâm đó là : an toàn khi sử dụng gas Khi con người tiếp xúc trực tiếp với khí gas (vượt quá một nông độ cho phép nhất định) trong thời gian dài thì rất
dễ bị ngộ độc gas và có thê gây tử vong Không những vậy khí gas rò ri vào trong không khí có thê dễ dàng bắt lửa và gây cháy nô, ảnh hưởng nghiêm trọng tới an toàn của người
sử dụng cũng như những người xung quanh Vì vậy, van dé phát hiện và xử lý sự cố rò gas
là một việc rất cần thiết với người thường xuyên sử dụng gas Đặc biệt là các bạn sinh viên thường sử dụng các bình gas mini không đảm báo chất lượng, có thể rò ri gas bất cứ khi
nào Xuất phát từ ý tưởng và tình hình thực tế em thấy đây là một đề tài hay, có tính ứng
dụng cao và có thê phát triển nên em đã chọn đề tài này làm đề tài chính trong đồ án môn học
Đề khắc phục sự cố của khí gas khi sử dụng chúng em đã làm ra thiết bị cảnh báo rò
rỉ khí gas, thiết bị này giúp chúng ta dé dàng nhận biệt khí gas khi bị rò rỉ, được sử dụng trong các tòa nhà và hộ gia đình
2 Giới thiệu về đề tài
Như thầy cô và mọi người đã biết trong cuộc sông xã hội hiện đại ngày nay vấn đề
sử dụng khí đốt ( ở đây chúng ta đang nói đến là khí Gas ) trong việc nấu ăn hàng ngày và hay cả sử dụng khí đốt cho các ngành công nghiệp đang rất phố biến Như ngày xưa khoảng
15 năm về trước thì chỉ có thành phố mới sử dụng khí đốt cho nấu ăn hay nhưng cho những ngành công nghiệp còn nông thôn thường sử dụng bếp rạ và củi cho việc đun nấu thì nay gần như từ quê lên phó thì 99% sử dụng khí đốt cho bếp lúc đun nấu nên khi khí gas bị rò
Trang 6rỉ ra ngoài khả năng cháy nô là rất cao vì chỉ cần có tia nửa điện từ các 6 cam hay thiét bi điện hay một đoạn dây bị hở sỉnh ra tia lửa điện là khả năng hỏa hoạn cho ngôi nhà là rất cao ảnh hưởng đến tài sản và tính mạng con người Vì thế đề tài nghiên cứu của chúng em
nhằm phần nảo đó việc phát hiện hiện khí gas và ngăn chặn hỏa hoạn cho cho người và tải san
Với nội dung chính của đề đó là khi phát hiện có khí gas thiết bị sẽ bật còi báo cho
người trong nhà biết được khí gas đang bị rò ri đê đưa ra các phương án khắc phục
3 Mục tiêu đồ án
Mục tiêu của đồ án bao gôm cả mục tiêu cá nhân và mục tiêu sản phâm, được định hình
rõ ràng như sau:
Mục tiêu cá nhân:
®_ Hiểu và năm vững cấu trúc phần cứng, sơ đồ khôi, cũng như nguyên lý hoạt động
của mạch điều khiến
e Tìm hiểu sâu về lập trình Arduino, từ đó cải thiện khả năng lập trình và phát triển
các ứng dụng nhúng
e Trang bị kỹ năng thực hiện và hoàn thiện một đồ án đầy đủ, giúp ích cho quá trình
thực hiện đồ án tốt nghiệp trong tương lai
Mục tiêu sản phâm:
e Đảm bao san pham hoạt động ôn định với các tính năng cần thiết, phục vụ cho việc cảnh báo khí gas một cách hiệu quả
e Thiết kế sản phẩm có kích thước nhỏ gọn, đảm báo tính thâm mỹ, dễ dàng sử dụng
và phù hợp với môi trường lắp đặt
®_ Đặt mục tiêu tạo ra sản phâm có giá thành hợp lý, phù hợp với nhu cầu và khả năng tài chính của người tiêu dùng hiện nay, mang lại giá trị thiết thực và sự an tâm cho
họ
Nhờ vào những mục tiêu này, đồ án sẽ không chỉ đáp ứng được yêu cầu về mặt kỹ thuật
mà còn mang lại ý nghĩa thực tế và tiềm năng ứng dụng rộng rãi
Trang 7CHUONG 2: CO SO LY THUYET
1 Thiết bị phần cứng
Module ESP8266 NodeMcu CP2102: Đóng vai trò là bộ vi xử lý trung tâm, kết nỗi cảm
biên và gửi dữ liệu lên hệ thông giám sát từ xa
Module ESP8266 NodeMcu CP2012
Chỉ tiết các chân như sau:
3V3: Chân cung cấp nguồn 3.3V cho module
GND: Chan 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: Chan reset, khi duoc kéo xuéng thap sé reset module
TXD0/TXDI: Chân truyền dữ liệu (TX)
RXD0/RXDI: Chân nhận dữ liệu (RX)
GPIO: Chân I/O da nang cia module
e GPIO0: Chân đa năng, thường dùng để khởi động chế độ Flash.
Trang 8GPIO1 (TX): Dung lam chan TX cho UART
GPIO2: Chân đa năng, thường sử dụng đề điều khiên đèn LED trên board GPIO3 (RX): Dung lam chan RX cho UART
GPIO4, GPIOS: Cac chan I/O théng dung
GPIO9, GPIO10: Thường được dùng trong giao tiếp với bộ nhớ flash SPI GPIO12, GPIO13, GPIO14: Cac chan giao tiép SPI (MOSI, MISO, SCLK) GPIO15: Chan giao tiếp SPI hoặc làm đầu ra thông thường
GPIO16: Thường dùng để đánh thức module từ chế độ ngủ (wake-up)
MOSL, MISO, SCLK, CS: Cac chan này dùng dé giao tiếp với thiết bị ngoại vi thông qua giao thirc SPI (Serial Peripheral Interface):
MOST (Master Out Slave In): Dữ liệu từ Master đến Slave
MISO (Master In Slave Out): Dir liéu ttr Slave dén Master
SCLK (Serial Clock): Déng hé SPI
CS (Chip Select): Chon thiét bi SPL
ADCO (ADCO): Chan doc gia trị tương tự (analog), co thể đọc các tín hiệu điện áp analog với mức điện áp từ 0 dén LV
Module relay 1 kênh 5VDC:
Thông số kỹ thuật sản phẩm:
Điện áp sử dụng: 5VDC
Dòng tiêu thụ: khoảng 200mA /1Relay
Tín hiệu kích: Tùy chọn mức cao High (5VDC) hoặc thấp Low (0VDC)
Tiếp điểm đóng ngắt Relay trên mạch: Max 250VAC-10A hoặc 30VDC-10A Kích thước: 50 x 26 x I9mm
Module relay 1 kénh SVDC tuy chon kich hoạt mức cao hoặc thấp H/L
Trang 9Module cảm biển khí ga MQ2: Là loại cảm biến phát hiện khí gas như LPG, propan,
methane, hydrogen, khoi, va con Cam 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
MQ2-Module cam bién khi ga MQ2
Coi chip 3-24V 3015A Buzzer: Coi Buzzer bao dong 3~24VDC duoc str dung dé phat ra
âm thanh lớn khi cập nguôn, ứng dụng trong các hệ thông chông trộm, cảnh báo, Thông số kỹ thuật sản phẩm:
e_ Điện áp hoạt động: 3 ~ 24VDC
e Dong điện tiêu thụ: 30mA 12V, 40mA 24V
e_ Biên độ âm thanh: lên đến 100dB
e Kích thước: 27 x l5mm
Trang 10Cầu hình tiếp diém: Single Pole Single Throw (SPST)
Kiéu chan: Xuyén 16
Trang 11LED 5mm do chan dai:
Với Blynk, người dùng có thê tạo ra các ứng dụng điều khiến thiết bị loT chỉ trong vải phút ma khong cần có kiến thức chuyên sâu về lập trinh Blynk cung cấp một loạt các công cụ và giao diện người dùng trực quan giúp người dùng dễ dàng kéo thả và tương tác với các thành phân điều khiến, biểu đô, cảm biến, và nhiều tính năng khác
Cu thé, người dùng có thể tạo ra các ứng dụng để điều khiển đèn, quạt, cảm biến nhiệt độ, đo lường độ ấm và thậm chí là máy rửa chén thông minh Blynk hỗ trợ
đa nên táng, từ các thiết bị di động như điện thoại thông minh đến các thiết bị nhúng như Arduino, Raspberry Pi, ESP§266 và nhiều hơn nữa
Điều này giúp Blynk trở thành một công cụ hữu ích không chỉ cho các nhà phát triển IoT chuyên nghiệp mà còn cho những người mới bắt đầu quan tâm đến thé giới IoT Với sự tiện lợi và tính linh hoạt, Blynk đã và đang giúp mọi người dễ dàng thực hiện những ý tưởng sáng tạo của mình trong lĩnh vực loơT một cách hiệu qua
11
Trang 12Arduino IDE: Arduino IDE 1a mét phan mềm có mã nguồn mở, được sử dụng chủ yếu đề viết và biên dịch mã hóa vào module Arduino Nó bao gôm phần cứng và phần mềm Phần cứng chứa tới 300.000 bo mạch được thiết kế sẵn với các cảm biến, sự kiện Phần mềm giúp bạn có thê sử dụng các biến thé, sự kiện của Arduino một cách linh hoạt phù hợp
với mục tiêu sử dụng
3 Thiết kế phần mềm
Code hệ thống (Arduino IDE)
6 CANH BAO KHI GAS_ MQ2.mo (Đoạn mã chính của chương trình)
int buzzer=5; /⁄/D1 Còi báo động
int relay =4; //D2 — Rơ-le để bậưtắt thiết bị
int ledMode=14; /⁄/p5 Đèn LED hién thi trang thai cua ché dé canh bao
inE mucCanhbao; //Biên để lưu mức cảnh báo khí gas được đặt từ ứng dung
BlynkTimer timer; //Sử dụng trmer của Blynk dé thực hiện các tác vụ lặp lại theo thời
gian định trước
int timerID1,timerID2; ⁄⁄/ID của các bộ hẹn giờ
float mq2 value; //Laru gia tri do khi gas tir cam bién MQ2
int button=0; //D3
boolean buttonState=HIGH; //Trang thái của nút nhắn (cao hoặc thấp)
boolean runMode=0;//Bat/tat ché dd canh bao
boolean canhbaoState=0; //Trang thai canh bao (dang cảnh báo hoặc không)
WidgetLED led(v0); //Diéu khién widget LED ao tir tg dung Blynk
#define GAS V1 //Truyén gia tri khi gas
#define MUCCANHBAO V2 //Nhan gia tri mirc cảnh báo từ ứng dụng
#define CANHBAO V3 //Hién thi trang thai canh bao
#define CHEDO V4 //Diéu khién trang thái chế độ
#define BLYNK TEMPLATE ID “TMPL6hFLnz8Ws" //m& dinh danh để liên kết
thiết bị với câu hình trên Blynk
#define BLYNK TEMPIATE NAME "Gas sensor" //tên của template dé dễ dang nhận diện dự án
12
Trang 13
void setup() {
Serial.begin (115200); ⁄/: Khởi tạo giao tiếp nói tiếp với tốc độ 115200 bps dé in dir liệu ra màn hình giám sat
//Câu hình các chân GPIO cho nút nhấn, còi, rơ-le, va dén LED
pinMode (button, INPUT PULLUP) ;
pinMode (buzzer,OUTPUT);
pinMode (relay, OUTPUT) ;
pinMode (ledMode, OUTPUT) ;
//Tat còi báo lúc khởi tao
digitalWrite (buzzer, LOW); //TAt buzzer
digitalWrite (relay, LOW);
//Dat b6 hen giờ dé goi ham ‘handleTimerID1° mỗi giây
timerTD1 = timer.setTnterval(1000L,handleTimerTD1);
espConfig.begin();
void loop() {
espConfig run();//Chay cae tac vy lién quan dén ESP
app_loop(); //Goi ham xu ly vong lặp của ứng dụng
}
void app loop(){
timer.run(); //Chay bé dém thoi gian Blynk để xử lý các hẹn giờ
if (digitalRead(button)==LoW) { //Kiếm tra nêu nút nhắn được bám
1£(buEEonState==HIGH) { //Nếu nút nhân được bấm và trạng thái của nút trước đó là
‘HIGH’, thì chuyển đôi chế độ `runMode` giữa bật va tắt
buttenState=TLOW;
runMode=!runMode;
/ /Cập nhật trạng thái LED và gửi dữ liệu trạng thái chế độ lên ứng dụng Blynk
điợitalWrite (TedMode, runMode) ;
Serial.println("Run mode: " + String(runMode));
Blynk.virtualWrite (CHEDO, runMode) ;
Trang 14}
void handleTimerID1 () {
int mq2 = analogRead(A0); //Đọc giá trị cảm biến khí gas từ chân A0 (MQ2)
float voltage = mq2 / 1024.0 * 3.3; //Tính điện áp đầu ra của cảm biến
float ratio = voltage / 1.4;
//Tinh giá trị nồng độ khí gas từ cảm biến MQ2 theo don vi ppm:
mq2 value = 1000.0 * pow(10, ((1ogl0(ratio) - 1.0278) / 0.6629)); Serial.bprintln("Gas: "+String(mq2_value,0)+"ppm");
Blynk virtualWrite(GAS,mq2 value); //Gui gia tri khí gas lên ứng dụng Blynk /Nếu `mq2_value` vượt quá mức cánh báo (mucCanhbao`) và hệ thống đang ở chế độ
`runMode`, còi bao va ro-le sé bat, đồng thời thông báo sự kiện cảnh báo qua Blynk
/Nếu không, còi báo và rơ-le sẽ tắt
Blynk.logEvent ("canhbao", String("Canh bao! Khi gas=" +
String(mg2 value)+”" vượt quá mức cho phép!"));
timerID2 = timer.setTimeout (60000L, handleTimerID2) ;
}
digitalWrite (buzzer, HIGH);
digitalWrite (relay, HIGH) ;
Blynk.virtualWrite (CANHBAO, HIGH) ;
Serial.println("Đã bật cảnh bao!");
}elsef
digitalWrite (buzzer, LOW);
digitalWrite (relay, LOW);
Blynk.virtualWrite (CANHBAO, LOW) ;
Trang 15
digitalWrite (relay, LOW);
Blynk virtualWrite (CANHBAO, LOW) ;
Trang 16o espConfig.h (Dinh nghia lép, cau trúc)
//Dinh nghia ID va tén cla template Blynk ma thiét bi st dung
#define BLYNK TEMPLATE ID "TMPL6hFLnz8Ws"
#define BLYNK TEMPLATE NAME "Gas sensor"
#define dprint( ) Serial.print( VA ARGS _)
#define dprintln( ) Serial.println( VA ARGS )
volatile bool btSetupPressed = false;
volatile uint32 t btSetupPressTime = -1;
volatile uint32 t blinkTime = millis();
#define btSetupHoldTime 10000
define WIFI NET CONNECT TIMEOUT 50000
#define WIFI CLOUD CONNECT TIMEOUT 50000
define WIFI CLOUD MAX RETRIES 500
16
Trang 17
static int connectNetRetries = WIFI CLOUD MAX RETRIES;
static int connectBlynkRetries = WIFI CLOUD MAX RETRIES;
//Câu trúc để lưu trữ các thông tin cấu hình
struct ConfigStore{
uint8 t flags;
char ssid_sta[34]; //tén wifi
char pass sta[64]; // mật khẩu
char blynk auth[34]; // token Blynk
} attribute ( (packed) );
ConfigStore configStore; //Khai bao bién cấu trúc configStore
const ConfigStore configDefault = { //Cdu hinh default
template<typename T, int size>
void copyString(const Stringé s, T(éarr)[size]) {
MODE CONNECTING NET,
MODE CONNECTING CLOUD,
MODE RUNNING,
MODE SWITCH TO STA,
MODE RESET CONFIG,
MODE ERROR,
17