1. Trang chủ
  2. » Luận Văn - Báo Cáo

ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP LẬP TRÌNH NHÀ THÔNG MINH VỚI VI ĐIỀU KHIỂN STM32

58 28 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 58
Dung lượng 2,73 MB

Cấu trúc

  • 1. GIỚI THIỆU (7)
    • 1.1 Tổng quan (7)
    • 1.2 Tình hình nghiên cứu trong và ngoài nước (7)
    • 1.3 Mục tiêu đề tài (8)
  • 2. NỘI DUNG ĐỀ TÀI (8)
    • 2.1 Cơ sở lý thuyết (8)
      • 2.1.1 Chuẩn giao tiếp RS485 (8)
      • 2.1.2 RFID (11)
      • 2.1.3 Chuẩn giao tiếp One – Wire (13)
      • 2.1.4 Giao thức Microcontroller Interconnect Network (MIN) (16)
    • 2.2 Vi điều khiển và các module (19)
      • 2.2.1 Vi điều khiển STM32F103C8T6 (19)
      • 2.2.2 Cảm biến khí CO và khí Gas MQ-9 (20)
      • 2.2.3 Cảm biến nhiệt độ, độ ẩm DHT-22 (21)
    • 2.3 Thiết kế giải thuật điều khiển (22)
      • 2.3.1 Module điều khiển trung tâm (22)
      • 2.3.2 Module điều khiển công tắc (23)
      • 2.3.3 Module khóa cửa (24)
      • 2.3.4 Giao diện trên máy tính (26)
    • 3.1 Thiết lập giao tiếp giữa các module trong hệ thống (26)
      • 3.1.1 Thiết lập giao tiếp giữa module điều khiển trung tâm với các module khác (27)
      • 3.1.2 Thiết lập giao tiếp với module khóa cửa (28)
      • 3.1.3 Thiết lập giao tiếp với module điều khiển công tắc (29)
      • 3.1.4 Thiết lập giao tiếp với module cảm biến (30)
    • 3.2 Lập trình chức năng cho module khóa cửa sử dụng thẻ từ và bàn phím (31)
      • 3.2.1 Giao tiếp với module RC522 (31)
      • 3.2.2 Điều khiển khóa cửa bằng bàn phím (33)
      • 3.2.3 Giao tiếp với màn hình LCD (33)
      • 3.2.4 Điều khiển khóa cửa thông qua giao diện trên máy tính (35)
    • 3.3 Lập trình chức năng cho module điều khiển công tắc (35)
      • 3.3.1 Các biến trạng thái của công tắc (35)
      • 3.3.2 Điều khiển công tắc thông qua giao diện trên máy tính (35)
    • 3.4 Lập trình chức năng cho module cảm biến (36)
      • 3.4.1 Đọc dữ liệu từ các cảm biến MQ-9 (36)
      • 3.4.2 Đọc dữ liệu nhiệt độ, độ ẩm trong các phòng từ cảm biến DHT-22 (37)
      • 3.4.3 Giao tiếp với module điều khiển trung tâm (37)
    • 3.5 Lập trình chức năng cho module điều khiển trung tâm (37)
      • 3.5.1 Giao tiếp với các module khác trong hệ thống (37)
      • 3.5.2 Giao tiếp với máy tính (40)
      • 3.5.3 Kiểm tra kênh truyền (41)
    • 3.6 Lập trình giao diện trên máy tính để thực hiện giao tiếp giữa người dùng và hệ thống (43)
      • 3.6.1 Giao tiếp với module điều khiển trung tâm (43)
      • 3.6.2 Lưu lại lịch sử hoạt động của hệ thống (44)
      • 3.6.3 Hiển thị và điều khiển trạng thái của công tắc (44)
      • 3.6.4 Hiển thị và điều khiển trạng thái khóa cửa (45)
      • 3.6.5 Hiển thị trạng thái của các cảm biến (45)
    • 3.7 Thiết kế sơ đồ nguyên lý và mạch in cho các module (46)
      • 3.7.1 Thiết kế module khóa cửa (46)
      • 3.7.2 Thiết kế module điều khiển công tắc (48)
      • 3.7.3 Thiết kế module điều khiển trung tâm (50)
    • 4.1 Kết quả sơ khởi đạt được (52)
      • 4.1.1 Giao diện trên máy tính (52)
      • 4.1.2 Hoạt động của hệ thống (52)
      • 4.1.3 Hoàn thiện phần cứng (54)
    • 4.2 Kết quả dự kiến đạt được (56)

Nội dung

