![báo cáo đồ án thiết kế thiết bị nhúng đề tài hệ thống iot giám sát phương tiện giao thông](https://123docz.net/image/doc_normal.png)
Đang tải... (xem toàn văn)
Thông tin tài liệu
CHƯƠNG 2.CƠ SỞ LÝ THUYẾT2.1.1 Giới thiệu về chuẩn giao tiếp UARTUART Universal Asynchronous Receiver - Transmitter – Bộ truyền nhận dữ liệunối tiếp bất đồng bộ là một trong những giao th
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
TRƯỜNG ĐIỆN – ĐIỆN TỬ
BÁO CÁO ĐỒ ÁN THIẾT KẾ THIẾT BỊ NHÚNGĐề tài: Hệ thống IoT giám sát phương tiện giao thông
Nhóm sinh viên thực hiện:
8Nguyễn Quang Lê Kiên2019330
Trang 2Hà Nội, 3-2023
Trang 3LỜI NÓI ĐẦU
Internet of Things (IoT) đã cách mạng hóa cách chúng ta tương tác với các đồ vậthàng ngày, từ điện thoại thông minh đến thiết bị gia dụng Khi công nghệ tiếp tục pháttriển, khả năng ứng dụng IoT là vô tận Trong báo cáo đồ án này, chúng em đã khámphá một ứng dụng như vậy: hệ thống theo dõi IoT cho phương tiện giao thông.
Trộm cắp xe máy, xe đạp và các tài sản khác là một vấn đề phổ biến trên toàn thếgiới và các phương pháp truy tìm và thu hồi đồ vật bị đánh cắp truyền thống thườngkhông đáng tin cậy Để giải quyết vấn đề này, chúng em đã phát triển một hệ thốngtheo dõi IoT cho phép chủ sở hữu theo dõi vị trí và trạng thái của phương tiện hoặc tàisản của họ trong thời gian thực Hệ thống này kết hợp công nghệ GPS, cảm biến vàứng dụng di động thân thiện với người dùng để cung cấp giải pháp toàn diện cho việctheo dõi tài sản và phòng chống trộm cắp.
Báo cáo thảo luận về thiết kế, triển khai hệ thống theo dõi IoT, bao gồm cung cấpthông tin chi tiết về các thành phần phần cứng và phần mềm được sử dụng, cũng nhưcác thuật toán và giao thức liên quan đến truyền thông và phân tích dữ liệu.
Chúng em cũng xin gửi lời cảm ơn chân thành đến PGS TS Nguyễn Đức Minh đãcung cấp những kiến thức cần thiết và hỗ trợ nhóm để hoàn thành báo cáo này Mặc dùđã cố gắng hết sức nhưng báo cáo khong thể tránh khỏi thiếu sót, mong nhận được sựgóp ý của thầy để chúng em có những sản phẩm tốt hơn trong tương lai.
Trang 4CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 7
2.1 Giao tiếp UART 7
2.1.1 Giới thiệu về chuẩn giao tiếp UART 7
2.1.2 Nguyên lý hoạt động của UART 8
2.1.3 Các bước truyền nhận dữ liệu bằng giao tiếp UART 11
2.2 Giao tiếp I2C 12
2.2.1 Giới thiệu chung về giao tiếp I2C 12
2.2.2 Nguyên lý hoạt động 13
2.2.3 Các chế độ hoạt động của I2C 19
2.3 Giao tiếp SPI 21
2.3.1 Giới thiệu chung về giao tiếp SPI 21
2.3.2 Đặc điểm của giao tiếp SPI 21
Trang 54.2 1.2 Khởi tạo module on: 33
4.3 Khối truyền thông 33
4.4 Khối hiển thị 37
4.4.1 Kiến trúc tổng thể của IoT với Aws 38
4.4.2 Cấu hình quyền và bảo mật cho các mối quan hệ giữa người dùng và thiết bị IoT 39
5.4 Giao diện Web 47
5.4.1 Publish bản tin tới một topic 47
5.4.2 Giao diện app 49
KẾT LUẬN 50
Trang 6DANH MỤC HÌNH VẼ
Hình 2.1 Cách thức hoạt động giao tiếp UART 7
Hình 2.2 Kết nối chân giao tiếp UART 8
Hình 2.3 Nguyên lý hoạt động của UART 9
Hình 2.4 Một gói truyền dữ liệu của UART 9
Hình 2.5 UART truyền nhận dữ liệu song song từ bus dữ liệu 11
Hình 2.6 UART truyền thêm bit start, bit chẵn lẻ và bit dừng vào khung dữ liệu 11
Hình 2.7 UART nhận lấy mẫu đường dữ liệu ở tốc độ truyền được định cấu hình trước 11
Hình 2.8 UART nhận loại bỏ bit start, bit chẵn lẻ và bit stop khỏi khung dữ liệu 12
Hình 2.9 UART nhận chuyển đổi dữ liệu nối tiếp trở lại thành song song 12
Hình 2.10 Giao tiếp I2C 13
Hình 2.11 Bus vật lý I2C 13
Hình 2.12 Thiết bị chủ (Master) và tớ (Slave) trong giao tiếp I2C 14
Hình 2.13 Gói truyền dữ liệu của giao tiếp I2C 15
Hình 2.14 Điều kiện bắt đầu giao tiếp I2C 15
Hình 2.15 Điều kiện kết thúc giao tiếp I2C 16
Hình 2.16 Master gửi điều kiện bắt đầu trong giao tiếp I2C 17
Hình 2.17 Slave so sánh địa chỉ được gửi từ thiết bị Master đến địa chỉ riêng của nó 17Hình 2.18 Master gửi hoặc nhận khung dữ liệu trong giao tiếp I2C 18
Hình 2.19 Slave nhận khung dữ liệu từ Master trong giao tiếp I2C 18
Hình 2.20 Dữ liệu gửi đến Slave hoàn tất trong giao tiếp I2C 19
Hình 2.21 Chế độ hoạt động một master nhiều slave giao tiếp I2C 20
Hình 2.22 Chế độ hoạt động nhiều master nhiều slave giao tiếp I2C 20
Hình 2.23 Các chân tín hiệu của SPI 22
Hình 2.24 Quá trình truyền dữ liệu SPI 22
Hình 2.25 Các chế độ hoạt động của SPI 23
Trang 7Hình 2.26 Kết nối 1 Master và 1 Slave của giao tiếp SPI 23
Hình 2.27 Kết nối 1 Master và nhiều Slave trong giao tiếp SPI 24
Hình 2.28 Mô hình pub/sub của MQTT 25
Hình 2.29 Mô hình pub.sub giữa MQTT và Broker 27
Hình 3.1 Mô hình làm việc của hệ thống 28
Hình 3.2 Khối thiết bị của hệ thống 29
Hình 3.3 Mô hình làm việc giữa IoT, AWS IoT và các dịch vụ khác của AWS 29
Hình 4.1 Vi xử lý STM32F401RCT6 30
Hình 4.2 Sơ đồ nối dây cảm biến gia tốc 30
Hình 4.3 Module GPS Quectel L76-LB 31
Hình 4.4 Sơ đồ chân module GPS 32
Hình 4.5 Sơ đồ nguồn điện trong module 32
Hình 4.6 Module SIM 4G EC200 34
Hình 4.7 Sơ đồ chân module SIM EC200 34
Hình 4.8 Sơ đồ thời gian khi module on 35
Hình 4.9 Kiến trúc tổng thể hỗ trợ Internet of Things của Aws 38
Hình 4.10 Tương tác giữa các dịch vụ cung cấp cho người dùng tiếp cận thiết bị 40
Hình 4.11 Mô hình làm việc giữa thiết bị, AWS IoT Core, app và Device Shadow 42
Hình 4.12 Kết nối device shadow 43
Hình 4.13 Cập nhật từ ứng dụng tới thiết bị 44
Hình 4.14 Cập nhật từ thiết bị tới ứng dụng 44
Hình 5.1 Data từ module gia tốc SC7A20 46
Hình 5.2 Raw data lấy từ Module GPS L76-lb 47
Hình 5.3 Data GPS sau khi được xử lý 47
Hình 5.4 Subcribe vào topic tại MQTT Test Client 48
Hình 5.5 Publish bản tin tới topic 48
Hình 5.6 Bản tin được publish đã chuyển đến client subcribe vào topic 48
Hình 5.7 App đã nhận được bản tin từ topic nó subcribe vào 49
Hình 5.8 Tracking được vị trí bản tin gửi lên 49
Trang 8DANH MỤC BẢNG BIỂU
Bảng 2.1 Cấu hình truyền UART 8Bảng 4.1 Bảng lệnh giao tiếp với module SIM 36Bảng 4.2 Bảng lệnh tương tác với MQTT Broker 36
Trang 10CHƯƠNG 1.GIỚI THIỆU CHUNG
Trong thời đại công nghệ 4.0 hiện nay, việc sử dụng các thiết bị kết nối Internet đãtrở thành xu hướng phổ biến và được áp dụng trong nhiều lĩnh vực khác nhau Tronglĩnh vực giao thông vận tải, việc sử dụng hệ thống IoT (Internet of Things) để theo dõivà quản lý phương tiện di chuyển đang được phát triển rất nhiều Tuy nhiên, vấn đềquản lý xe máy vẫn đang là một thách thức lớn.
Hiện nay, việc quản lý và theo dõi xe máy đang gặp nhiều khó khăn, khiến cho việcđảm bảo an ninh và an toàn giao thông trở nên khó khăn hơn Theo báo cáo của Tổngcục Đường bộ Việt Nam, việc quản lý xe máy vẫn chưa được đảm bảo một cách toàndiện và hiệu quả Đây là một vấn đề đang được quan tâm bởi cả chính phủ và ngườidân, đặc biệt là khi xe máy là phương tiện di chuyển phổ biến nhất ở Việt Nam.
Tình trạng này phần lớn là do các hệ thống quản lý xe máy hiện tại chưa đáp ứngđược yêu cầu của người dùng Một số hạn chế của các hệ thống quản lý xe máy hiệntại bao gồm:
− Khả năng theo dõi và quản lý không đáp ứng được nhu cầu thực tế của ngườidùng.
− Các thiết bị định vị thường bị giảm hiệu suất khi xe di chuyển trong các khuvực có sóng yếu hoặc không có sóng tín hiệu.
− Các thiết bị định vị thường cần thay pin thường xuyên, gây phiền toái chongười dùng.
− Chi phí cho việc lắp đặt và sử dụng hệ thống quản lý xe máy hiện tại còn khácao và không phù hợp với nhu cầu của người dân.
Với những hạn chế của các hệ thống quản lý xe máy hiện tại, việc áp dụng các giảipháp mới, đặc biệt là các giải pháp sử dụng công nghệ IoT sẽ giúp nâng cao hiệu quảquản lý và theo dõi xe máy.
Hệ thống IoT tracking xe máy là một giải pháp hiện đại, giúp quản lý và theo dõixe máy một cách hiệu quả Hệ thống này sử dụng các cảm biến để theo dõi vị trí và
Trang 11hoạt động của xe máy, từ đó giúp cung cấp thông tin chi tiết về vị trí, tốc độ và hướngđi của xe máy.
Thiết bị IoT theo dõi tài sản và phương tiện giao thông là những thiết bị kết nốiInternet, được sử dụng để theo dõi và quản lý các tài sản và phương tiện giao thôngtrong thời gian thực Những thiết bị này có thể được gắn vào bất kỳ tài sản hoặcphương tiện giao thông nào như ô tô, xe máy, container, máy móc, thiết bị y tế, v.v đểgiúp chủ sở hữu và quản lý tài sản và phương tiện giao thông theo dõi chúng một cáchchính xác, nhanh chóng và hiệu quả
Các thiết bị này sử dụng các công nghệ như GPS và các cảm biến để thu thập vàtruyền tải dữ liệu về vị trí, tốc độ, hướng đi, trạng thái của tài sản và phương tiện giaothông đến các hệ thống quản lý tài sản và phương tiện giao thông Các dữ liệu nàyđược lưu trữ và phân tích để cung cấp thông tin về tình trạng, vị trí, tốc độ và thời gianhoạt động của các tài sản và phương tiện giao thông
Nhờ vào các thiết bị IoT này, chủ sở hữu và quản lý tài sản và phương tiện giaothông có thể giám sát các hoạt động và quản lý chúng một cách chính xác và nhanhchóng Ví dụ, họ có thể theo dõi lộ trình, thời gian vận chuyển, tình trạng sử dụng củaphương tiện giao thông và theo dõi tài sản của họ để đảm bảo an toàn và tối ưu hóahiệu quả sử dụng
Trong tổng thể, thiết bị IoT theo dõi tài sản và phương tiện giao thông đóng mộtvai trò quan trọng trong việc quản lý tài sản và phương tiện giao thông, giúp chủ sởhữu và quản lý tài sản và phương tiện giao thông tăng cường khả năng quản lý, tối ưuhóa chi phí và nâng cao hiệu suất hoạt động.
Trang 12CHƯƠNG 2.CƠ SỞ LÝ THUYẾT
2.1.1 Giới thiệu về chuẩn giao tiếp UART
UART (Universal Asynchronous Receiver - Transmitter – Bộ truyền nhận dữ liệunối tiếp bất đồng bộ) là một trong những giao thức truyền thông giữa thiết bị với thiếtbị được sử dụng nhiều nhất.
Khi được cấu hình đúng cách, UART có thể hoạt động với nhiều loại giao thức nốitiếp khác nhau liên quan đến việc truyền và nhận dữ liệu nối tiếp Trong giao tiếp nốitiếp, dữ liệu được truyền từng bit bằng cách sử dụng một đường dây Trong giao tiếphai chiều, chúng ta sử dụng hai dây để truyền dữ liệu nối tiếp thành công Tùy thuộcvào ứng dụng và yêu cầu hệ thống, truyền thông nối tiếp cần ít mạch và dây hơn, điềunày làm giảm chi phí thực hiện.
Dưới đây là cách thức hoạt động của giao tiếp UART, các tiêu chuẩn của UART đểtối đa hóa khả năng và ứng dụng, đặc biệt là khi phát triển các sản phẩm mới.
Hình 2.1 Cách thức hoạt động giao tiếp UART
Trong giao tiếp UART, hai UART giao tiếp trực tiếp với nhau UART truyềnchuyển đổi dữ liệu song song từ một thiết bị điều khiển như CPU thành dạng nối tiếp,truyền nó nối tiếp đến UART nhận, sau đó chuyển đổi dữ liệu nối tiếp trở lại thành dữliệu song song cho thiết bị nhận.
Trang 13Hình 2.2 Kết nối chân giao tiếp UART
Thay vì tín hiệu đồng hồ, UART truyền thêm các bit start và stop vào gói dữ liệuđược chuyển Các bit này xác định điểm bắt đầu và điểm kết thúc của gói dữ liệu đểUART nhận biết khi nào bắt đầu đọc các bit Khi UART nhận phát hiện một bit start,nó bắt đầu đọc các bit đến ở một tần số cụ thể được gọi là tốc độ truyền (baud rate).Tốc độ truyền là thước đo tốc độ truyền dữ liệu, được biểu thị bằng bit trên giây (bps –bit per second) Cả hai UART đều phải hoạt động ở cùng một tốc độ truyền Tốc độtruyền giữa UART truyền và nhận chỉ có thể chênh lệch khoảng 10% trước khi thờigian của các bit bị lệch quá xa Cả hai UART cũng phải được cấu hình để truyền vànhận cùng một cấu trúc gói dữ liệu.
Bảng 2.1 Cấu hình truyền UART
Tốc độ truyền 9600, 19200, 38400, 57600, 115200, 230400, 460800,921600, 1000000, 1500000
Phương pháp truyền Bất đồng bộ
Số lượng thiết bị master 1Số lượng thiết bị slave 1
2.1.2 Nguyên lý hoạt động của UART
UART sẽ truyền dữ liệu nhận được từ một bus dữ liệu (Data Bus) Bus dữ liệuđược sử dụng để gửi dữ liệu đến UART bởi một thiết bị khác như CPU, bộ nhớ hoặc viđiều khiển Dữ liệu được chuyển từ bus dữ liệu đến UART truyền ở dạng song song.
Trang 14Sau khi UART truyền nhận dữ liệu song song từ bus dữ liệu, nó sẽ thêm một bit start,một bit chẵn lẻ và một bit stop, tạo ra gói dữ liệu Tiếp theo, gói dữ liệu được xuất ranối tiếp từng bit tại chân Tx UART nhận đọc gói dữ liệu từng bit tại chân Rx của nó.UART nhận sau đó chuyển đổi dữ liệu trở lại dạng song song và loại bỏ bit start, bitchẵn lẻ và bit stop Cuối cùng, UART nhận chuyển gói dữ liệu song song với bus dữliệu ở đầu nhận.
Hình 2.3 Nguyên lý hoạt động của UART
Dữ liệu truyền qua UART được tập hợp thành gói (packet) Mỗi gói chứa 1 bitstart, 5 đến 9 bit dữ liệu (tùy thuộc vào UART), một bit chẵn lẻ (parity bit) tùy chọn và1 hoặc 2 bit stop.
Hình 2.4 Một gói truyền dữ liệu của UART
2.1.2.1Start bit (Bit bắt đầu)
Đường truyền dữ liệu UART thường được giữ ở mức điện áp cao khi nó khôngtruyền dữ liệu Để bắt đầu truyền dữ liệu, UART truyền sẽ kéo đường truyền từ mứccao xuống mức thấp trong một chu kỳ đồng hồ Khi UART nhận phát hiện sự chuyển
Trang 15đổi điện áp cao xuống thấp, nó bắt đầu đọc các bit trong khung dữ liệu ở tần số của tốcđộ truyền.
2.1.2.2Data Frame (Khung dữ liệu)
Khung dữ liệu chứa dữ liệu thực tế đang được truyền Nó có thể dài từ 5 bit đến 8bit nếu sử dụng bit chẵn lẻ Nếu không sử dụng bit chẵn lẻ, khung dữ liệu có thể dài 9bit Trong hầu hết các trường hợp, dữ liệu được truyền với bit có trọng số bé nhất(LSB – Least Significant Bit) trước tiên.
2.1.2.3Parity Bit (Bit chẵn lẻ)
Tính chẵn lẻ mô tả tính chẵn hoặc lẻ của một số Bit chẵn lẻ là một cách để UARTnhận cho biết liệu có bất kỳ dữ liệu nào đã thay đổi trong quá trình truyền hay không.Bit có thể bị thay đổi bởi bức xạ điện từ, tốc độ truyền không khớp hoặc truyền dữ liệuđường dài Sau khi UART nhận đọc khung dữ liệu, nó sẽ đếm số bit có giá trị là 1 vàkiểm tra xem tổng số là số chẵn hay lẻ Nếu bit parity là 0 (even parity – parity chẵn),thì tổng số bit 1 trong khung dữ liệu phải luôn là một số chẵn Nếu bit parity là 1 (oddparity – parity lẻ) thì số tổng bit 1 trong khung dữ liệu là một số lẻ.
Khi bit chẵn lẻ khớp với dữ liệu, UART biết rằng quá trình truyền không có lỗi.Nhưng nếu bit chẵn lẻ là 0 và tổng là số lẻ, hoặc bit chẵn lẻ là 1 và tổng số là chẵn, thìUART biết rằng các bit trong khung dữ liệu đã thay đổi.
2.1.2.4Stop Bit (Bit kết thúc)
Để báo hiệu sự kết thúc của gói dữ liệu, UART gửi sẽ điều khiển đường truyền dữliệu từ điện áp thấp đến điện áp cao trong ít nhất hai khoảng thời gian bit.
Hình 2.12 Stop Bit trong quá trình giao tiếp UART
Trang 162.1.3 Các bước truyền nhận dữ liệu bằng giao tiếp UART
2.1.3.1UART truyền nhận dữ liệu song song từ bus dữ liệu.
Hình 2.5 UART truyền nhận dữ liệu song song từ bus dữ liệu
2.1.3.2UART truyền thêm bit start, bit chẵn lẻ và bit dừng vào khung dữ liệu.
Hình 2.6 UART truyền thêm bit start, bit chẵn lẻ và bit dừng vào khung dữ liệu
Trang 172.1.3.33 Toàn bộ gói được gửi nối tiếp từ UART truyền đến UART nhận UART nhậnlấy mẫu đường dữ liệu ở tốc độ truyền được định cấu hình trước.
Hình 2.7 UART nhận lấy mẫu đường dữ liệu ở tốc độ truyền được định cấu hình trước
2.1.3.4UART nhận loại bỏ bit start, bit chẵn lẻ và bit stop khỏi khung dữ liệu.
Hình 2.8 UART nhận loại bỏ bit start, bit chẵn lẻ và bit stop khỏi khung dữ liệu
2.1.3.5UART nhận chuyển đổi dữ liệu nối tiếp trở lại thành song song và chuyển nóđến bus dữ liệu ở đầu nhận.
Hình 2.9 UART nhận chuyển đổi dữ liệu nối tiếp trở lại thành song song
Trang 182.2Giao tiếp I2C
2.2.1 Giới thiệu chung về giao tiếp I2C
I2C là tên viết tắt của cụm từ tiếng anh “Inter-Integrated Circuit” Nó là một giaothức giao tiếp được phát triển bởi Philips Semiconductors để truyền dữ liệu giữa mộtbộ xử lý trung tâm với nhiều IC trên cùng một board mạch chỉ sử dụng hai đườngtruyền tín hiệu Do tính đơn giản của nó nên loại giao thức này được sử dụng rộng rãicho giao tiếp giữa vi điều khiển và mảng cảm biến, các thiết bị hiển thị, thiết bị IoT,EEPROMs, v.v …
Đây là một loại giao thức giao tiếp nối tiếp đồng bộ Nó có nghĩa là các bit dữ liệuđượ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 một tínhiệu đồng hồ tham chiếu.
Hình 2.10 Giao tiếp I2C
Giống như giao tiếp UART, I2C chỉ sử dụng hai dây để truyền dữ liệu giữa cácthiết bị:
− SDA (Serial Data) - đường truyền cho master và slave để gửi và nhận dữ liệu.− SCL (Serial Clock) - đường mang tín hiệu xung nhịp.
I2C là một giao thức truyền thông nối tiếp, vì vậy dữ liệu được truyền từng bit dọctheo một đường duy nhất (đường SDA).
Giống như SPI, I2C là đồng bộ, do đó đầu ra của các bit được đồng bộ hóa với việclấy mẫu các bit bởi một tín hiệu xung nhịp được chia sẻ giữa master và slave Tín hiệuxung nhịp luôn được điều khiển bởi master.
Trang 192.2.2 Nguyên lý hoạt động
2.2.2.1Bus vật lý I2C
Bus I2C (dây giao tiếp) chỉ gồm hai dây và được đặt tên là Serial Clock Line (SCL)và Serial Data Line (SDA) Dữ liệu được truyền đi được gửi qua dây SDA và đượcđồng bộ với tín hiệu đồng hồ (clock) từ SCL Tất cả các thiết bị/IC trên mạng I2Cđược kết nối với cùng đường SCL và SDA như sau:
Hình 2.11 Bus vật lý I2C
Cả hai đường bus I2C (SDA, SCL) đều hoạt động như các bộ lái cực máng hở(open drain) Nó có nghĩa là bất kỳ thiết bị/ IC trên mạng I2C có thể lái SDA và SCLxuống mức thấp, nhưng không thể lái chúng lên mức cao Vì vậy, một điện trở kéo lên(khoảng 1 kΩ đến 4,7 kΩ) được sử dụng cho mỗi đường bus, để giữ cho chúng ở mứccao (ở điện áp dương) theo mặc định.
Lý do sử dụng một hệ thống cực máng hở (open drain) là để không xảy ra hiệntượng ngắn mạch, điều này có thể xảy ra khi một thiết bị cố gắng kéo đường dây lêncao và một số thiết bị khác cố gắng kéo đường dây xuống thấp.
2.2.2.2Thiết bị chủ (Master) và tớ (Slave)
Các thiết bị kết nối với bus I2C được phân loại hoặc là thiết bị Chủ (Master) hoặclà thiết bị Tớ (Slave) Ở bất cứ thời điểm nào thì chỉ có duy nhất một thiết bị Master ởtrang thái hoạt động trên bus I2C Nó điều khiển đường tín hiệu đồng hồ SCL và quyếtđịnh hoạt động nào sẽ được thực hiện trên đường dữ liệu SDA.
Tất cả các thiết bị đáp ứng các hướng dẫn từ thiết bị Master này đều là Slave Đểphân biệt giữa nhiều thiết bị Slave được kết nối với cùng một bus I2C, mỗi thiết bịSlave được gán một địa chỉ vật lý 7-bit cố định Khi một thiết bị Master muốn truyềndữ liệu đến hoặc nhận dữ liệu từ một thiết bị Slave, nó xác định địa chỉ thiết bị Slave
Trang 20cụ thể này trên đường SDA và sau đó tiến hành truyền dữ liệu Vì vậy, giao tiếp cóhiệu quả diễn ra giữa thiết bị Master và một thiết bị Slave cụ thể Tất cả các thiết bịSlave khác không phản hồi trừ khi địa chỉ của chúng được chỉ định bởi thiết bị Mastertrên dòng SDA.
Hình 2.12 Thiết bị chủ (Master) và tớ (Slave) trong giao tiếp I2C
2.2.2.3Giao thức truyền nhận dữ liệu
Giao thức sau đây (tập hợp các quy tắc) được theo sau bởi thiết bị Master và cácthiết bị Slave để truyền dữ liệu giữa chúng.
Dữ liệu được truyền giữa thiết bị Master và các thiết bị Slave thông qua một đườngdữ liệu SDA duy nhất, thông qua các chuỗi có cấu trúc gồm các số 0 và 1 (bit) Mỗichuỗi số 0 và 1 được gọi là giao dịch (transaction) và dữ liệu trong mỗi giao dịch cócấu trúc như sau:
Hình 2.13 Gói truyền dữ liệu của giao tiếp I2C− Điều kiện bắt đầu (Start Condition)
Bất cứ khi nào một thiết bị chủ/ IC quyết định bắt đầu một giao dịch, nó sẽ chuyểnmạch SDA từ mức điện áp cao xuống mức điện áp thấp trước khi đường SCL chuyểntừ cao xuống thấp.
Khi điều kiện bắt đầu được gửi bởi thiết bị Master, tất cả các thiết bị Slave đều hoạtđộng ngay cả khi chúng ở chế độ ngủ (sleep mode) và đợi bit địa chỉ.
Trang 21Hình 2.14 Điều kiện bắt đầu giao tiếp I2C− Khối địa chỉ
Nó bao gồm 7 bit và được lấp đầy với địa chỉ của thiết bị Slave đến/ từ đó thiết bịMaster cần gửi/ nhận dữ liệu Tất cả các thiết bị Slave trên bus I2C so sánh các bit địachỉ này với địa chỉ của chúng.
− Bit Read / Write
Bit này xác định hướng truyền dữ liệu Nếu thiết bị Master/ IC cần gửi dữ liệu đến thiết bị Slave, bit này được thiết lập là ‘0’ Nếu IC Master cần nhận dữ liệu từ thiết bị Slave, bit này được thiết lập là ‘1’.
− Bit ACK / NACK
ACK / NACK là viết tắt của Acknowledged / Not Acknowledged Nếu địa chỉ vậtlý của bất kỳ thiết bị Slave nào trùng với địa chỉ được thiết bị Master phát, giá trị củabit này được set là ‘0’ bởi thiết bị Slave Ngược lại, nó vẫn ở mức logic ‘1’ (mặc định).
− Khối dữ liệu
Nó bao gồm 8 bit và chúng được thiết lập bởi bên gửi, với các bit dữ liệu cầntruyền tới bên nhận Khối này được theo sau bởi một bit ACK / NACK và được setthành ‘0’ bởi bên nhận nếu nó nhận thành công dữ liệu Ngược lại, nó vẫn ở mức logic‘1’ Sự kết hợp của khối dữ liệu theo sau bởi bit ACK / NACK được lặp lại cho đếnquá trình truyền dữ liệu được hoàn tất.
− Điều kiện kết thúc (Stop condition)
Trang 22Sau khi các khung dữ liệu cần thiết được truyền qua đường SDA, thiết bị Masterchuyển đường SDA từ mức điện áp thấp sang mức điện áp cao trước khi đường SCLchuyển từ cao xuống thấp.
Hình 2.15 Điều kiện kết thúc giao tiếp I2C
2.2.2.4Nguyên lý hoạt động
− Gửi dữ liệu đến thiết bị Slave
Trình tự hoạt động sau đây diễn ra khi một thiết bị Master gửi dữ liệu đến một thiếtbị Slave cụ thể thông qua bus I2C:
− Thiết bị Master gửi điều kiện bắt đầu đến tất cả các thiết bị Slave
− Thiết bị Master gửi 7 bit địa chỉ của thiết bị Slave mà thiết bị Master muốngiao tiếp cùng với bit Read/Write
Hình 2.16 Master gửi điều kiện bắt đầu trong giao tiếp I2C
− Mỗi thiết bị Slave so sánh địa chỉ được gửi từ thiết bị Master đến địa chỉriêng của nó Nếu địa chỉ trùng khớp, thiết bị Slave gửi về một bit ACK
Trang 23bằng cách kéo đường SDA xuống thấp và bit ACK / NACK được thiết lập là‘0’ Nếu địa chỉ từ thiết bị Master không khớp với địa chỉ riêng của thiết bịSlave thì đường SDA ở mức cao và bit ACK / NACK sẽ ở mức ‘1’ (mặcđịnh).
Hình 2.17 Slave so sánh địa chỉ được gửi từ thiết bị Master đến địa chỉ riêng của nó
− Thiết bị Master gửi hoặc nhận khung dữ liệu Nếu thiết bị Master muốn gửidữ liệu đến thiết bị Slave, bit Read / Write là mức điện áp thấp Nếu thiết bịMaster đang nhận dữ liệu từ thiết bị Slave, bit này là mức điện áp cao.
Hình 2.18 Master gửi hoặc nhận khung dữ liệu trong giao tiếp I2C
− Nếu khung dữ liệu được thiết bị Slave nhận được thành công, nó sẽ thiết lập bitACK / NACK thành ‘0’, báo hiệu cho thiết bị Master tiếp tục.
Trang 24Hình 2.19 Slave nhận khung dữ liệu từ Master trong giao tiếp I2C
− Sau khi tất cả dữ liệu được gửi đến thiết bị Slave, thiết bị Master gửi điều kiệndừng để báo hiệu cho tất cả các thiết bị Slave biết rằng việc truyền dữ liệu đãkết thúc.
Hình 2.20 Dữ liệu gửi đến Slave hoàn tất trong giao tiếp I2C
2.2.3 Các chế độ hoạt động của I2C
Dựa vào tốc độ ta chia làm 2 loại”
− Chế độ chuẩn (standard mode) hoạt động ở tốc độ 100 Kbit/s.− Chế độ tốc độ thấp (low-speed mode) hoạt động ở tốc độ 10 Kbit/s.
Trang 25Nếu chia theo quan hệ chủ tớ:− Một Master một Slave.− Một Master nhiều Slave.− Nhiều Master nhiều Slave.2.2.3.1Một Master nhiều Slave:
Bởi vì I2C sử dụng địa chỉ, nhiều thiết bị Slave có thể được điều khiển từ một thiếtbị Master duy nhất Với 7 bit địa chỉ tương ứng 128 (27) địa chỉ duy nhất có sẵn Đểkết nối nhiều thiết bị Slave với một một thiết bị Master duy nhất, hãy nối dây như hìnhbên dưới, với các điện trở kéo lên 4.7 kΩ kết nối các đường SDA và SCL với Vcc:
Hình 2.21 Chế độ hoạt động một master nhiều slave giao tiếp I2C
2.2.3.2Nhiều Master nhiều Slave:
Nhiều thiết bị Master có thể được kết nối với một thiết bị Slave đơn hoặc nhiềuthiết bị Slave Vấn đề với nhiều thiết bị Master trong cùng một hệ thống xuất hiện khihai thiết bị Master cố gắng gửi hoặc nhận dữ liệu cùng một lúc trên dòng SDA Để giảiquyết vấn đề này, mỗi thiết bị Master cần phát hiện xem đường SDA thấp hay caotrước khi truyền một thông điệp Nếu đường SDA thấp, điều này có nghĩa là một thiếtbị Master khác có quyền điều khiển bus và thiết bị Master còn lại phải đợi để gửi tinnhắn Nếu đường SDA cao thì an toàn để truyền tải thông điệp Để kết nối nhiều thiếtbị Master với nhiều thiết bị Slave, hãy sử dụng sơ đồ sau đây, với điện trở kéo lên 4.7kΩ kết nối các đường SDA và SCL với Vcc:
Trang 26Hình 2.22 Chế độ hoạt động nhiều master nhiều slave giao tiếp I2C
2.3.1 Giới thiệu chung về giao tiếp SPI
SPI – Serial Peripheral Interface – hay còn gọi là giao diện ngoại vi nối tiếp, đượcphát triển bởi hãng Motorola Chuẩn đồng bộ nối truyền dữ liệu ở chế độ full - duplex(hay gọi là "song công toàn phần" Nghĩa là tại 1 thời điểm có thể xảy ra đồng thời quátrình truyền và nhận Là giao tiếp đồng bộ, bất cứ quá trình nào cũng đều được đồngbộ với xung clock sinh ra bởi thiết bị Master Không cần phải lo lắng về tốc độ truyềndữ liệu SPI thường được sử dụng giao tiếp với bộ nhớ EEPROM, RTC (Đồng hồ thờigian thực), IC âm thanh, các loại cảm biến như nhiệt độ và áp suất, thẻ nhớ như MMChoặc thẻ SD hoặc thậm chí các bộ vi điều khiển khác.
2.3.2 Đặc điểm của giao tiếp SPI
Trang 27− MISO (Master Input Slave Output): Tín hiệu tạo bởi thiết bị Slave và nhận bởithiết bị Master Đường MISO phải được kết nối giữa thiết bị Master và Slave.− MOSI (Master Output Slave Input): Tín hiệu tạo bởi thiết bị Master và nhận bởi
thiết bị Slave Đường MOSI phải được kết nối giữa thiết bị Master và Slave.− SS (Slave Select): Chọn thiết bị Slave cụ thể để giao tiếp Để chọn Slave giao
tiếp thiết bị Master chủ động kéo đường SS tương ứng xuống mức 0 (Low).Chân này đôi khi còn được gọi là CS (Chip Select) Chân SS của vi điều khiển(Master) có thể được người dùng tạo bằng cách cấu hình 1 chân GPIO bất kỳchế độ Output.
Hình 2.23 Các chân tín hiệu của SPI
2.3.2.2Khung truyền SPI:
Mỗi chip Master hay Slave đều có một thanh ghi dữ liệu 8 bits Quá trình truyềnnhận giữa Master và Slave xảy ra đồng thời sau 8 chu kỳ đồng hồ, một byte dữ liệuđược truyền theo cả 2 hướng Quá trình trao đổi dữ liệu bắt đầu khi Master tạo 1 xungclock từ bộ tạo xung nhịp (Clock Generator) và kéo đường SS của Slave mà nó truyềndữ liệu xuống mức Low Cứ 1 xung clock, Master sẽ gửi đi 1 bit từ thanh ghi dịch(Shift Register) của nó đến thanh ghi dịch của Slave thông qua đường MOSI Đồngthời Slave cũng gửi lại 1 bit đến cho Master qua đường MISO Như vậy sau 8 chu kỳclock thì hoàn tất việc truyền và nhận 1 byte dữ liệu Dữ liệu của 2 thanh ghi được traođổi với nhau nên tốc độ trao đổi diễn ra nhanh và hiệu quả.
Lưu ý: Trong giao tiếp SPI, chỉ có thể có 1 Master nhưng có thể 1 hoặc nhiều Slave
cùng lúc Ở trạng thái nghỉ, chân SS của các Slave ở mức 1, muốn giao tiếp với Slavenào thì ta chỉ việc kéo chân SS của Slave đó xuống mức 0.
Trang 28Hình 2.24 Quá trình truyền dữ liệu SPI
Hình 2.25 Các chế độ hoạt động của SPI
− Mode 0 (mặc định) – xung nhịp của đồng hồ ở mức thấp (CPOL = 0) và dữ liệuđược lấy mẫu khi chuyển từ thấp sang cao (cạnh lên) (CPHA = 0).
− Mode 1 - xung nhịp của đồng hồ ở mức thấp (CPOL = 0) và dữ liệu được lấymẫu khi chuyển từ cao sang thấp (cạnh xuống) (CPHA = 1).
− Mode 2 - xung nhịp của đồng hồ ở mức cao (CPOL = 1) và dữ liệu được lấymẫu khi chuyển từ cao sang thấp (cạnh lên) (CPHA = 0).
Trang 29− Mode 3 - xung nhịp của đồng hồ ở mức cao (CPOL = 1) và dữ liệu được lấymẫu khi chuyển từ thấp sang cao (cạnh xuông) (CPHA = 1).
2.3.4 Các sơ đồ kết nối giao tiếp SPI:
2.3.4.11 thiết bị Master và 1 thiết bị Slave
Hình 2.26 Kết nối 1 Master và 1 Slave của giao tiếp SPI
2.3.4.21 thiết bị Master và nhiều thiết bị Slave (chế độ độc lập - Independent):Ở chế độ này, mỗi thiết bị Slave kết nối với Master được quy định riêng bởi nhữngchân SS khác nhau Khi thiết bị Master muốn giao tiếp với Slave nào thì kéo chân SStương ứng xuống mức 0, những chân SS còn lại giữ ở mức 1.
Hình 2.27 Kết nối 1 Master và nhiều Slave trong giao tiếp SPI
2.3.4.31 thiết bị Master và nhiều thiết bị Slave (chế độ dây chuyền - Daisy): Nếu chúng ta cần kết nối SPI với nhiều thiết bị, nếu dùng cách trên thì sẽ tốn nhiềuchân SS của vi điều khiển Thay vào đó chúng ta có thể kết nối các thiết bị Slave theokiểu dây chuyển như bên dưới mà chỉ cần 1 chân SS từ vi điều khiển Chân MOSI củaSlave này sẽ nối với MISO của Slave tiếp theo.
Ngày đăng: 18/06/2024, 17:25
Xem thêm:
Tài liệu cùng người dùng
Tài liệu liên quan