Tải bản đầy đủ (.pdf) (39 trang)

Thiết kế và thi công mạch cảnh báo nồng độ cồn

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.58 MB, 39 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM
KHOA ĐIỆN – ĐIỆN TỬ


BÁO CÁO ĐỒ ÁN MÔN HỌC 2
ĐỀ TÀI

THIẾT KẾ VÀ THI CÔNG MẠCH CẢNH BÁO
NỒNG ĐỘ CỒN

Tp.Hồ Chí Minh, tháng 05 năm 2019


MỤC LỤC

PHẦN 1. TỔNG QUAN ..................................................................................................... 1
1. GIỚI THIỆU ĐỀ TÀI................................................................................................. 1
2. MỤC ĐÍCH NGHIÊN CỨU ...................................................................................... 1
3. ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU ........................................................... 2
4. THÔNG SỐ GIỚI HẠN ............................................................................................. 2
5. PHƯƠNG PHÁP NGHIÊN CỨU .............................................................................. 2
PHẦN 2. NỘI DUNG ......................................................................................................... 3
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT............................................................................... 3
1.1. Mô tả quá trình hoạt động ....................................................................................... 3
1.2. Nguyên tắc hoạt động của cảm biến nồng độ cồn MQ3 ......................................... 3
1.3. Nguyên tắc kết nối giữa cảm biến MQ3 và Arduino .............................................. 6
1.4. Cách lập trình với Arduino ..................................................................................... 6
1.5. Cách đọc dữ liệu từ cảm biến và hiển thị dữ liệu lên LCD oled .......................... 12
1.6. Hiển thị dữ liệu lên LCD oled .............................................................................. 13
1.7. Tìm hiểu về buzzer ............................................................................................... 14


CHƯƠNG 2. THIẾT KẾ PHẦN CỨNG ..................................................................... 16
2.1. Giới thiệu .............................................................................................................. 16
2.2. Thiết kế sơ đồ khối ............................................................................................... 16
2.3. Giải thích chức năng các khối............................................................................... 16
2.4. Tính toán lựa chọn linh kiện ................................................................................. 18
2.5. Sơ đồ kết nối mạch ............................................................................................... 19
CHƯƠNG 3. THIẾT KẾ PHẦN MỀM ..................................................................... 19
3.1. Lưu đồ chương trình ............................................................................................. 20
3.2. Code chạy chương trình ........................................................................................ 20
CHƯƠNG 4. THI CÔNG MẠCH ............................................................................... 25
4.1. Chuẩn bị linh kiện ................................................................................................. 26


4.2. Kết nối mạch ......................................................................................................... 27
CHƯƠNG 5. KẾT QUẢ THỰC HIỆN VÀ HƯỚNG PHÁT TRIỂN ...................... 29
5.1. Kết quả thực hiện .................................................................................................. 29
5.2. Hướng phát triển ................................................................................................... 32
PHẦN 3. KẾT LUẬN ....................................................................................................... 33
TÀI LIỆU THAM KHẢO................................................................................................ 34


DANH MỤC CÁC HÌNH VÀ BẢNG

Hình

Trang

Hình 1.1 Cảm biến MQ-3

4


Hình 1.2 Sơ đồ mạch điện của cảm biến.

5

Hình 1.3 Sơ đồ kết nối

6

Hình 1.4 Arduino IDE

10

Hình 1.5 Arduino toolbar

10

Hình 1.6 IDE menu

10

Hình 1.7 File menu.

11

Hình 1.8 Edit menu.

11

Hình 1.9 Sketch menu.


12

Hình 1.10 Hình ảnh mặt trước và mặt sau của LCD OLED

12

Hình 2.1 Sơ đồ khối của hệ thống

16

Hình 2.2 Sơ đồ kết nối khối cảm biến

17

Hình 2.3 Sơ đồ khối hiển thị và cảnh báo

17

Hình 2.4 Sơ đồ mạch

19

Hình 3.1 Lưu đồ thuật toán

20

Hình 4.1 Sơ đồ kết nối

28


Hình 5.1 sản phẩm hoàn chỉnh

29