MỤC LỤC 1. GIỚI THIỆU ....................................................................................................................................1 1.1 Tổng quan.................................................................................................................................1 1.2 Tình hình nghiên cứu trong và ngoài nước ..............................................................................1 1.3 Mục tiêu đề tài..........................................................................................................................2 2. NỘI DUNG ĐỀ TÀI ........................................................................................................................2 2.1 Cơ sở lý thuyết .........................................................................................................................2 2.1.1 Chuẩn giao tiếp RS485.....................................................................................................2 2.1.2 RFID.................................................................................................................................5 2.1.3 Chuẩn giao tiếp One – Wire.............................................................................................7 2.1.4 Giao thức Microcontroller Interconnect Network (MIN) ............................................. 10 2.2 Vi điều khiển và các module ................................................................................................. 13 2.2.1 Vi điều khiển STM32F103C8T6................................................................................... 13 2.2.2 Cảm biến khí CO và khí Gas MQ-9.............................................................................. 14 2.2.3 Cảm biến nhiệt độ, độ ẩm DHT-22 ............................................................................... 15 2.3 Thiết kế giải thuật điều khiển................................................................................................ 16 2.3.1 Module điều khiển trung tâm ....................................................................................... 16 2.3.2 Module điều khiển công tắc.......................................................................................... 17 2.3.3 Module khóa cửa .......................................................................................................... 18 2.3.4 Giao diện trên máy tính................................................................................................. 20 3 GIẢI PHÁP THỰC HIỆN............................................................................................................. 20 3.1 Thiết lập giao tiếp giữa các module trong hệ thống .............................................................. 20 3.1.1 Thiết lập giao tiếp giữa module điều khiển trung tâm với các module khác................ 21 3.1.2 Thiết lập giao tiếp với module khóa cửa....................................................................... 22 3.1.3 Thiết lập giao tiếp với module điều khiển công tắc ...................................................... 23 Đề cương luận văn GVHD: 3.1.4 Thiết lập giao tiếp với module cảm biến....................................................................... 24 3.2 Lập trình chức năng cho module khóa cửa sử dụng thẻ từ và bàn phím............................... 25 3.2.1 Giao tiếp với module RC522......................................................................................... 25 3.2.2 Điều khiển khóa cửa bằng bàn phím............................................................................. 27 3.2.3 Giao tiếp với màn hình LCD......................................................................................... 27 3.2.4 Điều khiển khóa cửa thông qua giao diện trên máy tính............................................... 29 3.3 Lập trình chức năng cho module điều khiển công tắc........................................................... 29 3.3.1 Các biến trạng thái của công tắc.................................................................................... 29 3.3.2 Điều khiển công tắc thông qua giao diện trên máy tính................................................ 29 3.4 Lập trình chức năng cho module cảm biến ........................................................................... 30 3.4.1 Đọc dữ liệu từ các cảm biến MQ-9 ............................................................................... 30 3.4.2 Đọc dữ liệu nhiệt độ, độ ẩm trong các phòng từ cảm biến DHT-22 ............................. 31 3.4.3 Giao tiếp với module điều khiển trung tâm.................................................................. 31 3.5 Lập trình chức năng cho module điều khiển trung tâm......................................................... 31 3.5.1 Giao tiếp với các module khác trong hệ thống.............................................................. 31 3.5.2 Giao tiếp với máy tính................................................................................................... 34 3.5.3 Kiểm tra kênh truyền..................................................................................................... 35 3.6 Lập trình giao diện trên máy tính để thực hiện giao tiếp giữa người dùng và hệ thống........ 37 3.6.1 Giao tiếp với module điều khiển trung tâm................................................................... 37 3.6.2 Lưu lại lịch sử hoạt động của hệ thống ......................................................................... 38 3.6.3 Hiển thị và điều khiển trạng thái của công tắc .............................................................. 38 3.6.4 Hiển thị và điều khiển trạng thái khóa cửa.................................................................... 39 3.6.5 Hiển thị trạng thái của các cảm biến ............................................................................. 39 3.7 Thiết kế sơ đồ nguyên lý và mạch in cho các module........................................................... 40 3.7.1 Thiết kế module khóa cửa ............................................................................................. 40 3.7.2 Thiết kế module điều khiển công tắc............................................................................. 42 3.7.3 Thiết kế module điều khiển trung tâm........................................................................... 44 Đề cương luận văn GVHD: 4 DỰ KIẾN KẾT QUẢ ĐẠT ĐƯỢC .............................................................................................. 46 4.1 Kết quả sơ khởi đạt được ...................................................................................................... 46 4.1.1 Giao diện trên máy tính................................................................................................. 46 4.1.2 Hoạt động của hệ thống................................................................................................. 46 4.1.3 Hoàn thiện phần cứng.................................................................................................... 48 4.2 Kết quả dự kiến đạt được ...................................................................................................... 50 5 KẾ HOẠCH THỰC HIỆN............................................................................................................ 51 6 TÀI LIỆU THAM KHẢO............................................................................................................. 52 Đề cương luận văn GVHD: DANH SÁCH HÌNH Hình 2-1: Tín hiệu điện áp 2 chân A, B trong kết nối RS485....................................................................2 Hình 2-2: Sơ đồ kết nối 2 thiết bị sử dụng kết nối RS485 với trở kháng đặc tính Z0..............................3 Hình 2-3: Sơ đồ hệ thống sử dụng giao tiếp RS485 có nối đất. ..............................................................4 Hình 2-4: Cách đặt điện trở đầu cuối RT trong kết nối RS485 ................................................................4 Hình 2-5: Tín hiệu trong kết nối RS485 thu được tương ứng với 2 giá trị điện trở RT khác nhau.........5 Hình 2-6: Nguyên lý hoạt động của RFID.................................................................................................6 Hình 2-7: Mô tả cấu trúc bộ nhớ thẻ MIFARE 1K ....................................................................................7 Hình 2-8: Mô hình Master – Slave trong chuẩn giao tiếp One-Wire.......................................................8 Hình 2-9: Dạng sóng của tín hiệu trong giao tiếp bằng chuẩn One-Wire ...............................................9 Hình 2-10: Quy định về các khoảng thời gian chờ của tín hiệu...............................................................9 Hình 2-11: Khung dữ liệu của giao thức MIN....................................................................................... 11 Hình 3-1 : Byte dữ liệu được quy định để dùng trong điều khiển LCD ................................................ 27 Hình 3-2: Sơ đồ nguyên lý của module khóa cửa................................................................................. 40 Hình 3-3: Layout của module khóa cửa................................................................................................ 41 Hình 3-4: Sơ đồ nguyên lý của module điều khiển công tắc ................................................................ 42 Hình 3-5: Layout của module điều khiển công tắc............................................................................... 43 Hình 3-6: Sơ đồ nguyên lý của module điều khiển trung tâm.............................................................. 44 Hình 3-7: Layout của module điều khiển trung tâm ............................................................................ 45 Hình 4-1: Kết quả thiết kế giao diện trên máy tính.............................................................................. 46 Hình 4-2: Kết quả hoạt động của hệ thống 1 ....................................................................................... 46 Hình 4-3: Kết quả hoạt động của hệ thống 2 ....................................................................................... 47 Hình 4-4: Kết quả hoạt động của hệ thống 3 ....................................................................................... 47 Hình 4-5: Kết quả thi công module khóa cửa....................................................................................... 48 Hình 4-6: Kết quả thi công module điều khiển công tắc ...................................................................... 49 Hình 4-7: Kết quả thi công module điều khiển trung tâm.................................................................... 50 Đề cương luận văn GVHD: 1 1. GIỚI THIỆU 1.1 Tổng quan Nhà thông minh là một trong những lĩnh vực của IoT(Internet of Things). Nó là hệ thống cho phép người dùng giám sát, điều khiển các thiết bị trong nhà bằng điện thoại, máy tính, máy tính bảng,…, giúp tự động hóa các thiết bị trong nhà như đèn, công tắc, cửa, điều hòa, vòi phun, máy bơm,… cũng như các thiết khác mà không cần đến sự can thiệp trực tiếp của con người. Bằng cách đó nhà thông minh có thể giúp tối ưu hóa hiệu năng sử dụng của căn nhà, giúp người dùng có thể tự do sinh hoạt trong căn nhà mà ít cần phải trực tiếp điều hành các thiết bị. Từ những đặc điểm như trên của một căn nhà thông minh. Mục tiêu mà đề tài đặt ra là có thể xây dựng một mô hình nhà thông minh mà trong đó các module trong hệ thống vừa có thể tự thực hiện chức năng một cách độc lập, vừa có thể thực hiện chức năng thông qua sự điểu khiển của người dùng. Trong quá trình hoạt động dữ liệu của hệ thống có thể thu thập được và sử dụng cho mục đích mở rộng chức năng sau này. Ngoài ra em còn đặt ra mục tiêu là sẽ thực hiện xây dựng khả năng phản ứng của hệ thống với thói quen của người dùng, từ đó có thể tăng cường sự tiện nghi cho ngôi nhà cũng như trải nghiệm của người dùng. 1.2 Tình hình nghiên cứu trong và ngoài nước Nhà thông minh đang dần trở thành “tiêu chuẩn” của các mẫu nhà hiện đại. Để bắt kịp xu nhu cầu ngày càng tăng, các công ty, tổ chức cũng đang dần đẩy nhanh tiến trình nghiên cứu, phát triển các trang thiết bị phục vụ cho nhà thông minh. Theo đó thì cũng ngày có càng nhiều tài liệu, bài viết về đề tài nhà thông minh. Theo tìm hiểu từ một số bài viết trên diễn đàn stackoverflow.com, github.com và một số bài nghiên cứu của sinh viên trong nước thì hiện tại các đề tài nghiên cứu đó đa phần theo mô hình là sử dụng một vi điều khiển để điều khiển các module khác rồi từ vi điều khiển đó đưa dữ liệu lên web-app hoặc android-app. Trong thực tế thì việc thu thập và điều khiển dữ liệu được thực hiện trong phạm vi một ngôi nhà khiến đường dây kết nối từ các cảm biến, module tới vi điều khiển có thể lên tới khoảng cách hàng chục mét trong khi đó hầu hết các chuẩn kết nối hiện tại được trang bị trên các dòng vi điều khiển đều có khoảng cách truyền tối ưu từ 1-2 mét. Vì vậy Đề cương luận văn GVHD: 2 việc xây dựng hệ thống theo mô hình như trên có thể khiến hệ thống không hoạt động hoặc hoạt động không ổn định. 1.3 Mục tiêu đề tài Từ những nhận xét trên, mục tiêu được đặt ra cho đề tài là:  Các module trong hệ thống có thể hoạt động được một cách độc lập.  Các module trong hệ thống có thể giao tiếp với nhau một cách mượt mà và dữ liệu nhận được có tính tin cậy cao.  Module điều khiển trung tâm có thể thực hiện chức năng điều khiển và thu thập dữ liệu từ các module khác.  Giao diện trên máy tính có thể giúp người dùng giao tiếp với hệ thống.  Hệ thống phản hồi yêu cầu của người dùng với độ trễ thấp. 2. NỘI DUNG ĐỀ TÀI 2.1 Cơ sở lý thuyết 2.1.1 Chuẩn giao tiếp RS485 a. Truyền dẫn cân bằng Hệ thống truyền dẫn cân bằng gồm có hai dây tín hiệu A,B nhưng không có dây mass. Sở dĩ được gọi là cân bằng là do tín hiệu trên dây này ngược với tín hiệu trên dây kia. Nghĩa là dây này đang phát mức cao thì dây kia phải đang phát mức thấp và ngược lại.

GIỚI THIỆU

Tổng quan

Nhà thông minh, một lĩnh vực quan trọng trong IoT (Internet of Things), cho phép người dùng giám sát và điều khiển thiết bị trong nhà thông qua điện thoại, máy tính hay máy tính bảng Hệ thống này tự động hóa các thiết bị như đèn, công tắc, cửa, điều hòa, vòi phun và máy bơm mà không cần can thiệp trực tiếp Nhờ đó, nhà thông minh tối ưu hóa hiệu suất sử dụng, mang lại sự tiện lợi cho người dùng trong sinh hoạt hàng ngày mà không cần phải điều hành trực tiếp các thiết bị.

Mục tiêu của đề tài là xây dựng một mô hình nhà thông minh, trong đó các module có khả năng hoạt động độc lập hoặc được điều khiển bởi người dùng Hệ thống sẽ thu thập dữ liệu trong quá trình hoạt động để mở rộng chức năng trong tương lai Bên cạnh đó, đề tài còn hướng tới việc phát triển khả năng phản ứng của hệ thống với thói quen người dùng, nhằm nâng cao tiện nghi cho ngôi nhà và cải thiện trải nghiệm người dùng.

Tình hình nghiên cứu trong và ngoài nước

Nhà thông minh đang trở thành tiêu chuẩn cho các mẫu nhà hiện đại, dẫn đến nhu cầu ngày càng tăng về thiết bị phục vụ cho lĩnh vực này Các công ty và tổ chức đang tích cực nghiên cứu và phát triển công nghệ cho nhà thông minh Nhiều tài liệu và bài viết liên quan đến nhà thông minh đã được công bố, trong đó, theo khảo sát từ các diễn đàn như stackoverflow.com và github.com, cũng như các nghiên cứu sinh viên trong nước, hầu hết các đề tài nghiên cứu hiện tại đều sử dụng mô hình vi điều khiển để điều khiển các module khác và truyền dữ liệu lên web-app hoặc android-app.

Việc thu thập và điều khiển dữ liệu trong ngôi nhà thường gặp khó khăn do khoảng cách kết nối từ cảm biến, module tới vi điều khiển có thể lên đến hàng chục mét Trong khi đó, hầu hết các chuẩn kết nối hiện tại trên vi điều khiển chỉ cho phép khoảng cách truyền tối ưu từ 1-2 mét Do đó, cần tìm kiếm giải pháp để mở rộng khả năng kết nối trong các ứng dụng nhà thông minh.

