You are on page 1of 32

BÁO CÁO THỰC HIỆN TIỂU LUẬN MÔN HỌC

TRƯỜNG
Giảng
Nguyễn
viên KHOA
MinhĐẠI
hướng HỌC
Ngọc
dẫn HỆ
CÔNG
BỘ
TPHCM, THỐNG
CÔNG
CÔNG
NGHỆ
2. NGHIỆP
tháng
1. THƯƠNG
Lớp:
Nguyễn
Nhóm NHÚNG
4ĐIỆN
năm -TP.
ĐIỆN
NhãHỒ
DHIOT16A
sinh
Thị
Lê2023
Duy
viên TỬ
CHÍ
Thuận
thực
Phương MINHtrang
hiệnMSSV:20110151
MSSV: 20019161
1
MỤC LỤC
Phần 1. Tổng quan và đặt vấn đề.....................................................................................1
1.1 Vai trò, ý nghĩa của việc làm tiểu luận...................................................................1
1.2 Tình hình nghiên cứu thiết kế hệ thống nhúng cho các ứng dụng hiên nay:..........2
1.3 Phương pháp nghiện cứu:.......................................................................................3
1.4 Tên đề tài:...............................................................................................................3
Phần 2. Xác định yêu cầu và xây dựng kiến trúc cho hệ thống.....................................3
2.1 Phân tích xác định yêu cầu cho mô hình kiến trúc hệ thống..................................3
2.2 Các thành phần.......................................................................................................4
2.3 Mô tả hệ thống:......................................................................................................6
a) Hồ sơ đặc tả............................................................................................................6
b) Xác định 5 vấn đề cơ bản.......................................................................................9
c) Nguyên lý hoạt động:...........................................................................................10
Phần 3. Thiết kế chi tiết..................................................................................................12
3.1 Thiết kế phần cứng..............................................................................................12
a) Sơ đồ khối chi tiết:..............................................................................................12
b) Sơ đồ nguyên lý:..................................................................................................13
3.2 Thiết kế phần mềm..............................................................................................14
a) Lựa chọn phần mềm và ngôn ngữ lập trình........................................................14
b) Lưu đồ giải thuật.................................................................................................15
3.3 Chương trình........................................................................................................16
a) Chương trình của bộ phát:...................................................................................16
b) Chương trình của bộ thu:....................................................................................20
3.4 Kết quả mô phỏng...............................................................................................28
a) Bản vẽ mô phỏng bộ phát....................................................................................28
b) Bản vẽ mô phỏng bộ thu:....................................................................................29
Phần 4. Đánh giá hệ thống.............................................................................................30
TÀI LIỆU THAM KHẢO:...............................................................................................31
Phần 1. Tổng quan và đặt vấn đề
1.1 Vai trò, ý nghĩa của việc làm tiểu luận

Thúc đẩy tư duy phân tích và suy nghĩ sáng tạo: Việc viết tiểu luận yêu
cầu sinh viên phải nghiên cứu, phân tích và trình bày các ý tưởng một cách rõ
ràng và logic. Việc này giúp sinh viên rèn luyện tư duy phân tích và sáng tạo,
cũng như cải thiện khả năng viết và trình bày bằng văn bản.

Nâng cao kiến thức chuyên môn: Việc nghiên cứu để viết tiểu luận giúp
sinh viên nắm vững và hiểu sâu hơn về một chủ đề cụ thể trong lĩnh vực chuyên
môn của mình. Điều này giúp sinh viên nâng cao kiến thức chuyên môn và
chuẩn bị tốt hơn cho công việc sau này.

Phát triển kỹ năng nghiên cứu: Việc viết tiểu luận yêu cầu sinh viên phải
tìm hiểu, đọc và phân tích các tài liệu và nguồn thông tin liên quan đến chủ đề
của mình. Việc này giúp sinh viên phát triển kỹ năng tìm kiếm và đánh giá
nguồn thông tin, giúp cho công việc nghiên cứu và tìm kiếm thông tin của sinh
viên trở nên hiệu quả hơn.

Giúp sinh viên phát triển kỹ năng viết và trình bày bằng văn bản: Việc
viết tiểu luận giúp sinh viên cải thiện kỹ năng viết và trình bày bằng văn bản
của mình. Qua quá trình viết tiểu luận, sinh viên sẽ phát triển khả năng tổ chức,
sắp xếp và diễn đạt ý tưởng một cách rõ ràng, chuẩn xác và hấp dẫn hơn.