Hình 5.2 Trường hợp bạn tỉnh táo

29

Hình 5.3 Trường hợp bạn đã uống bia

30


Hình 5.4 Trường hợp bạn uống nhiều bia

30

Hình 5.5 Trường hợp bạn uống rượu

31

Hình 5.6 Trường hợp bạn đang say

31

Bảng

Trang


Bảng 1 Các thông số kĩ thuật của MQ-3

4

Bảng 2 Sơ đồ và chức năng các chân

13

Bảng 3 Danh sách các linh kiện

26


ĐỒ ÁN 2

PHẦN 1. TỔNG QUAN
1. GIỚI THIỆU ĐỀ TÀI
Hiện nay, ở nước ta các tệ nạn xã hội ngày càng gia tăng mà một trong những nguyên
nhân chủ yếu đó là do uống nhiều rượu bia. Rượu, bia là nguyên nhân chủ yếu làm
giảm năng suất lao động, gây ra các tệ nạn xã hội như bạo lực, gia đình tan vỡ, con cái
hư hỏng và đặc biệt gây ra các vụ tai nạn giao thông nghiêm trọng và đặc biệt nghiêm
trọng. Việt Nam là quốc gia thuộc tốp đầu các nước sử dụng rượu, bia khi tham gia
giao thông. Tình trạng sử dụng rượu, bia tràn lan ở nhiều nơi đã khiến trật tự an toàn
giao thông trở thành vấn đề báo động đây chính là nguyên nhân hàng đầu gây tai nạn
giao thông, khi điều khiển phương tiện bởi người lái xe thường phản ứng chậm, buồn
ngủ, thiếu tập trung, việc nhìn thấy các biển báo, tín hiệu hoặc quan sát trên đường
không còn rõ ràng nên có khi xử lý không đúng và có thể gây ra tai nạn. Người say
cũng "bốc đồng", không còn khả năng kiểm soát tốc độ cho nên thường phóng nhanh,
vượt ẩu, lấn đường rất dễ gây tai nạn.
Chính vì thế, có nhiều công trình nghiên cứu về vấn đề đo nồng độ cồn đối với

những người tham gia giao thông. Với những thực tế trên, nhóm em xin tìm hiểu và
nghiên cứu đề tài “Thiết kế và thi công mạch cảnh báo nồng độ cồn.”. mang tính cộng
đồng và xã hội cao, nhằm mục đích chủ động ngăn ngừa kịp thời và cảnh báo sớm
hiểm họa về tai nạn giao thông xảy ra, tạo nên một thói quen và ý thức tốt cho người
tham gia giao thông.

2. MỤC ĐÍCH NGHIÊN CỨU


Tạo ra thiết bị cảm biến và cảnh báo nồng độ cồn từ môi trường dùng lập trình
Arduino



Thiết bị có khả năng đưa ra cảnh báo với từng mức ngưỡng của nồng độ cồn.

Trang 1


ĐỒ ÁN 2

3. ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU
 Đối tượng nghiên cứu:



Nghiên cứu nguyên tắc hoạt động của cảm biến nồng độ cồn




Nguyên tắc kết nối giữa cảm biến và Arduino



Tìm hiểu về cách lập trình với Arduino, cách đọc dữ liệu từ cảm biến, cách hiển thị
dữ liệu lên LCD oled.

 Phạm vi nghiên cứu:



Dùng lập trình Arduino kết hợp với cảm biến nồng độ cồn.



Hiển thị giá trị nồng độ và cảnh báo trên LCD oled



Không kết nối được với các thiết bị ngoại vi

4. THÔNG SỐ GIỚI HẠN
 Sử dụng nguồn pin 9V để cấp cho Arduino
 Sử dụng nguồn 5V cho oled LCD và cảm biến MQ3
 Mạch sử dụng vi điều khiển
 Không kết nối được với các thiết bị ngoại vi

5. PHƯƠNG PHÁP NGHIÊN CỨU
Phương pháp nghiên cứu lý luận: thông qua việc đọc phân tích tài liệu cần thiết
phục vụ cho đề tài… thu thập những tài liệu liên quan và hệ thống hóa cơ sở lý

