Chương 1 Phân tích bài toán (20 trang) TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT KHOA ĐIỆN – ĐIỆN TỬ ĐỒ ÁN CHUYÊN NGÀNH 2 ĐỀ TÀI NGHIÊN CỨU THIẾT KẾ CHẾ TẠO BỘ ĐO NỒNG ĐỘ CỒN Giáo viên hướng dẫn Sinh viên t[.]
Tổng quan về đo và cảnh báo nồng độ cồn
Hiện nay, các tệ nạn xã hội ngày càng gia tăng tại Việt Nam, trong đó nguyên nhân chủ yếu là do uống nhiều rượu bia Rượu là thủ phạm chính gây giảm năng suất lao động và thúc đẩy các hành vi bạo lực, tan vỡ hạnh phúc gia đình và ảnh hưởng tiêu cực đến con cái Đặc biệt, rượu bia còn là yếu tố hàng đầu gây ra các vụ tai nạn giao thông nghiêm trọng, đe dọa tính mạng và an toàn của người dân.
Việt Nam nằm trong top các quốc gia có tỷ lệ người sử dụng rượu, bia khi tham gia giao thông cao, gây ra nhiều hậu quả nghiêm trọng Tình trạng sử dụng rượu, bia tràn lan đã làm trật tự an toàn giao thông trở thành vấn đề cấp bách, là nguyên nhân hàng đầu gây tai nạn giao thông Người lái xe sau khi uống rượu hoặc bia thường phản ứng chậm, buồn ngủ, thiếu tập trung, khiến khả năng quan sát các biển báo, tín hiệu và xử lý tình huống trên đường suy giảm rõ rệt Người say còn có xu hướng bốc đồng, mất kiểm soát tốc độ, thường phóng nhanh, vượt ẩu, lấn làn, từ đó dễ dẫn đến tai nạn giao thông nghiêm trọng.
Trong 6 tháng đầu năm 2021, cả nước xảy ra hơn 6.300 vụ tai nạn giao thông, khiến hơn 4.400 người bị thương và hơn 3.000 người tử vong Đặc biệt, tỷ lệ tai nạn do uống bia rượu chiếm đến 70-90% trong các vụ tai nạn đường bộ, cho thấy tác động nghiêm trọng của việc sử dụng rượu bia khi tham gia giao thông Điều này nhấn mạnh tầm quan trọng của việc kiểm soát nồng độ cồn và nâng cao ý thức tuân thủ luật lệ giao thông để giảm thiểu tai nạn.
Theo Nghị định 100/2019/NĐ-CP, người điều khiển xe mô tô, xe gắn máy, bao gồm cả xe máy điện và các loại xe tương tự, sẽ bị xử phạt nếu phát hiện trong máu hoặc hơi thở có nồng độ cồn Vi phạm này sẽ bị xử lý hành chính theo quy định của pháp luật, nhằm đảm bảo trật tự an toàn giao thông Việc kiểm tra nồng độ cồn trong trường hợp này là một biện pháp nhằm hạn chế tai nạn và nâng cao ý thức của người lái xe.
Người vi phạm lần đầu có nồng độ cồn trong máu hoặc hơi thở dưới mức quy định (chưa vượt quá 50 mg/100 ml máu hoặc 0,25 mg/l khí thở) sẽ bị xử phạt tiền từ 2.000.000 đồng đến 3.000.000 đồng Tuy nhiên, Nghị định 46/2016/NĐ-CP không quy định mức phạt cụ thể đối với trường hợp này.
Việc có nồng độ cồn trong máu hoặc hơi thở vượt quá 50-80 miligam/100ml máu hoặc 0,25-0,4 miligam/l khí thở sẽ bị xử phạt tiền từ 4.000.000 đồng đến 5.000.000 đồng, theo quy định của Nghị định 46 Mức phạt theo Nghị định 46 là từ 1.000.000 đồng đến 2.000.000 đồng Nghị định 100/2019/NĐ-CP có hiệu lực từ ngày 01/01/2020 nhằm nâng cao xử phạt hành vi vi phạm nồng độ cồn khi điều khiển phương tiện giao thông.
Mục đích của đề tài
*Sự an toàn khi tham gia giao thông
Tai nạn giao thông là hiểm họa thường trực đối với mọi người tham gia giao thông hàng ngày tại Việt Nam Số lượng phương tiện và người tham gia giao thông ngày càng tăng đã khiến tình hình trở nên nghiêm trọng hơn, với tỷ lệ người chết vì tai nạn giao thông trên 100.000 dân cao hơn mức trung bình của thế giới Theo số liệu, Việt Nam có tỷ lệ tai nạn giao thông là 24 người trên 100.000 dân, so với mức trung bình quốc tế là 18 người, đặt ra thách thức lớn về an toàn giao thông và các biện pháp phòng ngừa tai nạn hiệu quả.
- Báo cáo thống kê của Viện nghiên cứu giao thông Đại học Michigan UMTRI Mỹ).
Theo số liệu của Ủy ban An toàn Giao thông Quốc gia, năm 2013, cả nước ghi nhận 29.385 vụ tai nạn giao thông, khiến 9.369 người thiệt mạng và 29.500 người bị thương, trung bình mỗi ngày có 26 người chết và 81 người bị thương vì tai nạn giao thông Trong những tháng đầu năm 2014, số vụ tai nạn giảm còn 10.772, gây ra 3.928 ca tử vong và 10.556 người bị thương, cho thấy vẫn còn nhiều thách thức trong công tác đảm bảo an toàn giao thông tại Việt Nam.
Hậu quả của tai nạn giao thông vô cùng đau thương và nặng nề.
* Mức độ nguy hiểm khi uống rượu bia mà tham gia giao thông:
Trong thời gian gần đây, các vi phạm luật giao thông có xu hướng diễn biến phức tạp, đặc biệt liên quan đến yếu tố rượu, bia, được các chuyên gia đánh giá là rất nghiêm trọng Người điều khiển phương tiện sau khi sử dụng rượu, bia thường chạy với tốc độ cao, lạng lách, mất kiểm soát tay lái và kém khả năng phán đoán, xử lý tình huống Đây chính là nguyên nhân chính dẫn đến các vi phạm về tốc độ, vượt sai quy định và đi sai phần đường So sánh với các quốc gia trong khu vực, Việt Nam có mức tiêu thụ rượu, bia lớn, chế tài xử phạt và quản lý vi phạm về nồng độ cồn còn thiếu chặt chẽ, làm tăng nguy cơ tai nạn giao thông và gây hậu quả nghiêm trọng.
Chương trình nghiên cứu thiết kế và chế tạo bộ đo nồng độ cồn nhằm chủ động phòng ngừa tai nạn giao thông và nâng cao ý thức của người tham gia giao thông Dự án có tính cộng đồng cao, góp phần cảnh báo sớm các hiểm họa tai nạn giao thông do việc định lượng nồng độ cồn trong cơ thể Việc phát triển bộ đo này giúp tạo ra thói quen kiểm soát nồng độ cồn trước khi tham gia giao thông, từ đó giảm thiểu nguy cơ xảy ra tai nạn và nâng cao an toàn cho cộng đồng.
Phân tích bài toán
Yêu cầu bài toán
- Đề xuất chọn phương pháp phát hiện nồng độ cồn trong hơi thở của người điều khiển phương tiện tham gia giao thông.
- Thiết kế, thi công mạch đo cảnh báo nồng độ cồn.
- Thử nghiệm hệ thống cảnh báo
Hiện nay có nhiều phương pháp phát hiện nồng độ cồn đó là:
Phương pháp đo nồng độ cồn trong máu được sử dụng để xác định lượng các chất kích thích, hoạt chất ảnh hưởng đến cơ thể người trong máu Phương pháp này áp dụng các kỹ thuật hóa sinh trong phòng thí nghiệm nhằm đo đạc chính xác nồng độ cồn Tuy nhiên, điểm hạn chế của phương pháp này là cần phải lấy mẫu máu tại cơ sở y tế qua quy trình thử nghiệm trong phòng thí nghiệm, gây mất thời gian và khó ứng dụng trong các tình huống cần kiểm tra nhanh, kiểm tra tại hiện trường.
Phương pháp đo nồng độ cồn trong hơi thở giúp xác định mức độ say rượu của người lái xe chính xác Hơi thở của người say rượu thường chứa nồng độ cồn cao, có thể được đo bằng các thiết bị chuyên dụng đo nồng độ cồn qua hơi thở Ngoài ra, việc đo nồng độ trong không khí của không gian thở trước mặt người lái cũng là phương pháp hiệu quả để đánh giá tình trạng say rượu, đảm bảo an toàn cho giao thông.
Vì thế trong đề tài chúng em sẽ đi sâu vào thiết kế mạch đo và cảnh báo nồng độ cồn qua hơi thở.
Giải pháp thiết kế
Hệ thống 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ở.
Hệ thống cảnh báo đảm nhận nhiệm vụ phát tín hiệu cảnh báo khi nồng độ cồn trong vùng thở trước mặt người dùng vượt quá giới hạn quy định Chức năng chính của hệ thống là giúp người sử dụng nhận biết sớm tình trạng say rượu, từ đó đảm bảo an toàn giao thông và sức khỏe Thiết bị hoạt động hiệu quả bằng cách liên tục giám sát và cảnh báo kịp thời khi phát hiện nồng độ cồn vượt ngưỡng an toàn.
Chọn ngưỡng ngăn chặn và cảnh báo dựa trên các quy định của luật giao thông để đảm bảo an toàn khi vận hành Việc xác định ngưỡng còn căn cứ vào độ nhạy và sai số điện áp đầu ra của cảm biến đo nồng độ cồn MQ-3, nhằm cung cấp cảnh báo chính xác và đáng tin cậy cho người sử dụng Điều này giúp kiểm soát nồng độ cồn trong khí thở, từ đó giảm thiểu rủi ro tai nạn và vi phạm luật giao thông.
3, 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 0,05 mg/lit khí thở.
PHẦN CỨNG THIẾT BỊ ĐO VÀ CẢNH BÁO NỒNG ĐỘ CỒN
Sơ đồ khối
2.1.1 Chức năng và nhiệm vụ của từng 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.
Khối cảm biến đầu vào có chức năng phát hiện nồng độ cồn qua hơi thở, giúp xác định người sử dụng có đang trong trạng thái say hay không Sau đó, các thông tin này sẽ được gửi đến khối điều khiển để xử lý và đưa ra các quyết định phù hợp Việc sử dụng cảm biến chính xác và nhanh chóng đảm bảo hệ thống đo nồng độ cồn hoạt động hiệu quả, phù hợp với tiêu chuẩn an toàn giao thông.
- Khối điều khiển: nó có chức năng điều khiển khối hiển thị và cảnh báo khi nhận được tín hiệu từ cảm biến.
Khối hiển thị giúp hiển thị nồng độ cồn đo được rõ ràng trên màn hình LCD Thiết bị còn cung cấp cảnh báo mức độ nồng độ cồn dựa trên kết quả đo, giúp người dùng nhận biết tình trạng của mình một cách chính xác và nhanh chóng.
2.1.2 Nguyên lí hoạt động toàn mạch Đầu tiên khối nguồn cấp nguồn cho hệ thống gồm khối điều khiển, khối cảm biến và khối hiển thị Khối cảm biến thu tín hiệu từ môi trường truyền về khối điều khiển dạng tín hiệu tương tự, sau khi đi qua bộ chuyển đổi tín hiệu tương tự sang số, ở đầu ra tín hiệu ở dạng tín hiệu số, sau đó tín hiệu này được vi điều khiển tiếp nhận và xử lý tính toán rồi đưa ra kết quả là nồng độ cồn có trong lượng khí thở căn cứ vào đó đưa ra cảnh báo cho người sử dụng, tín hiệu cảnh báo và kết quả này được đưa đến khối hiển thị khối này tiếp nhận và hiển thị thông tin về nồng độ cồn và lời cảnh báo.
Lựa chọn linh kiện
KIT Arduino UNO R3 có khả năng lập trình sử dụng chip AVR Atmega328 của Atmel với các đặc điểm và chức năng chính như sau:
Phần mềm Arduino, còn gọi là sketches, là các đoạn mã được viết trên máy tính để lập trình cho các phần cứng Arduino có thể hiểu IDE Arduino là công cụ dùng để biên dịch mã nguồn và nạp (upload) vào bo mạch Arduino, quá trình này giúp lập trình viên truyền tải lệnh điều khiển từ máy tính sang thiết bị.
Phần cứng Arduino gồm các board Arduino dùng để thực thi các chương trình lập trình, có khả năng điều khiển và đáp trả các tín hiệu điện Các thành phần được kết nối trực tiếp vào các board này giúp tương tác với thế giới thực, bao gồm cảm biến như cảm biến siêu âm, cảm biến gia tốc và các thiết bị chuyển mạch Ngoài ra, phần cứng Arduino còn điều khiển các thiết bị truyền động như đèn, motor, loa và các thiết bị hiển thị, giúp mở rộng khả năng ứng dụng trong các dự án điện tử và tự động hóa.
Hầu hết các board Arduino sử dụng kết nối kiểu USB dùng để cấp nguồn và upload dữ liệu cho board Arduino.
Hình 2.2 Hình ảnh KIT Arduino Uno R3.
Arduino Uno sử dụng hai vi điều khiển onboard để xử lý tất cả các kết nối USB, trong đó chip dán nhỏ ATmega8U2 gần cổng USB giúp nạp chương trình và quản lý các thiết bị USB cắm vào Chip ATMega328 chứa chương trình nạp để thực thi mã lập trình, trong khi hầu hết các board Arduino đều dùng chip FTDI để giải quyết vấn đề kết nối với cổng nối tiếp của máy tính Ngoài Arduino Uno, nhà sản xuất còn cung cấp nhiều loại board khác như Arduino Fio, Arduino Nano và Arduino Mega 2560, phù hợp với từng ứng dụng, từ các dự án nhỏ đến các yêu cầu cần nhiều chân TX, RX như trên Arduino Mega 2560.
Cấu trúc phần cứng của Arduino như sau:
Hình 2.3 Mặt trên của Arduino Uno R3.
Arduino có board tích hợp cổng USB để kết nối với máy tính, đèn báo nguồn màu xanh thể hiện hoạt động của thiết bị Nó được trang bị các công tắc Reset, các chân giao tiếp pin, đèn LED ở chân 13 và các đèn báo truyền nhận nối tiếp để dễ dàng theo dõi dữ liệu Ngoài ra, board còn có các cổng đọc tín hiệu số và tín hiệu tương tự, cùng với các chân chức năng PWM và khả năng truyền nhận dữ liệu nối tiếp, giúp mở rộng khả năng lập trình và điều khiển thiết bị Các chân giao tiếp I2C gồm SDA và SCL cung cấp khả năng giao tiếp hai dây hiệu quả Dưới đây là các thông số kỹ thuật chính của Arduino giúp người dùng hiểu rõ hơn về dòng sản phẩm này.
- Điện áp đầu vào tới hạn 6-20V.
- Chân vào ra số là 14 chân (trong đó có 6 chân băm xung PWM).
- Chân đầu vào tương tự có 6 chân.
- Dòng DC vào ra trên chân là 40mA.
- Dòng đầu ra ở chân 3.3V là 50mA.
- Bộ nhớ Flash 32 Kb (ATMega328) trong đó 0.5 Kb sử dụng cho bootloader.
Trong quá trình sử dụng, hệ thống tích hợp hai chip vi điều khiển ATMega328 và ATMega16U2 để đạt hiệu quả cao nhất Chips ATMega16U2 được kết nối với cổng USB và chứa chương trình bootloader giúp dễ dàng nạp chương trình mới vào thiết bị Trong khi đó, chip ATMega328 đảm nhiệm chức năng chạy chương trình lập trình để thực thi các ứng dụng chính của hệ thống Sự kết hợp này giúp cải thiện quy trình lập trình và vận hành của thiết bị một cách hiệu quả và linh hoạt.
Hình 2.4 Sơ đồ nguyên lý Arduino.
Arduino có thể được cấp nguồn thông qua kết nối USB hoặc nguồn điện bên ngoài từ 6V đến 20V, với lựa chọn tự động phù hợp Hệ thống vi điều khiển hoạt động tốt nhất với điện áp từ 7V đến 12V để đảm bảo tính ổn định Khi cung cấp điện áp thấp hơn 5V, hệ thống có thể bị không ổn định, trong khi cung cấp trên 12V có thể gây nóng cho bộ chuyển đổi điện áp Do đó, phạm vi khuyến nghị để cấp nguồn cho Arduino là từ 7V đến 12V, giúp duy trì hoạt động ổn định và tránh quá nhiệt.
Chân Vin trên Arduino cho phép cấp nguồn điện đầu vào từ nguồn bên ngoài, khác với nguồn 5V lấy từ USB hoặc jack cắm nguồn riêng Đây là cách kết nối nguồn điện phù hợp để cung cấp năng lượng cho Arduino, đảm bảo hoạt động ổn định khi không sử dụng nguồn USB hoặc nguồn điện dự phòng Việc sử dụng chân Vin giúp mở rộng khả năng cung cấp nguồn cho các dự án điện tử yêu cầu mức điện áp cao hơn hoặc nguồn điện mạnh hơn.
Chân 5V cung cấp nguồn điện ổn định cho vi điều khiển và các thành phần khác trên bo mạch, đảm bảo hoạt động liên tục và chính xác của hệ thống Ngoài ra, chân này còn cung cấp nguồn cho các thiết bị ngoại vi khi kết nối với bo mạch, giúp mở rộng khả năng chức năng của dự án Việc cung cấp nguồn phù hợp qua chân 5V là yếu tố quan trọng để đảm bảo hiệu quả và ổn định của toàn bộ hệ thống.
- Chân 3V3: Cung cấp nguồn cho các thiết bị cảm biến.
- Chân GND : Chân nối đất.
* Chân giao tiếp đầu vào và đầu ra
Trong số 14 chân tín hiệu của vi điều khiển, chúng ta có thể cấu hình để làm chân nhận dữ liệu từ các thiết bị ngoại vi hoặc làm chân truyền tín hiệu ra các thiết bị ngoại vi, giúp mở rộng khả năng kết nối Sử dụng các hàm pinMode(), digitalWrite() và digitalRead() hoạt động ở điện áp 5V để điều khiển các chân này một cách chính xác Mỗi chân có thể cung cấp hoặc nhận dòng điện tối đa 50 mA, đảm bảo hoạt động an toàn cho các thiết bị kết nối, đồng thời được trang bị điện trở kéo nội (pull-up hoặc pull-down) từ 20-50 KΩ để duy trì mức logic ổn định khi không hoạt động Ngoài ra, một số chân còn có các chức năng đặc biệt khác phù hợp với các nhiệm vụ cụ thể của từng dự án.
- Chân 0 (Rx) : Chân được dùng để nhận dữ liệu nối tiếp.
- Chân 1 (Tx) : Chân được dùng để truyền dữ liệu nối tiếp.
- Chân 2 và 3: Chân ngắt ngoài
- Chân 3, 5, 6, 9, 10 và 11: Chân để điều chế độ rộng xung PWM.
- Chuẩn giao tiếp SPI: Sử dụng chân 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK).
- Chuẩn giao tiếp I2C: Sử dụng chân đầu vào tương tự A4 (SDA) và A5 (SCL).
- Chân Aref : Tham chiếu điện áp đầu vào analog.
Arduino có rất nhiều ứng dụng nhờ khả năng xử lý linh hoạt và phần cứng dễ tích hợp vào hệ thống khác Nó được sử dụng trong các hệ thống điều khiển tự động từ đơn giản như báo cháy, đo khí, nhiệt độ, độ ẩm, ánh sáng đến các ứng dụng phức tạp hơn như điều khiển máy in 3D Ngoài ra, Arduino còn phổ biến trong công nghệ giải trí, thiết kế robot dò đường và tay cầm điều khiển Arduino còn dễ dàng kết nối với các thiết bị điện tử khác như Raspberry Pi để thu thập dữ liệu gửi lên Internet hoặc mở rộng với các shield như WiFi, Ethernet để nâng cao khả năng mạng và truyền thông.
Cảm biến MQ-3 được sử dụng để đo nồng độ cồn nhờ vào vật liệu SnO2, có khả năng dẫn điện kém trong không khí sạch nhưng rất nhạy cảm với hơi cồn Khi nồng độ cồn tăng, điện trở của cảm biến giảm mạnh, gần 5 lần trong môi trường không khí sạch theo bảng số liệu Tuy nhiên, hiệu quả phát hiện nồng độ cồn của cảm biến còn phụ thuộc vào nhiệt độ, đặc biệt khi bề mặt cảm biến được làm nóng tới mức phù hợp để tối ưu hóa độ nhạy.
Ở nhiệt độ 60°C, thời gian cần để phát hiện nồng độ cồn chỉ khoảng 8 giây, giúp xác định nhanh chóng mức độ cồn trong khí thở Trong cùng môi trường, khi nhiệt độ bề mặt cảm biến ở mức 20°C, quá trình phát hiện nồng độ cồn kéo dài từ 3 đến 5 phút, phù hợp cho các phương pháp đo chính xác hơn Điều này cho thấy rằng nhiệt độ cảm biến ảnh hưởng lớn đến thời gian phản ứng, tối ưu cho các hệ thống kiểm tra nồng độ cồn khác nhau.
Các thông số kĩ thuật của MQ-3:
Tên thông số Giá trị Đơn vị
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 Điện trở cảm biến 2÷ 20 KΩ tại nồng độ cồn 0,4 mg/l Độ nhạy ≥ 5
Tỉ lệ điện trở cảm biến khi nồng độ cồn bằng 0 và0,4mg/l
Sơ đồ mạch điện của cảm biến
Hình 2.6 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 đầu ra để truyền tín hiệu RL là điện trở mạch ra nối tiếp với cảm biến, với trị số được cấp nguồn điện áp phù hợp VH là điện áp cấp cho mạch sấy của cảm biến, còn Vc là điện áp cấp cho cảm biến, cả hai thường có giá trị bằng nhau Các điện áp VH và Vc đều được cấp nguồn 5V DC và các tín hiệu ra từ cảm biến được gửi về bộ vi điều khiển để xử lý, tính toán chính xác.
Module cảm biến MQ-3 là cảm biến phù hợp để phát hiện nồng độ cồn trong hơi thở, đặc biệt là khí Ethanol và Alcohol Với đặc điểm nổi bật gồm bốn chân: nguồn cung cấp 5V, đầu ra kỹ thuật số (0 và 1), đầu vào tín hiệu analog, và đèn LED sáng khi phát hiện khí Module có độ nhạy cao, khả năng chọn lọc tốt với ethanol, độ bền và ổn định cao, đáp ứng nhanh và đáng tin cậy trong các ứng dụng đo lường nồng độ cồn.
Hình 2.7 Module Cảm biến MQ – 3
Sơ đồ nguyên lý của Module Cảm biến MQ – 3
LCD 16×2 được sử dụng để hiển thị trạng thái hoặc các thông số.
LCD 16×2 có 16 chân trong đó 8 chân dữ liệu (D0 – D7) và 3 chân điều khiển (RS,
5 chân còn lại dùng để cấp nguồn và đèn nền cho LCD 16×2.
Các chân điều khiển trên LCD giúp dễ dàng chuyển đổi giữa chế độ lệnh và chế độ dữ liệu, từ đó thuận tiện trong quá trình thiết lập và vận hành thiết bị Ngoài ra, chúng còn hỗ trợ cấu hình để thực hiện các thao tác đọc hoặc ghi dữ liệu một cách chính xác, tối ưu hóa quá trình điều khiển và quản lý thông tin trên màn hình.
LCD 16×2 có thể sử dụng ở chế độ 4 bit hoặc 8 bit tùy theo ứng dụng ta đang làm.
Chức năng của từng chân LCD 1602:
- Chân số 1 - VSS : chân nối đất cho LCD được nối với GND của mạch điều khiển
- Chân số 2 - VDD : chân cấp nguồn cho LCD, được nối với VCC=5V của mạch điều khiển
- Chân số 3 - VE : điều chỉnh độ tương phản của LCD
- Chân số 4 - RS : chân chọn thanh ghi, được nối với logic "0" hoặc logic "1":
+ Logic “0”: Bus DB0 - DB7 sẽ nối với thanh ghi lệnh IR của LCD (ở chế độ “ghi”) hoặc nối với bộ đếm địa chỉ của LCD (ở chế độ “đọc”)
+ Logic “1”: Bus DB0 - DB7 sẽ nối với thanh ghi dữ liệu DR bên trong LCD
- Chân số 5 - R/W: chân chọn chế độ đọc/ghi (Read/Write), được nối với logic “0” để ghi hoặc nối với logic “1” đọc
Ngôn ngữ lập trình và phần mềm phụ trợ
Ngôn ngữ lập trình sử dụng trong bài là ngôn ngữ C của Arduino
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).
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ự.
Chuỗi Char Str2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'} được khai báo với độ dài tối đa 8 ký tự, trong đó giá trị ban đầu là "arduino" Việc khai báo chuỗi này bắt buộc phải nằm giữa hai dấu nháy đơn để đảm bảo đúng cú pháp trong lập trình C Điều này giúp xác định rõ chuỗi ký tự, phù hợp với quy tắc về biến và mảng trong ngôn ngữ lập trình C, đặc biệt khi làm việc với Arduino.
- 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.
- 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 là tập hợp các giá trị có liên quan và được đánh số theo thứ tự, giúp quản lý dữ liệu hiệu quả trên Arduino Trong lập trình Arduino, Array chính là kiểu dữ liệu Array trong ngôn ngữ C, hỗ trợ lưu trữ và xử lý nhiều phần tử cùng lúc Việc sử dụng Array giúp tối ưu hóa mã lập trình, nâng cao khả năng xử lý dữ liệu hoặc cảm biến trên các dự án Arduino Các Array trong C cho phép truy cập, chỉnh sửa và duy trì dữ liệu một cách linh hoạt, phù hợp với các ứng dụng cần xử lý nhiều giá trị liên tiếp.
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ự.
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).
Kiểu dữ liệu Float được sử dụng để định nghĩa các số thực, cho phép lưu trữ các giá trị nằm trong khoảng từ -3.4028235E+38 đến 3.4028235E+38 Mỗi biến kiểu Float tiêu thụ 4 byte bộ nhớ, giúp tối ưu hóa dung lượng lưu trữ trong lập trình.
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 (-2 15 đến 2 15 -1) (16 bit).
Cú pháp: short var = val;
Kiểu Unsigned long là kiểu số nguyên nằm trong khoảng từ 0 đến 4,294,967,295 (0 đến 2 32 - 1) Mỗi biến mang kiểu dữ liệu này chiếm 4 byte bộ nhớ.
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ớ.
Kiểu Unsigned int là kiểu số nguyên nằm trong khoảng từ 0 đến 65535 (0 đến
2 16 - 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 (2 32 - 1) (lúc này nó chiếm 4 byte bộ nhớ).
Cú pháp: unsigned int [tên biến] = [giá trị];
Trong lập trình Arduino, kiểu số nguyên Int là kiểu dữ liệu chính được sử dụng để lưu trữ các giá trị số nguyên Kiểu Int chiếm 2 byte bộ nhớ, phù hợp cho các phép tính cần phạm vi vừa phải Trên mạch Arduino Uno, kiểu dữ liệu Int có khả năng biểu diễn các giá trị từ -32.768 đến 32.767, tương ứng với phạm vi từ -2^15 đến 2^15 - 1, đảm bảo đủ để xử lý hầu hết các ứng dụng điều khiển và đo lường.
Cú pháp: int var = val; var: tên biến. val: giá trị.
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.
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).
Kiểu dữ liệu Char là dạng biểu diễn cho một ký tự, chiếm 1 byte bộ nhớ trong hệ thống Dữ liệu kiểu Char được lưu dưới dạng một số nguyên byte có giá trị từ -128 đến 127, trong đó có các giá trị âm và dương Đây là kiểu dữ liệu phù hợp để xử lý các ký tự đơn lẻ trong lập trình, đảm bảo tối ưu về kích thước bộ nhớ và hiệu suất xử lý.
Long là kiểu dữ liệu mở rộng của kiểu Int, giúp lưu trữ các giá trị lớn hơn trong lập trình Các biến kiểu long có khả năng chứa các số nguyên 32 bit trong khoảng từ -2,147,483,648 đến 2,147,483,647 Mỗi biến kiểu long tiêu tốn 4 byte bộ nhớ, phù hợp để xử lý các dữ liệu số lớn hơn kiểu Int Việc sử dụng kiểu long giúp tăng khả năng mở rộng và chính xác trong các phép tính số học phức tạp.
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 đó.
Trong lập trình, từ khóa "void" được sử dụng để khai báo các hàm không trả về dữ liệu khi thực thi Các function được định nghĩa với "void" sẽ thực hiện nhiệm vụ của mình mà không gửi lại giá trị nào cho phần gọi hàm Việc sử dụng "void" giúp xác định rõ ràng các hàm không cần kết quả trả về, tăng tính rõ ràng và hiệu quả trong quá trình lập trình.
Arduino IDE là nơi để soạn thảo code, kiểm tra lỗi và upload code cho arduino
- Giao diện để sọan thảo code
- Arduino toolbar: có một số button và chức năng như sau:
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
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
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.
Trong tool menu ta cần quan tâm tới cac mục Board và Serial Port.
Trong mục Board: Cần phải lựa chọn bo mạch phù hợp với bo mạch sử dụng.
THIẾT KẾ VÀ THỰC THI
Thiết kế phần mềm
Hình 3.1 Sơ đồ nguyên lý
3.3.3 Đặc tính, nồng độ và điện áp ra Analog của MQ-3
- Module cảm biến nồng độ cồn MQ-3 đo tín hiệu nồng độ cồn trong không khí
Tại Việt Nam, quy định về nồng độ cồn trong hơi thở không vượt quá 0,25mg/l, đây trở thành tiêu chuẩn chính xác để xác định liệu người lái xe có bị say hay không Mốc 0,25mg/l được chọn làm giới hạn quy định, giúp đảm bảo an toàn giao thông và phòng ngừa tai nạn do uống rượu, từ đó nâng cao ý thức chấp hành luật lệ về an toàn giao thông.
*Hình ảnh nồng độ cồn khi đo được Điện áp analog: 4.9 v Điện áp analog: 4.13 v Điện áp analog: 4.82 v Điện áp analog: 4.91 V Điện áp analog: 4.74 v
Nhận xét: Nhìn vào đường đặc tính, ta thấy khi Nồng độ cồn tăng thì điện áp analog tăng.
Một số hình ảnh của sản phẩm
Đề tài đo nồng độ cồn qua hơi thở giúp xác định nhanh chóng mức vượt quá giới hạn cho phép, nâng cao an toàn giao thông Trong những năm gần đây, công nghệ này đã được ứng dụng rộng rãi, góp phần giảm thiểu tai nạn do sử dụng rượu bia khi lái xe Tuy nhiên, về mặt thiết kế, hệ thống vẫn chưa nhỏ gọn và giá thành còn cao, hạn chế khả năng thương mại hóa rộng rãi.
Hướng phát triển của đề tài nhắm đến việc ứng dụng thực tế nhằm giảm thiểu tai nạn giao thông liên quan đến việc sử dụng rượu bia Mạch đo và cảnh báo nồng độ cồn có thể được tích hợp vào hệ thống buồng lái của ô tô để phát hiện, ngăn chặn và cảnh báo sớm trước khi xe khởi hành, cũng như kiểm soát liên tục trong quá trình lái xe Hệ thống này thao tác bằng cách ngăn chặn khởi động động cơ và phát ra các tín hiệu cảnh báo bằng ánh sáng và âm thanh, đồng thời gửi thông tin về trung tâm điều hành khi phát hiện nồng độ cồn vượt quá giới hạn quy định, góp phần nâng cao an toàn giao thông và hạn chế tai nạn do lái xe say xỉn.