2 việc xây dựng hệ thống theo mô hình như trên có thể khiến hệ thống không hoạt động hoặc hoạt động không ổn định.

Mục tiêu đề tài

Từ những nhận xét trên, mục tiêu được đặt ra cho đề tài là:

 Các module trong hệ thống có thể hoạt động được một cách độc lập

 Các module trong hệ thống có thể giao tiếp với nhau một cách mượt mà và dữ liệu nhận được có tính tin cậy cao

 Module điều khiển trung tâm có thể thực hiện chức năng điều khiển và thu thập dữ liệu từ các module khác

 Giao diện trên máy tính có thể giúp người dùng giao tiếp với hệ thống

 Hệ thống phản hồi yêu cầu của người dùng với độ trễ thấp.

NỘI DUNG ĐỀ TÀI

Cơ sở lý thuyết

2.1.1 Chuẩn giao tiếp RS485 a Truyền dẫn cân bằng

Hệ thống truyền dẫn cân bằng sử dụng hai dây tín hiệu A và B mà không cần dây mass Tín hiệu trên hai dây này có hướng ngược nhau; khi dây A phát tín hiệu cao, dây B sẽ phát tín hiệu thấp và ngược lại Điều này giúp giảm nhiễu và cải thiện chất lượng tín hiệu truyền tải.

Hình 2-1: Tín hiệu điện áp 2 chân A, B trong kết nối RS485

Trong hệ thống truyền dẫn cân bằng với hai dây A và B, tín hiệu mức cao TTL được xác định khi điện áp của dây A lớn hơn dây B ít nhất 200mV, trong khi tín hiệu mức thấp TTL được quy định khi điện áp của dây A nhỏ hơn dây B tối thiểu cũng 200mV Nếu điện áp VAB nằm trong khoảng -200mV đến 200mV, tín hiệu sẽ rơi vào vùng bất định Điện thế của mỗi dây tín hiệu so với mass bên phía thu cần phải nằm trong khoảng -7V đến +12V.

Cặp dây xoắn (Twisted-pair wire) là loại dây có chiều dài bằng nhau được xoắn lại, giúp giảm thiểu nhiễu khi truyền tín hiệu ở khoảng cách xa và tốc độ cao Trở kháng đặc tính của cặp dây xoắn, được xác định bởi hình dáng và chất liệu cách điện của dây, thường nằm trong khoảng 100 - 120Ω, theo khuyến cáo của nhà sản xuất.

Hình 2-2: Sơ đồ kết nối 2 thiết bị sử dụng kết nối RS485 với trở kháng đặc tính Z0 d Điện áp kiểu chung

Tín hiệu truyền dẫn sử dụng hai dây không có dây mass cần được tham chiếu đến một điểm chung, có thể là mass hoặc một mức điện áp cho phép nào đó Điện áp kiểu chung (Common-mode voltage - VCM) được định nghĩa toán học là giá trị trung bình của hai điện áp tín hiệu được tham chiếu với mass hoặc điểm chung.

Khi tín hiệu trên hai dây được tham chiếu đến điểm chung là đất (Ground), cần xem xét kỹ lưỡng vì bộ nhận sẽ xác định tín hiệu bằng cách tham chiếu với đất của nơi nhận Nếu có sự chênh lệch điện thế giữa nơi nhận và nơi phát vượt qua ngưỡng cho phép, tín hiệu thu được có thể bị sai hoặc gây hỏng thiết bị Mạng RS485, mặc dù chỉ gồm hai dây, nhưng lại có ba mức điện áp cần được xem xét Đất, là một vật dẫn điện không hoàn hảo, có điện trở xác định, gây ra chênh lệch điện thế từ điểm này tới điểm kia, đặc biệt tại các khu vực có nhiều sấm sét, máy móc tiêu thụ dòng lớn và các bộ chuyển đổi được lắp đặt với nối đất.

Chuẩn RS485 cho phép chênh lệch điện thế đất tối đa là 7V; nếu vượt quá mức này, tín hiệu có thể không ổn định Do đó, để cải thiện độ tin cậy trong việc truyền tín hiệu, nên sử dụng thêm một dây thứ ba, được nối với mass tại nguồn cung cấp, nhằm tạo ra điện áp tham chiếu chính xác hơn.

Điện trở đầu cuối (Terminating Resistor) là một thành phần quan trọng trong hệ thống sử dụng giao tiếp RS485, được đặt ở hai đầu của đường truyền để đảm bảo tín hiệu ổn định Giá trị lý tưởng của điện trở đầu cuối thường dao động trong khoảng 100 - 120Ω, tương ứng với trở kháng đặc tính của dây xoắn Việc sử dụng điện trở đầu cuối giúp giảm thiểu phản xạ tín hiệu và cải thiện chất lượng truyền thông trong hệ thống.

Hình 2-4: Cách đặt điện trở đầu cuối RT trong kết nối RS485

Nếu điện trở đầu cuối không phù hợp với giá trị trở kháng của đường dây, sẽ xảy ra hiện tượng phản xạ, dẫn đến nhiễu Nhiễu ở mức độ nhỏ có thể chấp nhận được, nhưng nếu mức độ lớn sẽ gây sai lệch tín hiệu.

5 lệch Sau đây là hình minh họa dạng tín hiệu thu được khi dùng hai điện trở đầu cuối khác nhau

Hình 2-5: Tín hiệu trong kết nối RS485 thu được tương ứng với 2 giá trị điện trở RT khác nhau g Phân cực đường truyền

Khi mạng RS485 ở trạng thái rảnh, các khối thu lắng nghe và các khối phát ở trạng thái tổng trở cao, khiến trạng thái đường truyền trở nên bất định Nếu -200mV ≤ VAB ≤ 200mV, ngõ ra khối thu sẽ mang giá trị của bit cuối cùng nhận được, nhưng điều này không đảm bảo do đường truyền rảnh cần ở mức cao để tránh hiểu nhầm dữ liệu Để duy trì mức cao khi đường truyền rảnh, cần thực hiện phân cực đường truyền (Biasing) bằng cách sử dụng một điện trở R kéo lên nguồn ở đường A và một điện trở R kéo xuống mass ở đường B, đảm bảo VAB ≥ 200mV để ép đường truyền lên mức cao.

2.1.2 RFID a Giới thiệu tổng quát

RFID (Nhận dạng qua tần số vô tuyến) là công nghệ sử dụng sóng vô tuyến để tự động xác định và theo dõi các thẻ nhận dạng gắn vào vật thể Công nghệ này giúp cải thiện hiệu quả quản lý và kiểm soát hàng hóa trong nhiều lĩnh vực.

RFID, hay nhận dạng sóng vô tuyến từ xa, cho phép đọc dữ liệu từ chip mà không cần tiếp xúc, thông qua sóng vô tuyến ở khoảng cách từ 50 cm đến 1 mét Công nghệ này khác biệt so với mã vạch vì không sử dụng tia sáng và không yêu cầu tiếp xúc trực tiếp Một số loại thẻ RFID có thể hoạt động hiệu quả qua các vật liệu như bê tông, tuyết, sương mù, băng đá, và sơn, trong khi các công nghệ khác như mã vạch gặp khó khăn trong những điều kiện môi trường thách thức này.

Thiết bị RFID reader phát sóng điện từ ở tần số xác định, cho phép RFID tag trong vùng hoạt động nhận diện và thu nhận sóng này.

Năng lượng từ thiết bị RFID Reader phát ra giúp tag truyền lại mã số của mình, cho phép thiết bị nhận diện tag nào đang nằm trong vùng hoạt động.

Để thu thập thông tin từ thẻ RFID, lập trình viên cần thiết lập giao tiếp giữa vi điều khiển và đầu đọc RFID Sau khi thiết lập giao tiếp thành công, cần cài đặt các thanh ghi cần thiết để đầu đọc có thể tương tác với thẻ RFID.

Về chế độ hoạt động: Để làm giao việc với thẻ RFID thì module đọc thẻ RC522 thường được cài đặt để hoạt động ở 4 chế độ chính

- Chế độ Authentication : Chế độ này dùng để xác thực thẻ, xác thực tiêu chuẩn Mifare,…

- Chế độ Transmit : Chế độ này dùng để kich hoạt bộ đệm phát gửi tín hiệu ra Anten để phát ra môi trường

- Chế độ Receive : Chế độ này dùng để kích hoạt bộ đệm thu cũng như các cờ cần thiết cho việc nhận dữ liệu từ thẻ Mifare

- Chế độ Transceive : Kết hợp chức năng của chế độ Transmit và Receive

Về cấu trúc lưu trữ trên thẻ:

Thẻ Mifare có bộ nhớ được phân chia thành nhiều Sector, mỗi Sector lại bao gồm bốn Block khác nhau Trong số bốn Block này, một Block được gọi là Sector Trailer, có nhiệm vụ lưu trữ chìa khóa cấp quyền truy cập vào các Block khác.

Mỗi Block trong bộ nhớ là một mảng gồm 16 byte Ta có thể hình dung cả bộ nhớ của thẻ Mifare là một mảng 3 chiều như hình dưới

Hình 2-7: Mô tả cấu trúc bộ nhớ thẻ MIFARE 1K