Đánh giá kết quả học tập: Việc viết tiểu luận là một phần quan trọng
trong quá trình đánh giá kết quả học tập của sinh viên. Việc hoàn thành tiểu
luận tốt sẽ giúp sinh viên có điểm số cao và đạt được mục tiêu học tập của
mình.

1
1.2 Tình hình nghiên cứu thiết kế hệ thống nhúng cho các ứng dụng hiên nay:

Hiện nay, nghiên cứu về thiết kế hệ thống nhúng cho các ứng dụng đang
phát triển mạnh mẽ. Đặc biệt cùng với sự phát triển của công nghệ IoT (Internet
of Things), nhu cầu sử dụng các hệ thống nhúng để kết nối và điều khiển các
thiết bị thông minh đang ngày càng cao. Một số nghiên cứu cho hệ thống nhúng
được thế giới tập trung nhiều như:

Nghiên cứu và phát triển các bộ vi xử lý nhúng: Các bộ vi xử lý nhúng


đóng vai trò rất quan trọng trong việc xử lý các tác vụ của các hệ thống nhúng.
Hiện nay, các nhà nghiên cứu đang tập trung vào việc thiết kế và phát triển các
bộ vi xử lý nhúng có hiệu suất cao, tiêu thụ năng lượng thấp và có khả năng kết
nối với các mạng IoT.

Nghiên cứu và phát triển các hệ thống nhúng có tính năng an toàn và bảo
mật cao đang là một trong những vấn đề được quan tâm hàng đầu. Các nhà
nghiên cứu đang tìm cách phát triển các hệ thống nhúng có khả năng tự động
phát hiện và ngăn chặn các cuộc tấn công mạng.

Nghiên cứu và phát triển các công nghệ liên quan đến IoT như các mạng
cảm biến không dây, các giao thức truyền thông và các ứng dụng IoT đang được
nghiên cứu và phát triển để tạo ra các hệ thống nhúng thông minh và hiệu quả.

Nghiên cứu và phát triển các công cụ thiết kế và phát triển hệ thống
nhúng đòi hỏi sự hiểu biết về cả phần cứng và phần mềm. Vì thế, các công cụ
hỗ trợ thiết kế và phát triển hệ thống nhúng đang được nghiên cứu và phát triển
để giúp cho quá trình này trở nên dễ dàng hơn và hiệu quả hơn.

Các ứng dụng của hệ thống nhúng ngày càng phổ biến trong đời sống
hàng ngày, từ các sản phẩm điện tử gia dụng như tivi thông minh, điều hòa, đèn
chiếu sáng cho đến các ứng dụng công nghiệp, y tế, đô thị thông minh, nông
nghiệp thông minh, giao thông thông minh, v.v. Việc phát triển các hệ thống
nhúng có tính năng cao và phù hợp với các yêu cầu đặc thù của từng ứng dụng

2
sẽ giúp tăng tính hiệu quả, giảm chi phí và nâng cao chất lượng cuộc sống của
con người.

1.3 Phương pháp nghiện cứu:

Với đề tài đã chọn, chúng tôi đã tập trung dùng phương pháp mô phỏng
để nghiên cứu. Đây là phương pháp tập trung vào vào sử dụng các công cụ,
phần mềm mô phỏng để mô tả và dự đoán kết quả. Trong nghiên cứu này,
chúng tôi đã dùng các phần mềm STM32CubeIDE và Proteus để chạy mô phỏng
cho đề tài.

1.4 Tên đề tài:

Đề tài tiểu luận cho bài báo này là: Thiết kế hệ thống nhúng điều khiển
khóa cửa từ xa cho xe hơi sử dụng Bluetooth

Phần 2. Xác định yêu cầu và xây dựng kiến trúc cho hệ thống

2.1 Phân tích xác định yêu cầu cho mô hình kiến trúc hệ thống

Mô tả:

 Cách dùng: Dùng chìa khóa điều khiển khóa cửa.


 Đối tượng: xe hơi
 Kích thước chìa: Nhỏ, gọn, chiều dài 7cm , chiều rộng 4cm, chiều cao 1.5cm.
 Kích thước khóa: sử dụng chốt cửa có sẵn khi xe hơi được tạo ra.
 Thời gian hoạt động: 12-15h/sạc.
 Vật liệu chìa: Nhựa cứng.

