Khi bắt đầu bit Start sẽ chuyển từ 1 xuống 0 để báo hiệu là quá trình truyền sắp xảy ra. Sau đó la đến các bít dữ liệu tuwd D0-D7. Sau đó là đến bit Parity để kiểm tra dữ liệu. Sau đó đến bit Stop để báo rằng đã gửi xong. Thiết bị tiến hành kiểm tra nhằm đảm bảo tính đúng đắng của dữ liệu.
Các thơng số cơ bản trong truyền nhận dữ liệu theo kiểu Uart:
Baund rate (tốc độ baund): khoảng thời gian dành cho 1bit được truyền. Phải được cài đặt giống nhau ở gửi và nhận.
Frame (khung truyền): khung truyền qui định số bit mỗi lần truyền.
Bit Start: là bit đầu tiên được truyền trong 1 khung. Báo hiệu cho thiết bị nhận có một gói dữ liệu sắp được truyền đến
Data: là 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.
Bit parity: là bit kiêm tra dữ liệu có đúng hay khơng.
Bit Stop: là bit báo cho thiết bị nhận rằng các bit đã gửi xong.
c. SPI
Trong vi điều khiển ARM khối SPI (Serial Peripheral Interface) được tích hợp sẵn bên trong và nằm trên bus truyền dữ liệu ngoại vi tối ưu để tăng hiệu suất truyền dữ liệu và tối ưu khả năng tiêu thụ công suất.
STM32 cung cấp hai khối điều khiển SPI có khả năng chạy ở chế độ song công (full-duplex) với tốc độ truyền dữ liệu lên tới 18 MHz. Khối SPI tốc độ cao nằm trên APB2, khối SPI tốc độ thấp nằm trên APB1. Mỗi khối SPI có hệ thống thanh ghi cấu hình độc lập, dữ liệu truyền có thể dưới dạng 8-bit hoặc 16-bit, thứ tự hỗ trợ MSB hay LSB. Chúng ta có thể cấu hình mỗi khối SPI đóng vai trị master hay slave.
Hình Error! No text of specified style in document..11: Giao thức Master – Slave
trong giao tiếp SPI
Để hỗ trợ truyền dữ liệu tốc độ cao, mỗi khối SPI có hai kênh DMA dành cho gửi và nhận dữ liệu. Thêm vào đó là khơi CRC dành cho cả truyền và nhận dữ liệu. Khối CRC đều có thể hỗ trợ kiểm tra CRC8 và CRC16. Các đặc tính này rất cần thiết khi sử dụng SPI để giao tiếp với MMC/SD card và USB.
SPI sử dụng phương thức truyền: Nối tiếp - Đồng bộ - Song công
Nối tiếp: truyền một bit dữ liệu trên mỗi nhịp truyền.
Đồng bộ: có xung nhịp đồng bộ q trình truyền.
Song cơng: cho phép gửi, nhận đồng thời
SPI là phương thức Master – Slave
Thiết bị đóng vai trò Master điều khiển xung đồng bộ (SCK).
Tất cả các thiết bị Slaver bị điều khiển bởi xung đồng bộ phát ra bởi Master.
SPI là giao thức trao đổi dữ liệu (Data Exchange): một bit được gửi ra sẽ có một bit được nhận về được mơ tả trong hình
2.3.4 Module Bluetooth HC05
Module Bluetooth HC-05 được thiết kế đễ sử dụng giao tiếp Bluetooth qua Serial Port, truyền dữ liệu nối tiếp qua wireless.
Hình 2.12: Module Bluetooth HC05
Thông số ký thuật:
- Chuẩn Bluetooth : V2.0+EDR
- Chế độ hoạt động: Master, Slave, Loopback.
- Kích thước 28mm x 15mm x 2.35mm.
- Tần số: 2.4GHz ISM band.
- Tốc độ: Asynchronous: 2.1 Mbs (Max)/160kbps Synchronous: 1Mbps/1Mbps.
- Bảo mật: Authentication and encryption.
- Giao tiếp: Bluetooth serial port (Baud Rate mặc định: 38400, databits: 8, Stopbit: 1, Parity: No). Hỗ trợ tốc độ baud: 9600, 19200, 38400, 57600, 115200, 230400, 460800.
- Nhiệt độ làm việc : -20 ~ 75oC
- Độ nhạy: -80dBm.
- Công suất truyền: +4dBm.
- Tự động kết nối với pincode mặc định “1234”.
- Tự động reconnect trong 30 phút nếu bị đứt kết nối Module có 2 chế độ làm việc, có thể chọn chế độ làm việc bằng cahcs thay đổi trạng thái chân KEY- 34:
Tự động kết nối.
Đáp ứng theo lệnh: khi làm việc ở chế độ này, chúng ta có thể gửi các lệnh AT để giao tiếp với module.
- Giao tiếp với module bằng giao tiếp nối tiếp không đồng bộ qua hai đường RX và TX. Bằng cách thay đổi trạng thái chân KEY chúng ta có thể cấu hình chế độ hoạt động cho modue.
Để module làm việc ở chế độ tự động kết nối: KEY phải ở trạng thái Floating (trạng thái không kết nối).
Để module làm việc ở chế độ đáp ứng theo lệnh: KEY=’0’, cấp nguồn cho module, chuyển KEY = ‘1’, lúc này có thể giao tiếp với modul bằng tập lệnh AT.
Ở chế độ SLAVE: chúng ta cần thiết lập kết nối từ smartphone, laptop, usb bluetooth để dị tìm module và ghép nối với pincode mặc định “1234”.
Ở chế độ MASTER: module sẽ tự động dị tìm thiết bị Bluetooth khác và tiến hành ghép nối chủ động mà khơng cần thiết lập gì. Module tương thích với các vi điều khiển 5V mà không cần chuyển đổi mức giao tiếp 5V về 3.3V như nhiều loại module khác.
Hình 2.13: Sơ đồ chân của HC05 Bảng 2.3: Mô tả chức năng các chân module HC-05 Bảng 2.3: Mô tả chức năng các chân module HC-05
Tên chân STT Chân Loại chân Mô tả chân
GND 13,21,22 VSS Chân đất
3.3v VCC 12 Chân 3.3v Chân nguồn
AIO0 9 2 hướng Lập trình I/O
AIO1 10 2 hướng Lập trình I/O
PIO0 23 2 hướng RX EN
Lập trình I/O, điều khiển output cho
LNA nếu được trang bị. PIO1 24 2 hướng TX EN khiển LA nếu được Lập trình I/O, điều
trang bị.
PIO2 25 2 hướng Lập trình I/O
PIO3 26 2 hướng Lập trình I/O
PIO4 27 2 hướng Lập trình I/O
PIO5 28 2 hướng Lập trình I/O
PIO6 29 2 hướng Lập trình I/O
PIO7 30 2 hướng Lập trình I/O
PIO8 31 2 hướng Lập trình I/O
PIO9 32 2 hướng Lập trình I/O
PIO10 33 2 hướng Lập trình I/O
PIO11 34 2 hướng Lập trình I/O
ResetB_RST 11 Cmos input with weak internal pull-up
Reset nếu LOW UART
UART_CTS 3 Cmos input with weak internal pull-down
UART xóa khi gửi, hoạt động LOW. UART_RX 2 Cmos input with weak
internal pull-down Dữ liệu vào UART
UART_TX 1
Cmos output, tri-stable with weak internal pull-
up.
Dữ liệu ra UART
SPI_MOSI 17 Cmos input with weak internal pull-down.
Serial peripheral interface data input
SPI_CSB 16 Cmos input with weak internal pull-up.
Chip select for serial peripheral interface, active
low. SPI_CLK 19 Cmos input with weak
internal pull-down.
Serial peripheral interface clock SPI_MISO 18 Cmos input with weak
internal pull-down Serial peripheral interface data output USB- 15 2 hướng USB+ 20 2 hướng NC 14 PCM CLK 5 2 hướng Synchronous PCM data clock
PCM_OUT 6 Cmos output Synchronous PCM
data output
PCM_IN 7 Cmos input Synchronous PCM
data input
PCM_ SYNC 8 2 hướng Synchronous PCM
data strobe
Bảng 2.4: Một số lệnh AT cho module Bluetooth HC-05
Lệnh Trả về Tham số Chức năng
AT OK None Test
AT+RESET OK None Reset
AT+VERSION? +VERSION: <Param> OK
Version number
Kiểm tra phiên bản
AT+ORGL OK None
Khôi phục trạng thái mặc
định AT+ADDR? +ADDR:<Param>OK Bluetooth
address
Địa chỉ bluetooth
AT+NAME=<param> OK Đặt tên cho
Module AT+NAME? 1. +NAME:<Param > OK---success 2. FAIL--- failure Bluetooth device name Tên thiết bị (mặc định HC05)
AT+RNAME?<param 1> 1. +NAME:<Param 2> OK---success 2. FAIL--- failure Tên thiết bị Bluetooth Đồ trên Module AT+ROLE? +ROLE:<Param> OK 0---Slave role 1--- Master role 2---Slaver- Loop role Truy vấn chức năng module Mặc định: 0 AT+PSWD=<param> OK Pincode Đặt mã Pin Mặc định:”1234” AT+PSWD? +PSWD:<Param> Pincode
AT+UART=<Param>, <Param2>,<Param3> OK Param1: Baud rate Param2: stop bit Param: parity bit Cấu hình cho cổng UART AT+UART? UART=<Param>,<Para m2>,<Param3> OK Param1: Baud rate Param2: stop bit Param: parity bit Truy vấn thông tin cổng UART 2.3.5 Màn hình TFT LCD
Màn hình TFT LCD dùng để hiển thị và điều khiển.
Hình 2.14: màn hình TFT LCD
Tọa độ trên màn hình được gắn theo dạng toạc độ (x, y). Với x là tọa độ theo hàng ngang, còn y là tọa độ theo hàng dọc.
Tọa độ điểm đầu của GLCD là (1, 1) và toạc độ điểm cuối là (240,320). Trong lập trình tọa độ có sự thay đổi khi tọa độ bắt đầu là (0, 0) và tọa độ cuối là (239,319). Với cách lập tọa độ như thế này sẽ giúp cho người lập trình có thể dễ dàng thao tác trên màn hình touch một cách chính xác theo u cầu đặt ra.
Như vậy với dạng tọa độ (x, y) thì X sẽ có giới hạn từ 0-239, Y sẽ có giới hạn 0- 319. Bảng 2.5: Các thơng số chính của màn hình LCD controller SSD1289 Touch LCD interface SPI Touch Screen controller XPT2046 Blacklight LED LCD Type TFT Colors 65536
LCD Interface 16-bit parallel Resolution 320*240
Bảng 2.6: Chức năng các chân của màn hình
STT Ký hiệu Mô tả Chức năng
1 3.3V Cung cấp 3.3V Nguồn GLCD
2 GND Nối mass 3 D0
Các pin dữ liệu Truyền nhận dữ liệu 4 D1 5 D2 6 D3 7 D4 8 D5 9 D6 10 D7 11 D8 12 D9 13 D10 14 D11 15 D12
16 D13 17 D14 18 D15
19 CS LCD chip select Low active 20 RS Instruction/Data register selection RS=1 RS=0 21 WR WRITE- viết WR=0; RD=1 22 RD READ- đọc RD=1; WR=0 23 RESET RESET Low active 24 NC
25 MISO Touch screen data input Kết nối SPI MISO
26 TP_INT Touch screen interrupt Low level while the touch screen detects pressing.
27 MOSI Touch screen data output
Kết nối SPI MOSI
28 NC
29 SCK Touch screen SPI input Kết nối SPI SCK 30 NC
31 TP_CS Touch screen chip select
Low active
32 NC
Linh kiện điều khiển màn hình Touch ADS7843
Thơng số kỹ thuật:
Giao tiếp màn hình cảm ứng bằng 4 dây tín hiệu Chuyển đổi tỉ lệ với đơn vị Met
Nguồn cung cấp từ 2,7-5V
Tốc độ chuyển đổi có thể lên tới 125kHz. Giao tiếp theo chuẩn SPI
Có thể lập trình theo dạng 8 bit hoặc 12bit Có 2 ngõ vào tín hiệu tương tự phụ
Có chế độ điều khiển tiết kiệm nguồn
Sơ đồ chân:
Hình 2.15: Sơ đồ chân ADS7843 Bảng 2.7: Chức năng các chân Bảng 2.7: Chức năng các chân
PIN Tên chân Mô tả chức năng
1 +VCC Cấp nguồn, 2.7-5V
2 X+ Vị trí ngõ vào X+. ADC input channel 1 3 Y+ Vị trí ngõ vào Y+. ADC input channel 2 4 X- Vị trí ngõ vào X-
5 Y- Vị trí ngõ vào Y-
6 GND Nối mass
7 IN3 Ngõ vào phụ 1. ADC channel 3 8 IN4 Ngõ vào phụ 2. ADC channel 4 9 VREF Điện áp tham chiếu ngõ vào 10 +VCC Cấp nguồn, 2,7-5V
11 𝑃𝐸𝑁𝐼𝑄𝑅̅̅̅̅̅̅̅̅̅̅̅ Pen Interrupt. Open analog output.
12 DOUT Ngõ ra tín hiệu nối tiếp. Tác động khi cạnh xuống DCLK
13 BUSY Ngõ ra bận. Ngõ ra sẽ có trở kháng cao khi 𝐶𝑆̅̅̅̅ ở mức
cao.
14 DIN Ngõ vào nối tiếp. Dữ liệu chuyển khi 𝐶𝑆̅̅̅̅ mức thấp.
15 𝐶𝑆̅̅̅̅ Chip select input. Điều khiển định thời và kiểm soát ngõ vào ra
16 DCLK Ngõ vào của xung ngoại. Đồng bộ các ngõ vào I/O
2.3.6 Module giảm áp LM2596
Mạch hạ áp DC LM2596 với dịng 3A, mạch nhỏ gọn có khả năng giảm áp trong khoảng từ 35V xuống 1.5V mà vẫn đạt hiệu suất cao (92%).
Thông số kỹ thuật:
Điện áp đầu vào: Từ 3V đến 40V.
Điện áp đầu ra: Điều chỉnh được trong khoảng 1.5V đến 35V.
Dòng đáp ứng tối đa là 3A.
Hiệu suất : 92%
Công suất : 15W
Kích thước: 45 (dài) * 20 (rộng) * 14 (cao) mm.
Hình 2.16: Module giảm áp LM2596 2.3.7 Giới thiệu kit Arduino UNO R3 2.3.7 Giới thiệu kit Arduino UNO R3
Arduino Uno R3 la dòng sản phẩm thế hệ thứ 3. Arduino UNO có thể sử dụng 3 vi điều khiển họ 8 bit AVR là ATmega8, ATmega168, ATmega328. Bộ não này có thể xử lí những tác vụ đơn giản như điều khiển đèn LED nhấp nháy, xử lí tín hiệu cho xe điều khiển từ xa, làm một trạm đo nhiệt độ, độ ẩm và hiển thị lên màn hình LCD…
Hình 2.17: Arduno UNO R3
Thơng số kỹ thuật:
Bảng 2.8: Thông số kỹ thuật Arduino Uno R3
Vi điều khiển Atmega328 họ 8 bit
Điện áp hoạt động 5V DC chỉ được cấp qua cổng USB Tần số hoạt động 16MHz
Dòng tiêu thụ Khoảng 30mA Điện áp vào khuyên dùng 7-12V DC Điện áp vào giới hạn 6-20V DC
Số chân Digital I/O 14 (6 chân hardware PWM) Số chân Analog 6 (độ phân giải 10 bit) Dòng tối đa trên mỗi chân 30mA
Dòng ra tối da (5V) 500mA Dòng ra tối da (3.3V) 50mA
Bộ nhơ flash 32 KB (ATmega328) với 0.5KB dùng bởi bootloader
EEPROM 1 KB (Atmega328)
Đặc điểm một số chân digital:
2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận (receive – RX)
dữ liệu TTL Serial. Arduino Uno có thể giao tiếp với thiết bị khác thơng qua 2 chân này. Kết nối bluetooth thường thấy nói nơm na chính là kết nối Serial khơng dây. Nếu khơng cần giao tiếp Serial, bạn không nên sử dụng 2 chân này nếu không cần thiết
Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép bạn xuất ra xung PWM với độ phân
giải 8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm analogWrite(). Nói một cách đơn giản, bạn có thể điều chỉnh được điện áp ra ở chân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V như những chân khác.
Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Ngoài các chức năng
thơng thường, 4 chân này cịn dùng để truyền phát dữ liệu bằng giao thức SPI với các thiết bị khác.
LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L). Khi bấm nút Reset,
bạn sẽ thấy đèn này nhấp nháy để báo hiệu. Nó được nối với chân số 13. Khi chân này được người dùng sử dụng, LED sẽ sáng.
Arduino Uno R3: có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10 bit (0
→ 210-1) để đọc giá trị điện áp trong khoảng 0V → 5V. Với chân AREF trên board, bạn
có thể để đưa vào điện áp tham chiếu khi sử dụng các chân analog. Tức là nếu bạn cấp điện áp 2.5V vào chân này thì bạn có thể dùng các chân analog để đo điện áp trong khoảng từ 0V → 2.5V với độ phân giải vẫn là 10bit. Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI với các thiết bị khác.
2.3.8 Module Ethernert ENC28J60
Module Ethernert ENC28J60 là module hỗ trợ giao tiếp mạng Ethernet ở lớp vật lý tương ứng trong mơ hình OSI (mơ hình 7 lớp). Nó hỗ trợ tuyền song cơng trên kênh truyền có băng thơng từ 10-20Mbps. Đồng thời nhằm tránh xung đột trên kênh truyền, ENC28J60 làm việc với chế độ CSMA/CD để phát hiện và tối thiểu hóa xung đột. ENC28J60 được giao tiếp với các thiết bị khác theo chuẩn SPI.
Thông số kỹ thuật:
o Sử dụng chip ENC 28J60 Ethernet kiểu sop28 chân. o Chuẩn giao tiếp SPI.
o Sử dụng điện áp 3.3 V. o Tần số hoạt động 25 MHz. o Đầu nối RJ45 HR911105A
Hình 2.18: Sơ đồ chân của ENC28J60
Giao thức truyền tin TCP/IP
Giao thức TCP (Transmission Control Protocol - "Giao thức điều khiển truyền vận") là một trong các giao thức cốt lõi của bộ giao thức TCP/IP. Sử dụng TCP, các ứng dụng trên các máy chủ được nối mạng có thể tạo các "kết nối" với nhau, mà qua đó chúng có thể trao đổi dữ liệu hoặc các gói tin. Giao thức này đảm bảo chuyển giao dữ liệu tới nơi nhận một cách đáng tin cậy và đúng thứ tự. TCP còn phân biệt giữa dữ liệu của nhiều ứng dụng (chẳng hạn, dịch vụ Web và dịch vụ thư điện tử) đồng thời chạy trên cùng một máy chủ.
Cấu trúc gói tin TCP:
Source Por (16 bits): Số hiệu cổng TCP của trạm nguồn.
Data offset (4 bit): số lượng bội của 32 bit (32 bit words) trong TCP header (tham số này chỉ ra vị trí bắt đầu của nguồn dữ liệu).
Acknowledgment Number (32 bit): số hiệu của segment tiếp theo mà trạm nguồn đang chờ để nhận. Ngầm ý báo nhận tốt (các) segment mà trạm đích đã gửi cho trạm nguồn.
Sequence Number (32 bit): số hiệu của byte đầu tiên của segment trừ khi bit SYN được thiết lập. Nếy bit SYN được thiết lập thì Sequence Number là số hiệu tuần tự khởi đầu (ISN) và byte dữ liệu đầu tiên là ISN+1.
Destination Port (16 bit): Số hiệu cổng TCP của trạm đích
Reserved (6 bit): dành để dùng trong tương lai
Control bit (các bit điều khiển):
URG: Vùng con trỏ khẩn (Ucgent Poiter) có hiệu lực.