luận, đưa ra những quan điểm nghiên cứu cụ thể, rõ ràng, thuyết phục.
Phương pháp tiếp cận môi trường: qua những khảo sát trong thực tiễn, nghiên cứu
ứng dụng nhằm mang lại những lợi ích thiết thực, có tính ứng dụng cao và có khả
năng phát triển mở rộng.

Trang 2


ĐỒ ÁN 2

PHẦN 2. NỘI DUNG

CHƯƠNG 1. CƠ SỞ LÝ THUYẾT
1.1. Mô tả quá trình hoạt động
Máy phát hiện nồng độ cồn có nhiệm vụ chính là kiểm tra trực tiếp nồng độ cồn
trong hơi thở. Bộ phận cảnh báo có nhiệm vụ chính là phát các tín hiệu cảnh báo khi
nồng độ cồn trong vùng không gian thở trước mặt của người sử dụng quá cao. Chọn
ngưỡng chặn và cảnh báo, căn cứ vào các qui định của luật giao thông, ta chọn ngưỡng
ngăn chặn và cảnh báo cho hệ thống ứng với nồng độ cồn.
 Nếu nồng độ cồn đo được dưới 200µg/1 lít khí thở hiển thị “ Bạn tỉnh táo”
 Nếu nồng độ cồn đo được trên 200µg/1 lít khí thở và dưới 250µg/1lit hiển thị “ Bạn
đã uống bia” và led đỏ sẽ sáng.
 Nếu nồng độ cồn đo được trên 250µg/1 lít khí thở và dưới 320µg/1lit hiển thị “ Bạn
uống khá nhiều bia” led đỏ sáng đồng thời buzzer kêu , oled hiển thị mức phạt 1
triệu – 2 triệu.
 Nếu nồng độ cồn đo được trên 320µg/1 lít khí thở và dưới 400µg/1lit hiển thị “Bạn
uống rượu” led đỏ sáng đồng thời buzzer kêu, oled hiển thị mức phạt 1 triệu-2 triệu.
 Nếu nồng độ cồn đo được trên 400µg/1 lít khí thở hiển thị “Bạn đang say” led đỏ
sáng đồng thời buzzer kêu, oled hiển thị mức phạt 3 triệu-4 triệu.


1.2. Nguyên tắc hoạt động của cảm biến nồng độ cồn MQ3
Cảm biến MQ-3 được sử dụng để đo nồng độ cồn. Được làm từ vật liệu SnO2.
Vật liệu này có tính dẫn điện kém trong môi trường không khí sạch nhưng lại rất
nhạy cảm với hơi cồn. Trong môi trường có nồng độ cồn càng cao, điện trở của cảm
biến càng giảm. Từ bảng số liệu, tỷ lệ điện trở của cảm biến giảm gần 5 lần khi đo
trong môi trường không khí sạch. Tuy nhiên hiệu ứng phát hiện nồng độ cồn của

Trang 3


ĐỒ ÁN 2
cảm biến này còn phụ thuộc điều kiện nhiệt độ. Khi nhiệt độ bề mặt cảm biến được
sấy nóng tới 600C thời gian cần thiết để phát hiện nồng độ cồn kéo dài khoảng 8
giây. Cũng trong môi trường đó, khi nhiệt độ bề mặt cảm biến là 200C thời gian phát
hiện nồng độ cồn kéo dài từ 3 đến 5 phút.

Hình 1.1 Cảm biến MQ-3
Bảng 1 Các thông số kĩ thuật của MQ-3
Đơn vị

Tên thông số

Giá trị

Kí hiệu

MQ-3

Chất phản ứng


Cồn (ethanol)

Dải đo

0,04- 0,4

mg/l

Điện áp làm việc

< 24

V

Điện áp sấy

5± 0,2

V (AC hoặc DC)

Tải đầu ra

Điều chỉnh được



Điện trở sấy

31± 3




Công suất sấy

≤ 900

mW

Trang 4


ĐỒ ÁN 2

Điện trở cảm biến

2÷ 20

