Sơ đồ nguyên lí của cả hệ thống được thể hiện trong hình dưới (Sơ đồ này chưa có khối nguồn. Khối nguồn sẽ được tính toán thiết kế riêng và được trình bày ở mục 3.2 của chương này).
Hình 3.1 Sơ đồ nguyên lí hệ thống
Hệ thống bao gồm các khối sau: 1. Khối điều khiển
2. Khối cảm biến và khối xác thực người dùng 3. Khối hiển thị
4. Khối điều khiển đèn 5. Khối điều khiển rèm 6. Khối điều khiển cửa sổ 7. Khối bluetooth
32 Việc tính toán thiết kế chi tiết cho từng khối được trình bày trong mục 3.2 của chương này.
3.2 Tính toán thiết kế từng khối
3.2.1 Khối điều khiển
Đề tài này sử dụng vi điều khiển trung tâm là kit STM32F103C8T6 đóng vai trò truyền nhận tín hiệu với các các cảm biến cho các ứng dụng cho phép đăng nhập bằng vân tay, giám sát nhiệt độ lớp học..., nhận tín hiệu điều khiển từ ứng dụng điện thoại để điều khiển các cơ cấu chấp hành như động cơ, đèn.
Kit STM32F103C8T6 được cấp nguồn 5VDC từ adapter vào chân 5V. Điện áp cấp 5VDC sẽ được chuyển đổi thành 3.3VDC qua IC nguồn và cấp cho Vi điều khiển chính. Kit sử dụng thạch anh nội 8MHz được tích hợp sẵn. Chi tiết kết nối giữa kit STM32F103C8T6 và các khối khác trong hệ thống được thể hiện trong hình dưới:
Hình 3.2 Sơ đồ kết nối của khối điều khiển
Việc kết nối giữa khối điều khiển trung tâm với các ngoại vi được trình bày cụ thể như sau:
Chân A0, A1 của vi điều khiển (ADC) được kết nối lần lượt với chân tín hiệu của cảm biến nhiệt độ LM35 và cảm biến đo dòng ACS712.
Chân A2, A3 của vi điều khiển (TXD, RXD) được kết nối tương ứng với chân RXD, TXD của cảm biến vân tay R305.
Chân A4, A5, A6 của vi điều khiển (các chân ngắt ngoài) được kết nối lần lượt với chân tín hiệu của cảm biến mưa và 2 công tắc hành trình.
Chân B0, B1 của vi điều khiển (các chân Output) được kết nối lần lượt với các chân tín hiệu đầu vào IN2, IN1 của module rơ le.
Chân B7 của vi điều khiển (SDA) được kết nối với chân SDA của module chuyển đổi I2C.
Chân B6 của vi điều khiển (SCL) được kết nối với chân SCL của module chuyển đổi I2C.
33
Chân B5, B4 của vi điều khiển (chân ngắt Timer chế độ tạo xung PWM) được kết nối với các chân tín hiệu của 2 động cơ servo.
Chân A10, A9 của vi điều khiển (RXD, TXD) được kết nối tương ứng với chân TXD, RXD của module bluetooth HC06.
Chân B15, B14, B13, B12 của vi điều khiển (các chân Output) được kết nối lần lượt với các chân tín hiệu đầu vào IN1, IN2, IN3, IN4 của module điều khiển động cơ L298.
3.2.2 Khối cảm biến
3.2.2.1. Cảm biến nhiệt độ LM35
Đề tài này sử dụng cảm biến nhiệt độ LM35 cho ứng dụng giám sát nhiệt độ của lớp học. Cảm biến LM35 giao tiếp với vi điều khiển bằng cách đưa ra một giá trị hiệu điện thế nhất định tại chân Vout (chân ở giữa) ứng với mỗi mức nhiệt độ. Tín hiệu này được đưa vào bộ ADC được tích hợp sẵn của vi điều khiển và đầu ra dạng digital để xử lý. Như vậy, bằng cách đưa vào chân bên trái của cảm biến LM35 hiệu điện thế 5V, chân phải nối đất, đo hiệu điện thế ở chân giữa bằng các chân được gắn tương ứng trên vi điều khiển sẽ thu được nhiệt độ hiện tại.
Sơ đồ kết nối giữa cảm biến nhiệt độ LM35 và vi điều khiển trung tâm như sau:
Hình 3.3 Sơ đồ kết nối của cảm biến LM35
Tính toán nhiệt độ đầu ra của LM35:
Ở đề tài tốt nghiệp này, vi điều khiển được sử dụng là STM32F103 với bộ ADC 12 bit. Công thức tính nhiệt độ dựa vào hiệu điện thế đầu ra của LM35 như sau: Ta có: u = t * k
Trong đó u: điện áp đầu ra (mV)
t: nhiệt độ môi trường đo (°C)
k: là hệ số theo nhiệt độ của LM35, 10mV/1°C
Điện áp tham chiếu cho LM35 Vref là 3.3V, bộ giải mã ADC sử dụng 12bit, thì bước thay đổi của LM35 sẽ là 3.3/(212) = 3.3/4096. Giá trị ADC đo được thì điện
34 áp đầu vào của LM35 là: u = (t*k)/(3.3/4096) = ((10−2)* 4096*t)/3.3 = 12.41 *t. Vậy nhiệt độ ta đo được t = (giá trị ADC) / 12.41.
Sai số của LM35:
+ Tại 0°C thì điện áp của LM35 là 10mV + Tại 150°C thì điện áp của LM35 là 1.5V
==> Dải điện áp ADC biến đổi là 1.5 - 0.01 = 1.49 (V) + ADC 12 bit nên bước thay đổi của ADC là: n = 0.81mV Vậy sai số của hệ thống đo là: Y = 0.00081/1.49 = 0.054%
3.2.2.2. Cảm biến đo dòng ACS712
Cảm biến đo dòng ACS712 được sử dụng cho ứng dụng đo dòng điện xoay chiều từ các thiết bị điện (điều hòa, máy chiếu) để phát hiện tín hiệu bật tắt các thiết bị đó để phục vụ cho việc điều khiển hệ thống. Cụ thể, khi các thiết bị này tắt, dòng điện ra = 0, ngược lại, khi trong chế độ hoạt động, giá trị dòng này > 0.
Việc lấy các tín hiệu này nhằm mục đích xây dựng các kịch bản tự động cho lớp học:
- Kịch bản 1: Khi có tín hiệu bật điều hòa, hệ thống điều khiển 2 cửa sổ đóng 1 cách tự động để tiết kiệm điện.
- Kịch bản 2: Khi có tín hiệu bật máy chiếu, hệ thống điều khiển đèn và rèm ở khu vực máy chiếu tắt và đóng 1 cách tự động để thuận tiện cho việc dạy và học bằng máy chiếu.
Trong khuôn khổ luận văn này, việc tích hợp cảm biến này trên các thiết bị thật là không khả thi do giá thành và rủi ro cao. Vì thế, tôi sử dụng 2 đèn 220V thay thế để mô phỏng cho hệ thống. Tín hiệu bật tắt đèn tương ứng với tín hiệu mở đóng điều hòa (máy chiếu).
Sơ đồ kết nối giữa cảm biến đo dòng ACS712 và vi điều khiển trung tâm như sau:
Hình 3.4 Sơ đồ kết nối của cảm biến ACS712
Các tín hiệu đầu vào của cảm biến là 2 dây ra của dòng điện xoay chiều. Tín hiệu điện áp ra của cảm biến được đưa vào bộ ADC để xử lý.
35 Điện áp tham chiếu cho ACS712 Vref là 3.3V, bộ giải mã ADC sử dụng 12bit, thì bước thay đổi của ACS712 sẽ là 3.3/(212) = 3.3/4096.
Vậy giá trị dòng điện ra đo được I = (giá trị ADC) * 3.3 / 4096.
3.2.2.3. Công tắc hành trình
Đề tài này sử dụng các công tắc hành trình 5V cho ứng dụng điều khiển các rèm cửa. Cụ thể mỗi rèm cửa cần 3 công tắc hành trình để xác định các điểm giới hạn tương ứng với 3 trạng thái của rèm: mở, mở 50%, đóng (tương ứng với công tắc hành trình 1, 2, 3).
Khi rèm cửa chạm tới cần gạt của công tắc hành trình, xảy ra ngắt ngoài trên các chân tương ứng của MCU. MCU xử lí các tín hiệu ngắt đó và đưa ra tín hiệu điều khiển rèm.
- Khi có tín hiệu mở rèm, MCU gửi tín hiệu điều khiển động cơ 1 chiều quay thuận, khi rèm chạm tới cần gạt của công tắc hành trình 2 thì xảy ra ngắt ngoài tại chân này, nhưng động cơ không dừng, vì ngắt này không tương ứng với chế độ mở rèm, đến khi rèm chạm tới cần gạt của công tắc hành trình 1 thì xảy ra ngắt ngoài tại chân này, MCU mới gửi tín hiệu dừng động cơ.
- Khi có tín hiệu mở rèm 50%, MCU gửi tín hiệu điều khiển động cơ 1 chiều quay thuận, khi rèm chạm tới cần gạt của công tắc hành trình 2 thì xảy ra ngắt ngoài tại chân này, MCU gửi tín hiệu dừng động cơ.
- Khi có tín hiệu đóng rèm, MCU gửi tín hiệu điều khiển động cơ 1 chiều quay nghịch, khi rèm chạm tới cần gạt của công tắc hành trình 3 thì xảy ra ngắt ngoài tại chân này, MCU gửi tín hiệu dừng động cơ.
Sơ đồ kết nối giữa các công tắc hành trình và vi điều khiển trung tâm như sau:
Hình 3.5 Sơ đồ kết nối của công tắc hành trình
3.2.2.4. Cảm biến mưa
Cảm biến mưa được sử dụng trong luận văn cho ứng dụng phát hiện khi trời mưa để đưa ra tín hiệu đóng các cửa sổ. Cảm biến mưa này hỗ trợ hai loại ngõ ra tín hiệu là analog (tương tự) và digital (số), để có thể áp dụng linh hoạt tùy mục đích khác nhau. Trong khuôn khổ đề tài này, dạng tín hiệu được sử dụng là tín hiệu
36 Digital ở chân D0. Chân D0 này được kết nối với chân ngắt ngoài của vi điều khiển. Cụ thể, khi cảm biến khô ráo (trời không mưa), chân D0 của module cảm biến mưa sẽ được giữ ở mức cao (5V-12V). Khi có nước trên bề mặt cảm biến (trời mưa), có tín hiệu ngắt ngoài, đèn LED màu đỏ sẽ sáng lên, chân D0 được kéo xuống thấp (0V).
Sơ đồ kết nối giữa cảm biến mưa và vi điều khiển trung tâm như sau:
Hình 3.6 Sơ đồ kết nối của cảm biến mưa
3.2.3 Khối xác thực người dùng
Đề tài này sử dụng module cảm biến nhận dạng vân tay R305 để giao tiếp với vi điều khiển cho ứng dụng nâng cao tính bảo mật cho hệ thống bằng việc xác thực thông tin người dùng khi đăng nhập bằng vân tay, nếu đăng nhập thành công thì mới trao quyền điều khiển cho người dùng đó. Cảm biến vân tay R305 sử dụng chuẩn truyền tin UART để giao tiếp với vi điều khiển. Cụ thể, các chân RXD, TXD của cảm biến được kết nối tương ứng với chân TXD, RXD của vi điều khiển. Sơ đồ kết nối giữa cảm biến R305 và vi điều khiển được thể hiện trong hình sau:
37 Quá trình xử lí tín hiệu giữa vi điều khiển và cảm biến R305 được mô tả như sau:
Bước 1: Khi MCU nhận được tín hiệu cho phép đăng nhập bằng vân tay từ ứng dụng điều khiển, MCU gửi gói tin thu thập vân tay người dùng đến cảm biến (12 bytes). Gói tin này có định dạng như sau:
Bảng 3.1 Định dạng gói tin thu thập vân tay được gửi đi
2 bytes 4 bytes 1 bytes 2 bytes 1 bytes 2 bytes Header Module address Package identifier Package length Instruction code Checksum 0xEF01 0xFFFFFFFF 0x01 0x0003 0x01 0x0005 Khi nhận được gói tin yêu cầu thu thập vân tay, cảm biến đợi người dùng đặt vân tay (đèn cảm biến sáng liên tục). Khi có vân tay, cảm biến gửi gói tin trả về MCU (12 bytes) với định dạng như sau:
Bảng 3.2 Định dạng gói tin thu thập vân tay được trả về
2 bytes 4 bytes 1 bytes 2 bytes 1 bytes 2 bytes Header Module address Package identifier Package length Confirmation code Checksum 0xEF01 0xFFFFFFFF 0x07 0x0003 Sum
- Confirmation code = 0x00 nghĩa là thu thập vân tay thành công.
Bước 2: Nếu xảy ra lỗi trong quá trình thu thập vân tay (confirmation code khác 0x00) thì MCU gửi tín hiệu thông báo lỗi và yêu cầu đăng nhập lại tới ứng dụng Android.
Nếu việc thu thập vân tay thành công, MCU gửi bản tin ghi dữ liệu vân tay vào bộ nhớ đệm (13 bytes) với định dạng như sau:
Bảng 3.3 Định dạng gói tin ghi vân tay được gửi đi
2 bytes 4 bytes 1 bytes 2 bytes 1 bytes 1 bytes 2 bytes Header Module address Package identifier Package length Instruction code Buffer number Checksum 0xEF01 0xFFFFFFFF 0x01 0x0004 0x02 0x01 0x0008 Khi nhận được gói tin yêu cầu ghi dữ liệu vào bộ nhớ đệm, cảm biến tiến hành ghi dữ liệu và gửi gói tin trả về MCU (12 bytes) với định dạng như sau:
Bảng 3.4 Định dạng gói tin ghi vân tay được trả về
2 bytes 4 bytes 1 bytes 2 bytes 1 bytes 2 bytes Header Module address Package identifier Package length Confirmation code Checksum 0xEF01 0xFFFFFFFF 0x07 0x0003 Sum
- Confirmation code = 0x00 nghĩa là ghi dữ liệu thành công.
Bước 3: Nếu xảy ra lỗi trong quá trình ghi dữ liệu vân tay vào bộ nhớ đệm (confirmation code khác 0x00) thì MCU gửi tín hiệu thông báo lỗi và yêu cầu đăng nhập lại tới ứng dụng Android.
38 Nếu việc ghi dữ liệu thành công, MCU gửi bản tin kiểm tra xem mã vân tay vừa thu thập có trong bộ nhớ flash của cảm biến hay không (17 bytes). Gói tin có định dạng như sau:
Bảng 3.5 Định dạng gói tìm kiếm vân tay được gửi đi
2 bytes 4 bytes 1 bytes 2 bytes 1 bytes 1bytes 2 bytes 2 bytes 2 bytes Header Module address Package identifier Package length Instruction code Buffer number
Param Param Checksum 0xEF01 0xFFF
FFFFF
0x01 0x0008 0x04 0x01 0x0000 0x00FF 0x010D Khi nhận được gói tin yêu cầu ghi dữ liệu vào bộ nhớ đệm, cảm biến tiến hành ghi
dữ liệu và gửi gói tin trả về MCU (16 bytes) với định dạng như sau:
Bảng 3.6 Định dạng gói tin tìm kiếm vân tay được trả về
2 bytes 4 bytes 1 bytes 2 bytes 1 bytes 2 bytes 2 bytes 2 bytes Header Module address Package identifier Package length Confirmation code Checksum
0xEF01 0xFFFFFFFF 0x07 0x0007 PageID Match Score Sum
- Confirmation code = 0x00 nghĩa là có tìm thấy vân tay trong bộ nhớ. - Confirmation code = 0x09 nghĩa là không tìm thấy vân tay trong bộ nhớ. - PageID: là mã vân tay nếu có trong bộ nhớ.
Bước 4: Nếu xảy ra lỗi trong quá trình tìm kiếm dữ liệu vân tay trong bộ nhớ (confirmation code khác 0x00) thì MCU gửi tín hiệu thông báo lỗi và yêu cầu đăng nhập lại tới ứng dụng Android.
Nếu có tìm thấy mã vân tay trong bộ nhớ, MCU gửi ID vân tay tới ứng dụng điều khiển để truy vấn thông tin người dùng để hiển thị và thiết lập các trạng thái mặc định của các thiết bị trong lớp học.
3.2.4 Khối hiển thị
Khối hiển thị trong luận văn này gồm 1 màn hình LCD 16x02 kết hợp module chuyển đổi I2C với chức năng hiển thị dữ liệu nhiệt độ trong lớp học.
Sơ đồ kết nối giữa khối hiển thị và vi điều khiển được thể hiện trong hình sau:
39 Nguyên lí hoạt động như sau: Mỗi module I2C đều có một địa chỉ cho việc giao tiếp. Mặc định của nhà sản xuất cho module này là 0x27 tương ứng với các chân A0, A1, A2 đều ở mức cao. Module giao tiếp với LCD theo chế độ 4 bit với các chân P4-P7 được kết nối tương ứng với các chân DB4-DB7. Khi cần gửi dữ liệu từ MCU để hiển thị lên LCD, 1 byte dữ liệu được tách ra làm hai: 4 bit cao truyền đi trước và 4 bit thấp truyền đi sau. Đồng thời 4-bit command cũng sẽ được đính kèm. Khi module nhận được 1 byte dữ liệu, nó chuyển dữ liệu vào thanh ghi sau đó đưa ra các chân I/O để xuất ra LCD. Muốn chỉnh độ tương phản LCD thì cần tùy chỉnh biến trở sao cho dữ liệu hiển thị trên LCD là phù hợp.
3.2.5 Khối điều khiển đèn
Khối điều khiển đèn trong luận văn này sử dụng 1 module rơ le 2 kênh kích mức cao 5V với chức năng điều khiển 2 đèn 220V trong lớp học. Cụ thể,
Khi tín hiệu đi ra từ vi điều khiển là mức 0 thì transistor không dẫn do không có dòng IBE→ Rơ le không làm việc (Đèn tắt).
Khi tín hiệu ra từ vi điều khiển là mức 1 thì sẽ qua 1 điện trở để hạn dòng làm cho transistor dẫn thông lúc này ta có dòng ICE là dòng điện chạy qua cuộn dây qua transistor xuống GND → Rơ le đóng tiếp điểm thường mở (Đèn sáng).
Diot trong mạch có tác dụng chống lại dòng điện cảm ứng do cuộn dây sinh ra làm hỏng transistor.
Tất cả các linh kiện này (điện trở, transistor, diot) đều đã được tích hợp sẵn trong module rơ le.
Sơ đồ kết nối giữa khối điều khiển đèn và vi điều khiển được thể hiện trong hình sau:
Hình 3.9 Sơ đồ kết nối của khối điều khiển đèn
3.2.6 Khối điều khiển rèm
Khối điều khiển rèm trong đề tài này bao gồm 1 module L298 với đầu vào là tín hiệu điều khiển từ khối điều khiển và đầu ra là tín hiệu điều khiển 2 động cơ 1 chiều. Các động cơ này được thiết kế cho ứng dụng điều khiển khối rèm của lớp
40 học. Việc xác định các vị trí giới hạn đóng mở của các rèm cửa dựa vào vị trí đặt các công tắc hành trình. Khi vị trí các rèm cửa tác động vào công tắc hành trình, khối điều khiển để xử lí tín hiệu nhận về từ cảm biến và ra lệnh dừng động cơ. Đặc