2.1.3 Chuẩn giao tiếp One – Wire a Giới thiệu chung

One-Wire là một chuẩn giao tiếp được thiết kế bởi Dallas Semiconductor và đã được Maxim Integrated – một hãng sản xuất mạch lớn mua lại năm 2001

Vi điều khiển và các module

STM32F103C8T6 là vi điều khiển của STMicroelectronics, sử dụng lõi Arm® Cortex®-M3 với tốc độ xử lý tối đa lên đến 72MHz Với giá thành phải chăng và nhiều lựa chọn ngoại vi, vi điều khiển này rất phù hợp cho các dự án nhỏ, học tập và nghiên cứu Điện áp hoạt động của nó dao động từ 2.0 - 3.6V, mang lại sự linh hoạt trong ứng dụng.

 3 bộ timer 16 bit, hỗ trợ IC,OC,PWM, đếm xung, đọc encoder

 2 bộ I2C, 3 bộ UART, 2 bộ SPI, 1 bộ CAN và 1 bộ USB

 37 chân I/O b Các phần mềm hỗ trợ

Các dòng vi điều khiển của STMicroelectronics đều được hỗ trợ lập trình bởi

2 bộ thư viện là Std và Hal

Bộ thư viện Std được phát triển từ cấu trúc phần cứng của các dòng vi điều khiển STMFxxx, giúp lập trình viên dễ dàng thực hiện các dự án nhỏ cho nghiên cứu và học tập Ngoài ra, nó còn có thể được sử dụng để xây dựng một bộ thư viện khác phục vụ cho các mục đích lớn hơn Tuy nhiên, nhược điểm của bộ thư viện này là tính cơ bản của nó, dẫn đến việc lập trình sẽ tốn nhiều thời gian.

Bộ thư viện Hal do STMicroelectronics phát triển là một công cụ hỗ trợ lập trình viên, được xây dựng trên nền tảng của thư viện Std với các giao thức khởi tạo và ứng dụng của bên thứ ba tích hợp sẵn Thư viện này giúp người lập trình dễ dàng tiếp cận và lập trình cho các dòng vi điều khiển STM, đồng thời vẫn đảm bảo tính logic và chặt chẽ cho chương trình Bên cạnh đó, nhờ phát triển từ thư viện Std, người dùng có thể dễ dàng truy cập và sử dụng bộ thư viện này như một thư viện Std thông thường.

STMicroelectronics cung cấp nhiều công cụ lập trình hỗ trợ cho các dòng vi điều khiển STM, bao gồm STM32 CubeMX, STM32 CubeIDE và Flash Loader Demonstrator, bên cạnh bộ thư viện Hal.

2.2.2 Cảm biến khí CO và khí Gas MQ-9

MQ-9 là cảm biến được sử dụng để đo lường nồng độ khi CO và hỗn hợp khi Gas trong không khí

Cảm biến này sở hữu độ nhạy cao và thời gian đáp ứng nhanh, với tín hiệu ngõ ra cả dạng analog và digital Nó có khả năng hoạt động trong dải nhiệt độ từ -10°C đến 500°C và tiêu thụ dòng điện khoảng 150mA tại 5V.

• Điện áp cung cấp: 3 ~ 5V DC

• Sử dụng chip so sánh LM393 và MQ-9

• Hai dạng tín hiệu đầu ra (digital và analog)

• Dải phát hiện từ 10 đến 1000ppm

• Công suất tiêu thụ: khoảng 350mW

• Nhiệt độ hoạt động: -10C đến 50C

2.2.3 Cảm biến nhiệt độ, độ ẩm DHT-22

Cảm biến DHT22 là thiết bị đo nhiệt độ và độ ẩm với giao tiếp 1 Wire, giúp kết nối dễ dàng với vi điều khiển Sản phẩm này có chất lượng tốt, kích thước nhỏ gọn, độ bền cao và độ ổn định vượt trội, lý tưởng cho các ứng dụng theo dõi môi trường.

 Dòng sử dụng: 2.5mA max (khi truyền dữ liệu).

 Đo tốt ở độ ẩm 0100%RH với sai số 2-5%.

 Đo tốt ở nhiệt độ -40 to 80°C sai số ±0.5°C.

 Tần số lấy mẫu tối đa 0.5Hz (2 giây 1 lần)

Thiết kế giải thuật điều khiển

2.3.1 Module điều khiển trung tâm

17 2.3.2 Module điều khiển công tắc

2.3.4 Giao diện trên máy tính

Thiết lập giao tiếp giữa các module trong hệ thống

Dựa vào các ngoại vi của vi điều khiển STM32F103C8T6 và kiến thức về giao thức Microcontroller Interconnect Network, giao tiếp giữa các module trong mạng sẽ được thực hiện thông qua chuẩn kết nối.

Để đáp ứng nhu cầu truyền và nhận dữ liệu ở khoảng cách xa, mỗi module UART sẽ được trang bị thêm bộ chuyển đổi kết nối UART sang RS485, sử dụng giao thức MIN.

3.1.1 Thiết lập giao tiếp giữa module điều khiển trung tâm với các module khác a Thiết lập Frame dữ liệu chung

Frame dữ liệu được sử dụng để giao tiếp giữa các module trong hệ thống được quy định tương tự như Frame dữ liệu chuẩn của giao thức MIN Tuy nhiên, chúng ta không sử dụng chức năng điều khiển cho giao thức (bit 7 của byte ID/Control), do đó Frame dữ liệu mới có dạng khác.

Vì không sử dụng chức năng điều khiển giao thức nên một byte ID/Control thông thường sẽ có dạng:

 D6 : Nếu D6 = 1 thì đó sẽ là lệnh đọc và D6 = 0 thì sẽ là lệnh ghi

 D[5 0] : Là địa chỉ của các module trong hệ thống

Length Chứa số byte có trong Payload

Payload Byte đầu tiên trong Payload sẽ chứa chức năng của khung Nó mô tả chính xác chức năng mà bên phát muốn truy cập tới

Để đọc dữ liệu trạng thái của khóa cửa, cần bật bit D6 của byte ID/Control lên 1, và byte đầu tiên của Payload phải chứa giá trị tương ứng với địa chỉ thanh ghi dữ liệu trạng thái khóa cửa.

CheckSum là mã CRC-32bit được tính từ 3 byte ID/Control, Length, byte đầu tiên của Payload và một byte 0x00 thay thế cho byte Sequence Ngoài ra, cần quy định địa chỉ của các module và thời gian timeout.

Quy định về địa chỉ

 Địa chỉ của module điều khiển trung tâm : 0x00

 Địa chỉ của module khóa cửa : 0x01

 Địa chỉ của module điều khiển công tắc: 0x02

 Địa chỉ của module cảm biến : 0x03 Time out

Time out được thiết lập nhằm mục đích phát hiện được sự cố phát sinh ở các module hoặc sự cố đường truyền

Khi xảy ra sự cố tại một module, hệ thống cần thời gian để xác nhận lỗi, dẫn đến việc hoạt động chậm lại Điều này ảnh hưởng nghiêm trọng đến hiệu suất của đường truyền, đặc biệt khi có nhiều module cùng hoạt động Do đó, người thiết kế hệ thống cần cân nhắc lựa chọn thời gian chờ (timeout) phù hợp để tối ưu hóa hiệu suất.

3.1.2 Thiết lập giao tiếp với module khóa cửa a Quy định về các mã lệnh và biến trạng thái

 Lệnh truy xuất tới biến trạng thái của cửa : 0x01

+ Giá trị của biến trạng thái

 0x03 : Đã có sự cố mở cửa hoặc nhập sai mật khẩu quá nhiều lần b Dữ liệu gửi đi

 Frame dữ liệu được gửi đi khi có yêu cầu gửi trạng thái khóa cửa

+ Lưu ý : Trong 2 byte Status, byte cao sẽ được gửi đi trước

 Frame dữ liệu được gửi đi khi có yêu cầu xác nhận thiết bị trên kênh truyền c Dữ liệu nhận về

 Dữ liệu nhận về là lệnh điều khiển khóa cửa:

 Dữ liệu nhận về là lệnh yêu cầu gửi dữ liệu trạng thái khóa cửa:

3.1.3 Thiết lập giao tiếp với module điều khiển công tắc a Dữ liệu gửi đi

 Frame dữ liệu được gửi đi khi có yêu cầu gửi trạng thái các công tắc

+ Lưu ý : Trong 2 byte Status, byte cao sẽ được gửi đi trước

 Frame dữ liệu được gửi đi khi có yêu cầu xác nhận thiết bị trên kênh truyền b Dữ liệu nhận về

 Dữ liệu nhận về là lệnh điều khiển trạng thái của các công tắc:

 Dữ liệu nhận về là lệnh yêu cầu gửi dữ liệu trạng thái của các công tắc:

3.1.4 Thiết lập giao tiếp với module cảm biến a Dữ liệu gửi đi

 Frame dữ liệu được gửi đi khi có yêu cầu gửi trạng thái các cảm biến

+ Lưu ý : Trong 2 byte Status, byte cao sẽ được gửi đi trước

 Frame dữ liệu được gửi đi khi có yêu cầu xác nhận thiết bị trên kênh truyền b Dữ liệu nhận về

 Dữ liệu nhận về là lệnh yêu cầu gửi dữ liệu trạng thái của các cảm biến:

Lập trình chức năng cho module khóa cửa sử dụng thẻ từ và bàn phím

3.2.1 Giao tiếp với module RC522

Giao tiếp giữa Module RC522 và vi điều khiển được thực hiện qua giao thức SPI Để Module RC522 hoạt động hiệu quả, cần thiết lập một số thông số như timer, độ lợi tín hiệu nhận, kiểu điều chế và bật Aten Việc này được thực hiện bằng cách cài đặt giá trị phù hợp vào các thanh ghi như TMode, TPrescaler, TReload và RF_CFG.

Sau khi cài đặt các thông số cần thiết, IC RC522 đã sẵn sàng để giao tiếp với thẻ Mifare Bước tiếp theo là thiết lập kết nối giữa module RC522 và thẻ Mifare, thường sử dụng module đọc thẻ để thực hiện giao tiếp này.

Có hai chế độ chính là "Transceive" và "Authent" Ở chế độ Transceive, module truyền dữ liệu từ bộ đệm FIFO tới anten và tự động kích hoạt bộ thu sau khi truyền xong Trong khi đó, chế độ Authent cho phép module xác thực tiêu chuẩn Mifare như một thiết bị đọc Để cài đặt chế độ giao tiếp với thẻ Mifare, cần gán giá trị phù hợp vào thanh ghi CommandReg.

Trong bài viết này, tôi sẽ tập trung vào việc lập trình phần đọc và lấy dữ liệu UID (mã định danh của thẻ) từ thẻ Mifare Do đó, tôi sẽ đi sâu vào quá trình thực hiện giao tiếp với thẻ Mifare ở chế độ Transceive.

Sau khi cài đặt chế độ giao tiếp, chúng ta sẽ ghi dữ liệu cần truyền vào bộ đệm FIFO Tiếp theo, dữ liệu sẽ được truyền từ bộ đệm đến anten và sau đó tới thẻ Mifare.

Sau khi anten truyền dữ liệu, chúng ta chờ phản hồi từ thẻ Mifare trong thời gian tối đa 5ms Trong thời gian chờ, bộ đếm 5ms sẽ được kích hoạt và chúng ta sẽ kiểm tra trạng thái cờ báo dữ liệu bằng cách truy xuất từ thanh ghi ComIrqReg Nếu hết 5ms mà không nhận được dữ liệu, quá trình truyền nhận sẽ kết thúc, trả về giá trị lỗi và thoát hàm Nếu có dữ liệu gửi về, chúng ta sẽ kiểm tra số byte nhận được, nếu đúng, dữ liệu sẽ được lưu vào bộ đệm đã chuẩn bị để xử lý tiếp.

Sau khi chuẩn bị phương thức giao tiếp với thẻ Mifare, bước tiếp theo là lấy UID từ thẻ Có hai cách để thực hiện điều này: cách đầu tiên là gửi lệnh đọc dữ liệu tại Block 0 của Sector 0, từ đó phân tích Datasheet để lấy UID Cách thứ hai, tối ưu hơn, là sử dụng lệnh Anti-Collision, cho phép nhận trực tiếp dữ liệu UID và xử lý trường hợp có nhiều thẻ cùng lúc.

1 thời điểm tại 1 reader Và trong đề tài thì em đã lựa chọn đọc UID bằng lệnh Antil – Collision

Sau khi hoàn tất việc chuẩn bị các hàm giao tiếp với thẻ Mifare và đọc UID, bước cuối cùng là xác định thời điểm có thẻ xuất hiện tại module đọc thẻ và nhận diện loại thẻ đó.

Để xác định sự hiện diện của thẻ tại đầu đọc, cần gửi liên tục lệnh ReqIDL tới anten Khi thẻ nhận được lệnh này, nó sẽ phản hồi với thông tin về loại thẻ của mình Phân tích dữ liệu trả về cho phép chúng ta phát hiện xem có thẻ nào đang có mặt tại module đọc thẻ hiện tại hay không.

Trong module khóa cửa, việc kiểm tra thẻ được thực hiện liên tục trong vòng lặp 100ms Khi phát hiện thẻ, hệ thống sẽ đọc dữ liệu UID và so sánh với UID đã cài đặt Nếu UID trùng khớp, khóa sẽ được mở Ngược lại, nếu UID không đúng, hệ thống sẽ đếm số lần sai thẻ; nếu sai quá 5 lần, hệ thống sẽ ngừng đọc thẻ trong 30 giây và gửi cảnh báo đến module điều khiển trung tâm.

3.2.2 Điều khiển khóa cửa bằng bàn phím

Phương thức đọc dữ liệu từ bàn phím trong chương trình được thực hiện theo cách đọc hàng Cụ thể, các hàng của bàn phím ma trận sẽ được bật liên tiếp xuống mức để thu thập thông tin.

0 và đọc về giá trị của các cột chúng ta có thể dễ dàng xác định được vị trí phím đang nhấn

Trong chương trình, việc đọc bàn phím diễn ra mỗi 20ms Khi chờ tín hiệu từ thẻ RFID, module hiển thị yêu cầu người dùng nhập mật khẩu 6 số Nếu nhập đúng mật khẩu, khóa cửa sẽ mở; ngược lại, nếu nhập sai quá 5 lần, sẽ có thời gian chờ 30 giây.

Trên bàn phím, khi nhấn phím 'A', cửa sẽ được khóa Nếu người dùng nhập sai mật khẩu, có thể nhấn phím '*' để xóa mật khẩu đã nhập và tiếp tục nhập lại.

3.2.3 Giao tiếp với màn hình LCD

Màn hình LCD 16x2 là loại màn hình phổ biến trong hệ thống, và để giao tiếp với nó, chúng ta có hai phương thức: giao tiếp 4 bit và 8 bit Mặc dù cả hai phương thức này đều sử dụng nhiều chân GPIO của vi điều khiển, việc lựa chọn một trong hai có thể ảnh hưởng đến khả năng nâng cấp hệ thống sau này Do đó, lựa chọn tối ưu là sử dụng module chuyển đổi I2C để giao tiếp với LCD Khi sử dụng module I2C, chúng ta sẽ áp dụng phương thức giao tiếp 4 bit, vì bộ đệm thu và phát chỉ cho phép truyền hoặc nhận 1 byte dữ liệu mỗi lần.

Để giao tiếp với LCD qua phương thức 4 bit, cần gửi 1 byte dữ liệu hoặc lệnh hoàn chỉnh bằng cách truyền lần lượt 4 bit cao và 4 bit thấp.

28 thấp của byte đó tới được LCD đồng thời điều khiển mức điện áp tại các chân EN, RS,

Lập trình chức năng cho module điều khiển công tắc

3.3.1 Các biến trạng thái của công tắc

Module điều khiển công tắc hiện tại có khả năng hiển thị trạng thái và điều khiển 16 công tắc độc lập Trong chương trình, một biến trạng thái 16 bit được sử dụng để quản lý trạng thái của các công tắc, với mỗi bit tương ứng với trạng thái của một công tắc Ví dụ, khi biến trạng thái M được khởi tạo với giá trị 0x0000, tất cả 16 công tắc sẽ ở trạng thái Normal Close (OFF) Để bật công tắc số 1, giá trị của M sẽ được thay đổi thành 0x0002.

Biến trạng thái không chỉ điều khiển công tắc mà còn lưu trữ trạng thái hiện tại của chúng, giống như một 'thanh ghi' Khi có yêu cầu từ các module khác, thông tin về trạng thái này sẽ được gửi đi.

3.3.2 Điều khiển công tắc thông qua giao diện trên máy tính

Khi module này hoạt động, chúng ta có thể điều khiển trạng thái của các công tắc bằng hai phương pháp: điều khiển qua bàn phím trên phần cứng và điều khiển qua giao diện máy tính.

- Điều khiển thông qua bàn phím

Trạng thái phím trên bàn phím được quét và cập nhật mỗi 10ms, tương tự như cách hoạt động của module khóa cửa Khi phát hiện có phím được nhấn, chương trình sẽ đảo giá trị của bit tương ứng với phím đó.

Vd: Trạng thái hiện tại là 0x0008 Sau khi phím số 3 được nhấn thì trạng thái sẽ là 0x0000

- Điều khiển thông qua gia diện trên máy tính

Việc điều khiển qua giao diện máy tính diễn ra tương tự như điều khiển khóa trên module khóa cửa Khi nhận lệnh điều khiển cho một công tắc, máy tính sẽ đảo trạng thái của bit tương ứng và gửi lệnh cùng với 2 byte dữ liệu tương ứng với 16 bit trạng thái mà người dùng mong muốn đến module điều khiển trung tâm Sau khi nhận lệnh, module điều khiển trung tâm sẽ gửi lệnh đến module điều khiển công tắc, và module này sẽ phân tích dữ liệu nhận được để thay đổi trạng thái của công tắc theo yêu cầu của người dùng.

Lập trình chức năng cho module cảm biến

3.4.1 Đọc dữ liệu từ các cảm biến MQ-9

Cảm biến này cung cấp dữ liệu dưới dạng tín hiệu analog, do đó, để đọc dữ liệu, chúng ta cần sử dụng các chân ADC của vi điều khiển Sau khi dữ liệu được thu thập, nó sẽ được xử lý và chuyển đổi để xác định nồng độ khí CO và GAS trong không khí.