3
Mô tả hệ thống:

Hệ thống sử dụng 2 module sử dụng vi điều khiển ARM và 2 module Bluetooth


truyền và nhận tín hiệu lẫn nhau. Được thiết kế thành bộ điều khiển tác động đến hệ
thống chốt cửa đã có sẵn trên xe hơi

Các chức năng cần có:

 Nhấn nút tương ứng trên module phát để điều khiển đóng mở cho cửa tương
ứng
 Kết nối ổn định giữa hai module bluetooth.
 Thông qua kết nối bluetooth với bộ điều khiển để đóng, mở cửa.
 Kiểm tra tính đúng của tín hiệu hồi tiếp khi đã hoàn thành tác vụ điều khiển và
biểu diễn lên led của module phát.

Hệ thống hỗ trợ:

 Vi điều khiển.
 Module bluetooth HC05.
 Giao tiếp: nút nhấn, còi, led báo hiệu.
 Linh kiện khuếch đại công suất (transistor) và relay điều khiển.
 Mạch hạ áp.
 Nguồn gồm: Pin và acqui
2.2 Các thành phần

Bảng 2.1: các thành phần linh kiện của hệ thống


Chip vi điều khiển ARM
STM32 F103C8T6 core ARM
32-bit CortexTM-M3 MCU.
Đơn giá: 56.000 VND

4
Module Bluetooth HC05

Đơn giá: 110.000 VND

Nút nhấn 4 chân, kích thước


4.5x4.5x5.5mm SMD
Đơn giá: 1/470 VND

Còi module buzzer 3.3V-5V


Đơn giá: 8.000 VND

LED 3mm
Đơn giá: 1/300 VND

Mạch hạ áp LM2569
Đơn giá: 15.000 VND

Nguồn Pin li-on 3.7V


Đơn giá: 68.000 VND

5
BJT NPN C1815
Đơn giá: 1/500 VND

Relay 3V10A SRD-03VDC-SI-


C với dòng qua cuộn dây là
150mA

Đơn giá: 7.000 VND

2.3 Mô tả hệ thống:
a) Hồ sơ đặc tả

Product specification

Hệ thống có:
 Khả năng kết nối ổn định giữa module bluetooth với vi điều khiển.
 Khả năng nhận đúng tín hiệu điều khiển từ chủ xe.
 Khả năng khóa hoặc mở cửa khi nhấn nút tương ứng trên module phát để
truyền tín hiệu điều khiển lấy đến module thu để đóng mở cho cửa tương ứng.
 Khả năng kiểm tra tính đúng của tín hiệu hồi tiếp khi đã hoàn thành tác vụ điều
khiển và biểu diễn lên led của module phát.

Engineering specification
Input:
‾ Nút nhấn điều khiển.
‾ Module Bluetooth.
‾ Nguồn (accqui, pin)
o Chìa 3.7V
o Khóa acqui 12V
Output:
‾ Còi thông báo
‾ Khóa cửa

6
‾ Led báo hiệu
‾ Module Bluetooth
User interface:
‾ Nút nhấn
Hardware specification

Hình 2.1. Sơ đồ khối chức năng của bộ phát

Hình 2.2. Sơ đồ khối chức năng của bộ phát

‾ Vi điều khiển: 2 ARM STM32 F103C8T được dùng để làm vi điều khiển, có
hỗ trợ kết nối Bluetooth, dòng I max = 150mA
‾ Module Bluetooth: 2 module bluuetooth HC05 cho mỗi vi điều khiển để phát
và thu tín hiệu.
Module phát
‾ Nút nhấn: 5 nút 4 chân, 5x5x5mm RK-32.

