+Điện áp hoạt động 3.3V -5V +Dòng tiêu thụ 15mA
+Có biến trở có khả năng điều chỉnh ngưỡng ra ( đặt ngưỡng của cường độ rung). +Kích cỡ 32x14mm 2.4.4.Sơ đồ chân +Chân sử dụng VCC, GND, DO +VCC cấp điện áp từ 3.3- 5V +GND cấp điện áp 0V
+DO chân đầu ra tín hiệu 0,1 đưa tín hiệu số và chân vi điều khiển hoặc relay, transistor.
Hình 2. 18 Sơ đồ chân SW420
2.5 Buzzer
Buzzer 5 VDC là loại nút nhấn nhỏ gọn, tuổi thọ cao và có hiệu suất ổn định, có thiết kế nhỏ gọn rất phù hợp với các loại mạch còi hay mạch báo động. hoạt động ở điện áp từ 3.5 đến 5 VDC, dòng tiêu thụ không lớn hơn 25 mA.
Hình 2. 19 Buzzer
2.6 Một số giao thức truyền thông giữa cảm biến và vi điều khiển2.6.1 Giao tiếp onewire 2.6.1 Giao tiếp onewire
OneWire là hệ thống bus giao tiếp được thiết kế bởi Dallas
Semiconductor Corp. Giống như tên gọi, hệ thống bus này chỉ sử dụng 1 dây để truyền nhận dữ liệu.
Chính vì chỉ sử dụng 1 dây nên giao tiếp này có tốc độ truyền thấp nhưng dữ liệu lại truyền được khoảng cách xa hơn.
OneWire chủ yếu sử dụng để giao tiếp với các thiết bị nhỏ, thu thập và truyền nhận dữ liệu thời tiết, nhiệt độ,… các công việc không yêu cầu tốc độ cao.
Giống như các chuẩn giao tiếp khác, 1-Wire cho phép truyền nhận dữ liệu với nhiều Slave trên đường truyền. Tuy nhiên chỉ có thể có 1 Master ( điểm này giống với SPI).
Hình 2. 20 Giao tiếp onewire
Cơ sở truyền nhận :
Các tín hiệu sử dụng Restart , 0 write , 1 write , Read .
Write 1 : truyền đi bit 1 : Master kéo xuống 0 một khoảng A(us) rồi về mức 1 khoảng B
Write 0 : truyền đi bit 0 : Master kéo xuống 0 khoảng C rồi trả về 1 khoảng D
Read : Đọc một Bit : Master kéo xuống 0 khoảng A rồi trả về 1 . delay khoảng E rồi đọc giá trị slave gửi về . delay F
Restart : Chuẩn bị giao tiếp . Master ké0 xuống 0 một khoảng H rồi nhả lên mức 1 sau đó cấu hình Master là chân In delay I (us) rồi đọc giá trị slave trả về . Nếu =0 thì cho phép giao tiếp . =1 đường truyền lỗi hoặc slave đang bận .
Hình 2. 21 Các thao tác hoạt động của giao tiếp onewire
Chế độ hoạt động:
Chế độ Standard - Chế độ tiêu chuẩn: o 15.4 Kb/s
o 65 µs bit
Chế độ Overdrive – Chế độ tốc độ nhanh: o 125 Kb/s
o 8 µs bit
2.6.2 Giao tiếp UART
UART được viết tắt từ Universal Asynchronous Receiver Transmitter là chuẩn giao tiếp nối tiếp với sự hỗ trợ của phần cứng – hardware. UART hoàn toàn khác biệt với chuẩn giao tiếp SPI hoặc I2C, những chuẩn này chỉ đơn tuần là giao tiếp phần mềm.
UART là chuẩn giao tiếp đơn giản nhất và được sử dụng nhiều nhất trong các kỹ thuật giao tiếp nối tiếp. Ngày nay, UART được sử dụng phổ biến trong các ứng dụng như: GPS, Bluetooth, GSM, GPRS, giao tiếp không dây, RFID,…
Với những thiết bị máy tính cũ như chuột, bàn phím, và các modem khác sử dụng những connector to và rườm rà thì chắc chắn rằng, hầu hết chúng đều sử dụng chuẩn giao tiếp UART.
Thậm chí trong giao tiếp qua cổng USB thường được sử dụng trong các thiết bị máy tính hiện nay, UART vẫn là chuẩn giao tiếp chính để sử dụng trong các ứng dụng đã kể trên. Các giao tiếp này được
chuyển đổi qua mạch chuyển USB-UART.
Gần như tất cả các vi điều khiển điều có hardware UART cố định trong kiến trúc của nó. Nguyên do chính cho việc tích hợp hardware
UART vào trong vi điều khiển vì đây là kiểu giao tiếp nối tiếp và nó chỉ tiêu tốn 2 chân cho việc giao tiếp này.
Trước khi đi sâu hơn tìm hiểu giao tiếp UART, phương thức hoạt động và các bước để truyền nhận dữ liệu, chúng ta sẽ sơ lược một số thông tin về sự khác nhau giữa giao tiếp nối tiếp và giao tiếp song song.
Hình 2. 23 Một số thiết bị sử dụng giao tiếp UART
Với những thiết bị máy tính cũ như chuột, bàn phím, và các modem khác sử dụng những connector to và rườm rà thì chắc chắn rằng, hầu hết chúng đều sử dụng chuẩn giao tiếp UART.
Thậm chí trong giao tiếp qua cổng USB thường được sử dụng trong các thiết bị máy tính hiện nay, UART vẫn là chuẩn giao tiếp chính để sử dụng trong các ứng dụng đã kể trên. Các giao tiếp này được chuyển đổi qua mạch chuyển USB-UART.
Gần như tất cả các vi điều khiển điều có hardware UART cố định trong kiến trúc của nó. Nguyên do chính cho việc tích hợp hardware UART vào trong vi điều khiển vì đây là kiểu giao tiếp nối tiếp và nó chỉ tiêu tốn 2 chân cho việc giao tiếp này.
Trước khi đi sâu hơn tìm hiểu giao tiếp UART, phương thức hoạt động và các bước để truyền nhận dữ liệu, chúng ta sẽ sơ lược một số thông tin về sự khác nhau giữa giao tiếp nối tiếp và giao tiếp song song.
Việc chuyển dữ liệu số (Digital Data) từ thiết bị này sang thiết bị khác có thể thực hiện được bằng 2 cách:
• Giao tiếp song song • Giao tiếp nối tiếp
Trong giao tiếp song song, tất cả các bits sẽ được truyền đi từ thiết bị truyền đến thiết bị nhận trong 1 lần (1 xung nhịp). Đây là điều khả thi vì giao tiếp song song sử dụng nhiều đường truyền – dây dẫn – giữa thiết bị truyền và thiết bị nhận.
Hình 2. 24 giao tiếp song song
Giao tiếp song song là chuẩn giao tiếp nhanh hơn và tốn kém hơn vì chúng cần nhiều phần cứng hơn và nhiều dây dẫn hơn. Các máy in kiểu cũ là
ví dụ rõ ràng nhất về kiểu giao tiếp song song. Bạn có thể bắt gặp một số thiết bị gần gũi hơn là giao tiếp RAM, PCI,…
Với sự phát triển của nền công nghiệp bán dẫn, các IC ngày càng trở nên nhỏ hơn và nhanh hơn. Kết quả là giao tiếp song song trở thành nút thắt cổ chai trong quá trình giao tiếp giữa các thiết bị với việc sử dụng quá nhiều chân để truyền, nhận dữ liệu.
Mặc khác, giao tiếp nối tiếp chỉ truyền dữ liệu thông qua 1 dây duy nhất. Để giao tiếp 2 chiều giữa thiết bị truyền và thiết bị nhận, chúng ta cần 2 dây để có thể truyền tải dữ liệu của chúng.
Kể từ khi chuẩn giao tiếp nối tiếp cần ít mạch và ít dây hơn, chi phí sản xuất sẽ giảm xuống. Kết quả tất yếu là sử dụng giao tiếp nối tiếp trong những mạch điện phức tạp sẽ dễ dàng hơn và tiết kiệm hơn so với giao tiếp song song.
Vấn đề duy nhất còn lăng tăng ở đây là tốc độ truyền tải dữ liệu. Việc chỉ truyền tải dữ liệu qua 1 dây duy nhất thì tốc độ sẽ thấp hơn nhiều so với giao tiếp song song. Tuy nhiên ngày nay, tốc độ của những con vi điều khiển, vi xử lý đã giải quyết được giới hạn của việc truyền nhận dữ liệu này.
Vậy giao tiếp UART truyền nhận thông tin như thế nào?
UART hay Universal Asynchronous Receiver Transmitter là giao tiếp nối tiếp được chuyển đổi từ giao tiếp song song – quá trình chuyển đổi này được thực hiện trước khi truyền ở thiết bị truyền và sau khi nhận ở thiết bị nhận dữ liệu. Nó là giao tiếp phổ biến tại vì các thông số như: tốc độ truyền, kiểu dữ liệu,… đều có thể thay đổi được.
Như đã đề cập ở phần giới thiệt, giao tiếp UART cần hardware làm cầu nối giữa vi xử lý và cổng giao tiếp nối tiếp. Hình ảnh dưới đây sẽ chỉ ra điểm đặc biệt này. Nó có thể được kết nối với USB, RS-232,…
Hình 2. 26 Gaio tiếp UART
Chữ ‘A’ trong UART là viết tắt của từ Asynchronous nghĩa là không cần tín hiệu clock để đồng bộ hoặc validate trong quá trình truyền và nhận dữ liệu (Asynchronous Serial Communication).
Điều này đối nghịch với giao tiếp song song khi mà nó luôn luôn cần tín hiệu clock nối giữa thiết bị truyền và thiết bị nhận để đồng bộ “Synchronize” dữ liệu trong quá trình truyền, nhận. Nếu không có tín hiệu này, quá trình truyền nhận dữ liệu song song sẽ bị gián đoạn.
Trong UART, thiết bị truyền và thiết bị nhận cùng đồng ý ngầm về nhau về việc timing – định thời – cho quá trình giao tiếp. Mặc khác, UART sử dụng những bits đặc biệt ở đầu và cuối frame truyền để đồng bộ dữ liệu giữa thiết bị truyền và thiết bị nhận. Đặc biệt hơn, nó còn sử dụng Parity bit – sẽ đề cập ở phần sau – để chắc chắn rằng quá trình này truyền tải đúng dữ liệu chúng ta cần.
Trong giao tiếp UART cơ bản, thiết bị truyền và thiết bị nhận giao tiếp theo cách thức như sau: Phần cứng – hardware- UART sẽ chuyển đổi dữ liệu song song nhận được từ vi xử lý, vi điều khiển và chuyển chúng thành dữ liệu nối tiếp. Dữ liệu nối tiếp này sẽ được truyền đến thiết bị nhận và tại đây, hardware UART sẽ chuyển đổi ngược lại thành dữ liệu song song để truyền về vi điều khiển, vi xử lý của thiết bị nhận.
Hình 2. 27 Kết nối chân truyền nhận UART'
Các chân sử dụng cho giao tiếp UART được gọi là TX ở thiết bị truyền và RX ở thiết bị nhận. Đồng thời, có các thanh ghi – shift registers – được
hiểu như là một phần của UART hardware (2 loại thanh ghi được sử dụng ở đây là: Transmitter Shift Register và Receiver Shift Register).
Cách thức hoạt động của giao tiếp UART
Trong giao tiếp UART, dữ liệu được truyền không đồng bộ, nghĩa là không cần tín hiệu clock hoặc các tín hiệu timming khác để đồng bộ, kiểm tra dữ liệu giữa thiết bị truyền và thiết bị nhận. Thay vào đó, UART sử dụng các bit đặt biệt được gọi là Start và Stop bits.
Các bits này được thêm vào đầu và cuối gói dữ liệu. Các bits được thêm vào sẽ giúp bên nhận xác định được phần nào là phần dữ liệu thực tế cần nhận.
Hình 2. 28 Kết nối giữa các thành phần trong giao tiếp UART
Hình bên trên cho thấy kết nối giữa các thành phần trong giao tiếp UART. Bộ phận truyền UART sẽ nhận dữ liệu từ vi điều khiển thông qua bus điều khiển và bus dữ liệu. Với dữ liệu này, UART sẽ thêm vào Start, Parity và Stop bits theo cầu hình và convert nó thành 1 gói dữ liệu. Gói dữ liệu này sẽ
được chuyển đổi từ song song sang nối tiếp được lưu dưới các thanh ghi – shift register và truyền đi từng bit một qua chân TX.
Thiết bị nhận UART sẽ nhận dữ liệu từ chân RX và xác định đâu là dữ liệu thực sau khi loại trừ start và stop bits. Parity bit được sử dụng để kiểm tra độ chính xác của dữ liệu. Phụ thuộc vào sự chia cắt của start, parity và stop bits từ gói dữ liệu, tất cả dữ liệu sẽ được chuyển từ nối tiếp sang song song và được lưu dưới các thanh ghi – shift register. Những dữ liệu song song này sẽ được truyền đến vi điều khiển thông qua data bus.
Hình 2. 29 Khung truyền UART
- Start-bit
Start-bit còn được gọi là bit đồng bộ hóa được đặt trước dữ liệu thực tế. Nói chung, một đường truyền dữ liệu không hoạt động được điều khiển ở mức điện áp cao. Để bắt đầu truyền dữ liệu, truyền UART kéo đường dữ liệu từ mức điện áp cao (1) xuống mức điện áp thấp (0). UART thu được thông báo sự chuyển đổi này từ mức cao sang mức thấp qua đường dữ liệu cũng như bắt đầu hiểu dữ liệu thực. Nói chung, chỉ có một start-bit.
Bit dừng đượ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. Để dừng sóng, UART giữ đường dữ liệu ở mức điện áp cao. - Bit chẵn lẻ
Bit chẵn lẻ cho phép người nhận đảm bảo liệu 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 & bit chẵn lẻ có sẵn trong hai phạm vi như Chẵn lẻ – chẵn lẻ cũng như Chẵn lẻ – lẻ. Trên thực tế, bit này không được sử dụng rộng rãi nên không bắt buộc.
- Dữ liệu bit hoặc khung dữ liệu
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 & 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. Nói chung, LSB của dữ liệu được truyền trước tiên sau đó nó rất hữu ích cho việc truyền.
QUY LUẬT KHI SỬ DỤNG UART
Như đã đề cập lúc đầu, giao tiếp UART không cần sử dụng tín hiệu clock để đồng bộ dữ liệu. Tuy nhiên có một số quy luật cần phải tuân thủ để tránh các lỗi trong quá trình truyền nhận dữ liệu qua UART. Các quy luật này bao gồm:
• Bits đồng bộ (Start and Stop bits) • Parity Bit
• Data Bits
Chúng ta đã tìm hiểu các bits đồng bộ và parity bit and data bits. Tuy nhiên, có 1 yếu tố quan trọng trong quá trình truyền nhận dữ liệu UART là Baud Rate.
Baud Rate: là tốc độ dùng để truyền và nhận dữ liệu. Cả thiết bị truyền và thiết bị nhận cần giao tiếp trên cùng 1 tốc độ để quá trình truyền nhận được hoàn thành.
Baud Rate được đo bởi số bit / giây ( bits per second ). Một số baud rates tiêu chuẩn là: 4800 bps, 9600 bps, 19200 bps, 115200 bps, …. Trong đó, tốc độ 9600 bps là tốc độ thường được sử dụng nhiều nhất.
- ƯU ĐIỂM CỦA UART
• Chỉ cần 2 dây để truyền nhận song song dữ liệu
• Không cần tín hiệu clock hay bất kỳ tín hiệu đồng bộ nào khác
• Parity bit đảm bảo dữ liệu được truyền đi chính xác
- NHƯỢC ĐIỂM CỦA UART
• Kích thước gói dữ liệu bị giới hạn
• Tốc độ truyền chậm hơn khi so sánh với kiểu truyền dữ liệu song song
• Thiết bị truyền và thiết bị nhận cần phải đồng nhất một số thông số với nhau
2.6.3 Giao tiếp I2C
Khái niệm giao tiếp I2C
I2C ( Inter – Integrated Circuit) là 1 giao thức giao tiếp nối tiếp đồng bộ được phát triển bởi Philips Semiconductors, sử dụng để truyền nhận dữ liệu giữa các IC với nhau chỉ sử dụng hai đường
Các bit dữ liệu sẽ được truyền từng bit một theo các khoảng thời gian đều đặn được thiết lập bởi 1 tín hiệu đồng hồ.
Bus I2C thường được sử dụng để giao tiếp ngoại vi cho rất nhiều loại IC khác nhau như các loại vi điều khiển, cảm biến, EEPROM, … .
Hình 2. 30 I2C
Cách thức hoạt động của giao tiếp I2C Cấu tạo :
I2C sử dụng 2 đường truyền tín hiệu:
o SCL - Serial Clock Line : Tạo xung nhịp đồng hồ do Master phát đi o SDA - Serial Data Line : Đường truyền nhận dữ liệu.
Giao tiếp I2C bao gồm quá trình truyền nhận dữ liệu giữa các thiết bị chủ tớ, hay Master - Slave.
Thiết bị Master là 1 vi điều khiển, nó có nhiệm vụ điều khiển đường tín hiệu SCL và gửi nhận dữ liệu hay lệnh thông qua đường SDA đến các thiết bị khác.
Các thiết bị nhận các dữ liệu lệnh và tín hiệu từ thiết bị Master được gọi là các thiết bị Slave. Các thiết bị Slave thường là các IC, hoặc thậm chí là vi điều khiển.
Master và Slave được kết nối với nhau như hình trên. Hai đường bus SCL và SDA đều hoạt động ở chế độ Open Drain, nghĩa là bất cứ thiết bị nào kết nối với mạng I2C này cũng chỉ có thể kéo 2 đường bus này xuống mức thấp (LOW), nhưng lại không thể kéo được lên mức cao. Vì để tránh trường hợp bus vừa bị 1 thiết bị kéo lên mức cao vừa bị 1 thiết