Điện áp từ chân Analog Out của cảm biến MQ-9 là 2.5V, sau khi xử lý, giá trị mật độ hỗn hợp khí CO và GAS thu được là 757ppm.

Sau khi xác định giá trị đo từ cảm biến, bước tiếp theo là thiết lập ngưỡng để module phát tín hiệu cảnh báo khi giá trị vượt qua ngưỡng này.

Giống như module điều khiển công tắc, trạng thái của các cảm biến trong module này được lưu trữ trong một biến trạng thái chung 16 bit, trong đó mỗi bit tương ứng với trạng thái của một cảm biến cảnh báo Bit 1 biểu thị rằng cảm biến có cảnh báo, trong khi bit 0 cho biết không có cảnh báo Biến này hoạt động như một thanh ghi và sẽ được gửi đi khi có yêu cầu từ các module khác.

Trong chương trình chính, việc đọc và xử lý dữ liệu từ các cảm biến sẽ được thực hiện trong một tác vụ với chu kỳ 100ms Khi một cảm biến ghi nhận giá trị vượt quá ngưỡng quy định, hệ thống sẽ xử lý thông tin kịp thời.

31 ngưỡng cho phép thì bit tương ứng với cảm biến đó trong biến trạng thái chung sẽ được bật lên 1 và còi báo động cũng được bật lên

3.4.2 Đọc dữ liệu nhiệt độ, độ ẩm trong các phòng từ cảm biến DHT-22

Việc đọc dữ liệu từ module DHT-22 sẽ được thực hiện bằng cách giao tiếp theo chuẩn One – Wire

Nhiệt độ và độ ẩm được đo liên tục mỗi giây và lưu trữ trong hai biến riêng biệt Thông tin về trạng thái của các cảm biến cùng với dữ liệu nhiệt độ và độ ẩm sẽ được gửi đến các module khác khi có yêu cầu.

3.4.3 Giao tiếp với module điều khiển trung tâm

Trong chương trình chính, module cảm biến liên tục giám sát bộ đệm thu UART1 để phát hiện yêu cầu từ module điều khiển trung tâm Tác vụ này được thực hiện mỗi 1ms và được ưu tiên cao nhất.

Khi có yêu cầu dữ liệu từ module điều khiển trung tâm, module cảm biến sẽ ngay lập tức gửi lại thông tin về trạng thái của các cảm biến, bao gồm nhiệt độ và độ ẩm.

Lập trình chức năng cho module điều khiển trung tâm

3.5.1 Giao tiếp với các module khác trong hệ thống a Giao tiếp với module khóa cửa

Để yêu cầu dữ liệu từ module khóa cửa, module điều khiển trung tâm sẽ gửi một frame 12 byte với cấu trúc tương tự như đã mô tả ở mục 3.1.2.c Cấu trúc frame này được thiết lập để đảm bảo việc truyền tải thông tin chính xác và hiệu quả.

Dữ liệu nhận về từ module khóa cửa:

Sau khi gửi đi yêu cầu dữ liệu tới module khóa cửa, ta nhận được 1 frame có cấu trúc như sau:

Trong hệ thống, 2 byte Status lưu trữ dữ liệu trạng thái hiện tại của khóa cửa Để thực hiện việc điều khiển cửa, chúng ta cần gửi một frame gồm 11 byte.

Trong đó byte Function chứa lệnh điều khiển cửa Lệnh này đã được quy định trong mục 3.1.2.a b Giao tiếp với module điều khiển công tắc :

Để yêu cầu dữ liệu từ module điều khiển công tắc, module điều khiển trung tâm cần gửi một frame 12 byte với cấu trúc cụ thể.

Dữ liệu nhận về từ module điều khiển công tắc:

Sau khi gửi yêu cầu dữ liệu tới module điều khiển công tắc, ta nhận được 1 frame có cấu trúc như sau:

Hai byte Status lưu trữ trạng thái hiện tại của 16 công tắc Để điều khiển các công tắc trên module, module điều khiển trung tâm cần gửi một frame tới module điều khiển công tắc với cấu trúc cụ thể.

Trong đó byte Function trạng thái các công tắc mà ta muốn cài đặt c Giao tiếp với module cảm biến

Để yêu cầu dữ liệu từ module cảm biến, module điều khiển trung tâm sẽ gửi một frame 12 byte với cấu trúc cụ thể.

Dữ liệu nhận về từ module cảm biến:

Sau khi gửi yêu cầu dữ liệu tới module cảm biến, ta nhận được 1 frame có cấu trúc như sau:

Trong đó 6 byte Data sẽ được phân tích như sau:

+ Byte 1: Byte cao của dữ liệu về trạng thái của các cảm biến

+ Byte 2: Byte thấp của dữ liệu về trạng thái của các cảm biến

+ Byte 3: Phần số nguyên của dữ liệu về nhiệt độ

+ Byte 4: Phần thập phân của dữ liệu về nhiệt độ

+ Byte 5: Phần số nguyên của dữ liệu về độ ẩm

+ Byte 6: Phần thập phân của dữ liệu về độ ẩm

3.5.2 Giao tiếp với máy tính

Giao tiếp với máy tính sẽ được thực hiện qua kết nối USB, sử dụng cấu trúc 1 frame dữ liệu tương tự như frame dữ liệu dùng để giao tiếp giữa các module trong hệ thống Việc gửi dữ liệu tới máy tính sẽ được thực hiện theo cách này.

Trong chương trình chính, module điều khiển trung tâm liên tục gửi lệnh yêu cầu dữ liệu đến các module khác trong hệ thống Khi nhận được dữ liệu phản hồi, module này sẽ lưu trữ các thông tin vào các biến khác nhau.

Các biến sẽ được gửi đến giao diện máy tính mỗi 100ms Cấu trúc frame dữ liệu từ module điều khiển trung tâm đến máy tính được thiết lập như sau:

Trong đó 6 byte Data sẽ được phân tích như sau:

+ Byte 1: Byte cao của dữ liệu về trạng thái của khóa cửa

+ Byte 2: Byte thấp của dữ liệu về trạng thái của khóa cửa

+ Byte 3: Byte cao của dữ liệu về trạng thái của các công tắc

+ Byte 4: Byte thấp của dữ liệu về trạng thái của các công tắc

+ Byte 5: Byte cao của dữ liệu về trạng thái của các cảm biến

+ Byte 6: Byte thấp của dữ liệu về trạng thái của các cảm biến

+ Byte 7: Phần nguyên của dữ liệu nhiệt độ

+ Byte 8: Phần thập phân cửa dữ liệu nhiệt độ

+ Byte 9: Phần nguyên của dữ liệu độ ẩm

+ Byte 10: Phần thập phân cửa dữ liệu độ ẩm

35 b Nhận lệnh điều khiển từ máy tính

Trong chương trình chính, module liên tục theo dõi yêu cầu từ máy tính Khi nhận được yêu cầu, module sẽ sử dụng dữ liệu nhận được để đưa ra lệnh điều khiển phù hợp với module mà người dùng muốn điều khiển Dữ liệu điều khiển được truyền từ máy tính tới module điều khiển trung tâm có hai dạng chính.

Trong đó: Address là địa chỉ mà người dùng muốn đọc dữ liệu

Trong đó 3 byte trong Payload được phân tích như sau:

+ Byte 1: Địa chỉ của module cần điều khiển + Byte 2: Byte cao của dữ liệu cần cài đặt

+ Byte 3: Byte thấp của dữ liệu cần cài đặt

3.5.3 Kiểm tra kênh truyền a Trước khi hệ thống hoạt động

Hệ thống được lập trình để truyền và nhận dữ liệu từ nhiều module, nhưng không phải tất cả các module đã được cài đặt địa chỉ đều hoạt động Khi module điều khiển trung tâm yêu cầu gửi dữ liệu, nếu không có phản hồi từ module, vi điều khiển sẽ phải chờ timeout, gây giảm hiệu suất kênh truyền Để cải thiện hiệu suất, cần tránh việc yêu cầu từ module điều khiển trung tâm đến các module không có trong hệ thống.

Khi hệ thống khởi động, module điều khiển trung tâm sẽ gửi đi một Frame dữ liệu yêu cầu các module khác thông báo sự hiện diện của chúng Điều này giúp module điều khiển trung tâm nhận diện và quản lý các module trong hệ thống một cách hiệu quả.

Frame dữ liệu mà module điều khiển trung tâm gửi đi có cấu trúc như sau:

Frame thông báo mà các module còn lại trong hệ thống gửi đi có cấu trúc như sau:

Byte Address là địa chỉ của module gửi Frame, giúp tránh xung đột kênh truyền Các module được thiết lập để gửi Frame thông báo theo thứ tự tăng dần của địa chỉ Khi một module gửi Frame, các module khác trong hệ thống, bao gồm cả module điều khiển trung tâm, đồng thời xử lý dữ liệu nhận được và kiểm tra lượt gửi thông báo của mình Thời gian gửi giữa các Frame cách nhau 10ms, và thời gian chờ gửi có thể linh động khi có nhiều module đã được cài đặt địa chỉ, nhưng phải đảm bảo nhỏ hơn Timeout.