7
‾ Nguồn: chọn PIN Li-on 18650 3.7V 2000mAh dạng tròn, nhiệt độ làm việc <
80° C, tuổi thọ >1000/sạc-xả.
‾ Điện trở: điện trở để hạ áp nguồn pin khi được sạc đầy xuống 3.3V. Điện áp
2 đầu trờ là 4.2V – 3.3V bằng 0.9V, I max VDK là 150mA,
U 0.9
R= = =6.8 Ω.
I 150 m
‾ Led thông báo: 5 Led dùng để báo khi có kết nối giữa hai module bluetooth,
4 led còn lại thông báo tình khóa/mở mỗi cửa, led sáng cửa khóa và led tắt
cửa đóng.
Module thu:
‾ Nguồn: Ac-qui ô tô 12V.
‾ Khóa cửa: tay chốt có sẵn trên xe ô tô.
‾ Mạch hạ áp: Chọn mạch DC LM2596 để chuyển 12V DC từ PIN thành 3.3V
DC phù hợp cho bộ điều khiển khóa cửa.
‾ Còi: Chọn module buzzer 3.3V-5V dùng để báo hiệu khóa, mở xe.
‾ Transistor: 8 BJT NPN C1815 để khuếch đại công suất.
‾ Relay: 8 con 3V10A SRD-03VDC-SI-C với dòng qua cuộn dây là 150mA.
Software specification
Chức năng:
‾ Truyền tín hiệu mã hex từ module phát.
‾ Module thu, thu tín hiệu và giải mã.
‾ Theo mỗi tín hiệu khi nhấn nút, 4 cửa sẽ mở/đóng thông qua điều khiển của
relay và BJT.
‾ Điều khiển còi kêu mỗi lần đóng/mở cửa
‾ Kiểm tra tín hiệu hồi tiếp thông báo lên led.
Giải thuật điều khiển:
‾ Lập trình kết nối mỗi module Bluetooth với mỗi vi điều khiển bắt được tín hiệu
lẫn nhau mỗi lần nhấn nút.
‾ Mô phỏng bằng Proteus.
‾ Lập trình bằng ứng dụng STM32CubeIDE nạp chương trình xuống kit.
Test specification

8
Tiến trình kiểm tra:
‾ Kiểm tra hoạt động của nút nhấn: Nhấn nút nào đóng/mở cửa đó
‾ Kiểm tra hoạt động của còi: Kêu mỗi lần đóng/mở cửa xong để báo hiệu
‾ Kiểm tra hoạt động của led báo hiệu: sáng khi có tín hiệu hồi tiếp từ bộ thu trả
về để kiểm tra tình trạng của cửa tương ứng lên led tương ứng.
‾ Kiểm tra hoạt động của Bluetooth: Gửi chuỗi ký tự đóng/mở cho bộ thu giải
mã để điều khiển cửa.
b) Xác định 5 vấn đề cơ bản
Bảng 2.2: 5 vấn đề cơ bản rang buộc khi thiết kế hệ thống này
Constrains - Hoạt động ổn định 12-15h/sạc
- Bắt và truyền tín hiệu phải luôn ổn định giữa 2 module
phát và thu.
- Thông báo lên led module thu tín hiệu hồi tiếp.
- Module phát chịu được thời tiết ngoài trời chống ẩm,
chống nước.
Functions - Kết nối mỗi bluetooth với mỗi bộ điều khiển
- Bắt tín hiệu từ bộ điều khiển, giải mã tín hiệu điều
khiển
- Điều khiển khóa, mở, cửa xe theo tín hiệu điều khiên
khi nhấn nút tương ứng với mỗi cửa.
Real-time system - Hệ thống không yêu cầu xử lý thời gian thực.

Concurrent system - Hệ thống tự động kết nối Bluetooth giữa 2 bộ điều


khiển phát và thu.
- Bộ phát gửi tín hiệu mã hex đến cho bộ thu giải mã và
điều khiển đóng/mở cửa.
- Bộ thu trả về tín hiệu hổi tiếp thông báo cho bộ phát
sau khi đã hoàn thành tác vụ đóng/mở để bộ phát biểu
diễn tín hiệu lên led ứng với mỗi cửa.
Reactive system - Điều khiển chốt cửa theo tín hiệu của chìa khi nhấn
nút tương ứng cho mỗi cửa.

9
- Hệ thống hoạt động liên tục trong mỗi lần sạc.
c) Nguyên lý hoạt động:
Nguyên lý hoạt động hệ thống khóa cửa có sẵn trên ô tô:

Nguyên lý hoạt động của hệ thống nhúng điều khiển khóa cửa ô tô từ xa qua
bluetooth sử dụng ARM STM32 F103RCT6 như sau:

Hình 2.3. Sơ đồ nguyên lý của hệ thống chốt cửa có sẵn

Khi chủ xe nhấn khóa cửa (manual switch) dây trắng nối Mass, bộ điều khiển
sẽ nối 4 dây blue của từng chốt cửa vào nguồn dương, 4 dây green sẽ nối nguồn âm
làm khóa tất cả cửa. Khi khóa xong, dây white và dây black của chốt cửa trái tài xế
sẽ nối với nhau báo hiệu hoạt động khóa đã xong.

Muốn nhấn mở cửa, dây nâu nối Mass, bộ điều khiển nối ngược lại hai dây
blue and green làm mở cửa. Khi mở xong, dây brown và dây black của chốt cửa trái
tài xế sẽ nối với nhau báo hiệu hoạt động mở đã xong

Nguyên lý hoạt động của hệ thống:

 Lúc đầu cửa đang mở, người dùng có thể nhấn mở/đóng cửa có sẵn trên xe
hoặc nhấn nút của bộ phát để điều khiển cửa.
 LED1 sáng nếu đã kết nối bluetooth
 Khi nhấn KEY1, dựa vào trạng thái cửa đang đóng hoặc mở, vi điều khiển sẽ
gửi một chuỗi ký tự *OPEN1# hoặc *CLOSE1# sẽ được mã hóa thành số hex

10
qua module Bluetooth của bộ phát đến module Bluetooth của bộ thu và xử lý
chuỗi nhận. Sau đó, nếu chuỗi là *CLOSE1#, bộ thu sẽ đưa tín hiệu 3.3V ra
chân PA0 và dùng BJT khuếch đại áp để chân chung relay nối nguồn +12V,
làm chân blue kết nối +12V, chân green nối Mass  cửa lái đóng, còi sẽ kêu
để báo hiệu cửa đã đóng. Và nếu chuỗi là *OPEN1# , bộ thu sẽ đưa tín hiệu
3.3V ra chân PA1 và dùng BJT khuếch đại áp để chân chung relay nối nguồn
+12V, làm chân blue nối Mass, chân green nối +12V  cửa lái mở, còi sẽ
kêu để báo hiệu cửa đã mở. Khi nhiệm vụ đóng/mở cửa hoàn thành sẽ gửi tín
hiệu trả về cho bộ phát để xác nhận sự hoàn thành. Đồng thời LED1 nối chân
PA5 bộ phát sẽ sáng/tắt để biễu diễn tín hiệu đó. Tắt  cửa đã được mở, sáng
 cửa đã được đóng.

 Tương tự, đối với cửa phải tài xế, nhấn KEY2 gửi chuỗi ký tự *OPEN2#
hoặc *CLOSE2# đến bộ thu. Tùy vào mã chuỗi sẽ có thể đóng/mở.
 Tương tự, đối với cửa trái khách, nhấn KEY3 gửi chuỗi ký tự *OPEN3# hoặc
*CLOSE3# đến bộ thu. Tùy vào mã chuỗi sẽ có thể đóng/mở.
 Tương tự, đối với cửa phải khách, nhấn KEY4 gửi chuỗi ký tự *OPEN4#
hoặc *CLOSE4# đến bộ thu. Tùy vào mã chuỗi sẽ có thể đóng/mở.
 Tương tự, đối với tất cả cửa, nhấn KEY5 gửi chuỗi ký tự *OPEN5# hoặc
*CLOSE5# đến bộ thu. Tùy vào mã chuỗi sẽ có thể đóng/mở tất cả cửa.
 Bộ thu sẽ gửi chuỗi *OKxxxx# là tín hiệu trả về sau mỗi lần điều khiển với x
là trị số thông báo trạng thái của các cửa theo thứ tự là cửa trái tài xế, cửa
phải tài xế, cửa trái khách, cửa phải khách. x là 0 nếu cửa đó đang mở và 1
nếu cửa đang đóng. Dựa theo các giá trị x mà bộ phát sẽ điều khiển LED2
đến LED5 báo cho người dùng trạng thái đóng/mở của từng cửa.

11
Phần 3. Thiết kế chi tiết
3.1 Thiết kế phần cứng
a) Sơ đồ khối chi tiết:

Hình 2.4. Sơ đồ khối chi tiết của hệ thống này

