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 3.6.1 Giao tiếp với module điều khiển trung tâm 3.6.2 Lưu lại lịch sử hoạt động của hệ thống ....
Trang 1KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ
-o0o -ĐỀ 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
GVHD:
SVTH : MSSV :
TP HỒ CHÍ MINH, THÁNG 1 NĂM 2021
Trang 2LỜI CẢM ƠN
Tp Hồ Chí Minh, ngày tháng năm
Sinh viên
Trang 3MỤC LỤC
1 GIỚI THIỆU .
1.1 Tổng quan .
1.2 Tình hình nghiên cứu trong và ngoài nước .
1.3 Mục tiêu đề tài .
2 NỘI DUNG ĐỀ TÀI .
2.1 Cơ sở lý thuyết .
2.1.1 Chuẩn giao tiếp RS485 .
2.1.2 RFID .
2.1.3 Chuẩn giao tiếp One – Wire 2.1.4 Giao thức Microcontroller Interconnect Network (MIN) 2.2 Vi điều khiển và các module .
2.2.1 Vi điều khiển STM32F103C8T6 2.2.2 Cảm biến khí CO và khí Gas MQ-9 2.2.3 Cảm biến nhiệt độ, độ ẩm DHT-22 2.3 Thiết kế giải thuật điều khiển .
2.3.1 Module điều khiển trung tâm
2.3.2 Module điều khiển công tắc
2.3.3 Module khóa cửa
2.3.4 Giao diện trên máy tính
3 GIẢI PHÁP THỰC HIỆN .
3.1 Thiết lập giao tiếp giữa các module trong hệ thống 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
3.1.2 Thiết lập giao tiếp với module 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
Trang 4Đề cương luận văn GVHD:
3.1.4 Thiết lập giao tiếp với module cảm biến
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 3.2.1 Giao tiếp với module RC522 .
3.2.2 Điều khiển khóa cửa bằng bàn phím .
3.2.3 Giao tiếp với màn hình LCD .
3.2.4 Điều khiển khóa cửa thông qua giao diện trên máy tính 3.3 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 .
3.3.2 Điều khiển công tắc thông qua giao diện trên máy tính 3.4 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 .
3.4.2 Đọc dữ liệu nhiệt độ, độ ẩm trong các phòng từ cảm biến DHT-22 3.4.3 Giao tiếp với module điều khiển trung tâm
3.5 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 3.5.2 Giao tiếp với máy tính .
3.5.3 Kiểm tra kênh truyền
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 3.6.1 Giao tiếp với module điều khiển trung tâm 3.6.2 Lưu lại lịch sử hoạt động của hệ thống .
3.6.3 Hiển thị và điều khiển trạng thái của công tắc 3.6.4 Hiển thị và điều khiển trạng thái khóa cửa 3.6.5 Hiển thị trạng thái của các cảm biến .
3.7 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 .
3.7.2 Thiết kế module điều khiển công tắc
3.7.3 Thiết kế module điều khiển trung tâm .
Trang 54 DỰ KIẾN KẾT QUẢ ĐẠT ĐƯỢC .
4.1 Kết quả sơ khởi đạt được .
4.1.1 Giao diện trên máy tính .
4.1.2 Hoạt động của hệ thống .
4.1.3 Hoàn thiện phần cứng .
4.2 Kết quả dự kiến đạt được .
5 KẾ HOẠCH THỰC HIỆN .
6 TÀI LIỆU THAM KHẢO .
Trang 6Đề 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
Trang 71 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àiviế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-apphoặ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
1
Trang 8Đề cương luận văn GVHD:
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
Hình 2-1: Tín hiệu điện áp 2 chân A, B trong kết nối RS485
2
Trang 9b M c tín hi u ứ ệ
Với hai dây A, B truyền dẫn cân bằng, tín hiệu mức cao TTL được quy định khi áp của dây A lớn hơn dây B tối thi ểu là 200mV, tín hiệu mức thấp TTL được quy định khi áp của dây A nhỏ hơn dây B tối thiểu cũng là 200mV Nếu điện áp VAB mà nằm trong khoảng -200mV < VAB< 200mV thì tín hiệu lúc này được xem như là 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 phải nằm trong khoảng –7V đến +12V
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 gồm hai dây không có dây mass nên chúng c
ần được tham chiếu đến một điểm chung, điểm chung lúc này có thể là mass hay bất kì một mức điện áp cho phép nào đó Điện áp kiểu chung (Common-mode voltage -VCM) về mặt toán học được phát biểu như là giá trị trung bình của hai điện áp tín hiệu được tham chiếu với mass hay một điểm chung
3
Trang 10Đề cương luận văn GVHD:
e V n đ n i đ t ấ ề ố ấ
Tín hiệu trên hai dây khi được tham chiếu đến điểm chung là đất (Ground) thìkhi đó nó cần được xem xét kỹ lưỡng Lúc này bộ nhận sẽ xác định tín hiệu bằngcách tham chiếu tín hiệu đó với đất của nơi nhận, nếu đất giữa nơi nhận và nơiphát có một sự chênh lệch điện thế vượt qua ngưỡng cho phép thì tín hiệu thuđược sẽ bị sai hoặc phá hỏng thiết bị Điều này cho thấy mạng RS485 gồm hai dâynhưng có tới ba mức điện áp được xem xét Do đất là một vật dẫn điện khônghoàn hảo nên nó có một điện trở xác định, gây ra chênh lệch điện thế từ điểm nàytới điểm kia, đặc biệt là tại các vùng có nhiều sấm sét, máy móc tiêu thụ dòng lớn,những bộ chuyển đổi được lắp đặt và có nối đất
Chuẩn RS485 cho phép chênh lệch điện thế đất lên tới 7V, lớn hơn 7V là khôngđược Như vậy đất là điểm tham chiếu không đáng tin tưởng và một cách tốt hơncho việc truyền tín hiệu lúc này là ta đi thêm một dây thứ ba, nó sẽ được nối masstại nguồn cung cấp để dùng làm điện áp tham chiếu
Hình 2-3: Sơ đồ hệ thống sử dụng giao tiếp RS485 có nối đất.
f Đi n tr đ u cu i ệ ở ầ ố
Điện trở đầu cuối (Terminating Resistor) đơn giản là điện trở được đặt tại haiđiểm tận cùng kết thúc của đường truyền Giá trị của điện trở đầu cuối lí tưởng làbằng giá trị trở kháng đặc tính của đường dây xoắn, thường thì vào khoảng 100 -120Ω
Hình 2-4: Cách đặt điện trở đầu cuối RT trong kết nối RS485Nếu điện trở đầu cuối không phù hợp với giá trị trở kháng đặc tính của đườngdây thì nhiễu có thể xảy ra do có sự phản xạ xuất hiện trên đường truyền, nhiễu ởmức độ nhỏ thì không sao nhưng nếu ở mức độ lớn thì có thể làm tín hiệu bị sai
4
Trang 11lệch Sau đây là hình minh họa dạng tín hiệu thu được khi dùng hai điện trở đầucuố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 thì tất cả các khối thu đều ở trạng thái lắngnghe đường truyền và tất cả khối phát đều ở trạng thái tổng trở cao cách li vớiđường truyền Lúc này trạng thái của đường truyền được xem là bất định Nếu-200mV ≤ VAB ≤ 200mV thì trạng thái logic tại ngõ ra khối thu sẽ mang giá trịcủa bit cuối cùng nhận được Điều này không đảm bảo vì đường truyền rảnh trongtruyền dữ liệu nối ti ếp đòi hỏi phải ở mức cao để khối thu không hiểu nhầm là có
dữ liệu xuất hiện trên đường truyền
Để duy trì trạng thái mức cao khi đường truyền rảnh thì việc phân cực đườngtruyền (Biasing) phải được thực hiện 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 sao cho VAB ≥ 200mV sẽ ép đườngtruyền lên mức cao
2.1.2 RFID
a Gi i thi u t ng quát ớ ệ ổ
RFID (Radio Frequency Identification), hay Nhận dạng qua tần số vô tuyến, làmột công nghệ dùng kết nối 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ể
Hay nói cách khác, RFID là một kỹ thuật nhận dạng sóng vô tuyến từ xa, chophép dữ liệu trên một con chíp được đọc một cách "không tiếp xúc" qua đườngdẫn sóng vô tuyến ở khoảng cách từ 50 cm tới 1 mét, sử dụng thiết bị thẻ RFID vàmột đầu đọc RFID
Điểm nổi bật của RFID là công nghệ không sử dụng tia sáng như mã vạch, khôngtiếp xúc trực tiếp Một vài loại thẻ có thể được đọc xuyên qua các môi trường, vật liệunhư Bê tông, tuyết, sương mù, băng đá, sơn, và các điều kiện môi trường thách thứckhác mà mã vạch và các công nghệ khác không thể phát huy hiệu quả
b S l ơ ượ c nguyên lý ho t đ ng ạ ộ
Thiết bị RFID reader phát ra sóng điện từ ở một tần số nhất định, khi thiết bịRFID tag trong vùng hoạt động sẽ cảm nhận được sóng điện từ này và thu nhận
5
Trang 12Đề cương luận văn GVHD:
năng lượng từ đó phát lại cho thiết bị RFID Reader biết mã số của mình Từ đóthiết bị RFID reader nhận biết được tag nào đang trong vùng hoạt động
Hình 2-6: Nguyên lý hoạt động của RFID
Để có thể lấy được thông tin từ thẻ RFID, người lập trình phải thiết lập đượcgiao tiếp giữa vi điều khiển với RFID reader Sau khi có thể giao tiếp với RFIDreader chúng ta cần phải cài đặt các thanh ghi cần thiết để reader có thể giao tiếpvơi thẻ
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ẻ:
Bộ nhớ trên thẻ Mifare được chia thành nhiều Sector, trong đó mỗi Sector lạiđược chia thành các bốn Block khác nhau và một block trong bốn block đó làmnhiệm vụ chứa chìa khóa cấp quyền truy cập vào Block gọi là Sector Trailer
Trang 14Đề cương luận văn GVHD:
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 1K2.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
One-Wrire dùng một dây để truyền nhận nên có tốc độ thấp Chủ yếu sửdụng cho việc thu thập dữ liệu, truyền nhận dữ liệu thời tiết, nhiệt độ, công việckhông yêu cầu tốc độ cao
Trang 15dụng một Master với nhiều module cũng sẽ kéo theo chu kỳ đọc/ ghi dữ liệu tớitừng module cũng sẽ bị tăng lên theo.
Hình 2-8: Mô hình Master – Slave trong chuẩn giao tiếp One-WireTrong giao tiếp bằng chuẩn One-Wire các module giao tiếp với nhau bằng cách gửi đi các xung có chu kỳ bằng nhau(khoảng 70 uS) và có chu kỳ nhiệm vụ khác nhau Bên thu sẽ dựa vào chu kỳ và chu kỳ nhiệm vụ của xung nhận được
để xác định được dạng tín hiệu cũng như dữ liệu
Chuẩn giao tiếp One-Wire có 4 dạng tín hiệu chính đước sử dụng là : Write bit
0, Write bit 1, Read và Reset/ Presence
Tín hiệu Write bit 1: Master sẽ xuất ra tín hiệu ở mức thấp một khoảng thời
gian A, sau đó đưa tín hiệu lên mức cao một khoảng thời gian B
Tín hiệu Write bit 0: Master sẽ xuất ra tín hiệu ở mức thấp một khoảng thời
gian C, sau đó đưa tín hiệu lên mức cao một khoảng thời gian D
Tín hiệu Read: Master sẽ xuất ra tín hiệu ở mức thấp một khoảng thời gian A
+E , sau đó sẽ đưa tín hiệu lên mức cao cho tới hết chu kỳ Sau khi kết thúc chu
kỳ sẽ tiến hành đọc dữ liệu từ Slave gửi về
Tín hiệu Reset/Presence: Master sẽ xuất ra tín hiệu ở mức thấp một khoảng
thời gian H và sau đó sẽ đưa tín hiệu lên lại mức cao Khoảng thời gian bus ở mức thấp đó gọi là tín hiệu reset Nếu có thiết bị slave gắn trên bus nó sẻ trả lời bằng tín hiệu Presence tức là thiết bị tớ sẻ kéo bus xuống mức thấp trong khoảng thời gian I Nếu không có tín hiệu Presence, thiết bị master sẻ hiểu rằng không có thiết bị slave nào trên bus, và các giao tiếp tiếp theo sẻ không thể diễn ra
Trang 168
Trang 17Hình 2-9: Dạng sóng của tín hiệu trong giao tiếp bằng chuẩn One-Wire
Hình 2-10: Quy định về các khoảng thời gian chờ của tín hiệuNhư ta có thể thấy thì tín hiệu trong chuẩn One-Wire yêu cầu rất khắt khe về mặt thời gian vì vậy để tối ưu thời gian truyền người lập trình phải tối ưu về phần định thời cho dữ liệu truyền đi
Các Frame byte truyền nhận với mỗi IC có một dạng Frame khác nhau vậy cần chú ý đọc datasheet
Bus dữ liệu khi ở trạng thái chờ (khi không có dữ liệu trên đường truyền) phải
ởmức cao do vậy bus dữ liệu phải được kéo lên nguồn thông qua một điện trở Giá trị điện trở này có thể tham khảo trong datasheet của thiết bị
9
Trang 18Đề cương luận văn GVHD:
2.1.4 Giao thức Microcontroller Interconnect Network (MIN)
a Gi i thi u chung ớ ệ
MIN là một khung dữ liệu truyền point-to-point đơn giản, được thiết kế đểthực hiện giao tiếp giữa vi điều khiển và PC hoặc giữa vi điều khiển và vi điềukhiển khác
Trong thực tế, có rất nhiều ứng dụng cần giao tiếp từ xa giữa vi điều khiển vàcác module khác hoặc giữa vi điều khiển và vi điều khiển khác ví dụ như đọc dữliệu về nhiệt độ, áp suất,… Việc đọc dữ liệu này được thực hiện diễn ra định kỳ.Nếu thực hiện theo các phương thức truyền dữ liệu point-to-point thông thường thì
sẽ tốn rất nhiều tài nguyên về bộ nhớ và CPU của vi điều khiển nhất là những dòng
vi điều khiển 8-bit Vì vậy MIN đã được tạo ra nhằm đáp ứng nhu cầu trên
b M c tiêu thi t k ụ ế ế
MIN đươc thiết kế để đáp ứng những nhu cầu sau:
Có thể thực hiện trên ngôn ngữ C và thực hiện trên các dòng vi điều khiển 8-bit với lượng RAM sử dụng nhỏ nhất
Có thể giao tiếp thông qua chuẩn UART bằng các dữ liệu 8 bit mà không cần có yêu cầu đặc biệt nào
Có thể gửi và nhận dữ liệu từ các module khác hoặc giao tiếp gới PC
Cung cấp đường truyền dữ liệu có độ tin cậy cao Khi nhận được 1 khung dữ liệu thì khung dữ liệu đó phải hoàn toàn chính xác nếu không thì
nó sẽ ngay lập tức bị loại bỏ
Có thể chạy trong vòng lặp mở với số biến trạng thái tối thiểu, không yêu cầu ràng buộc thời gian giữa các khung hoặc giữa các byte dữliệu
Lưu ý:
10
Trang 19Khi giao tiếp giữa vi điều khiển với module khác bằng MIN thì không cầnphải có điều khiển luồng(Flow control) Vì MIN được thiết kế cho các hệthống nhúng nên người thế kế hệ thống phải điều chỉnh tỉ lệ sao cho bênphát có khả năng xử lý bộ đệm và truyền tất cả dữ liệu cần truyền Và viđiều khiển cũng phải có khả năng xử lý đủ nhanh để có thể xử lý được tất
cả dữ liệu nhận về Người thiết kế hệ thống cũng cần phải xây dựng bộ đệmthu/phát với kích thước phù hợp để đảm bảo rằng bộ đệm luôn được phân
bố đủ để chứa dữ liệu trong trường hợp xấu nhất hoặc để đảm bảo vi điềukhiển có thể xử lý được trong các trường hợp khung dữ liệu (Frame) bị mất
c C u trúc Frame truy n ấ ề
Một khung dữ liệu của giao thức MIN bao gồm những trường như sau:
Hình 2-11: Khung dữ liệu của giao thức MINTrong đó:
Start Of Frame (SOF) : Gồm 3 byte này có giá trị là 0xAA (hoặc giá trịkhác tùy vào người thiết kế hệ thống quy ước) Những byte này làm nhiệm
vụ chođầu thu biết được điểm bắt đầu của Frame dữ liệu Từ đó có thể dựa vào Frame dữ liệu đã được quy định như ở Hình 2-9 để xác định vị trí và chứcnăng của từng byte trong Frame
ID/Control : Gồm 1 byte Trong đó bit 7 được sử dụng cho điều khiển giao thức Nó cho biết được khung đang truyền có phải được sử dụng cho công dụng truyền tải dữ liệu hay không Bit 6 được để trống dùng để dự phòng cho các trường hợp sau này Bo 0 => Bit 5 được sử dụng tùy vào mục đích của người sử dụng
Sequence : Byte này được sử dụng khi bit 7 của byte ID/Control được bật lên 1
Length : Gồm 1 byte Cho biết được chiều dài dữ liệu được chứa trong payload Giúp người lập trình có thể lấy dữ liệu ra từ khung truyền
và xác định được vị trí của 2 byte CheckSum
11
Trang 20Đề cương luận văn GVHD:
Payload : Dữ liệu có thể truyền đi trong một khung dữ liệu trong giaothức MIN có thể lên đến 255 byte Các dữ liệu này có thể được mã hóa, được chuyển đổi thành các ký tự hoặc đơn giản là các byte dữ liệu 8-bit Thứ tự của các byte trong Payload được sắp xếp theo độ quan trọng của dữliệu Tức là dữ liệu nào quan trọng hơn sẽ được truyền trước (được xử lý trước)
CheckSum : 4 byte là một đoạn mã CRC-32 bit Đoạn mã được xác định thông qua các byte là ID/Control, Sequence, Length và Payload
End Of Frame (EOF) : Gồm 1 byte có giá trị 0x55, dùng để xác định điểm kết thúc của Frame dữ liệu
d Kỹ thu t Byte Stuffing ậ
Như đã đề cập ở phần c, 3 byte SOF có giá trị là 0xAA dùng để xác định điểmbắt đầu của Frame dữ liệu Giả sử trong một trường lại có đúng 3 byte (hoặc hơn) liên tục có giá trị 0xAA tồn tại trong bộ đệm thu và vi điều khiển lại tiến hành tìm kiếm 3 byte SOF trong bộ đệm thu bằng thanh trượt có kích thước bằng 3 Trong trường hợp đó rất dễ có khả năng thanh trượt sẽ tìm sai vị trí bắt đầu của Frame và
từ đó khiến vi điều khiển không đọc được dữ liệu nhận về
Để khắc phục nhược điểm của giao thức đối với trường hợp kể trên Người ta
đã sử dụng kỹ thuật Byte Stuffing
Phương pháp của kỹ thuật này như sau:
Bên phát : Cứ sau mỗi 2 byte dữ liệu liên tiếp có cùng giá trị 0xAA người ta sẽ thêm vào sau đó 1 byte có giá trị 0x55(hoặc giá trị khác tùy vào người thiết kế hệ thông quy ước)
Bên thu : Cứ sau mỗi 2 byte dữ liệu liên tiếp nhận được có giá trị 0xAA người ta sẽ loại bỏ 1 byte ngay sau đó (byte có giá trị 0x55) và tiếp tục đọc dữ liệu từ những byte phía sau
Từ phương pháp như vậy, chúng ta có thể thấy được ngoại trừ 3 byte SOF cógiá trị 0xAA liên tiếp thì sẽ không có tồn tại bất kỳ một chuỗi các byte có giá trịnhư vậy trong Frame và từ đó sẽ tăng tính tin cậy của dữ liệu nhận được
Trang 22Đề cương luận văn GVHD:
e Cách tính CRC
Như đã đề cập ở trên CRC được tính từ byte ID/Control và byte Length Đathức sinh được sử dụng là :
32 + 26 + 23 + 22 + 16 + 12 + 11 + 10 + 8 + 7 + 5 + 4 + 2 + 1 +1
Đa thức sinh này được quy định trong mục 4.2.5.3 ISO/IEC 13239
Cuối cùng, một khung dữ liệu hợp lệ phải đáp ứng đầy đủ các yếu tố sau:
3 byte SOF là các byte liên tiếp và đều có giá trị là 0xAA
a Đ c đi m ph n c ng ặ ể ầ ứ
Điện áp hoạt động : 2.0 - 3.6VXung nhịp tối đa : 72 Mhz
Bộ nhớ:
RAM: 20 kBytes
Flash: 64 kBytesNgoại vi :
2 bộ ADC – 16 kênh x 12Bit
3 bộ timer 16 bit, hỗ trợ IC,OC,PWM, đếm xung, đọc encoder
2 bộ Watchdog timer
1 bộ Systick Timer 24 bit
13
Trang 23 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 là bộ thư viện được xây dựng từ cấu trúc phần cứng của cácdòng vi điều khiển STMFxxx nó cho phép người lập trình có thể dễ dàng thựchiện các dự án nhỏ phục vụ mục đích nghiên cứu, học tập hoặc cũng có thể sửdụng để dây dựng nên một bộ thư viện khác để phục vụ mục đích lớn hơn Bộ thưviện này có nhược điểm là vì nó quá cơ bản nên sẽ tốn rất nhiều thời gian để lậptrình
Bộ thư viện Hal là bộ thư viện do STMicroelectronics phát triển Nó được tạo
ra đưa trên nền tảng của bộ thư viện Std với các giao thức khởi tạo và các ứng dụng của bên thứ 3 được tích hợp sẵn Bộ thư viện này cho phép người lập trình
có thể dễ dàng tiếp cận và sử dụng để lập trình cho các dòng vi điểu khiển STM trong khi vẫn đảm bảo được tính logic và tính chặt chẽ của chương trình Ngoài ra
do được phát triển từ nền tảng là bộ thư viện Std nên người dùng cũng có thể dễ dàng truy cập và sử dụng nó như là thư viện Std
Ngoài bộ thư viện Hal thì STMicroelectronics còn tạo ra các công cụ hỗ trợ lập trình cho các dòng vi điều khiển STM khác như là STM32 CubeMX, STM32CubeIDE, Flash Loader Demonstrator,…
• Đ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)
14
Trang 24Đề cương luận văn GVHD:
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)
15
Trang 252.3 Thiết kế giải thuật điều khiển
2.3.1 Module đi u khi n trung tâmề ể
16
Trang 26Đề cương luận văn GVHD:
2.3.2 Module đi u khi n công t cề ể ắ
17
Trang 272.3.3 Module khóa c aử
18
Trang 28Đề cương luận văn GVHD:
19
Trang 292.3.4 Giao di n trên máy tínhệ
3 GIẢI PHÁP THỰC HIỆN
3.1 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 trang bị sẵn trên trên vi điều khiển STM32F103C8T6 và các kiến thức về giao thức Microcontroller Interconnect Network nên phương pháp giao tiếp chính giữa các module trong mạng sẽ được thực hiện thông qua chuẩn kết
20
Trang 30Đề cương luận văn GVHD:
nối UART, sử dụng giao thức MIN và để đáp ứng nhu cầu truyền-nhận dữ liệu ởkhoảng cách xa thì mỗi module sẽ được trang bị thêm một bộ chuyển đổi kết nốiUART <=> RS485
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 dùng để giao tiếp giữa các module trong hệ thông được quy định giống như Frame dữ liệu chuẩn của giao thức MIN nhưng ở đây chúng ta không có sử dụng chức năng điều khiển cho giao thức(bit 7 của byte
ID/Control) nên Frame dữ liệu mới có dạng như sau:
D[5 0] : Là địa chỉ của các module trong hệ thống
Trang 31Vd: Nếu muốn đọc dữ liệu về trạng thái của khóa cửa Thì trước hết bit D6 của byte ID/Control phải được bật lên 1 và Byte đầu tiền của Payload phảichứa giá trị tương ứng với địa chỉ thanh ghi chứa dữ liệu trạng thái khóa cửa.
CheckSum
Vì chúng ta không sử dụng chức năng điều khiển cho giao thức nên CheckSum là một mã CRC-32bit được tính bằng 3 byte ID/Control, Length,byte đầu tiên của Payload và một byte có giá trị 0x00(thay thế cho byte Sequence)
b Quy đ nh đ a ch c a các module và time out ị ị ỉ ủ
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
3.1.2 Thi t l p giao ti p v i module khóa c a ế ậ ế ớ ử a