Download as pdf or txt
Download as pdf or txt
You are on page 1of 21

TẠI SAO LẠI CẦN PHẢI GIAO TIẾP?

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

VXL1 VXL3 Đọc giá trị từ 10 cảm biến

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

Đặc điểm: Đặc điểm:


• Có chân cấp xung clock để đồng bộ • Dùng thời gian để đồng bộ truyền nhận dữ liệu.
truyền nhận dữ liệu. • UART, ONEWIRE
• SPI, I2C,

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

Đặc điểm: Đặc điểm:


• Có thể truyền nhận dữ liệu cùng 1 thời điểm • Trong một thời điểm chỉ có thể truyền hoặc nhận.
• 2 đường dây dữ liệu truyền nhận là riêng biệt. • Chỉ có 1 đường dây dung để truyền nhận
• SPI, UART • I2C, ONEWIRE

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

Giả sử ta cần truyền 1 byte, 0x93;


0x93 = 1001 0011
Stop
1 1 1 1 1

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ú:

• Chất lượng tăng dần theo


PL2303 CH340 chiều mũi tên
• Giá cả tăng dần theo chiều
mũi tên

CP2102 FT232 Ngọc Tuấn


CÁCH KẾT NỐI TỚI PC
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 USB to TTL
3.3v VCC
GND GND

Kết nối tới PC

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.

Hàm nhận dữ liệu:


HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
Tham số:
• huart: là đối tượng kiểu UART_HandleTypeDef.
• pData: bộ đệm chứa dữ liệu nhận được.
• Size: số lượng byte nhận 1 lần để sinh ra ngắt.

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()

_ARMABI int fputc(int c, FILE * stream)


{
HAL_USART_Transmit(&huart1, (char *)&c, 1,10);
return 0;
}

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

Bài toán: Cứ 1s gửi lên máy tính chuỗi Hello World

Ngọc Tuấn
CẤU HÌNH TRONG CUBE

➢ Baud Rate: Tốc độ baud


➢ Word length: độ dài 1 khung
truyền.
➢ Paryty: bit kiểm tra
• None: Không kiểm tra chẳn lẽ.
• Even: Kiểm tra bit chẵn.
• Odd: Kiểm tra bit lẽ.
➢ Data Direction:
• Receive Only: Chỉ nhận
• Transmit Only: Chỉ truyền
• Receive and Transmit: cả
truyền và nhận.

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);
}

Dùng phần mềm Hercules để nhận dữ liệu

Ngọc Tuấn
GIỚI THIỆU MODULE HC06
Giới thiệu module bluetooth HC-06

• Điện áp hoạt động: 3.3 ~ 5VDC.


• Điện áp giao tiếp: TTL tương thích 3.3VDC và 5VDC.
• Baudrate (tốc độ truyền) UART có thể chọn được: 1200, 2400,
4800, 9600, 19200, 38400, 57600, 115200
• Thiết lập mặc định:
• Baud rate: 9600, N, 8, 1.
• Mật khẩu: 1234.

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

Hoặc tìm với từ khóa: Bluetooth Controller 8 Lamp

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.

Mật khẩu mặc định ban đầu là 1234.

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

Phím Mã lệnh bật Mã lệnh tắt

Phím 1 ‘1’ ‘A’

Phím 2 ‘2’ ‘B’

Phím 3 ‘3’ ‘C’

Phím 4 ‘4’ ‘D’

… … …

Phím 8 ‘8’ ‘H’

Ngọc Tuấn

You might also like