KΩ tại nồng độ cồn 0,4
mg/l
Tỉ lệ điện trở cảm biến khi

Độ nhạy

≥5

nồng độ cồn bằng 0 và
0,4mg/l

Sơ đồ mạch điện của cảm biến


Hình 1.2 Sơ đồ mạch điện của cảm biến.
Trong mạch điện của cảm biến MQ3, có 2 đầu dây áp đầu ra của cảm biến, RL
là điện trở mạch ra được nối nối tiếp với cảm biến, trị số được cấp điện áp: VH là
điện áp cấp cho mạch sấy và Vc điện áp cấp cho cảm biến, VRL là điện của RL có
thể điều chỉnh được. Các điện áp VH và Vc thường được cấp cùng trị số. Trong
mạch đo, các điện áp này được cấp 5 Vol DC. Các tín hiệu ra của cảm biến được gửi
về bộ vi điều khiển để tính toán xử lý. Module cảm biến MQ-3 Cảm biến thích hợp
cho việc phát hiện nồng độ cồn trong hơi thở. Phát hiện khí phát ra từ Etanol,
Alcohol. Đặc điểm của module cảm biến MQ-3: Có bốn chân, điện áp cung cấp là
nguồn 5V, Dout đầu ra là tín hiệu số (0 và 1), Aout đầu vào là tín hiệu tương tự, đèn
LED sáng khi phát hiện có khí, GND cấp điện cực âm, độ nhạy cao và chọn lọc tốt
với ethanol, bền và ổn định đáng tin cậy, độ nhạy cao và thời gian đáp ứng nhanh.

Trang 5


ĐỒ ÁN 2

1.3. Nguyên tắc kết nối giữa cảm biến MQ3 và Arduino

Hình 1.3 Sơ đồ kết nối
Gồm 4 chân:
• VCC : 2,5V - 5V.
• DOUT : Digital output.
• AOUT: Analog output.
• GND : nối đất.

1.4. Cách lập trình với Arduino
a/ Ngôn ngữ lập trình
Ngôn ngữ lập trình sử dụng trong bài là ngôn ngữ C của Arduino.

Cấu trúc chương trình:

-

Chương trình Arduino có thể được chia làm 3 phần: cấu trúc (structure), biến
số (variable) và hằng số (constant), hàm và thủ tục (function).
-

Các kiểu dữ liệu:

* String

Trang 6


ĐỒ ÁN 2
Trong một chương trình Arduino là sử dụng mảng ký tự để biểu diễn chuỗi.
Cách khai báo:
Char Str1[15]; // khai bảo chuỗi có độ dài là 15 ký tự.
Char Str2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'}; //khai báo chuỗi có độ dài tối đa là 8 ký tự
và đặt nó giá trị ban đầu là arduino (7 ký tự). Buộc phải khai báo chuỗi nằm giữa hai
dấu nháy đơn.Char Str3[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o', '\0'}; //khai báo chuỗi có độ dài
tối đa là 8 ký tự và đặt nó giá trị ban đầu là arduino<ký tự null>.
Char Str4[ ] = "arduino"; // Chương trình dịch sẽ tự động điều chỉnh kích thước cho.
chuỗi Str4 này và đặt một chuối trong dấu ngoặc kép.
Char Str5[8] = "arduino"; // Một cách khai báo như Str3.
Char Str6[15] = "arduino"; // Một cách khai báo khác với độ dài tối đa lớn hơn.
* Array
Array là mảng (tập hợp các giá trị có liên quan và được đánh dấu bằng những chỉ số). Array
được dùng trên Arduino chính là Array trong ngôn ngữ lập trình C.

Các cách khởi tạo một mảng:
Int myInts[6]; // tạo mảng myInts chứa tối đa 6 phần tử (được đánh dấu từ 0-5), các
phần tử này đều có kiểu là int => khai báo này chiếm 2*6 = 12 byte bộ nhớ
Int myPins[] = {2, 4, 8, 3, 6}; // tạo mảng myPins chứa 5 phần tử (lần lượt là 2, 4, 8,
3, 6). Mảng này không giới hạn số lượng phần tử vì có khai báo là "[]"
Int mySensVals[6] = {2, 4, -8, 3, 2}; // tạo mảng mySensVals chứa tối đa 6 phần tử,
trong đó 5 phần tử đầu tiên có giá trị lần lượt là 2, 4, -8, 3, 2.
Char message[6] = "hello"; // tạo mảng ký tự (dạng chuỗi) có tối đa 6 ký tự.
* Double
Giống hết như kiểu Float. Nhưng trên mạch Arduino thì kiểu Double lại chiếm đến 8 byte
bộ nhớ (64 bit).
* Float