12
b) Sơ đồ nguyên lý:

13
Bảng 2.3. các chân kết nối trong sơ đồ nguyên lý

Bộ phát Linh kiện STM32


KEY1 R330 PA0
KEY2 R330 PA1
KEY3 R330 PA2
KEY4 R330 PA3
KEY5 R330 PA4
LED1 R330 PA5
LED2 R330 PA6
LED3 R330 PA7
LED4 R330 PB0
LED5 R330 PB1
Module Bluetooth
PA9(TX)
(RX)
Module Bluetooth (TX) PA10(RX)
Chốt cửa trái tài xế Relay, BJT PA0, PA1
Chốt cửa phải tài xế Relay, BJT PA4, PA5
Chốt cửa trái khách Relay, BJT PA2, PA3
Chốt cửa phải khách Relay, BJT PA6, PA7

Tính toán linh kiện khuếch đại BJT:


I C =I relay =30 mA , chọn R B=10 kΩ , R E =0

V CC −V CE 3.3−0.7
I B= = =0.26 mA
RB+ RE 10000+ 0
I C 30
β= = =115
I B 0.26

 Chọn transistor c1815


3.2 Thiết kế phần mềm
a) Lựa chọn phần mềm và ngôn ngữ lập trình
- Lập trình trên phần mềm STM32CubeIDE.
- Ngôn ngữ lập trình: Ngôn ngữ C.

14
- Mô phỏng: Proteus
b) Lưu đồ giải thuật

Hình 2.5. Lưu đồ giải thuật cho chương trình của bộ phát

15
Hình 2.6. Lưu đồ giải thuật cho chương trình của bộ phát
3.3 Chương trình
a) Chương trình của bộ phát:

Chương trình chính:

/* USER CODE BEGIN PV */

uint8_t Data[50];
uint8_t i, k, ii, ctr;
uint8_t button1, button2, button3, button4, button5;
uint8_t door1, door2, door3, door4, doorall;
uint8_t open1[7]={"*OPEN1#"}, open2[7]={"*OPEN2#"},
open3[7]={"*OPEN3#"}, open4[7]={"*OPEN4#"}, openall[9]={"*OPEN5#"};

16
uint8_t close1[8] = {"*CLOSE1#"}, close2[8] = {"*CLOSE2#"}, close3[8] =
{"*CLOSE3#"}, close4[8] = {"*CLOSE4#"}, closeall[8] = {"*CLOSE5#"};
/* USER CODE END PV */
/* USER CODE BEGIN 0 */
void rs_uart(){
for(k=0;k<i;k++)
Data[k]=0;
i=0;
ii=0;
}
/* USER CODE END 0 */
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART1_UART_Init();
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, 1);
HAL_UART_Receive_IT(&huart1, &Data[0], 1);
while (1)
{
if (button1 == 1) {
if (door1 == 0)
HAL_UART_Transmit(&huart1, &close1[0], 8, 100);
else
HAL_UART_Transmit(&huart1, &open1[0], 7, 100);
button1 = 0;
}
else if (button2 == 1) {
if (door2 == 0)
HAL_UART_Transmit(&huart1, &close2[0], 8, 100);
else
HAL_UART_Transmit(&huart1, &open2[0], 7, 100);

17
button2 = 0;
}
else if (button3 == 1) {
if (door3 == 0)
HAL_UART_Transmit(&huart1, &close3[0], 8, 100);
else
HAL_UART_Transmit(&huart1, &open3[0], 7, 100);
button3 = 0;
}
else if (button4 == 1) {
if (door4 == 0)
HAL_UART_Transmit(&huart1, &close4[0], 8, 100);
else
HAL_UART_Transmit(&huart1, &open4[0], 7, 100);
button4 = 0;
}
else if (button5 == 1) {
if (doorall == 0)
HAL_UART_Transmit(&huart1, &closeall[0], 8, 100);
else
HAL_UART_Transmit(&huart1, &openall[0], 7, 100);
button5 = 0;
}
ii = i;
HAL_Delay(10);
if (ii == i && i > 0) {
if (Data[0] == '*' && Data[1] == 'O' && Data[2] == 'K' &&
Data[7] == '#') {
door1 = Data[3] - 48;
door2 = Data[4] - 48;
door3 = Data[5] - 48;
door4 = Data[6] - 48;
if (door1 == 0 && door2 == 0 && door3 == 0 &&
door4 == 0)

18
doorall = 0;
else if (door1 == 1 && door2 == 1 && door3 == 1 &&
door4 == 1)
doorall = 1;
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, door1);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, door2);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, door3);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, door4);
}
rs_uart();
}
}}
Chương trình ngắt:
extern uint8_t Data[50],i,ctr;
extern uint8_t button1, button2, button3, button4, button5;
void EXTI0_IRQHandler(void)
{
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);
button1=1;
}
void EXTI1_IRQHandler(void)
{
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_1);
button2=1;
}
void EXTI2_IRQHandler(void)
{
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_2);
button3=1;
}
void EXTI3_IRQHandler(void)

