NÚT CẢM BIẾN STM32F103C8T6 GIAO TIẾP QUA HC05NÚT CẢM BIẾN STM32F103C8T6 GIAO TIẾP QUA HC05NÚT CẢM BIẾN STM32F103C8T6 GIAO TIẾP QUA HC05NÚT CẢM BIẾN STM32F103C8T6 GIAO TIẾP QUA HC05NÚT CẢM BIẾN STM32F103C8T6 GIAO TIẾP QUA HC05NÚT CẢM BIẾN STM32F103C8T6 GIAO TIẾP QUA HC05NÚT CẢM BIẾN STM32F103C8T6 GIAO TIẾP QUA HC05NÚT CẢM BIẾN STM32F103C8T6 GIAO TIẾP QUA HC05NÚT CẢM BIẾN STM32F103C8T6 GIAO TIẾP QUA HC05NÚT CẢM BIẾN STM32F103C8T6 GIAO TIẾP QUA HC05
HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG KHOA KỸ THUẬT ĐIÊN TỬ TIỂU LUẬN MÔN MẠNG CẢM BIẾN ĐỀ TÀI: NÚT CẢM BIẾN STM32F103C8T6 GIAO TIẾP QUA HC-05 Giảng viên: Trần Thị Thanh Thủy Tên : Đặng Quang Vinh MSV: B20DCDT222 Hà Nội – Năm 2023 LỜI CAM ĐOAN Tôi cam đoan tiểu luận “NÚT CẢM BIẾN STM32F103C8T6 GIAO TIẾP QUA HC-05” cơng trình nghiên cứu Tôi cam đoan số liệu, kết nêu tiểu luận trung thực chưa cơng bố cơng trình khác Khơng có sản phẩm/ nghiên cứu người khác sử dụng tiểu luận mà không trích dẫn quy định Hà Nội , Ngày 16 tháng 12 năm 2023 Vinh Đặng Quang Vinh LỜI CẢM ƠN Trong suốt trình học tập nghiên cứu, ngồi nỗ lực thân , tơi nhận hướng dẫn nhiệt tình, quý báu q giảng viên Với lịng kính trọng biết ơn sâu sắc, xin gửi lời cảm ơn chân thành đến cô ThS Trần Thị Thanh Thủy tạo điều kiện thuận lợi giúp tơi hồn thành tiểu luận Mặc dù cố gắng thời gian kinh nghiệm cịn nhiều hạn chế nên khơng thể tránh khỏi sai sót Tơi mong nhận ý kiến đóng góp quý giảng viên để phát triển nghiên cứu tốt Xin chân thành cảm ơn! Hà Nội, ngày 16 tháng 12 năm 2023 Vinh Đặng Quang Vinh Danh mục bảng Bảng : Thông số vi xử lý Bảng : Thông số kĩ thuật module HC-05 12 Danh mục hình Hình : Vi xử lý stm32f103c8t6 Hình : Sơ đồ chân kit stm32f103c8t6 bluepill 11 Hình : Module HC-05 12 Hình : Sơ đồ chân module HC-05 13 Hình : Sơ đồ kết nối chân HC05 tới vi xử lý 14 Hình : Giao thức UART 15 Hình : Các bit liệu gửi 15 Hình : Nút cảm biến 19 Hình : Hệ thống mạng cảm biến 20 Hình 10 : IC 7805 pin 9V 25 MỤC LỤC CHƯƠNG 1: GIỚI THIỆU VI XỬ LÝ VÀ MODULE HC-05 Vi xử lí stm32f103c8t6 .8 1.1 Giới thiệu vi xử lý stm32f103c8t6 1.2 Thông số kỹ thuật sơ đồ chân 1.3 Ứng dụng thực tế 11 Module bluetooth HC-05 12 2.1 Giới thiệu module bluetooth HC-05 12 2.2 Thông số kĩ thuật sơ đồ chân module HC-05 .12 2.3 Tính giao tiếp bluetooth 13 2.4 Ứng dụng thực tế 14 CHƯƠNG 2: ỨNG DỤNG CHO NÚT CẢM BIẾN TRONG HỆ THỐNG MẠNG CẢM BIẾN 14 Kết nối vật lý 14 Mơ hình truyền thông stm32f103c8t6 qua HC05 15 2.1 Giao thức UART 15 2.2 UART stm32f103c8t6 .16 2.3 Cấu hình UART hồn thiện cho stm32f103c8t6 thông qua keil C 16 Xây dựng nút hệ thống mạng cảm biến 19 CHƯƠNG : HIỆU NĂNG VÀ ỨNG DỤNG .25 Hiệu nút cảm biến stm32f103c8t6 giao tiếp qua HC-05 25 1.1 Hiệu sử dụng lượng 25 1.2 Tính ổn định nút 25 Ứng dụng 26 Kết Luận 26 Tài liệu tham khảo 27 PHẦN MỞ ĐẦU Trong thời đại nay, mô hình hệ thống mạng cảm biến sử dụng phát triển vơ rộng rãi Theo đó, nút cảm biến nâng cấp phần cứng phần mềm, từ sử dụng chip xử lý stm32F103c8t6 kết hợp với module HC-05 nút hệ thống mạng cảm biến CHƯƠNG 1: GIỚI THIỆU VI XỬ LÝ VÀ MODULE HC-05 Vi xử lí stm32f103c8t6 1.1 Giới thiệu vi xử lý stm32f103c8t6 - Stm32f103c8t6 dòng vi xử lý thuộc họ sản phẩm stm32 nhà sản xuất STMicroelectronics Đây dòng vi xử lý ARM Cortex-M3, với tốc độ xử lý cao nhiều tính tích hợp Dịng vi xử lý thường sử dụng ứng dụng nhúng, điều khiển động cơ, thiết bị IoT, nhiều ứng dụng khác 1.2 Thông số kỹ thuật sơ đồ chân 1.2.1 Thông số kĩ thuật vi xử lý Bảng 1: Thông số vi xử lý Đặc tính thiết bị ngoại vi Kiến trúc vi mạch Số lượng chân SRAM Debug đường truyền liệu nối tiếp Khả dụng RISC 47 20 kilobytes Bộ nhớ Flash 64/128 kilobytes Tốc độ CPU 72MHz(tối đa) Cổng kết nối (USB) Micro ADC Số hẹn Giao tiếp truyền thông Module USB Có I2C SPI Nhiệt độ hoạt động -40C-105C Dòng điện sink/source 6mA Module USART Điện áp hoạt động 2.0V-3.6V Bộ tạo dao động bên 4-16 MHz Bộ hẹn watchdog(WWDT) Debug JTAG Có Hình : Vi xử lý stm32f103c8t6 - Kiểm tra theo chu kỳ (CRC) để đảm bảo độ xác liệu - Có ba tùy chọn boot khác nhau(thông qua flash nhớ hệ thống SRAM) để reset nhớ flash qua USART1 - timer khác để có tốc độ lấy mẫu giá trị analog khác - Một giao thức nối tiếp JTAG(Joint Test Action Group) để gỡ lỗi kiểm tra vi điều khiển - Xung nhịp PLL để tạo ổn định cách xử lý tín hiệu đầu đầu vào - Bộ timer Watchdog để quan sát lỗi trình nhận truyền tín hiệu 1.2.2 Sơ đồ chân stm32f103c8t6 bluepill chức - Chế độ ADC : + ADC 12 bit với kênh cho + Có chế độ lấy mẫu kênh nhiều kênh - DMA: + kênh DMA + Hỗ trợ DMA cho ADC,UART,I2C,SPI - Timer: + timer 16 bit hỗ trợ mode input capture/ output compare/ PWM + timer 16 bit hỗ trợ để điều khiển động với mode bảo vệ ngắt Input, dead-time + watchdog timer để bảo vệ kiểm tra lỗi + systick timer 24 bit đếm xuống cho hàm Delay - kênh giao tiếp : + I2C + UART + SPI + CAN + USB 2.0 full-speed interface 10 2.2.2 Sơ đồ chân - Module bao gồm chân : + RXD : Chân nhận liệu, kết nối với TX(Transmit) thết bị mà module nhận liệu + TXD : Chân truyền liệu, kết nối với RX(Receive) thiết bị mà module gửi liệu + Vcc : Nguồn cung cấp điện áp + Gnd : Chân kết nối với đất + State : Chân trạng thái, cung cấp trạng thái hoạt động module + En : Chân kích hoạt, chân khơng kết nối với nguồn module chế độ tiết kiệm lượng Hình :Sơ đồ chân module HC-05 2.3 Tính giao tiếp bluetooth - Module HC-05 dùng để thiết lập kết nối serial thiết bị sóng bluetooth Điểm đặc biệt module hoạt động chế độ: Master Slave + Ở chế độ Slave: cần thiết lập kết nối từ smartphone, laptop, usb bluetooth để dị tìm module sau pair với mã Pin 1234 Sau pair thành cơng, bạn có cổng serial từ xa hoạt động baud rate 9600 13 + Ở chế độ Master: module tự động dị tìm thiết bị bluetooth khác tiến hành chủ động pair mà khơng cần thiết lập từ máy tính smartphone 2.4 Ứng dụng thực tế - HC-05 thiết bị Bluetooth sử dụng giao thức truyền thông UART với khả giao tiếp ổn định Từ module ứng dụng nhiều dự án khác có yêu cầu sử dụng giao tiếp không giây: + Sử dụng cho hệ thống điện tử cho nhà thông minh + Ứng dụng cho sản phẩm điều khiển từ xa mơ hình robot + Có thể sử dụng làm phương thức giao tiếp nút cảm biến tới sink nút hệ thống mạng cảm biến CHƯƠNG 2: ỨNG DỤNG CHO NÚT CẢM BIẾN TRONG HỆ THỐNG MẠNG CẢM BIẾN Kết nối vật lý - Kết nối chân HC-05 tới vi xử lý stm32f103c8t6 : + Chân VCC - 3.3V(Vi xử lý) + Chân GND -GND(Vi xử lý) + Chân TXD - RXD(Vi xử lý) + Chân RXD - TXD(Vi sử lý) Hình : Sơ đồ kết nối chân HC05 tới vi xử lý 14 Mơ hình truyền thơng stm32f103c8t6 qua HC05 2.1 Giao thức UART - UART (Universal Asynchronous Receiver/Transmiter) chuẩn giao tiếp không đồng cho MCU thiết bị ngoại vi - Chuẩn UART chuẩn giao tiếp điểm điểm, nghĩa mạng có hai thiết bị đóng vai trị transmiter receiver Hình : Giao thức UART - Đây loại giao thức truyền thông không đồng bộ, nghĩa khơng có xung clock, thiết bị hiểu cấu hình giống - UART truyền thông song công(Full duplex) nghĩa thời điểm truyền nhận đồng thời Trong quan trọng baud rate(tốc độ baud) khoảng thời gian dành cho bit truyền Phải cấu hình giống gửi nhận Hình :Các bit liệu gửi - Định dạng gói tin: + Start-Bit: gọi bit đồng hóa đặt trước liệu thực tế Khi chế độ “Nhàn rỗi” đường tín hiệu đưa lên mức cao(1) Để bắt đầu 15 truyền liệu, đường liệu kéo từ mức điện áp cao(1) xuống mức điện áp thấp(0), báo cho bên nhận(receive) biết truyền liệu + Stop-Bit: đặt phần cuối gói liệu Thông thường, bit dài bit thường sử dụng bit Sau truyền xong liệu, đường liệu giữ mức cao tương bit + Parity Bit: Bit chẵn lẻ cho phép người nhận đảm bảo liệu thu thập có hay khơng Đây hệ thống kiểm tra lỗi cấp thấp + Data frame: Các bit liệu bao gồm liệu thực truyền từ người gửi đến người nhận Độ dài khung liệu nằm khoảng Nếu bit chẵn lẻ khơng sử dụng chiều dài khung liệu dài bit Bit LSB truyền trước 2.2 UART stm32f103c8t6 - Stm32f103c8t6 có kênh UART tương ứng với chân : + UART1: TX -PA9, RX -PA10 + UART2: TX -PA2, RX -PA3 + UART3: TX -PB10, RX -PB11 - Trong kênh UART2 thuộc ghi APB1Periph(Advanced Peripheral Bus ) kênh UART1 thuộc ghi APB2Periph - Cấu hình UART stm32f103c8t6 bao gồm : + Baud rate(tốc độ Baud): tốc độ truyền liệu qua kênh UART, đo số bits liệu truyền giây Cần cấu hình giống nhận truyền + Định dạng khung(Frame Format): đặt chiều dài khung liệu + Chế độ hoạt động : nhận gửi + Flow control: Quyết định cách kiểm soát luồng liệu thiết bị truyền nhận 2.3 Cấu hình UART hồn thiện cho stm32f103c8t6 thơng qua keil C RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | 16 RCC_APB2Periph_GPIOA, ENABLE); GPIO_Inits.GPIO_Pin = GPIO_Pin_9; // TX GPIO_Inits.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Inits.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_Inits); GPIO_Inits.GPIO_Pin = GPIO_Pin_10; // RX GPIO_Inits.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_Inits); USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_InitStructure.USART_HardwareFlowControl= USART_HardwareFlowControl_None; USART_Init(USART1, &USART_InitStructure); USART_Cmd(USART1, ENABLE); void USART_SendString(USART_TypeDef* USARTx, char* str) { while (*str) { USART_SendData(USARTx, *str++); while (USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET); } } 17 - Để sử dụng UART vi xử lý stm32f103c8t6 , cần cấp xung clock cho USART1 ghi APB2Periph GPIO A cho cấu hình chân TX RX phục vụ cho UART - Với chân TX (Chân truyền liệu) cấu hình chế độ AF_PP (Alternate Function _ Push Pull) , chức kéo đẩy kiểu đầu chân GPIO chân đẩy dịng điện lên mức cao kéo xuống mức thấp - Với chân RX(Chân nhận liệu) cấu hình chế độ IN_FLOATING(Chế độ vào thả nổi), chế độ vào khơng có điện trở kéo lên kéo xuống kích hoạt , có nghĩa chân “nổi” - Thực cấu hình cho UART : + Cấu hình tốc độ baud (BaudRate) 9600 bit giây + Chọn chiều dài từ (wordlength) bit + Chọn bit dừng (StopBits) + Không sử dụng bit kiểm tra chẵn lẻ (parity bit) + Cấu hình cho UART hoạt động chế độ nhận (RX) truyền (TX) + Khơng sử dụng kiểm sốt luồng (HardwardFlowControl) + Áp dụng cấu hình thiết lập cho USART1 + Bật USART1 để bắt đầu hoạt động - Sử dụng hàm UART_SendString để gửi chuỗi liệu đi, đảm bảo toàn chuỗi gửi qua USART + Hàm void USART_SendString(USART_TypeDef* USARTx, char* str) nhận vào hai đối số “USARTx” trỏ đến cấu trúc USART “str” trỏ đến chuỗi kí tự cần gửi + While(*str): Vịng lặp chạy kết thúc chuỗi kí tự + USART_SendData(USARTx,*str++): Gửi kí tự đến USART thơng qua cổng truyền liệu USART Sau đó, trỏ ‘str’ tăng lên để trỏ đến kí tự chuỗi 18 + while (USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET): Đây vịng lặp chờ, tiếp tục chờ cờ TXE(Transmit Data Register Empty) set, có nghĩa truyền USART sẵn sàng để gửi kí tự Xây dựng nút hệ thống mạng cảm biến - Sử dụng cấu hình cho UART để thực giao tiếp gửi liệu cho stm32f103c8t6 kết hợp với loại cảm biến ( cảm biến nhiệt độ LM35) gửi tín hiệu thu nhận cho stm32f103c8t6 nút cảm biến hệ thống mạng cảm biến đo nhiệt độ mơi trường Hình : Nút cảm biến - Sau liệu thu thập, vi xử lý stm32f103c8t6 xử lý tín hiệu ADC(chuyển đổi tín hiệu analog sang digital) tiến hành gửi liệu thông qua HC05 tới với trạm xử lý hay sink nút, - Với tùy loại cảm biến gửi dạng tín hiệu khác nhau, xử lý dạng tín hiệu khác để đưa thơng tin - Kết hợp với nhiều nút tương ứng sử dụng loại cảm biến khác để thu thập nhiều loại liệu từ môi trường Xây dựng hệ thống mạng cảm biến không dây thu thập liệu từ môi trường 19 Hình : Hệ thống mạng cảm biến - Có thể kết hợp với hiển thị hình LCD16x2 loại hình khác để trực tiếp hiển thị thông tin thu nút cảm biến để kiểm tra xem thơng tin truyền có sai khác so với thơng tin thực - Chương trình đầy đủ cho nút cảm biến sử dụng stm32f103c8t6 thu thập liệu nhiệt độ từ LM35 gửi thơng qua module HC-05 Có thể áp dụng cho nút cảm biến tương tự #include "stm32f10x.h" #include #include "I2C_LCD.h" #include "delayac.h" #include "stdio.h" #include "stm32f10x_ADC.h" USART_InitTypeDef USART_InitStructure; GPIO_InitTypeDef GPIO_Inits; uint32_t adcValue; int nhietdo; void ADC_Config(void); 20 void GPIO_Configuration(void); void USART_Configuration(void); void USART_SendString(USART_TypeDef* USARTx, char* str); char cambien[10]; int main(void) { SystemInit(); GPIO_Configuration(); USART_Configuration(); I2CLCD_Init(); ADC_Config(); char str[16],lcd_str[16]; while (1) { adcValue= ADC_GetConversionValue(ADC1); adcValue/=100; nhietdo=(int)(adcValue*3.3*100)/4096; snprintf(cambien,sizeof(cambien),"%d\n\r",nhietdo); USART_SendString(USART1,cambien); delay_us(10000); LCD_Gotoxy(0, 0); snprintf(lcd_str, sizeof(lcd_str), "Sensor: %d", nhietdo); LCD_Puts(lcd_str); delay_us(1000); } } 21 void GPIO_Configuration(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_Inits.GPIO_Pin = GPIO_Pin_13 ; GPIO_Inits.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Inits.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_Inits); GPIO_Inits.GPIO_Pin = GPIO_Pin_0 ; GPIO_Inits.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOB, &GPIO_Inits); } void USART_Configuration(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE); GPIO_Inits.GPIO_Pin = GPIO_Pin_9; // TX GPIO_Inits.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Inits.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_Inits); GPIO_Inits.GPIO_Pin = GPIO_Pin_10; // RX GPIO_Inits.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_Inits); USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; 22 USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_Init(USART1, &USART_InitStructure); USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); USART_Cmd(USART1, ENABLE); } void USART_SendString(USART_TypeDef* USARTx, char* str) { while (*str) { USART_SendData(USARTx, *str++); while (USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET); } } void ADC_Config(void) // Cấu hình ADC { GPIO_InitTypeDef GPIO_Inits; ADC_InitTypeDef ADC_Inits; RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1|RCC_APB2Periph_G PIOA ,ENABLE); GPIO_Inits.GPIO_Pin=GPIO_Pin_0; GPIO_Inits.GPIO_Mode=GPIO_Mode_AIN; GPIO_Init(GPIOA,&GPIO_Inits); GPIO_Inits.GPIO_Pin=GPIO_Pin_1; 23 GPIO_Inits.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_Inits.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_Inits); ADC_Inits.ADC_Mode=ADC_Mode_Independent; ADC_Inits.ADC_ScanConvMode=DISABLE; ADC_Inits.ADC_ContinuousConvMode=ENABLE; ADC_Inits.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None; ADC_Inits.ADC_DataAlign=ADC_DataAlign_Right; ADC_Inits.ADC_NbrOfChannel=1; ADC_Init(ADC1,&ADC_Inits); ADC_RegularChannelConfig(ADC1,ADC_Channel_0,1,ADC_SampleTime_4 1Cycles5); ADC_Cmd(ADC1,ENABLE); ADC_DMACmd(ADC1,ENABLE); ADC_ResetCalibration(ADC1); while(ADC_GetResetCalibrationStatus(ADC1)); ADC_StartCalibration(ADC1); while(ADC_GetCalibrationStatus(ADC1)); ADC_SoftwareStartConvCmd(ADC1,ENABLE); } 24 CHƯƠNG : HIỆU NĂNG VÀ ỨNG DỤNG Hiệu nút cảm biến stm32f103c8t6 giao tiếp qua HC-05 1.1 Hiệu sử dụng lượng - Nguồn cung cấp lượng cho vi xử lý 2.0-3.3V LCD 5V nên nút sử dụng loại nguồn pin 9V thông qua qua IC chuyển đổi 7805 để giới hạn điện áp Hình 10 : IC 7805 pin 9V - Thời lượng sử dụng từ 3-4 ngày phụ thuộc vào thời gian lần thu thập gửi liệu không sử dụng LCD để hiển thị - Có thể sử dụng nguồn từ mạng lưới để cấp nguồn cho nút để tối ưu thời gian sử dụng, cấp nguồn ổn định thay pin định kì 1.2 Tính ổn định nút - Nút cảm biến đưa vào thực nghiệm cho gửi liệu đến điện thoại với tính ổn định cao Dữ liệu thu thập từ cảm biến gửi lên điện thoại có sai số khoảng từ 2-3 độ - Sử dụng kết nối bluetooth mang đến tính ổn định cao cho nút gửi liệu đến sink nút - Nếu sử dụng nhiều nút cảm biến lúc thay đổi thời gian gửi liệu tới sink nút để tránh gây xung đột liệu nút 25 Ứng dụng - Nút cảm biến sử dụng stm32f103c8t6 truyền thơng qua HC-05 ứng dụng cho nhiều hệ thống mạng cảm biến địi hỏi tính ổn định cao - Sử dụng cho điều khiển từ xa hệ thống yêu cầu tác vụ liên quan - Hệ thống giám sát báo động : Cho trung tâm an ninh hay nhà riêng , khu vực yêu cầu giám sát, đảm bảo an ninh khu vực - Ứng dụng y tế : Lắp phòng sử dụng loại cảm biến y tế gửi đến trạm xử lý Kết Luận - Nút sử dụng stm32f103 giao tiếp qua HC05 với tính ổn định cao , khả sử dụng lượng tốt, chi phí giá thành thấp phù hợp với hệ thống mạng cảm biến vừa nhỏ - Nút cảm biến đánh giá cao thực nghiệm đáp ứng yêu cầu nút cảm biến cịn nhiều hạn chế sử dụng ngồi thực tế cho hệ thống lớn: + Chất lượng linh kiện chưa tốt gây sai số hay hao hụt liệu phải sử dụng thời gian dài + Tuy khả giao tiếp HC-05 lên đến 100m thực tế lại thấp nhiều gây bất tiện để áp dụng cho hệ thống lớn + HC-05 lại chưa tương thích với dịng điện thoại IOS nên chưa thể kết nối đến với điện thoại sử dụng hệ điều hành mà giao tiếp với dịng android điều gây trở ngại không nhỏ với người sử dụng - Các nhược điểm khắc phục cách thay sử dụng loại linh kiện chất lượng hơn, tối ưu 26 Tài liệu tham khảo https://nshopvn.com/product/module-thu-phat-bluetooth-hc-05/ https://mecsu.vn/ho-tro-ky-thuat/module-bluetooth-hc05.8wL https://www.dientudat.com/module-bluetooth-hc-05 https://deviot.vn/tutorials/stm32f1.23165131/gioi-thieu-vestm32f103c8t6.10428544 https://www.st.com/en/microcontrollers-microprocessors/stm32f103c8.html https://mecsu.vn/ho-tro-ky-thuat/bo-mach-vi-dieu-khien-stm32f103c8t6bluepill.goy https://www.st.com/resource/en/datasheet/stm32f103c8.pdf 27