Trang 7


ĐỒ ÁN 2
Để định nghĩa 1 kiểu số thực, có thể sử dụng kiểu dữ liệu Float. Một biến dùng kiểu dữ liệu
này có thể đặt một giá trị nằm trong khoảng -3.4028235E+38 đến 3.4028235E+38. Nó
chiếm 4 byte bộ nhớ.
* Short
Giống kiểu Int, tuy nhiên có điều trên mọi mạch Arduino nó đều chiếm 4 byte bộ nhớ và
biểu thị giá trị trong khoảng -32,768 đến 32,767 (-215 đến 215-1) (16 bit).
Cú pháp: short var = val;
Var: tên biến.
Val: giá trị.
* Unsigned long
Kiểu Unsigned long là kiểu số nguyên nằm trong khoảng từ 0 đến 4,294,967,295 (0 đến
232 - 1). Mỗi biến mang kiểu dữ liệu này chiếm 4 byte bộ nhớ.
* Word

Giống như kiểu Unsigned int, kiểu dữ liệu này là kiểu số nguyên 16 bit không âm (chứa
các giá trị từ 0 đến 65535), và nó chiếm 2 byte bộ nhớ.
* Unsigned int
Kiểu Unsigned int là kiểu số nguyên nằm trong khoảng từ 0 đến 65535 (0 đến 216 - 1). Mỗi
biến mang kiểu dữ liệu này chiếm 2 byte bộ nhớ. Trên Arduino, Unsigned int có khoảng
giá trị từ 0 đến 4,294,967,295 (232 - 1) (lúc này nó chiếm 4 byte bộ nhớ).
Cú pháp: unsigned int [tên biến] = [giá trị];
* Int
Kiểu Int là kiểu số nguyên chính được dùng trong chương trình Arduino. Kiểu int chiếm 2
byte bộ nhớ. Trên mạch Arduino Uno, nó có đoạn giá trị từ -32,768 đến 32,767 (-215 đến
215-1) (16 bit).
Cú pháp: int var = val;

Trang 8


ĐỒ ÁN 2
var: tên biến.
val: giá trị.
* Byte
Là một kiểu dữ liệu biểu diễn số nguyên nằm trong khoảng từ 0 đến 255. Sẽ mất 1 byte bộ
nhớ cho mỗi biến mang kiểu byte.
* Unsigned char
Giống hệt bài giới thiệu về kiểu Char. Tuy nhiên kiểu Unsigned char lại biểu hiệu một số
nguyên byte không âm (giá trị từ 0 - 255).
* Char
Kiểu dữ liệu này là kiểu dữ liệu biểu diễn cho 1 kí. Kiểu dữ liệu này chiếm 1 byte bộ nhớ.
Kiểu Char được lưu dưới dạng 1 số nguyên byte có số âm (có các giá trị từ -127 - 128).
* Long
Long là một kiểu dữ liệu mở rộng của Int. Những biến có kiểu long có thể mang giá trị 32

bit từ -2,147,483,648 đến -2,147,483,647. Sẽ mất 4 byte bộ nhớ cho một biến kiểu long.
* Boolean
Một biến được khai báo kiểu Boolean sẽ chỉ nhận một trong hai giá trị: true hoặc false. Và
sẽ mất 1 byte bộ nhớ cho điều đó.
* Void
Void là một từ khóa chỉ dùng trong việc khai báo một function. Những function được khai
báo với "void" sẽ không trả về bất kì dữ liệu nào khi được gọi.
b/ Phần mềm phụ trợ
Sử dụng Arduino IDE
Arduino IDE là nơi để soạn thảo code, kiểm tra lỗi và upload code cho arduino.
Khởi tạo 1 dự án:
- Giao diện để sọan thảo code