Sau khi xác nhận các module trong hệ thống, module điều khiển trung tâm sẽ liên tục cập nhật dữ liệu từ các module này Điều này cho phép dễ dàng xác định module nào bị mất kết nối trong quá trình truyền thông qua phương pháp đếm thời gian phản hồi Nếu thời gian phản hồi vượt quá giá trị Timeout đã cài đặt, có thể xác nhận rằng module đó đã mất kết nối.

Cập nhật dữ liệu liên tục cho phép kiểm tra tình trạng tín hiệu đến một module trong hệ thống bằng cách đo số lần mất tín hiệu trong một khoảng thời gian Qua đó, có thể xác định được tín hiệu mạnh, yếu hoặc mất tín hiệu.

Việc sử dụng phương pháp này để kiểm tra lỗi hệ thống có nhược điểm là thời gian chờ cập nhật tăng lên khi hệ thống có nhiều module, dẫn đến thời gian cập nhật trạng thái đường truyền cũng bị kéo dài.

Lập trình giao diện trên máy tính để thực hiện giao tiếp giữa người dùng và hệ thống

3.6.1 Giao tiếp với module điều khiển trung tâm

Khi thiết lập kết nối USB với máy tính, module điều khiển trung tâm được nhận diện như một cổng COM ảo Để máy tính có thể kết nối với cổng COM ảo này, cần thiết lập một số thông số trước khi thực hiện kết nối, sử dụng công cụ “SerialPort”.

+ Tên cổng COM : Được lấy từ hàm SerialPort.GetPortNames()

+ BaudRate : Thông số này chúng ta cài đặt ở mức là 230400 bps

Sau khi thiết lập các thông số mặc định, chúng ta sẽ sử dụng hàm serialPort.Open() để mở kết nối Để gửi dữ liệu từ máy tính ra cổng COM, ta áp dụng hàm serialPort1.Write(A,B,C).

+ A là mảng chứa dữ liệu cần gửi

+ B là vị trí byte trong mảng mà chúng ta bắt đầu gửi dữ liệu

+ C là số byte cần gửi b Nhận dữ liệu Để đọc dữ liệu từ bộ đệm thu ta sử dụng hàm serialPort1.Read(A,B,C)

+ A là mảng dùng để chứa dữ liệu nhận được

+ B là vị trí trong mảng mà byte dữ liệu đầu tiên nhận được sẽ được ghi vào + C là số byte cần lấy

Giống như các module trong hệ thống, giao diện máy tính được lập trình để xử lý dữ liệu nhận được, thông qua việc phân tích khung dữ liệu như đã nêu trong mục 3.2.5.b.

3.6.2 Lưu lại lịch sử hoạt động của hệ thống

Bảng lịch sử trạng thái của hệ thống hiển thị tất cả các thay đổi với màu sắc khác nhau tùy thuộc vào trạng thái, như màu xanh dương cho trạng thái tắt hoặc đóng và màu vàng cho trạng thái bật hoặc mở Bảng này sẽ tự động lưu lại vào lúc 0 giờ hàng ngày, và để thuận tiện cho việc lưu log file, giao diện có thêm ô chọn folder giúp người dùng chủ động trong việc chọn nơi lưu trữ dữ liệu hàng ngày Giao diện chọn thư mục được lập trình bằng công cụ Folder Browser Dialog, giúp dễ dàng xuất địa chỉ của thư mục trong hệ điều hành.

Người dùng có thể lựa chọn thư mục bằng cách nhập trực tiếp đường dẫn vào ô chứa đường dẫn hoặc sử dụng giao diện trực quan do hệ điều hành cung cấp.

File được lưu mỗi ngày được đặt tên là ngày hôm đó và được lưu vào thư mục mà người dùng đã chọn

3.6.3 Hiển thị và điều khiển trạng thái của công tắc

Khi nhận dữ liệu từ module điều khiển trung tâm, máy tính sẽ phân tích khung dữ liệu và hiển thị trạng thái các công tắc thông qua đèn LED ảo trên giao diện Đèn LED sáng biểu thị công tắc đang bật, trong khi đèn tắt cho biết công tắc đã tắt.

Người dùng có thể điều khiển trạng thái công tắc bằng cách nhấn các nút trên giao diện, và ngay lập tức, chương trình sẽ thực hiện lệnh.

Biến trạng thái công tắc hiện tại sẽ chứa 39 đảo bit tương ứng với nút được nhấn, sau đó biến này sẽ được gửi kèm theo lệnh điều khiển tới module điều khiển trung tâm.

3.6.4 Hiển thị và điều khiển trạng thái khóa cửa

Giao diện được lập trình để hiển thị trạng thái hiện tại của khóa cửa và cho phép điều khiển việc đóng/mở cửa chỉ bằng một nút nhấn.

3.6.5 Hiển thị trạng thái của các cảm biến

Sau khi xử lý dữ liệu nhận được, trạng thái của các cảm biến được hiển thị trên màn hình thông qua các đèn LED ảo, tương tự như cách hiển thị trạng thái của các công tắc.

Thiết kế sơ đồ nguyên lý và mạch in cho các module

3.7.1 Thiết kế module khóa cửa

Hình 3-2: Sơ đồ nguyên lý của module khóa cửa

41 Hình 3-3: Layout của module khóa cửa

42 3.7.2 Thiết kế module điều khiển công tắc

Hình 3-4: Sơ đồ nguyên lý của module điều khiển công tắc

43 Hình 3-5: Layout của module điều khiển công tắc

44 3.7.3 Thiết kế module điều khiển trung tâm

Hình 3-6: Sơ đồ nguyên lý của module điều khiển trung tâm

45 Hình 3-7: Layout của module điều khiển trung tâm

4 DỰ KIẾN KẾT QUẢ ĐẠT ĐƯỢC

Kết quả sơ khởi đạt được

4.1.1 Giao diện trên máy tính

Hình 4-1: Kết quả thiết kế giao diện trên máy tính 4.1.2 Hoạt động của hệ thống

Hình 4-2: Kết quả hoạt động của hệ thống 1

47 Hình 4-3: Kết quả hoạt động của hệ thống 2

Hình 4-4: Kết quả hoạt động của hệ thống 3

Hình 4-5: Kết quả thi công module khóa cửa

Module điểu khiển công tắc

Hình 4-6: Kết quả thi công module điều khiển công tắc

Module điều khiển trung tâm

Hình 4-7: Kết quả thi công module điều khiển trung tâm

Kết quả dự kiến đạt được

Ngoài các kết quả đã đạt được ở trên, đề tài còn một số nội dung chưa hoàn thành như sau:

 Lưu mật khẩu, lưu thẻ RFID mới, kiểm tra trạng thái thực thế của cửa tại module khóa cửa

 Kiểm tra trạng thái thực tế của các công tắc và thi công module relay cho module điều khiển công tắc

Những nội dung này dự kiến sẽ được em thực hiện và hoàn thành trước khi bước vào học kì 202

Hiện tại, tôi đã hoàn thành việc lập trình cho các module đã đề cập, thiết lập giao tiếp hiệu quả giữa các module và giữa người dùng với hệ thống.

Bên cạnh đó em cũng đang có kế hoạch thêm một số điểm vào trong đề tài của mình như sau:

1 Lập trình feedback cho module điều khiển công tắc và lắp thêm cảm biến đóng/mở cửa cho module khóa cửa, thêm chức năng thêm người dùng ở module khóa cửa

2 Thi công mạch in cho module cảm biến

3 Kiểm tra tình trạng của đường truyền thông qua việc kiểm tra kết nối tới các module

4 Thay thế chuẩn kết nối RS485 bằng 1 chuẩn kết nối không dây khác

5 Thêm module năng lượng mặt trời,

6 Xây dựng một database và server để có thể đưa dữ liệu của hệ thống lên Bằng cách này em có thể sử dụng trình duyệt web hoặc ứng dụng trên điện thoại để điều khiển và thu thập dữ liệu

7 Lập trình hệ thống cảnh báo theo thói quen của người dùng: Đóng, mở cửa, tắt đèn, Thời gian thực hiện luận văn: 4 tháng

5 1.1 Lập trình feedback cho module điều khiển công tắc X

1.2 Lập trình cảm biến đóng/mở cửa cho module khóa cửa, thêm chức năng thêm người dùng X

2.1 Thi công mạch in cho module cảm biến X

3.1 Lập trình kiểm tra tình trạng của đường truyền thông qua việc kiểm tra kết nối tới các module X X

4.1 Tìm hiểu về các chuẩn không dây có thể sử dụng trong hệ thống X

4.2 Lập trình cho các module trong hệ thống giao tiếp bằng chuẩn không dây đã chọn X

5.1 Xây dựng giải thuật điều khiển cho module năng lượng mặt trời X X

5.2 Lập trình cho module năng lượng mặt trời X X