19
{
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);
button4=1;
}
void EXTI4_IRQHandler(void)
{
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_4);
button5=1;
}
void USART1_IRQHandler(void)
{
HAL_UART_IRQHandler(&huart1);
if (i == 0 & ctr != 0) {
Data[0] = Data[ctr];
Data[ctr] = 0;
}
i++;
ctr = i;
HAL_UART_Receive_IT(&huart1, &Data[i], 1);
}

b) Chương trình của bộ thu:


Chương trình chính:
uint8_t Data[50];
uint8_t i, k, ii, ctr;
uint8_t door1, door2, door3, door4;
uint8_t end_op, end_cl, open, close;
uint8_t ok[3]={"*OK"};
void rs_uart() {

20
for (k = 0; k < i; k++)
Data[k] = 0;
i = 0;
ii = 0;
}
void cl_all(){
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, 1);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, 1);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, 1);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, 1);
while (end_cl == 0);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, 0);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, 0);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, 0);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, 0);
door1 = 1;
door2 = 1;
door3 = 1;
door4 = 1;
}
void op_all(){
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, 1);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 1);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, 1);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, 1);
while (end_op == 0);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, 0);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 0);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, 0);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, 0);

21
door1 = 0;
door2 = 0;
door3 = 0;
door4 = 0;
}
void feedback(){
uint8_t str[4]={door1+48,door2+48,door3+48,door4+48};
HAL_UART_Transmit(&huart1, &ok[0], 3, 100);
HAL_UART_Transmit(&huart1, &str[0], 4, 100);
HAL_UART_Transmit(&huart1, "#", 1, 100);
}
void buzzer_op(){
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, 1);
HAL_Delay(300);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, 0);
}
void buzzer_cl(){
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, 1);
HAL_Delay(50);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, 0);
}
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART1_UART_Init();
HAL_UART_Receive_IT(&huart1, &Data[0], 1);
while (1)
{

22
ii = i;
HAL_Delay(10);
if (ii == i & i > 0) {
if (Data[0] == '*' && Data[1] == 'C' && Data[2] == 'L' &&
Data[3] == 'O' && Data[4] == 'S' && Data[5] == 'E' && Data[7] == '#')
{
if (Data[6] == '1' && door1 == 0) {
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, 1);
while (end_cl == 0);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, 0);
door1 = 1;
} else if (Data[6] == '2' && door2 == 0) {
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, 1);
HAL_Delay(100);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, 0);
door2 = 1;
} else if (Data[6] == '3' && door3 == 0) {
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, 1);
HAL_Delay(100);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, 0);
door3 = 1;
} else if (Data[6] == '4' && door4 == 0) {
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, 1);
HAL_Delay(100);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, 0);
door4 = 1;
} else if (Data[6] == '5' && (door1 == 0 || door2 == 0 ||
door3 == 0 || door4 == 0))
cl_all();
else{
rs_uart();

23
continue;
}
rs_uart();
feedback();
buzzer_cl();
}
else if (Data[0] == '*' && Data[1] == 'O' && Data[2] == 'P'
&& Data[3] == 'E' && Data[4] == 'N' && Data[6] == '#')
{
if (Data[5] == '1' && door1 == 1) {
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, 1);
while (end_op == 0);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, 0);
door1 = 0;
} else if (Data[5] == '2' && door2 == 1) {
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, 1);
HAL_Delay(100);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, 0);
door2 = 0;
} else if (Data[5] == '3' && door3 == 1) {
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 1);
HAL_Delay(100);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 0);
door3 = 0;
} else if (Data[5] == '4' && door4 == 1) {
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, 1);
HAL_Delay(100);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, 0);
door4 = 0;
} else if (Data[5] == '5' && (door1 == 1 || door2 == 1 ||
door3 == 1 || door4 == 1))

