ạch đo nồng độ ồảÝ tưởng thực hiệnHiện nay tình hình điều khiển các phương tiện giao thông sau khi uống bia lụy, điển hình là việc gây ra các vụ tai nạn giao thông đáng thương tiếc cho c
Trang 1Ớ 19ĐHĐT01
PHƯƠNG HỮ
Ố Ồ
Trang 2Tên đồ án môn học Mạch đo nồng độ cồn kết hợp giám sát và điều khiển trên
Họ tên người hướng dẫn Phương Hữu Công
Tp Hồ Chí Minh, ngày tháng năm 2022
GIẢNG VIÊN HƯỚNG DẪN
(Ký và ghi rõ họ tên)
Phương Hữ
Trang 3NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Tp Hồ Chí Minh, ngày tháng năm 2022
GIÁO VIÊN HƯỚNG DẪN
(Ký và ghi rõ họ tên)
Phương Hữ
Trang 4Ờ ẢM ƠN
ọ ảm ơn!
ồ Chí Minh, ngày tháng năm 2022
họ
Trang 5ỜI CAM ĐOAN
đượ
ời cam đoan củ
Trang 6ỜI NÓI ĐẦ
Trang 7Ụ Ụ ỘCHƯƠNG 1: ĐẶ ẤN ĐỀ
Ưu điể ủa đề
Nhược điể ủa đề
ế ậ
Trang 8Hình 19: Sơ đồ ạch đo nồng độ ồ
Hình 20: Sơ đồ ạt độ ẩ ế
Hình 21: Sơ đồ ạt độ ẩ ế
ả ủ
ạ ạ ồng độ ồn chưa vượt ngưỡ
ạ ạ ồng độ ồn vượt quá ngưỡ
Trang 9Ậ Ữ Ế Ắ
Trang 10ạch đo nồng độ ồ ả
Ý tưởng thực hiện
Hiện nay tình hình điều khiển các phương tiện giao thông sau khi uống bia
lụy, điển hình là việc gây ra các vụ tai nạn giao thông đáng thương tiếc cho chính người điều khiển phương tiện và cả những người lưu hành chung trên đường
Vấn đề lái xe sau khi đã sử dụng rượu bia
Trang 15ức năng:
Trang 17ạch đo nồng độ ồ ả
Trang 19wifi, bluetooth, usb,…
Cách thiết lập giao diện app
Trang 21ạch đo nồng độ ồ ả
Trang 22ạch đo nồng độ ồ ả
ạ ức năng trên APP BLYNK từ ả
ử ừ app BLYNK để ậ ầ ề
Trang 24ế ục 4.3.1 bên dướ Đồ ờ ịnày cũng sẽđượ ề
ử ụ (đượ ớ ệ ở chương 3) trên smartphone để ế ế
Trang 27ạch đo nồng độ ồ ả
ả ủ
ạ ạ ồng độ ồn chưa vượt ngưỡ
Trang 28ạch đo nồng độ ồ ả
hình LCD báo “không quá độ ồn”, đèn led tắt và còi báo cũng sẽ
ồng độ ồn đo được vượt ngưỡ
ạ ạ ồng độ ồn vượt quá ngưỡ
Trang 29ạch đo nồng độ ồ ả
Ưu điểm của đề tài
ự
Nhược điểm của đề tài
Kết luận
Qua đồ án trên, chúng tôi đã tích lũy thêm được nhiều kiến thức từ việc sử dụng các vi điều khiển và các phương thức giao tiếp như (UART, I2C,…) Về cơ bản, chúng tôi hiểu được cách chúng hoạt động và truyền nhận dữ liệu cho nhau.Phương hướng phát triển đồ án trong tương lai Mạch sẽ được mở rộn
hơn bằng việc kết hợp khả năng đo nhịp tim, phân tích chất kích thích đã sử dụng, thiết kế hộp đựng và ống thổi để trở nên chuyên nghiệp và mang tính thương mại hóa hơn
Trang 30ạch đo nồng độ ồ ả
TÀI LIỆU THAM KHẢO
Hướng dẫn tự làm máy đo nồng độ cồn gửi cảnh báo qua emailHướng dẫn cài đặt và sử dụng Blynk New 2.0 trên Arduino IDE với
PHẦN PHỤ LỤC
#include <Wire.h> //Thư viện I2C
#include <LiquidCrystal_I2C.h> //Thư viện LCD giao tiếp qua I2C
#include<SoftwareSerial.h> //Thư viện tạo cổng ảo UART
//Khai báo cổng UART ảo:
RX = 3; //Arduino có cổng giao tiếp UART mặc định là chân số 0 và số 1 Tuy nhiên 2 chân nhận dữ liệu từ máy tính trong quá trình nạp code Vì vậy để thuận tiện trong quá trình nạp code không cần//phải tốn thời gian tháo rời modun ra khỏi bo mạch thì nên thiết lập cho nó một cái cổng UẢRT khác để thực hiện chức năng giao tiếp với const byte TX = 2; //TX là chân truyền dữ liệu đi (Transmitter) Rx là chân nhận dữ liệu (Reciever)
Trang 31int speaker=9; //chân xuất tín hiệu ra còi báo.
float nongDo = 0; //biến nồng độ cồn đo được
float threshold = 0.4; //Thiết lập ngưỡng mặc định là 0.4 mg/l
long elapsedTime = 0; //Thời gian trôi qua sử dụng hàm millis (ms).String sendESP8266=""; //chuỗi dữ liệu gửi đến ESP8266
String inputString = ""; //Chuỗi dữ liệu đầu vào nhận được từ ESP8266 Ban đầu chuỗi được khai báo rỗng
bool stringComplete = false; //Khởi tạo biến boolean chỉ nhận một trong 2 giá trị True(1) hoặc False(0)
Serial.begin(9600); //Mở cổng truyền nhận dữ liệu mặc định arduinoSerial.begin(9600); //Mở cổng truyền nhận dữ liệu ảo 9600 baud, phải cùng tốc độ baud với cổng UART của ESP8266
lcd.init(); //Khởi tạo LCD
lcd.backlight(); //Khởi tạo đèn nền
elapsedTime = millis(); //Bắt đầu đọc giá trị thời gian từ lúc khởi động chương trình (ms) gán cho elapsedTime
Trang 33ạch đo nồng độ ồ ả
void sendData()//gửi dữ liệu đi
sendESP8266 = "";// chuỗi rỗng
sendESP8266 =(String)nongDo; //Chuỗi dữ liệu gửi đến ESP8266
ntln(sendESP8266); //Bắt đầu gửi dữ liệu nối tiếp qua cổng UART
arduinoSerial.flush(); //chờ đợi quá trình gửi thông tin qua Serial kết thúc rồi mới cho chạy tiếp tục chương trình
e >= 1000) //Cứ mỗi 1000ms (tức 1s) sẽ gửi tín hiệu 1 lần
sendData(); //Gửi dữ liệu qua cho ESP8266
void read_UART()//mục đích đọc dữ liệu gửi về từ Esp8266
while(arduinoSerial.available()) //Kiểm tra cổng RX có tín hiệu nào gửi về hay không
Trang 34ạch đo nồng độ ồ ả
char inChar = (char)arduinoSerial.read(); //Đọc từng byte ký tự trong chuỗi gửi về
inputString += inChar; //Cộng dồn các ký tư đã đọc lần lượt lại
* Một chuỗi khi được gửi bằng lệnh Serial.println luôn kết thúc bằng ký tự
n') //Xét điều kiện đọc đến ký tự n thì dừng đọc (vì
cuối)
if(stringComplete) //Nếu stringComplete = true;
threshold = inputString.toFloat(); //Chuyển đổi biến threshold từ dạng ký tự sang dạng số thực
inputString = ""; //Xóa chuỗi đọc được và gán bằng rỗng
stringComplete = false; //Thoát khỏi điều kiện