Professional Documents
Culture Documents
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 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.
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.
Đề 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ả:
3
Mô tả hệ thống:
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
4
Module Bluetooth HC05
LED 3mm
Đơn giá: 1/300 VND
Mạch hạ áp LM2569
Đơn giá: 15.000 VND
5
BJT NPN C1815
Đơn giá: 1/500 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
‾ 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.
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:
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
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:
12
b) Sơ đồ nguyên lý:
13
Bảng 2.3. các chân kết nối trong sơ đồ nguyên lý
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
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:
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);
}
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:
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