HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG
KHOA KỸ THUẬT ĐIÊN TỬ 1
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
1
LỜI CAM ĐOAN
Tôi cam đoan rằng tiểu luận “NÚT CẢM BIẾN STM32F103C8T6 GIAO TIẾP
QUA HC-05” là cơng trình nghiên cứu của tôi. Tôi cam đoan số liệu, kết quả nêu
trong tiểu luận là trung thực và chưa từng được ai cơng bố trong bất kì cơng trình nào
khác.
Khơng có sản phẩm/ nghiên cứu nào của người khác được sử dụng trong tiểu luận
này mà khơng được trích dẫn đúng quy định.
Hà Nội , Ngày 16 tháng 12 năm 2023
Vinh
Đặng Quang Vinh
2
LỜI CẢM ƠN
Trong suốt quá trình học tập và nghiên cứu, ngồi nỗ lực của bản thân , tơi đã nhận
được sự hướng dẫn nhiệt tình, quý báu của quý giảng viên. Với lịng kính trọng và
biết ơn sâu sắc, tôi xin gửi lời cảm ơn chân thành đến cô ThS. Trần Thị Thanh Thủy đã
tạo mọi đ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 nhưng do thời gian và kinh nghiệm còn nhiều hạn chế nên khơng
thể tránh khỏi những sai sót. Tơi mong có thể nhận được ý kiến đóng góp của quý
giảng viên để có thể phát triển nghiên cứu tốt hơn.
Xin chân thành cảm ơn!
Hà Nội, ngày 16 tháng 12 năm 2023
Vinh
Đặng Quang Vinh
3
Danh mục bảng
Bảng 1 : Thông số của vi xử lý
Bảng 2 : Thông số kĩ thuật của module HC-05
8
12
4
Danh mục hình
Hình 1 : Vi xử lý stm32f103c8t6
9
Hình 2 : Sơ đồ chân của kit stm32f103c8t6 bluepill
11
Hình 3 : Module HC-05
12
Hình 4 : Sơ đồ chân của module HC-05
13
Hình 5 : Sơ đồ kết nối chân HC05 tới vi xử lý
14
Hình 6 : Giao thức UART
15
Hình 7 : Các bit dữ liệu được gửi đi
15
Hình 8 : Nút cảm biến
19
Hình 9 : Hệ thống mạng cảm biến
20
Hình 10 : IC 7805 và pin 9V
25
5
MỤC LỤC
CHƯƠNG 1: GIỚI THIỆU VI XỬ LÝ VÀ MODULE HC-05 ...................................... 8
1. Vi xử lí stm32f103c8t6 .............................................................................................8
1.1 Giới thiệu về vi xử lý stm32f103c8t6 ................................................................ 8
1.2 Thông số kỹ thuật và sơ đồ chân ........................................................................8
1.3 Ứng dụng thực tế .............................................................................................. 11
2. Module bluetooth HC-05 ....................................................................................... 12
2.1 Giới thiệu về module bluetooth HC-05 ............................................................12
2.2 Thông số kĩ thuật và sơ đồ chân của module HC-05 .......................................12
2.3 Tính năng 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
1. Kết nối vật lý .......................................................................................................... 14
2. Mô hình truyền thơng giữa stm32f103c8t6 qua HC05 ..........................................15
2.1 Giao thức UART .............................................................................................. 15
2.2 UART trên stm32f103c8t6 ...............................................................................16
2.3 Cấu hình UART hồn thiện cho stm32f103c8t6 thơng qua keil C ................. 16
3. Xây dựng nút trong hệ thống mạng cảm biến ........................................................19
CHƯƠNG 3 : HIỆU NĂNG VÀ ỨNG DỤNG .............................................................25
1. Hiệu năng của nút cảm biến stm32f103c8t6 giao tiếp qua HC-05 ........................25
1.1 Hiệu quả sử dụng năng lượng .......................................................................... 25
1.2 Tính ổn định của nút .........................................................................................25
2. Ứng dụng ................................................................................................................ 26
3. Kết Luận ................................................................................................................. 26
Tài liệu tham khảo .......................................................................................................... 27
6
PHẦN MỞ ĐẦU
Trong thời đại hiện nay, các mơ hình hệ thống mạng cảm biến đang được sử dụng
và phát triển vơ cùng rộng rãi. Theo đó, các nút cảm biến cũng đã được nâng cấp về
phần cứng cũng như phần mềm, từ đây mình đã sử dụng chip xử lý stm32F103c8t6 kết
hợp với module HC-05 như 1 nút trong hệ thống mạng cảm biến.
7
CHƯƠNG 1: GIỚI THIỆU VI XỬ LÝ VÀ MODULE HC-05
1. Vi xử lí stm32f103c8t6
1.1 Giới thiệu về vi xử lý stm32f103c8t6
- Stm32f103c8t6 là một dòng vi xử lý thuộc họ sản phẩm stm32 của nhà sản xuất
STMicroelectronics. Đây là một dòng vi xử lý ARM Cortex-M3, với tốc độ xử lý cao
và nhiều tính năng tích hợp. Dịng vi xử lý này thường được sử dụng trong các ứng
dụng nhúng, điều khiển động cơ, thiết bị IoT, và nhiều ứng dụng khác.
1.2 Thông số kỹ thuật và sơ đồ chân
1.2.1 Thông số kĩ thuật của vi xử lý
Bảng 1: Thông số của vi xử lý
Đặc tính và thiết bị ngoại vi
Kiến trúc vi mạch
Số lượng chân
SRAM
Debug đường truyền dữ liệu nối tiếp
Khả dụng
RISC
47
20 kilobytes
1
Bộ nhớ Flash
64/128 kilobytes
Tốc độ CPU
72MHz(tối đa)
Cổng kết nối (USB)
Micro
ADC
2
Số bộ hẹn giờ
7
Giao tiếp truyền thông
9
8
Module USB
Có
I2C
2
SPI
2
Nhiệt độ hoạt động
-40C-105C
Dịng điện sink/source
6mA
Module USART
3
Điện áp hoạt động
2.0V-3.6V
Bộ tạo dao động bên trong
4-16 MHz
Bộ hẹn giờ watchdog(WWDT)
Debug JTAG
Có
1
Hình 1 : Vi xử lý stm32f103c8t6
- Kiểm tra theo chu kỳ (CRC) để đảm bảo độ chính xác của dữ liệu.
- Có ba tùy chọn boot khác nhau(thơng qua flash hoặc bộ nhớ hệ thống hoặc SRAM)
để reset bộ nhớ flash qua USART1.
- 7 bộ timer khác nhau để có các tốc độ lấy mẫu giá trị analog khác nhau.
- Một giao thức nối tiếp JTAG(Joint Test Action Group) để gỡ lỗi và kiểm tra bộ vi
điều khiển.
9
- Xung nhịp PLL để tạo sự ổn định bằng cách xử lý tín hiệu đầu ra và đầu vào.
- Bộ timer Watchdog để quan sát các lỗi trong quá trình nhận và truyền tín hiệu.
1.2.2 Sơ đồ chân của stm32f103c8t6 bluepill và chức năng
- Chế độ ADC :
+ 2 bộ ADC 12 bit với 9 kênh cho mỗi bộ.
+ Có chế độ lấy mẫu 1 kênh hoặc nhiều kênh.
- DMA:
+ 7 kênh DMA.
+ Hỗ trợ DMA cho ADC,UART,I2C,SPI.
- 7 bộ Timer:
+ 3 timer 16 bit hỗ trợ các mode input capture/ output compare/ PWM.
+ 1 timer 16 bit hỗ trợ để điều khiển động cơ với các mode bảo vệ ngắt Input,
dead-time.
+ 2 watchdog timer để bảo vệ và kiểm tra lỗi.
+ 1 systick timer 24 bit đếm xuống cho hàm Delay.
- 9 kênh giao tiếp :
+ 2 bộ I2C
+ 3 bộ UART
+ 2 SPI
+ 1 CAN
+ USB 2.0 full-speed interface
10
Hình 2 :Sơ đồ chân của kit stm32f103c8t6 bluepill
1.3 Ứng dụng thực tế
- Vi xử lý stm32f103c8t6 là một trong những vi xử lý ARM Cortex-M3 phổ biến
với rất nhiều những tính năng được tích hợp trong chip, do đó vi xử lý này có thể được
ứng dụng trong rất nhiều dự án thuộc lĩnh vực điện tử , tự động hóa,.. Một số ứng dụng
có thể kể đến như :
+ Hệ thống nhúng : vi xử lí này có thể sử dụng trong các hệ thống nhúng như
điều khiển robot, máy in 3D hoặc các thiết bị IoT.
+ Điều khiển thiết bị như motor hay các hệ thống chiếu sáng.
+ Sử dụng để thu thập và xử lý dữ liệu từ các loại cảm biến.
+ Sử dụng khả năng giao tiếp đa dạng như UART, SPI hay I2C để giao tiếp với
các thiết bị ngoại vi.
+ Có thể sử dụng để làm một nút cảm biến hay một sink nút trong một hệ thống
mạng cảm biến.
11
2. Module bluetooth HC-05
2.1 Giới thiệu về module bluetooth HC-05
- HC-05 là một module bluetooth phổ biến được sử dụng trong các dự án điện tử và
nhúng. Nó thuộc loại bluetooth version 2.0 với hỗ trợ các profiles chính như các serial
port profile(SPP). SPP cho phép truyền dữ liệu qua cổng nối ảo giống như giao thức
UART.
2.2 Thông số kĩ thuật và sơ đồ chân của module HC-05
2.2.1 Thông số kĩ thuật
Bảng 2: Thông số kĩ thuật của module HC-05
Điện áp hoạt động
Dịng tải
3.3-5V
30A(Ghép đơi) , 8mA(truyền tải )
Baudrate UART
1200,2400,4800,...115200
Dải tần sóng
2.4GHz
Bluetooth protocol
v2.0 + EDRo
Kích thước
26.9 x 13 x 2.2mm
Khoảng cách giao tiếp
10-100m
Hình 3 : Module HC-05
12
2.2.2 Sơ đồ chân
- Module bao gồm 6 chân :
+ RXD : Chân nhận dữ liệu, kết nối với TX(Transmit) của thết bị mà module
nhận dữ liệu.
+ TXD : Chân truyền dữ liệu, kết nối với RX(Receive) của thiết bị mà module
gửi dữ 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 của module.
+ En : Chân kích hoạt, chân này nếu khơng được kết nối với nguồn thì module
sẽ ở chế độ tiết kiệm năng lượng.
Hình 4 :Sơ đồ chân của module HC-05
2.3 Tính năng giao tiếp bluetooth
- Module HC-05 dùng để thiết lập kết nối serial giữa 2 thiết bị bằng sóng bluetooth.
Điểm đặc biệt của module này là nó có thể hoạt động được ở 2 chế độ: Master hoặc
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 là 1234. Sau khi pair thành công, bạn đã có 1
cổng serial từ xa hoạt động ở baud rate 9600.
13
+ Ở chế độ Master: module sẽ tự động dò tìm thiết bị bluetooth khác và tiến
hành chủ động pair mà khơng cần thiết lập gì từ máy tính hoặc smartphone.
2.4 Ứng dụng thực tế
- HC-05 là thiết bị Bluetooth sử dụng giao thức truyền thông UART với khả năng
giao tiếp ổn định. Từ đây module này có thể ứng dụng trong rất nhiều các dự án khác
nhau có yêu cầu sử dụng giao tiếp không giây:
+ Sử dụng cho các hệ thống điện tử cho nhà thông minh.
+ Ứng dụng cho các sản phẩm điều khiển từ xa như các mơ hình robot.
+ Có thể sử dụng làm một phương thức giao tiếp giữa các nút cảm biến tới sink
nút trong 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
1. Kết nối vật lý
- Kết nối các chân của 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 5 : Sơ đồ kết nối chân HC05 tới vi xử lý
14
2. Mơ hình truyền thơng giữa stm32f103c8t6 qua HC05
2.1 Giao thức UART
- UART (Universal Asynchronous Receiver/Transmiter) là một chuẩn giao tiếp
không đồng bộ cho MCU và các thiết bị ngoại vi.
- Chuẩn UART là chuẩn giao tiếp giữa điểm và điểm, nghĩa là trong mạng chỉ có hai
thiết bị đóng vai trị là transmiter hoặc receiver.
Hình 6 : Giao thức UART
- Đây là loại giao thức truyền thông không đồng bộ, nghĩa là khơng có xung clock,
các thiết bị có thể hiểu được nhau nếu được cấu hình giống nhau.
- UART là truyền thông song công(Full duplex) nghĩa là tại một thời điểm có thể
truyền và nhận đồng thời. Trong đó quan trọng nhất là baud rate(tốc độ baud) là
khoảng thời gian dành cho 1 bit được truyền. Phải được cấu hình giống nhau ở gửi và
nhận.
Hình 7 :Các bit dữ liệu được gửi đi
- Định dạng gói tin:
+ Start-Bit: được gọi là bit đồng bộ hóa được đặt trước dữ liệu thực tế. Khi ở
trong chế độ “Nhàn rỗi” thì đường tín hiệu được đưa lên mức cao(1). Để bắt đầu
15
truyền dữ liệu, đường dữ liệu sẽ được 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 là sắp truyền dữ liệu.
+ Stop-Bit: được đặt ở phần cuối của gói dữ liệu. Thơng thường, bit này dài 2
bit nhưng thường chỉ sử dụng 1 bit. Sau khi truyền xong dữ liệu, thì đường dữ liệu sẽ
được giữ ở mức cao tương được 1 hoặc 2 bit.
+ Parity Bit: Bit chẵn lẻ cho phép người nhận đảm bảo dữ liệu được thu thập có
đúng hay không. Đây là một hệ thống kiểm tra lỗi cấp thấp.
+ Data frame: Các bit dữ liệu bao gồm dữ liệu thực được truyền từ người gửi
đến người nhận. Độ dài khung dữ liệu có thể nằm trong khoảng 5 hoặc 8. Nếu bit chẵn
lẻ khơng được sử dụng thì chiều dài khung dữ liệu có thể dài 9 bit. Bit LSB sẽ được
truyền trước.
2.2 UART trên stm32f103c8t6
- Stm32f103c8t6 có 3 kênh UART tương ứng với các chân :
+ UART1: TX -PA9, RX -PA10.
+ UART2: TX -PA2, RX -PA3.
+ UART3: TX -PB10, RX -PB11.
- Trong đó các kênh UART2 và 3 thuộc thanh ghi APB1Periph(Advanced
Peripheral Bus 1 ) còn kênh UART1 thuộc thanh ghi APB2Periph.
- Cấu hình UART trên stm32f103c8t6 bao gồm :
+ Baud rate(tốc độ Baud): tốc độ truyền dữ liệu qua kênh UART, được đo bằng
số bits dữ liệu truyền đi mỗi giây. Cần được cấu hình giống nhau ở nhận và truyền.
+ Định dạng khung(Frame Format): đặt chiều dài của khung dữ liệu.
+ Chế độ hoạt động : có thể chỉ nhận hoặc chỉ gửi hoặc cả 2.
+ Flow control: Quyết định cách kiểm soát luồng dữ liệu giữa thiết bị truyền và
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 trên vi xử lý stm32f103c8t6 , cần cấp xung clock cho USART1
trên thanh ghi APB2Periph và GPIO A cho cấu hình 2 chân TX và RX phục vụ cho
UART.
- Với chân TX (Chân truyền dữ liệu) được cấu hình ở chế độ AF_PP (Alternate
Function _ Push Pull) , chức năng kéo đẩy là một kiểu đầu ra của chân GPIO trong đó
chân có thể đẩy dòng điện lên mức cao hoặc kéo xuống mức thấp .
- Với chân RX(Chân nhận dữ liệu) được cấu hình ở chế độ IN_FLOATING(Chế độ
vào thả nổi), đây là chế độ vào khơng có điện trở kéo lên hoặc kéo xuống được kích
hoạt , có nghĩa là chân có thể “nổi”.
- Thực hiện cấu hình cho UART :
+ Cấu hình tốc độ baud (BaudRate) là 9600 bit trên mỗi giây.
+ Chọn chiều dài của từ (wordlength) là 8 bit.
+ Chọn 1 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) và truyền (TX).
+ Không sử dụng kiểm sốt luồng (HardwardFlowControl).
+ Áp dụng cấu hình đã được 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 dữ liệu đi, đảm bảo rằng toàn bộ
chuỗi đã được gửi qua USART.
+ Hàm void USART_SendString(USART_TypeDef* USARTx, char* str) nhận
vào hai đối số. “USARTx” là con trỏ đến cấu trúc USART và “str” là con trỏ đến
chuỗi kí tự cần gửi.
+ While(*str): Vòng lặp này sẽ chạy cho đến kết thúc chuỗi kí tự.
+ USART_SendData(USARTx,*str++): Gửi kí tự hiện tại đến USART thơng
qua cổng truyền dữ liệu USART. Sau đó, con trỏ ‘str’ sẽ được tăng lên để trỏ đến kí tự
tiếp theo trong chuỗi.
18
+ while (USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET):
Đây là vòng lặp chờ, nó sẽ tiếp tục chờ cho đến khi cờ TXE(Transmit Data Register
Empty) được set, có nghĩa bộ truyền USART đã sẵn sàng để gửi đi một kí tự mới.
3. Xây dựng nút trong hệ thống mạng cảm biến
- Sử dụng cấu hình cho UART để thực hiện giao tiếp gửi dữ liệu cho stm32f103c8t6
kết hợp với 1 loại cảm biến ( cảm biến nhiệt độ LM35) gửi tín hiệu thu nhận được cho
stm32f103c8t6 như một nút cảm biến trong hệ thống mạng cảm biến đo nhiệt độ mơi
trường.
Hình 8 : Nút cảm biến
- Sau khi dữ liệu được thu thập, vi xử lý stm32f103c8t6 sẽ xử lý tín hiệu bằng
ADC(chuyển đổi tín hiệu analog sang digital) và tiến hành gửi dữ 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 sẽ gửi các dạng tín hiệu khác nhau, do đó xử lý mỗi dạng tín
hiệu cũng sẽ khác nhau để có thể đưa ra thông tin đúng.
- Kết hợp với nhiều nút tương ứng và có thể sử dụng các loại cảm biến khác để có
thể thu thập được nhiều loại dữ liệu từ môi trường. Xây dựng một hệ thống mạng cảm
biến không dây thu thập dữ liệu từ môi trường.
19
Hình 9 : Hệ thống mạng cảm biến
- Có thể kết hợp với hiển thị trên màn hình LCD16x2 hoặc một loại màn hình khác
để có thể trực tiếp hiển thị thông tin thu được trên nút cảm biến để có thể kiểm tra xem
thơng tin được truyền đi có sai khác gì so với thơng tin thực.
- Chương trình đầy đủ cho một nút cảm biến sử dụng stm32f103c8t6 thu thập dữ
liệu nhiệt độ từ LM35 và gửi đi thơng qua module HC-05. Có thể áp dụng cho các nút
cảm biến tương tự.
#include "stm32f10x.h"
#include <string.h>
#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 3 : HIỆU NĂNG VÀ ỨNG DỤNG
1. Hiệu năng của nút cảm biến stm32f103c8t6 giao tiếp qua HC-05
1.1 Hiệu quả sử dụng năng lượng
- Nguồn cung cấp năng lượng cho vi xử lý là 2.0-3.3V và LCD là 5V nên nút có thể
sử dụng loại nguồn pin 9V thơng qua qua IC chuyển đổi như 7805 để giới hạn điện áp.
Hình 10 : IC 7805 và pin 9V
- Thời lượng sử dụng có thể từ 3-4 ngày phụ thuộc vào thời gian mỗi lần thu thập và
gửi dữ liệu đi và 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 được thời gian
sử dụng, cấp được nguồn ổn định và cũng không phải thay pin định kì.
1.2 Tính ổn định của nút
- Nút cảm biến được đưa vào thực nghiệm cho gửi dữ liệu đến điện thoại với tính ổn
định khá 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 khi gửi dữ liệu đến
sink nút.
- Nếu sử dụng nhiều nút cảm biến cùng lúc có thể thay đổi thời gian gửi dữ liệu lần
lượt tới sink nút để tránh gây xung đột dữ liệu giữa các nút.
25