Professional Documents
Culture Documents
(STM32 Cơ bản) Buổi 7 +8 UART Dieu khien qua Bluetooth
(STM32 Cơ bản) Buổi 7 +8 UART Dieu khien qua Bluetooth
Trên thực tế trong một dự án lớn, một board mạch STM không thể đảm nhiệm xử lí hết được
các yêu cầu. Cho nên chúng ta cần phải chia để trị, tức là mỗi một board mạch sẽ xử lí một tác vụ
khác nhau. Và để có sự thống nhất và liên kết giữa các board mạch chúng ta cần phải giao tiếp
giữa chúng.
VXL2 Điều khiển 30 OUTPUT
Khối điều
khiển trung VXL3 Điều khiển động cơ
tâm Ngọc Tuấn
PHÂN LOẠI CÁC CHUẨN GIAO TIẾP
Giao tiếp song song Giao tiếp nối tiếp
10001011
10001011
Đặc điểm:
Đặc điểm:
• Truyền 1 bit 1 lần
• Truyền nhiều bit cùng 1 lúc
• Tốc độ truyền chậm
• Tốc độ truyền nhanh
• Kết nối đơn giản
• Kết nối cồng kềnh do phải kết nối nhiều dây
• UART, I2C, SPI, ONEWIRE
• Ethernet
Trên thực tế chúng ta thường hay dùng giao tiếp nối tiếp để truyền dữ liệu vì lí do kết nối dễ dàng.
Các phần sau chúng ta chỉ đi khảo sát chuẩn giao tiếp nối tiếp.
Ngọc Tuấn
PHÂN LOẠI CÁC CHUẨN GIAO TIẾP
Giao tiếp đồng bộ Giao tiếp không đồng bộ
10001011 10001011
Data Data
Clock
Ngọc Tuấn
PHÂN LOẠI CÁC CHUẨN GIAO TIẾP
Giao tiếp song công Giao tiếp bán song công
10001011 10001011
DO DI DO DI
DI DO 10101010
10101010
Ngọc Tuấn
CHUẨN GIAO TIẾP UART
UART (Universal Asynchronous Receiver – Transmitter) là một chuẩn giao tiếp truyền nhận bất đồng bộ,
bất đồng bộ có nghĩa là không có sự kiểm soát khi dữ liệu được gửi hoặc bất kì đảm bảo 2 bên có cùng tốc
độ hay không.
Ngọc Tuấn
CÁC KHÁI NIỆM TRONG UART
0 to 1
1 Start 1 to 2
Data bits (5->9) Partity
Bit Stop Bits
Bits
Data Frame
- Baud rate (tốc độ baud): số bit truyền nhận trong 1s, tốc độ hay sử dụng phải là bội của 8 thường là 2400,
4800, 9600, 19200, 38400, 56000, 115200… cả 2 thiết bị truyền nhận cho nhau phải cùng 1 tốc độ baud.
- Data Frame (khung truyền ): Dữ liệu sẽ được truyền đi. Thông thường sẽ chọn 8bit
- Start bit : là bit đầu tiên được truyền trong 1 Frame. Báo hiệu cho thiết bị nhận có một gói dữ liệu sắp đc
truyền đến. ( Bit bắt buộc ).
- Data : dữ liệu cần truyền. Bit có trọng số nhỏ nhất LSB được truyền trước sau đó đến bit MSB.
- Parity bit : bit kiểm tra chẵn lẻ. Bit sẽ đếm tổng . (Bit không bắt buộc)
- Stop bit : là 1 hoặc các bit báo cho thiết bị rằng các bit đã được gửi xong. Thiết bị nhận sẽ tiến hành kiểm
tra khung truyền nhằm đảm bảo tính đúng đắn của dữ liệu. ( Bit bắt buộc ).
Ngọc Tuấn
KHUNG TRUYỀN UART
0 0 0 0 0
TX RX
Ngọc Tuấn
LÀM THẾ NÀO ĐỂ GIAO TIẾP ĐƯỢC VỚI PC
Vì laptop của chúng ta sử dụng giao tiếp USB mà STM32 sử dụng giao thức UART nên chúng ta không thể kết nối
trực từ STM lên máy tính để giao tiếp được. Chính vì thế mà ta cần 1 module có thể chuyể đổi từ USB sang UART
hay còn được gọi với cái tên USB to TTL hoặc là USB to COM (sử dụng cho cổng RS232)
Ghi chú:
STM32 HC-06
TX RX
RX TX STM32
3.3V VCC
GND GND
Tx RX
RX TX USB to TTL
3.3v VCC
GND GND
Ngọc Tuấn
CÁC HÀM TRUYỀN NHẬN
Hàm truyền dữ liệu:
HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
Tham số:
• huart: là đối tượng kiểu UART_HandleTypeDef.
• pData: dữ liệu cần gửi.
• Size: số lượng byte cần gửi.
• Timeout: nếu hết thời gian Timeout mà chưa gửi xong thì sẽ kết thúc hàm.
Ngọc Tuấn
Cách sử dụng hàm printf để gửi qua UART
Thêm hàm sau vào file main.c là ta có thể sử dụng được hàm printf()
Giải thích: chúng ta gọi hàm printf(), printf() lại gọi làm fputc(). Mà fputc() lại gọi hàm truyền dữ
liệu qua UART => khi gọi printf() chính là đang gọi hàm HAL_USART_Transmit
Ngọc Tuấn
Ví dụ gửi UART Lên máy tính
Ngọc Tuấn
CẤU HÌNH TRONG CUBE
Ngọc Tuấn
TEST THỬ DỮ LIỆU GỬI TỪ STM32
Chương trình:
while(1)
{
uint8_t str = "hello";
HAL_UART_Transmit(&huart1,str,strlen(str),100);
HAL_Delay(1000);
}
Ngọc Tuấn
GIỚI THIỆU MODULE HC06
Giới thiệu module bluetooth HC-06
Ngọc Tuấn
GIỚI THIỆU MODULE HC06
Kết nối module với STM32
STM32 HC-06
TX RX
RX TX STM32
3.3V VCC
GND GND Tx RX
RX TX HC06
3.3v VCC GND GND
Ngọc Tuấn
MÔ HÌNH TRUYỀN NHẬN
10101010 10101010
Điện thoại truyền dữ liệu cho module bluetooth, module bluetooth nhận được dữ liệu sẽ truyền cho
Arduino thông qua chân TX bluetooth đang được nối xuống chân RX Arduino.
Ngọc Tuấn
ĐIỀU KHIỂN THIẾT BỊ BLUETOOTH
Chúng ta tiến hành lên CH play để tải app các bạn truy cập vào đường dẫn sau:
https://play.google.com/store/apps/details?id=dev.merahkemarun.btcontrollamp
Ngọc Tuấn
ĐIỀU KHIỂN THIẾT BỊ BLUETOOTH
Bước 1: Mở điện
thoại kết nối tới
module Bluetooth
HC06.
Ngọc Tuấn
ĐIỀU KHIỂN THIẾT BỊ BLUETOOTH
Bước 2: Mở app Tiến hành kết nối tới thiết Bước 3:Nhấn vào nút để kết nối đến HC-06.
bị: Khi chưa có thiết bị kết nối
Ngọc Tuấn
ĐIỀU KHIỂN THIẾT BỊ BLUETOOTH
Khi kết nối thành công sẽ xuất hiện chữ connected
… … …
Ngọc Tuấn