Ngày đăng: 30/11/2021, 11:24

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] NXP Semiconductors, “RC522 Datasheet”, www.alldatasheet.com Sách, tạp chí
Tiêu đề: RC522 Datasheet
[2] Thành Nhân, “Khái niệm cơ bản về giao tiếp truyền thông RS485”, www.bkaii.com.vn Sách, tạp chí
Tiêu đề: Khái niệm cơ bản về giao tiếp truyền thông RS485
[3] Ken Tindell, “MIN Protocol”, https://github.com/min-protocol/min/wiki [4] “ISO/IEC 13239:2002”, https://www.iso.org/standard/37010.html Sách, tạp chí
Tiêu đề: MIN Protocol”, https://github.com/min-protocol/min/wiki [4] “ISO/IEC 13239:2002
[5] sieunhatthanh, “Chuẩn giao tiếp One-Wire”, https://snt.com.vn/blog/chuan-giao-tiep-1-wire-chuan-bus-one-wire Sách, tạp chí
Tiêu đề: Chuẩn giao tiếp One-Wire
[6] Saurabh Jain, “Home Automation Using STM32”, https://github.com/jainsaurabh2803/HOME-AUTOMATION-USING-STM32 [7] Adiya Dubey, “STM32 Bluetooth Based Home Automation” Sách, tạp chí
Tiêu đề: Home Automation Using STM32”, https://github.com/jainsaurabh2803/HOME-AUTOMATION-USING-STM32 [7] Adiya Dubey, “STM32 Bluetooth Based Home Automation

HÌNH ẢNH LIÊN QUAN

Hình 2-1: Tín hiệu điện áp 2 chân A,B trong kết nối RS485 - ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP LẬP TRÌNH NHÀ THÔNG MINH VỚI VI ĐIỀU KHIỂN STM32
Hình 2 1: Tín hiệu điện áp 2 chân A,B trong kết nối RS485 (Trang 8)
Trở kháng đặc tính cặp dây xoắn: Phụ thuộc vào hình dáng và chất liệu cách điện của dây mà nó sẽ  có một  trở kháng đặc tính (Characteristic impedence -Zo),  điều này thường được chỉ   rõ bởi   nhà sản xuất - ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP LẬP TRÌNH NHÀ THÔNG MINH VỚI VI ĐIỀU KHIỂN STM32
r ở kháng đặc tính cặp dây xoắn: Phụ thuộc vào hình dáng và chất liệu cách điện của dây mà nó sẽ có một trở kháng đặc tính (Characteristic impedence -Zo), điều này thường được chỉ rõ bởi nhà sản xuất (Trang 9)
Hình 2-3: Sơ đồ hệ thống sử dụng giao tiếp RS485 có nối đất. - ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP LẬP TRÌNH NHÀ THÔNG MINH VỚI VI ĐIỀU KHIỂN STM32
Hình 2 3: Sơ đồ hệ thống sử dụng giao tiếp RS485 có nối đất (Trang 10)
Hình 2-4: Cách đặt điện trở đầu cuối RT trong kết nối RS485 - ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP LẬP TRÌNH NHÀ THÔNG MINH VỚI VI ĐIỀU KHIỂN STM32
Hình 2 4: Cách đặt điện trở đầu cuối RT trong kết nối RS485 (Trang 10)
lệch. Sau đây là hình minh họa dạng tín hiệu thu được khi dùng hai điện trở đầu cuối khác nhau - ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP LẬP TRÌNH NHÀ THÔNG MINH VỚI VI ĐIỀU KHIỂN STM32
l ệch. Sau đây là hình minh họa dạng tín hiệu thu được khi dùng hai điện trở đầu cuối khác nhau (Trang 11)
Hình 2-6: Nguyên lý hoạt động của RFID - ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP LẬP TRÌNH NHÀ THÔNG MINH VỚI VI ĐIỀU KHIỂN STM32
Hình 2 6: Nguyên lý hoạt động của RFID (Trang 12)
Hình 2-7: Mô tả cấu trúc bộ nhớ thẻ MIFARE 1K - ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP LẬP TRÌNH NHÀ THÔNG MINH VỚI VI ĐIỀU KHIỂN STM32
Hình 2 7: Mô tả cấu trúc bộ nhớ thẻ MIFARE 1K (Trang 13)
Hình 2-8: Mô hình Master – Slave trong chuẩn giao tiếp One-Wire - ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP LẬP TRÌNH NHÀ THÔNG MINH VỚI VI ĐIỀU KHIỂN STM32
Hình 2 8: Mô hình Master – Slave trong chuẩn giao tiếp One-Wire (Trang 14)
Hình 2-10: Quy định về các khoảng thời gian chờ của tín hiệu - ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP LẬP TRÌNH NHÀ THÔNG MINH VỚI VI ĐIỀU KHIỂN STM32
Hình 2 10: Quy định về các khoảng thời gian chờ của tín hiệu (Trang 15)
Hình 2-9: Dạng sóng của tín hiệu trong giao tiếp bằng chuẩn One-Wire - ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP LẬP TRÌNH NHÀ THÔNG MINH VỚI VI ĐIỀU KHIỂN STM32
Hình 2 9: Dạng sóng của tín hiệu trong giao tiếp bằng chuẩn One-Wire (Trang 15)
Hình 2-11: Khung dữ liệu của giao thức MIN - ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP LẬP TRÌNH NHÀ THÔNG MINH VỚI VI ĐIỀU KHIỂN STM32
Hình 2 11: Khung dữ liệu của giao thức MIN (Trang 17)
Ta muốn màn hình hiển thị ký tự ‘A’ có mã ASCII là 0x41 thì theo phương thức giao tiếp 4 bit thông thường chúng ta sẽ gửi cho LCD  4 bit data cao là 0x40 vào các  chân Data D[7..4] , chân RW đặt ở mức 0 ( chế độ ghi ), chân RS đặt ở mức 1 ( gửi dữ  liệu ) - ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP LẬP TRÌNH NHÀ THÔNG MINH VỚI VI ĐIỀU KHIỂN STM32
a muốn màn hình hiển thị ký tự ‘A’ có mã ASCII là 0x41 thì theo phương thức giao tiếp 4 bit thông thường chúng ta sẽ gửi cho LCD 4 bit data cao là 0x40 vào các chân Data D[7..4] , chân RW đặt ở mức 0 ( chế độ ghi ), chân RS đặt ở mức 1 ( gửi dữ liệu ) (Trang 34)
Hình 3-2: Sơ đồ nguyên lý của module khóa cửa - ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP LẬP TRÌNH NHÀ THÔNG MINH VỚI VI ĐIỀU KHIỂN STM32
Hình 3 2: Sơ đồ nguyên lý của module khóa cửa (Trang 46)
Hình 3-3: Layout của module khóa cửa - ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP LẬP TRÌNH NHÀ THÔNG MINH VỚI VI ĐIỀU KHIỂN STM32
Hình 3 3: Layout của module khóa cửa (Trang 47)
Hình 3-4: Sơ đồ nguyên lý của module điều khiển công tắc - ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP LẬP TRÌNH NHÀ THÔNG MINH VỚI VI ĐIỀU KHIỂN STM32
Hình 3 4: Sơ đồ nguyên lý của module điều khiển công tắc (Trang 48)
Hình 3-5: Layout của module điều khiển công tắc - ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP LẬP TRÌNH NHÀ THÔNG MINH VỚI VI ĐIỀU KHIỂN STM32
Hình 3 5: Layout của module điều khiển công tắc (Trang 49)
Hình 3-7: Layout của module điều khiển trung tâm - ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP LẬP TRÌNH NHÀ THÔNG MINH VỚI VI ĐIỀU KHIỂN STM32
Hình 3 7: Layout của module điều khiển trung tâm (Trang 51)
Hình 4-2: Kết quả hoạt động của hệ thống 1 - ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP LẬP TRÌNH NHÀ THÔNG MINH VỚI VI ĐIỀU KHIỂN STM32
Hình 4 2: Kết quả hoạt động của hệ thống 1 (Trang 52)
Hình 4-1: Kết quả thiết kế giao diện trên máy tính - ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP LẬP TRÌNH NHÀ THÔNG MINH VỚI VI ĐIỀU KHIỂN STM32
Hình 4 1: Kết quả thiết kế giao diện trên máy tính (Trang 52)
Hình 4-4: Kết quả hoạt động của hệ thống 3 - ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP LẬP TRÌNH NHÀ THÔNG MINH VỚI VI ĐIỀU KHIỂN STM32
Hình 4 4: Kết quả hoạt động của hệ thống 3 (Trang 53)
Hình 4-3: Kết quả hoạt động của hệ thống 2 - ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP LẬP TRÌNH NHÀ THÔNG MINH VỚI VI ĐIỀU KHIỂN STM32
Hình 4 3: Kết quả hoạt động của hệ thống 2 (Trang 53)
Hình 4-5: Kết quả thi công module khóa cửa - ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP LẬP TRÌNH NHÀ THÔNG MINH VỚI VI ĐIỀU KHIỂN STM32
Hình 4 5: Kết quả thi công module khóa cửa (Trang 54)
Hình 4-6: Kết quả thi công module điều khiển công tắc - ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP LẬP TRÌNH NHÀ THÔNG MINH VỚI VI ĐIỀU KHIỂN STM32
Hình 4 6: Kết quả thi công module điều khiển công tắc (Trang 55)
Hình 4-7: Kết quả thi công module điều khiển trung tâm - ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP LẬP TRÌNH NHÀ THÔNG MINH VỚI VI ĐIỀU KHIỂN STM32
Hình 4 7: Kết quả thi công module điều khiển trung tâm (Trang 56)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w