Trang 9


ĐỒ ÁN 2

Hình 1.4 Arduino IDE.
- Arduino toolbar: có một số button và chức năng như sau:

Hình 1.5 Arduino toolbar.
Verify: kiểm tra code có lỗi hay không
Upload: nạp code đang soạn thảo vào arduino
New, open và save: tạo mới, mở và lưu lại
Serial Monitor: màn hình hiển thị dữ liệu từ arduino gửi lên máy tính
- Arduino IDE Menu

Hình1.6 IDE menu.
File menu:


Trang 10


ĐỒ ÁN 2

Hình 1.7 File menu.
Trong file menu mục Example là nơi chứa code mẫu ví dụ: Như cách sử dụng các chân
digital, analog....
Edit menu:

Hình 1.8 Edit menu.
Sketch menu:

Trang 11


ĐỒ ÁN 2

Hình 1.9 Sketch menu.
Trong Sketch menu:
Verify/ compile: Chức năng kiểm tra lỗi code.
Show Sketch Foder: Hiển thị nơi code được lưu.
Add file: Thêm vào 1 tập code mới.
Import library: Thêm thư viện cho IDE.

1.5. Cách đọc dữ liệu từ cảm biến và hiển thị dữ liệu lên LCD oled
Dữ liệu được đọc từ cảm biến nhờ chương trình do người dùng lập trình trên Arduino
Dữ liệu đọc được sẽ được xử lí và hiển thị trên LCD oled
a/ LCD oled

Màn hình nhỏ, đường chéo chỉ khoảng 1,3" nhưng rất có thể đọc được là do sự tương
phản cao một màn hình OLED. Màn hình này được làm bằng 128x 64 pixel OLED
trắng, đều được bật hoặc tắt bởi chip điều khiển. Các chip điều khiển, SSD1306 có
thể giao tiếp trong hai cách: I2C hoặc SPI. Các OLED cần nguồn cung cấp điện 3.3V
và 3.3V mức logic cho giao tiếp, có thể sử dụng với các thiết bị 5V, Display Ram
128 x 64 bit.

Hình 1.10 Hình ảnh mặt trước và mặt sau của LCD OLED.

Trang 12


ĐỒ ÁN 2
Bảng 2 Sơ đồ và chức năng các chân
Tên chân

Chức năng

V3.3

Chân cấp nguồn 3.3V cho LCD

CS

Chip Select, chân hoạt động ở mức tích cực thấp, ở mức cao nó
không cho phép MCU đọc ghi dữ liệu
Chân reset tín hiệu đầu vào, ở mức thấp thì LCD được khởi tạo lại.

RES


Ở mức cao thì LCD hoạt động bình thường
Chân điều khiển Data/ Command. DC = 1 input là data

DC

DC = 0 input là command
SCLK

Chân tạo xung Clock

SDIN

Chân dữ liệu nối tiếp đầu vào

GND

Chân nối đất

1.6. Hiển thị dữ liệu lên LCD oled
init(0x3C);
Khởi động oled với địa chỉ i2c đó, loại mình đang đề cập có địa chỉ đó.
*.display();
Bắt đầu vẽ lên màn hình
*.clearDisplay();
Xóa hết màn hình
*.clearArea(x,y,w,h);
Xóa một vùng nào đó. x,y là tọa độ điểm bắt đầu của vùng đó (đỉnh trên
cùng bên trái), w và h là chiều dài và cao của vùng cần xóa.
*.setCursor(x,y);
Đưa điểm bắt đầu vẽ lên màn hình tới x,y


Trang 13


