3.1 GIỚI THIỆU.
Mục tiêu của đồ án: thiết kế được mô hình và giao diện chương trình trên matlab đếm đối tượng từ ảnh đầu vào. Đếm đối tượng bằng cách xử lý lý ảnh đầu vào bằng các phương pháp, thuật toán khác nhau như đã nêu ở chương 2 để đưa ra được kết quả là số đối tượng cụ thể có trong ảnh. Cuối cùng truyền tín hiệu điều khiển xuống Arduino để điều khiển tín hiệu đèn giao thông phù hợp với đối tượng đếm được.
3.2 TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG3.2.1 Thiết kế sơ đồ khối hệ thống. 3.2.1 Thiết kế sơ đồ khối hệ thống.
Hình 3.1. Sơ đồ khối hệ thống. Chức năng của từng khối:
Khối ảnh đầu vào: Ảnh được camera đặt trên mỗi trục đường mở mỗi ngã Ảnh đầu vào Bộ xử lý ảnh đầu vào (máy tính) Bộ điều khiển (arduino) Hiển thị (đèn giao thông)
Người tham gia giao thông
được chụp dưới định dạng file đuôi .PNG, .JPEG, .PEG, …để thuận tiện cho việc truyền dữ liệu xuống bộ xử lý ảnh đầu vào (máy tính).
Bộ xử lý ảnh đầu vào (máy tính): Máy tính sẽ thu nhận tín hiệu hình ảnh từ camera để làm dữ liệu ảnh đầu vào cho bộ xử lý ảnh. Bộ xử lý ảnh cụ thể là phần mềm Matlab sẽ phân tích và xử lý hình ảnh để đưa ra kết quả tổng số lượng phương tiện tham gia trên mỗi tuyến đường.
Khối điều khiển (arduino): Nhận giá trị từ bộ xử lý ảnh thông qua chuẩn kết nối UART, xử lý tính toán thời gian các đèn xanh, đỏ, vàng trên mỗi tuyến đường.
Khối hiển thị: Nhận tín hiệu ngõ ra từ khối điều khiển hiển thị số giây đèn xanh, đỏ, vàng trên led 7 đoạn và đèn xanh, đỏ, vàng trên led đơn.
Người tham gia giao thông tuân thủ tín hiệu đèn giao thông. Khi tín hiệu đèn đỏ gần kết thúc camera xe tiếp chụp ảnh làn đường và gửi về bộ xử lý ảnh đầu vào.
3.2.2 Thiết kế các khối hệ thống.
Hệ thống được xây dựng toàn bộ trên nền Matlab nhúng dữ liệu xuống kit Arduino nên quá trình tính toán và thiết kế được thực hiện chủ yếu trên phần mềm.
a) Thiết kế khối ảnh đầu vào.
Camera được lắp đặt tại hai trục đường trước mỗi ngã tư có nhiệm vụ thu nhận hình ảnh các phương tiện tham gia giao thông trên tuyến đường mà nó được lắp đặt sau đó truyền hình ảnh xuống bộ xử lý ảnh đầu vào (máy tính).
b) Thiết kế bộ xử lý ảnh đầu vào.
Thiết kế một chương trình để xử lý hình ảnh đầu vào bằng các lệnh, hàm được thư viện matlab hỗ trợ. Để đếm được đối tượng hai hình ảnh sẽ được đưa vào. Một là hình ảnh không có xe cộ và ảnh còn lại với đầy đủ các phương tiện. Hình ảnh đầu vào sau đó được chuyển đổi từ rbg sang màu xám bằng cách sử dụng hàm rbg2gray(). Bây giờ so sánh hai ảnh đầu vào và tìm ra sự khác biệt giữa hai ảnh. Để phân biệt các đối tượng và nền trong ảnh xám thì ta chuyển ảnh xám sang ảnh nhị phân. Trước khi chuyển sang ảnh nhị phân ta nên tìm cường độ ngưỡng
cách sử dụng hàm im2bw(I,graythresh). Tiếp theo là loại bỏ khuyết điểm, tình trạng thiếu trong hình ảnh và cung cấp thông tin về hình thức và cấu trúc của các hoạt động ảnh sử dụng các hình thái học như xói mòn, giản nỡ, đóng hoặc mở đối tượng, …Cuối cùng sử dụng thuật toán đánh nhãn để thực hiện phép đếm đối tượng.
c) Lựa chọn khối xử lý trung tâm.
Do ta đã chọn Board vi điều khiển Arduino Mega làm khối điều khiển trung tâm ở chương 2 với ngõ ra đủ để kết nối với các thiết bị ngoại vi nên chương này ta chỉ tìm hiểu về cấu tạo bên trong Arduino Mega.
Hình 3.2 Sơ đồ nối dây vi điều khiển trong Broad Arduino Mega. Chân RESET của MCU được được nối với nút nhấn tích cực mức cao. Với Chân RESET của MCU được được nối với nút nhấn tích cực mức cao. Với điện trở kéo lên, đầu vào của vi điều khiển sẽ đọc trạng thái là 5V (HIGH) nếu nút nhấn không được nhấn. Khi nút nhấn được nhấn, nó sẽ kết nối trực tiếp đầu vào vi điều khiển với GND, vì thế mức điện áp đọc tại đầu vào MCU là 0V (LOW), đồng thời MCU sẽ được khởi động lại (RESET). Nếu không có điện trở kéo lên, khi ta nhấn nút sẽ xảy ra hiện tượng đoản mạch.
Chân XTAL1 và XTAL2 của MCU được nối vào 2 đầu thạch 16MHz tạo mạch dao động ngoại. Hai tụ 22pF không phân cực được gán vào chân thạch anh để ổn định nhiệt.
Để nạp chương trình cho vi điều khiển ta sẽ dùng mạch nạp được tích hợp sẵn trong board Arduino Mega. Dưới đây là sơ đồ đi dây mạch nạp.
Mạch này giao tiếp với MCU thông qua chuẩn UART bằng 2 chân RX, TX và giao tiếp với máy tính bằng cổng USB. Để giao tiếp Arduino Mega với máy tính ta phải cài Driver CH340 trên máy tính. Vì MCU chỉ hỗ trợ 1 chuẩn UART nên mỗi lần muốn nạp chương trình cho MCU ta phải ngắt các kết nối liên quan đến chuẩn UART.
d) Thiết kế khối hiển thị.
Để hiển thị số giây ở 2 trục đường chính ta sử dụng 2 led 7 đoạn 2 digit. Dưới đây là sơ đồ nguyên lý của led 7 đoạn 2 digit anode chung.
Hình 3.4 Sơ đồ nguyên lý led 7 đoạn 2 digit anode chung. Thông số kỹ thuật led 5261BS.
-Màu đỏ, A chung ,10 chân. -Điện áp rơi trên LED là 2.2V.
-Dòng tối đa chạy qua mỗi LED là 25mA. -Dòng chạy bình thường: 10mA.
Bảng 3.1: Mã hiển thị từ 0 – 9 loại anode chung. Chữ số DB G F E D C B A Chữ số DB G F E D C B A 0 1 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 1 2 1 0 1 0 0 1 0 0 3 1 0 1 1 0 0 0 0 4 1 0 0 1 1 0 0 1 5 1 0 0 1 0 0 1 0 6 1 1 0 0 0 0 1 0 7 1 1 1 1 1 0 0 0 8 1 0 0 0 0 0 0 0 9 1 0 0 1 0 0 0 0
Nguyên lý hoạt động của led 7 đoạn quét: Dựa trên độ lưu ảnh của mắt một hình ảnh mắt ta thấy nhưng phải mất 40ms mới xử lý xong (cỡ 24-25 hình trong 1 giây), do đó nếu các hình xuất hiện trước mắt ta mà chớp tắt nhanh hơn 25 hình/ giây thì ta không thấy nó chớp nữa. Dựa vào đó bằng cách cho luân phiên nhiều led hiển thị thông tin khác nhau ta có cảm giác nhiều led 7 đoạn sáng đồng thời, với cách này ta chỉ cần 1 bus dữ liệu nối song song cho tất cả các led (gồm 8 dây db, g, f, e, d, c, b, a) mỗi led được điều khiển bằng một tín hiệu khác sao cho tại một thời điểm chỉ có duy nhất một led 7 đoạn được phép hiển thị. Delay nó 1 khoảng thời gian, sau đó chuyển sang led 7 đoạn khác.
Thứ tự các chân khi đặt led 7 đoạn ở vị trí các điểm thập phân ở dưới cùng. Ở phía dưới cùng, từ trái sang phải: 1, 2, 3, 4, 5.
Ở phí trên cùng, từ trái sang phải: 10, 9, 8, 7, 6.
Phần lớn các chân này được nối trực tiếp tới ardunio, tuy nhiên đối với chân cờ bit là chân 7 và chân 8 sẽ được kết nối tới 1 điện trở hạn dòng sau đó kết nối
Thứ tự hiển thị các số đươc điều khiển bởi chân số 7 và chân số 8. Hai chân này có thể khác nhau tùy vào nhà sản xuất. Chân 8 ánh xạ đến chữ sô 1 và chân 7 ánh xạ đến chữ số 2 theo như sơ đồ nguyên lý ở trên.
Để hiện thị đèn báo ta sử dụng 3 led đơn với 3 màu xanh, đỏ, vàng ở mỗi trục đường.
Hình 3.6 Led đơn màu xanh, đỏ, vàng thực tế.
Để cho led sáng, ta cần cấp dòng ILED chọn cấp dòng ILED khoảng 10mA và điện áp VLED là 1,7V phù hợp với điều kiện của mỗi led ở trên.
Như vậy ta phải mắc thêm điện trở có giá trị là:
Hình 3.7 Sơ đồ kết nối led đơn với điện trở.
RLED= = ,
× ≈ 330Ω (3.1)
Led 7 đoạn 2 digit dòng chạy bình thường là 10mA và điện áp rơi trên led là 2.2VDC.
R= = .
× = 280Ω (3.2) Chọn R= 330 Ω.
Trong quá trình nhóm thực hiện đi khảo sát thực tế thì số giây đèn xanh ít nhất khi làn ít xe là 25 giây. Do đó nhóm đã ước lượng tương ứng số giây đèn xanh tương ứng với số xe đếm được để giao lộ không bị ách tắc dưới bảng sau. Bảng 3.2 Số giây đèn xanh ứng với số xe đếm được.
Số xe đếm được Số giây đèn xanh Nhỏ hơn 2 xe 25s 2 < Số xe <=4 27s 4 < Số xe <=7 29s 7 < Số xe <=10 35s 10< Số xe<=13 40s 13< Số xe<=17 45 Số xe > 17 50s
Từ số giây đèn xanh ta có số giây đèn đỏ = số giây đèn xanh + 3 giây đèn vàng.
e) Thiết kế khối nguồn.
Bảng 3.3 Liệt kê điện áp và dòng các linh kiện sử dụng trong mạch
Tên linh kiện Số lượng Điện áp định mức (VDC) Dòng điện định mức (mA) Arduino mega 2560 1 5 30 Led đơn 6 5 10
Led 7 đoạn 2 digit 2 5 10
Từ bảng trên, ta có khối nguồn như sau:
- Điện áp: 5V.
- Dòng điện: 500mA.
Do yêu cầu của đề tài không cần nguồn di chuyển nên sẽ lựa chọn dùng nguồn thông qua cổng USB của máy tính.
3.2.3 Thiết kế mô hình đèn giao thông.
Mô hình thực nghiệm đèn giao thông có kích thước 25cm x 25cm, mô hình thiết kế nhằm mô phỏng một ngã tư gồm 2 tuyến đường một chiều giao nhau. Mỗi trụ đèn gồm có:
1 đèn led 7 đoạn 2 digit.
3 đèn led xanh, đỏ, vàng.
Yêu cầu thiết kế mô hình: - Nhỏ gọn, chắc chắn, dễ di chuyển.
- Mô hình sẽ có 2 mặt và 4 cạnh bên: Mặt trên sẽ trang trí sao cho giống ngã tư và xác định vị trí đặt 2 led 7 đoạn 2 digit và 6 led đơn sao cho phù hợp. Mặt dưới sẽ để arduino mega. Hai mặt sẽ được cố định song song thông qua 4 cạnh bên sẽ được dán chặt vào mỗi mặt.
Hình 3.10 Mặt dưới của mô hình sau khi thiết kế.
3.2.4 Sơ đồ nguyên lý của toàn mạch.
Nguyên lý hoạt động của toàn bộ hệ thống: Có 2 camera được lắp đặt tại 2 trục đường trước mỗi ngã tư. Camera này có nhiệm vụ thu nhận hình ảnh các phương tiện tham gia giao thông trên mỗi tuyến đương mà nó được lắp đặt. Do điều kiện thực tế phải lắp đặt camera ở trên cao để quay làn đường. Điều này gây khó khăn cho nhóm thực hiện. Nên ở đây nhóm thực hiện sẽ đi khảo sát thực tế và quay video 2 làn đường bằng smartphone. Sau đó video sẽ được nhúng vào matlab để mô phỏng camera đang quay trực tiếp 2 làn đường. Hình ảnh thu được từ các camera sẽ được truyền về máy tính đặt tại ngã tư. Máy tính sẽ thu nhận hình ảnh từ camera làm dữ liệu đầu vào cho bộ xử lý ảnh (Matlab). Bộ xử lý ảnh sẽ có nhiệm vụ phân tích và xử lý hình ảnh để đưa ra kết quả số lượng phương tiện tham gia giao thông ở mỗi tuyến đường. Sau khi so sánh số lượng phương tiện ở mỗi tuyến đường bộ xử lý ảnh sẽ tính toán thời gian các đèn xanh ở làn 1 trước, khi làn 1 kết thúc số giây đèn vàng camera của làn 2 sẽ bắt đầu chụp số lượng phương tiện tham gia trên làn 2 và truyền về bộ xử lý ảnh để đưa ra số giây đèn xanh cho làn 2. Khi làn 2 kết thúc số giây đèn vàng thì camera của làn 1 sẽ chụp số lượng phương tiện tham gia trên làn 1 để xử lý và đưa ra số giây đèn xanh cho làn 1. Quy trình sẽ được lặp đi lặp lại như vậy. Khi tính toán được số giây đèn xanh, đỏ, vàng bộ xử lý ảnh sẽ gửi dữ liệu xuống arduino. Arduino sẽ có nhiệm vụ hiển thị số
Arduino mega 2560 Dây kết nối PC &
giây, đèn xanh, đỏ, vàng lên led 7 đoạn và led đơn để người tham gia giao thông quan sát
Chương 4. THI CÔNG HỆ THỐNG.
4.1 GIỚI THIỆU.
Chương này nhóm giới thiệu về hệ thống nhóm đã thực hiện, lưu đồ tổng quát của hệ thống, lưu đồ cho chương trình xử lý ảnh đầu vào, lưu đồ chương trình đếm ảnh, lưu đồ cho chương trình nhận và gửi dữ liệu từ matlab sang arduino trên phần mềm matlab và lưu đồ cho chương trình nhận và gửi dữ liệu từ arduino sang matlab trên kit điều khiển Arduio.
4.2 THI CÔNG HỆ THỐNG. 4.2.1 Thi công bo mạch.
Các bước thi công sản phẩm:
- Vẽ mạch nguyên lý trong Proteus
- Vẽ mạch in ra chân cho các linh kiện để kết nối.
- Làm mạch và hàn linh kiện.
- Kiểm tra hoạt động của mạch thi công
- Kết quả sau khi làm mạch bao gồm khối xử lý trung tâm và khối hiển
thị.
Hình 4.1. Sơ đồ mạch in ra chân từ arduino.
Sơ đồ mạch in ra chân từ arduino được vẽ bằng phần mềm Proteus là phần mềm chuyên về mô phỏng và vẽ mạch in. Mạch có kích thước là 3 x 3cm.
STT Tên linh kiện Giá trị Chú thích Số lượng
1 Arduino Mega 5V; 30mA Module 1
2 Led 7 đoạn 2 digit 2.2V; 10mA 2
3 Led đỏ 1,8V; 10mA 2
4 Led xanh 1,8V; 10mA 2
5 Led vàng 1,8V; 10mA 2
6 Điện trở 330Ω 22
4.2.2 Lắp ráp và kiểm tra.
Ta tiến hành hàn các linh kiện trong khối theo kích thước từ nhỏ đến lớn. Tiếp đó ta lấy dây bus kết nối giữa các khối lại với nhau.
Hình 4.2. Hình ảnh thực tế sau khi thi công.
Sau khi lắp ráp và hàn linh kiện hoàn tất ta tiến hành cấp nguồn từ cổng USB của máy tính vào để kiểm tra mạch xem đèn led trên arduino mega có sáng
đoạn.
4.2.3 Thiết kế giao diện cho người điều khiển.
Hình 4.3. Giao diện điều khiển chính trên PC.
Mô hình bao gồm 2 làn đường 1 chiều. Ở mỗi làn sẽ có 1 led 7 đoạn quét loại 2 digit hiển thị số giây và 3 led đơn biểu hiện tín hiệu đèn giao thông. Sẽ có 2 chế độ điều khiển là AUTO và MANUAL.
- Chế độ AUTO: camera sẽ tự động chụp hình ảnh ở mỗi làn, đếm số lượng phương tiện và hiển thị số giây đèn xanh, đỏ, vàng cho phù hợp.
- Chế độ MANUAL: Cho phép người điều khiển nhập số giây đèn xanh ở mỗi làn. Phòng trường hợp sự cố xảy ra.
4.3 ĐÓNG GÓI VÀ THI CÔNG MÔ HÌNH.
Để mạch hoạt động ổn định, không bị va đập và hỏng hóc ta sẽ thiết kế thêm phần vỏ mica bao bên ngoài mỗi khối. Mỗi vỏ mica sẽ bao gồm 6 mặt tạo thành một hình hộp và ta sẽ cố định mạch vào mặt dưới cùng của vỏ bằng keo 502. Ta sẽ dùng phần mềm CorelDraw để thiết kế
cho cổng kết nối đưa ra kết nối với máy tính.
Về phần mặt trên của mô hình người thiết kế dùng phần mềm CorelDraw để vẽ một ngã tư sau đó in ra và được dán lên mặt trên của mô hình
Hình 4.4.Mô hình sau khi thi công.
4.4 LẬP TRÌNH HỆ THỐNG
4.4.1 Lập trình trên phần mềm Matlab. 4.4.1.1 Sơ đồ khối tổng quát trên matlab. 4.4.1.1 Sơ đồ khối tổng quát trên matlab.
Hình 4.5. Sơ đồ khối tổng quát chính của hệ thống đếm đối tượng trên matlab.Đầu tiên hệ thống sẽ lấy video đầu vào được quay từ camera (do mô hình Đầu tiên hệ thống sẽ lấy video đầu vào được quay từ camera (do mô hình là mô phỏng nếu áp dụng vào thực thế hệ thống sẽ lấy ảnh video được quay trực tiếp thực tế từ smartphone). Video sau khi lấy được sẽ được nâng cao độ tương phản, khử nhiễu, khử bóng, khử độ lệch loại bỏ các đối tượng không quan tâm