24
op_all();
else{
rs_uart();
continue;
}
rs_uart();
feedback();
buzzer_op();
}
}
if (close == 1) {
cl_all();
feedback();
buzzer_cl();
close = 0;
} else if (open == 1) {
op_all();
feedback();
buzzer_op();
open = 0;
}
}
}
Chương trình ngắt:
extern uint8_t Data[50],i,ctr;
extern uint8_t end_op, end_cl, open, close;
void EXTI0_IRQHandler(void)
{
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);
end_cl=1;

25
end_op=0;
}
void EXTI1_IRQHandler(void)
{
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_1);
end_op=1;
end_cl=0;
}
void EXTI2_IRQHandler(void)
{
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_2);
close=1;
open=0;
}
void EXTI3_IRQHandler(void)
{
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);
open=1;
close=0;
}
void USART1_IRQHandler(void)
{
HAL_UART_IRQHandler(&huart1);
if (i == 0 & ctr != 0) {
Data[0] = Data[ctr];
Data[ctr] = 0;
}
i++;
ctr = i;
HAL_UART_Receive_IT(&huart1, &Data[i], 1); }

26
3.4 Kết quả mô phỏng
a) Bản vẽ mô phỏng bộ phát

27
b) Bản vẽ mô phỏng bộ thu:

Video mô phỏng hệ thống:


https://youtu.be/Y7hhIxGZQ80

28
Phần 4. Đánh giá hệ thống
Hệ thống khi được chạy mô phỏng đã đáp ứng đầy đủ với yêu cầu được đặt
ra. Hệ thống đã truyền và nhận tín hiệu ổn định giữa hai module bluetooth, điều
khiển được đóng mở cửa xe khi nhấn nút tương ứng cho mỗi cửa. Còi ở module
phát sẽ kêu để báo hiệu cửa đã được đóng hay mở chưa cho chủ xe. Đồng thời, hệ
thống cũng đã kiểm tra được tình trạng của xe mỗi lần đóng/mở và thông báo lên
LED của module phát cho chủ xe biết được chắc chắn của xe lúc đó. Tuy nhiên hệ
thống vẫn còn những nhược điểm đáng kể như:

- Vẫn chưa thiết kế được vỏ cho module phát để nó có hình dạng là một chìa
khóa xe hơi điều khiển từ xa.
- Nếu có thiết bị khác chủ động kết nối với bộ thu thì bộ phát sẽ không thể kết
nối với bộ thu nữa, lúc này nếu có tín hiệu điều khiển từ bộ phát gửi đến thì
bộ thu không thể bắt được tín hiệu này để điều khiển đóng mở cửa nữa.

29
TÀI LIỆU THAM KHẢO:
[1] https://pdf1.alldatasheet.com/datasheet-pdf/view/201596/
STMICROELECTRONICS/STM32F103C8T6.html
[2] https://components101.com/sites/default/files/component_datasheet/HC-
05%20Datasheet.pdf
[3] https://dientutuyetnga.com/products/nut-nhan-4-5x4-5x5-5mm-smd
[4] https://www.jshnbuzzer.com/Product/3VDC-85dB-Active-Buzzer.html
[5] https://pdf1.alldatasheet.com/datasheet-pdf/view/313090/HB/515PWO4C.html
[6] https://datasheet.octopart.com/LM2596S-ADJ-National-Semiconductor-
datasheet-6038.pdf
[7] https://www.alibaba.com/product-detail/Authentic-3-7V-Li-ion-
Rechargeable_1600413941044.html?
spm=a2700.7735675.0.0.75906a8cCtm6Lz&s=p
[8] http://j5d2v7d7.stackpathcdn.com/wp-content/uploads/2018/10/YL303H-S-
12VDC-1Z-datasheet-relay.pdf
[9] https://pdf1.alldatasheet.com/datasheet-pdf/view/30084/TOSHIBA/
C1815.html
[10] https://www.youtube.com/watch?v=hdUzP3nRtu0

30

You might also like