ĐỒ ÁN 2
*.setBrightness(brightness);
Chỉnh độ sáng của oled, 0->255
*.setTextSize(s);
Chỉnh size chữ, mặc định không dùng lệnh thì s=1.
*.setTextColor(c);
Hoặc
*.setTextColor(c,bg);
c là màu chữ, WHITE(1) hoặc BLACK(0)
bg là màu nền, WHITE(1) hoặc BLACK(0)
Nếu chỉ điền c thì bg tự động chỉnh ngược với c.
*.print();
*.println();
Hai hàm này giống trong serial, lưu ý: Sau hai hàm này phải thêm lệnh
*.display(); để màn hình hiển thị.
*.drawPixel(x,y,c);
Vẽ 1 điểm tại x,y với c là màu của điểm (WHITE hoặc BLACK)
*.drawChar(x,y,char,color,bg,size);
Vẽ một kí tự
 x, y: tọa độ điểm vẽ
 char: kí tự cần vẽ
 color: Màu kí tự (WHITE hoặc BLACK)
 bg: Màu nền CỦA kí tự (WHITE hoặc BLACK)
 size: Kích cỡ kí tự (Kích cỡ kí tự bằng (sizex5pixel) X
(sizex7pixel))


1.7. Tìm hiểu về buzzer
Buzzer là một loại thiết bị phát âm có thể chuyển đổi tín hiệu âm thanh thành tín
hiệu âm thanh. Nó được sử dụng rộng rãi trong đồ chơi điện tử và bảng điều khiển

Trang 14


ĐỒ ÁN 2
trò chơi trong đồ chơi âm thanh, quà tặng âm thanh, đồ gia dụng, báo thức cá nhân,
hệ thống báo động của ngân hàng và công an. Buzzer được sử dụng rộng rãi trong
đồ chơi điện tử và trò chơi. Buzzer được sử dụng chủ yếu để nhắc hoặc báo thức,
theo thiết kế và mục đích khác nhau, có thể phát ra tiếng nhạc, tiếng còi, âm thanh
buzzer, âm thanh báo thức, nhạc chuông điện và nhiều âm thanh khác. Chuông báo
động được sử dụng trong máy giặt làm cho âm thanh buzzer thêm rõ ràng, khiến
người dùng vận hành các quy trình. Các ứng dụng Buzzer trong các thiết bị gia dụng
chủ yếu là báo động âm thanh, còi báo động, người sử dụng đã phát ra một thiết bị
đốt cháy cảnh báo ở nơi khô ráo. Buzzer được sử dụng như một cái chuông để gửi
thêm âm thanh "ding dong" hoặc âm nhạc, gợi ý rằng khách ghé thăm. Thẻ Buzzer
được sử dụng trong thiệp chúc mừng, lời chào đơn giản; bộ phim buzzer được sử
dụng trong còi báo động tự vệ cá nhân để gửi âm thanh báo thức cao; buzzer cài đặt
trong an ninh công cộng, ngân hàng và khu vực bảo vệ nhà được sử dụng cho âm
thanh báo động nhiều; nếu ai đó vào Cảnh báo khu vực, điều khiển cảm biến, tiếng
rú lên sẽ báo động. Ở các nhà máy, trường học sử dụng buzzer, làm cho tiếng chuông
điện nhiều hơn.
Thông số kỹ thuật:
Nguồn : 3.5V - 5.5V
Dòng điện tiêu thụ: <25mA
Tần số cộng hưởng: 2300Hz ± 500Hz
Biên độ âm thanh: >80 dB
Nhiệt độ hoạt động:-20 °C đến +70 °C

Kích thước : Đường kính 12mm, cao 9,7mm

Trang 15


ĐỒ ÁN 2

CHƯƠNG 2. THIẾT KẾ PHẦN CỨNG
2.1. Giới thiệu
Máy đo nồng độ cồn có chức năng đo nồng độ cồn trong hơi thở từ đó cảm biến gửi
tín hiệu về bộ xử lý và hiển thị trên oled LCD. Bộ phận cảnh báo gồm led đỏ và buzzer
để phát âm thanh khi nồng độ cồn vượt quá mức quy định. Oled hiển thị nồng độ cồn và
mức phạt tiền khi vi phạm.

2.2. Thiết kế sơ đồ khối
Từ các yêu cầu của đề tài, sơ đồ khối hệ thống được thiết kế như sau:

Hình 2.1 Sơ đồ khối của hệ thống

2.3. Giải thích chức năng các khối
Khối nguồn: Có chức năng cung cấp năng lượng cho toàn bộ hệ thống.
+ Cấp nguồn ngoài 9V cho board mạch Arduino.
+ Board Arduino cấp nguồn 5V cho led đỏ, oled LCD, cảm biến MQ3 và
Buzzer.
Khối cảm biến: Dùng cảm biến nồng độ cồn MQ3. Cảm biến tín hiệu nồng độ cồn từ
hơi thở, gửi tín hiệu đến khối điều khiển.

Trang 16



ĐỒ ÁN 2

Hình 2.2 Sơ đồ kết nối khối cảm biến
Khối điều khiển: Dùng Arduino uno R3. Thực hiện xử lý tín hiệu và gửi tín hiệu về
khối hiển thị và cảnh báo.
Khối hiển thị và cảnh báo: Dùng oled, led đỏ và buzzer. Hiển thị thông tin về nồng
độ và mức phạt trên oled LCD,
led đỏ sẽ sáng khi nồng độ cồn đo được trên 200µg/1 lít khí thở, buzzer sẽ kêu khi nồng
độ cồn đo được trên 250µg/1 lít khí thở.

Hình 2.3 Sơ đồ khối hiển thị và cảnh báo

Trang 17


ĐỒ ÁN 2

2.4. Tính toán lựa chọn linh kiện
a/ Khối cảm biến
Dùng cảm biến nồng độ cồn MQ3. MQ3 là bộ cảm biến sử dụng SiO2 làm vật liệu
cảm ứng nồng độ cồn trong không khí, bộ cảm biến khí sẽ rất nhạy cảm ở những nơi
có nồng độ cồn trong không khí cao.
Đặc điểm của module: - Nhạy cảm với rượu và ethanol.
- Điện áp đầu ra tăng khi nồng độ khí đo được tăng.
- Nhanh chóng phản ứng và phục hồi.
- Có thể điều chỉnh được độ nhạy cảm của module.
- Có thể hiển thị kết quả trên màn hình LCD.
b/ Khối điều khiển
Dùng Arduino uno. Arduino là một board mạch vi xử lý nhằm xây dựng các ứng
dụng tương tác với nhau hoặc với môi trường được thuận lợi hơn. Mạch Arduino

Uno là dòng mạch Arduino phổ biến, khi mới bắt đầu làm quen, lập trình với
Arduino thì mạch Arduino thường nói tới chính là dòng Arduino UNO. Hiện dòng
mạch này đã phát triển tới thế hệ thứ 3 (Mạch Arduino Uno R3). Arduino Uno R3 là
dòng cơ bản, linh hoạt, thường được sử dụng cho người mới bắt đầu.
c/ Khối hiển thị và cảnh báo


Oled LCD SSD1306 hiển thị chữ sắc nét rõ ràng có thể giao tiếp trong hai cách: I2C
hoặc SPI.



Buzzer là một loại thiết bị phát âm có thể chuyển đổi tín hiệu âm thanh thành tín
hiệu âm thanh. Lập trình đơn giản, dễ sử dụng, giá thảnh rẻ.



LED (viết tắt của Light Emitting Diode, có nghĩa là điốt phát quang) là các điốt có
khả năng phát ra ánh sáng hay tia hồng ngoại, tử ngoại. Cũng giống như điốt, LED
được cấu tạo từ một khối bán dẫn loại p ghép với một khối bán dẫn loại n.led đơn
nhỏ gọn dễ sử dụng.

Trang 18


ĐỒ ÁN 2
d/ Khối nguồn:
Sử dụng pin nguồn 9V để cấp cho board Arduino.

2.5. Sơ đồ kết nối mạch


Hình 2.4 Sơ đồ mạch

CHƯƠNG 3. THIẾT KẾ PHẦN MỀM
Trang 19


ĐỒ ÁN 2

3.1. Lưu đồ chương trình

Hình 3.1 lưu đồ thuật toán

3.2. Code chạy chương trình
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
const int buzzer = 6 ;

Trang 20


×