TÍNH TỐN VÀ THIẾT KẾ HỆ THỐNG
Từ việc tìm hiểu chọn lọc và tham khảo các hệ thống xử lý ảnh có sẵn, dưới đây là sơ đồ khối tổng quát cho cả hệ thống xử lý ảnh để nhận biết được đối tượng là khói lửa.
Khối camera
Để Camera hoạt động tốt và có thể thu thập được dữ liệu một cách chính xác thì ta nên đặt camera cách mặt đất 3m-4m, khoảng cách từ
- Dữ liệu được thu để tạo thành một tập dữ liệu mẫu. Để thu nhận được các hình ảnh về khói thuận lợi cho việc nhận dạng, ta sẽ chú ý về độ chiếu sáng, và hướng đặt Camera.
- Đối tượng để thực hiện thí nghiệm là tập hợp đầy đủ các trạng thái tự nhiên (có thể có) của khói lửa.
Khối tiền xử lý ảnh
+ Yêu cầu thiết kế: khối này có nhiệm vụ nâng cao chất lượng ảnh đầu vào, chuyển không gian ảnh từ không gian RGB sang không gian HSV, tăng độ tương phản của ảnh cũng như giảm độ sáng của ảnh khi hoạt động trong vùng có ánh sáng mạnh. Q trình xử lý ảnh trong khối này được trình bày như hình 3.2, các q trình tính tốn đã được trình bày chi tiết ở phần 2.1.3.
Lọc nhiễu qua bộ lọc trung vị
Cân bằng lược đồ
Chuyển sang HSV Ảnh vào
Hình 3.2: Khối tiền xử lý ảnh.
Khối nhận dạng khói và lửa
+ Yêu cầu thiết kế: nhận dạng khói và lửa từ dữ liệu ảnh thu được, khi thoả mãn điều kiện nhận biết có lửa hoặc khói sẽ đưa ra tín hiệu để khối cảnh báo phát đi tín hiệu.
Phân lớp Đánh giá
Khối nhận dạng
Ảnh vào Kết quả ra
Hình 3.4: Sơ đồ khối nhận dạng khói và lửa.
Ảnh vào sẽ đi qua quá trình phân ngưỡng ảnh, ảnh thu được sẽ là ảnh đen trắng (các điểm ảnh sẽ có giá trị 0 hoặc 255, tương ứng với đen hoặc trắng. Tiếp theo, ảnh được tách khói bằng phép tốn co ảnh (Erosion) và giãn ảnh (Dilation). Cuối cùng, ảnh được khoanh vùng khói hoặc lửa bằng cách vẽ các đường xanh lên các đối tượng. Chi tiết q trình tính tốn được trình bày chi tiết ở muc 2.1.3, phần c. Phân ngưỡng ảnh, d. Tách khói và e. Nhận dạng khói.
Hình 3.5: Ảnh gốc được nhận dạng khói.
Khối giao tiếp trên máy tính
người giám sát có một cái nhìn trực quan về hệ thống. Chi tiết cách thức thực hiện trên phần mềm MATLAB được trình bày chi tiết ở chương 4, mục 4.4.2.
Giao diện thiết kế bao gồm:
+ Khung hiển thị hình ảnh: khung video gốc, khung video xử lý khói, video xử lý lửa.
+ Các nút nhấn: Browse (duyệt tới thư mục chứa video clip thử nghiệm), Kết nối Camera (kiểm tra camera có kết nối được với máy tính hay khơng), COM (thiết lập kết nối với bộ cảnh báo), Start (bắt đầu hoạt động chương trình), Pause (tạm dừng chương trình), Exit (thốt chương trình).
Hình 3.6: Giao diện chương trình trên máy tính.
Khối cảnh báo
nhận tín hiệu cảnh báo từ khối giao tiếp trên máy tính, đưa ra cảnh báo qua chuông báo động và qua tin nhắn, cuộc gọi đến các số điện thoại được cài đặt trước.
a. Bộ xử lý trung tâm
+ Yêu cầu thiết kế: thiết kế mạch điều khiển nhận lệnh từ máy tính, sau đó xử lý và thực hiện các yêu cầu bao gồm: báo động qua chuông, gửi tin nhắn, gọi điện thoại. Bộ xử lý giao tiếp với máy tính thơng qua module USB UART.
Bộ xử lý trung tâm giao tiếp với các module qua hai ngõ giao tiếp sử dụng phương thức truyền thông tin UART, một UART cứng và một UART mềm.
Bộ điều khiển dùng thạch anh 20 MHZ để tăng độ chính xác khi giao tiếp với 2 cổng UART. Tỉ lệ phần trăm xuất hiện lỗi là 0.16% ở mức baudrate 9600 [12].
UART cứng (chân TX tại pin C6 , chân RX tại pin C5): giao tiếp với module SIM 800A.
UART mềm (chân TX tại pin D1, chân RX tại pin D0): giao tiếp với module USB UART giao tiếp và nhận lệnh từ máy tính.
Ngồi ra cịn có 1 LED chỉ thị trạng thái mạch (pin B4, báo hiệu mạch đã hoàn tất quá trình khởi động) và 1 pin để điều khiển đóng ngắt chng báo động (pin B1).
Tính tốn điện trở hạn dịng cho LED:
+ Dòng hoạt động của LED là 10 mA, điện áp hoạt động ở 2V, điện áp từ nguồn là 5V. Vậy điện trở hạn dịng được tính theo cơng thức:
𝑅 = 5𝑉−2𝑉
10 𝑚𝐴 = 300 𝑂ℎ𝑚 (3.1)
Vì khơng có sẵn điện trở 300 Ohm, nên ta chọn điện trở có giá trị 330 Ohm.
b. Chuông báo động
+ Yêu cầu thiết kế: thông báo cho người giám sát trực tiếp tại khu vực đặt hệ thống, có đèn báo dễ nhận biết và tiếng cịi báo động lớn.
Với những yêu cầu như vậy, nhóm đã quyết định chọn cịi báo động có đèn nháy đỏ, có hình dáng như sau:
Thông số kỹ thuật:
- Điện áp hoạt động: 220v.
Để điều khiển, ta không dùng điện áp trực tiếp từ bộ xử lý trung tâm kích hoạt mà phải qua một mạch gián tiếp điều khiển để cách ly điện áp. Khi hoạt động, module relay tiêu thụ khoảng 30 mA. Để đóng relay, ta chỉ cần xuất mức logic 1 để kích hoạt.
Hình 3.8: Hình ảnh thực tế của module relay.
Sơ đồ nguyên lý kết nối:
Hình 3.9: Sơ đồ kết nối của chng cảnh báo.
c. Module SIM800A
+ Yêu cầu thiết kế: kết nối với bộ xử lý trung tâm để nhận lệnh thực hiện cuộc gọi và tin nhắn. Giao tiếp qua cổng UART mềm.
Vì module cần một nguồn hoạt động ổn định nên module này được cấp nguồn trực tiếp, được cho phép hoạt động thông qua chân EN trên module. Các chân cịn lại khơng dùng tới nên ta có thể để trống.
Hình 3.10: Mặt sau module SIM 800A và sơ đồ kết nối.
d. Nguồn hoạt động
+ Yêu cầu thiết kế: cấp mức điện áp 5V để hệ thống hoạt động, cấp đủ dòng để module SIM800A hoạt đổng ổn định, không bị reset ngồi ý muốn.
Tính tốn dịng tiêu thụ của các thành phần trong mạch:
Dòng hoạt động module SIM800A: để module hoạt động ổn đinh, sau khi tham khảo thiết kế trên mạng và từ khuyến cáo của nhà sản xuất, dòng hoạt động thường lên tới 800 mA nếu chỉ nhắn tin và gọi điện.
Dòng tiêu thụ của bộ xử lý trung tâm theo datasheet tra cứu được khoảng 4.5– 5 mA (hoạt động tại tần số 20 MHz), với chế độ HS (High Speed).
Hình 3.11: Bảng tra cứu dịng tiêu thụ của bộ xử lý theo datasheet.
Module Relay có điện trở cuộn dây là 100 Ohm, hoạt động ở điện áp 5v nên dòng tiêu thụ sẽ là:
𝐼 = 𝑈
𝑅 = 5𝑉
100 𝑂ℎ𝑚= 50 𝑚𝐴. (3.2)
Dịng để kích transitor có thể bỏ qua do q nhỏ.
Dịng tiêu thụ của LED báo đã tính ở trên cơng thức (3.1) ta được 10 mA. Dịng tiêu thụ của tồn bộ hệ thống xấp xỉ 850 mA, khả năng cấp dòng cho hệ thống cần chọn bằng 1,5 lần dịng tiêu thụ lớn nhất. Ta có:
𝐼𝑡ổ𝑛𝑔× 1.5 ≈ 1.3 𝐴 (3.3)
Kết luận: Từ (3.3) ta chọn module nguồn 5V 2A. Modulde này có khả năng cung cấp
đầy đủ năng lượng cho hệ thống hoạt động ổn định và lâu dài.
Hình 3.12: Module nguồn 5V 2A.
Sơ đồ nguyên lý của toàn mạch khối cảnh báo
CHƯƠNG 4. THI CƠNG HỆ THỐNG
GIỚI THIỆU
Phần này gồm có 2 phần là kết quả thi công phần cứng và những kết quả chạy phần mềm trên chương trình MATLAB. Cụ thể, phần này nêu rõ q trình thi cơng PCB, lắp ráp và test mạch, hình vẽ được chụp từ mơ hình thực của hệ thống bên ngồi hình chụp các kết quả chạy và được sắp xếp có hệ thống để người đọc dễ dàng hiểu và hình dung hệ thống nhóm đang thi cơng.
THI CƠNG MẠCH
Bảng 4-1: Danh sách các linh kiện sử dụng.
STT Tên linh kiện Thông số Dạng vỏ
1 Module nguồn 5V - 2A Board 2 PIC 16F887 Fosc = 20 MHz, Vin
= 5V PDIP-40
3 Điện trở 4K7, 220, 1K Chân cắm 4 LED Xanh, I = 10 mA Chân cắm
5 Domino 2 chân Chân cắm
6 Button 4 chân Chân cắm
7 Tụ 104 805
Mạch in sau khi vẽ:
Hình 4.1: Mạch in sau khi vẽ.
Mạch in sau khi ủi và hàn linh kiện:
Hình 4.2: Mặt sau của mạch.
Nhận xét: mạch ủi bằng tay nên chất lượng không cao, tuy nhiên do mạch đơn giản
nên chọn phương án làm thủ công. Đường mạch không bị đứt và không bị mất phần nào sau khi ủi.
Mặt trước khi gắn đủ linh kiện:
Hình 4.3: Hệ thống khi lắp hồn chỉnh trên taplo nhựa.
LẬP TRÌNH CHO KHỐI CẢNH BÁO
Lưu đồ giải thuật
Khối cảnh báo nhận lệnh từ máy tính, sau đó theo lệnh mà thực hiện lệnh gửi tin nhắn hoặc gọi điện thoại vào số cài đặt sẵn. Từ các yêu cầu trên ta có lưu đồ sau:
Bắt đầu Có lệnh từ PC xuống Lệnh gửi tin nhắn Lệnh tạo cuộc gọi Thực hiện gửi tin nhắn Thực hiện tạo cuộc gọi Có Kết thúc Khơng Có Có Khơng
Hình 4.4: Lưu đồ giải thuật chương trình cảnh báo.
Phần mềm lập trình cho vi điều khiển
a. Giới thiệu phần mềm lập trình
Sự ra đời của một loại vi điều khiển đi kèm với việc phát triển phần mềm ứng dụng cho việc lập trình cho con vi điều khiển đó. Vi điều khiển chỉ hiểu và làm việc với hai con số 0 và 1. Ban đầu để việc lập trình cho VĐK là làm việc với dãy các con số 0 và 1. Sau này khi kiến trúc của Vi điều khiển ngày càng phức tạp, số luợng thanh ghi lệnh nhiều lên, việc lập trình với dãy các số 0 và 1 khơng cịn phù hợp nữa, đòi hỏi ra đời một ngơn ngữ mới thay thế đó là ngơn ngữ lập trình Assembly. Sau này khi lập trình cho Vi điều khiển một cách ngắn gọn và dễ hiểu hơn đã dẫn đến sự ra đời của ngôn ngữ C, nhu cầu dùng ngôn ngữ C đề thay cho ASM trong việc mô tả các lệnh, nhiều chương trình soạn thảo và biên dịch C cho Vi điều khiển như: Keil C, HT‐PIC, MikroC,CCS…
‐ PCB cho dòng PIC 12‐bit opcodes ‐ PCM cho dòng PIC 14‐bit opcodes ‐ PCH cho dòng PIC 16 và 18‐bit
Tất cả 3 trình biên dich này đuợc tích hợp lại vào trong một chương trình bao gồm cả trình soạn thảo và biên dịch là CCS, phiên bản mới nhất là PCWH Compiler Ver 5.015
Giống như nhiều trình biên dich C khác cho PIC, CCS giúp cho người sử dụng nắm bắt nhanh được vi điều khiển PIC và sử dụng PIC trong các dự án. Các chương trình diều khiển sẽ được thực hiện nhanh chóng và đạt hiệu quả cao thơng qua việc sử dụng ngơn ngữ lập trình cấp cao – Ngơn ngữ C. Tài liệu hướng dẫn sử dụng có rất nhiều, nhưng chi tiết nhất chính là bản Help đi kèm theo phần mềm (tài liệu Tiếng Anh). Trong bản trợ giúp nhà sản xuất đã mô tả rất nhiều về hằng, biến, chỉ thị tiền xử lý, cấu trúc các câu lệnh trong chương trình, các hàm tạo sẵn cho người sử dụng…
Nhóm quyết định chọn CCS cho đề tài này vì CCS là một cơng cụ lập trình C mạnh cho Vi điều khiển PIC. Những ưu và nhược điểm của CCS sẽ được đề cập đến trong các phần dưới đây.
b. Hướng dẫn sử dụng CCS
Khởi động chương trình làm việc PIC C Compiler. Từ giao diện chương trình di chuột chọn Project ‐> New ‐> PIC Wizard nhấn nút trái chuột chọn. Tại đây, ta có thể thiết lập, cấu hình các chức năng cho dòng PIC đã lựa chọn để đáp ứng yêu cầu của Projetct.
Hình 4.5: Giao diện chương trình CCS.
Sau khi việc cấu hình hồn tất, ấn vào OK, giao diện lập trình cho Project sẽ hiện ra:
Hình 4.6: Giao diện soạn thảo code trên phần mềm CCS.
Giao diện bao gồm các khối chức năng sau:
+ Khối thanh công cụ: giúp hỗ trợ cho người dùng có thể dễ dàng tìm kiếm, chỉnh sửa, debug…Project.
+ Khối giao diện Files: giúp người dùng quản lý tất cả các file chứa trong Project của mình.
+ Khối giao diện dành cho người dùng lập trình.
Hình 4.7: Cấu hình khi tạo project mới trên CCS.
- Device: Liệt kê danh sách các loại PIC 12F, 16F, 18F… Ta sẽ chọn tên Vi điều khiển PIC mà ta sử dụng trong dự án. Lấy ví dụ chọn PIC16F877A.
- Oscilator Frequency: Tần số thạch anh ta sử dụng, chọn 20 MHz (tùy từng loại).
- Fuses: Thiết lập các bit Config như: Chế độ dao động (HS, RC, Internal ), chế độ bảo vệ Code, Brownout detected…
Hình 4.8: Cấu hình Tab Communications trong CCS.
Tab Communications liệt kê các giao tiếp nối tiếp mà một vi điều khiển PIC hỗ trợ thường là RS232 và I2C, cùng với các lựa chọn để thiết lập chế độ hoạt động cho từng loại giao tiếp.
- Giao tiếp RS232: Mỗi một Vi điều khiển PIC hỗ trợ một cổng truyền thông RS232 chuẩn. Tab này cho phép ta lựa chọn chân Rx, Tx, tốc độ Baud, Data bit, Bit Parity…
- Giao tiếp I2C: Để sử dụng I2C ta tích vào nút chọn Use I2C, khi đó ta có các lựa chọn: Chân SDA, SCL, Tốc độ truyền (Fast - Slow), chế độ Master hay Slave, địa chỉ cho Salve.
LẬP TRÌNH XỬ LÝ ẢNH
Lưu đồ giải thuật
Từ quá trình nghiên cứu và thử nghiệm chương trình, nhóm đã xây dựng lưu đồ và biểu diễn dưới hình sau:
Bắt đầu - PC Cấu hình cổng COM ảo Tiền xử lý ảnh Phân vùng và tách khói, lửa Nhận diện khói, lửa Đưa ra cảnh báo Truyền lệnh xuống khối cảnh báo Thu nhận hình ảnh từ camera
Quá trình Tiền xử lý ảnh:
Ảnh chụp từ camera sẽ được đi qua bộ lọc trung vị, đa phần nhiễu mà nhóm gặp là muối tiêu do chất lượng của camera kém và hoạt động trong môi trường thiếu sáng do đó nhiễu muối tiêu là đối tượng cần xử lý so với các loại nhiễu khác.
Quá trình tiếp theo ảnh đã được lọc nhiễu trung vị sẽ được cân bằng lược đồ và chuyển sang không gian HSV. Kết thúc quá trình ảnh sẽ được truyền vào quá trình phân vùng và tách khói, lửa.
Bắt đầu
Ảnh chụp từ camera
Lọc nhiễu qua bộ lọc trung vị
Cân bằng lược đồ
Chuyển sang HSV
Kết thúc
(a) (b)
Hình 4.11: Hình ảnh gốc (a) sau khi qua bộ lọc trung vị (b).
Hình 4.12: Kết quả phép chuyển đổi khơng gian RGB sang HSV
Quá trình phân vùng và tách khói, lửa:
Ảnh vào từ quá trình Tiền xử lý được truyền vào, chương trình sẽ tính tốn ngưỡng thơng qua hàm graythresh và một ngưỡng được cài đặt trước. Thông qua hai ngưỡng này chương trình có thể tách các điểm ảnh có khả năng là khói hoặc lửa từ ảnh gốc. Ảnh sau quá trình này sẽ bao gồm 3 ảnh tương ứng với 3 kênh HSV và là ảnh Binary, trắng tương ứng với khói hoặc lửa, điểm ảnh màu đen tượng trưng cho nền.
Tìm ngưỡng khói và lửa Ảnh vào Bắt đầu Phân vùng khói và lửa Kết thúc
Hình 4.13: Lưu đồ q trình Phân vùng và tách khói, lửa.
(a) (b) (c)
Hình 4.14: Kết quả sau khi chọn ngưỡng và phân vùng thứ tự (a) là kênh Hue (b) là kênh Saturation (c) là kênh Brightness.
Q trình nhận dạng khói, lửa:
Sau khi kết thúc quá trình phân ngưỡng thì ảnh tiếp tục được nhận dạng và đánh dấu; sau đó sẽ được làm nổi bật bằng đường bao màu xanh lá cây.
Tìm và đánh dấu điểm khói, lửa
Ảnh vào Bắt đầu
Làm nổi biên khói, lửa
Kết thúc Đưa ra cảnh báo
Hình 4.15: Lưu đồ q trình nhận dạng khói, lửa.
Kết quả sau q trình nhận dạng khói:
(a) (b)
Hình 4.16: Khói được nhận dạng trên khung ảnh đã xử lý (a), khung ảnh gốc được làm nổi