CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 Giới thiệu về IOT 1.1 Khái niệm Mạng lưới thiết bị kết nối Internet viết tắt là IoT (Internet of Things) là một kịch bản của thế giới, khi mà mỗi đồ vật, con người được cung cấp một định danh riêng và tất cả có khả năng truyền tải, trao đổi thông tin, dữ liệu qua một mạng duy nhất mà không cần đến sự tương tác trực tiếp giữa người với người hay người với máy tính [1]. IoT đã phát triển từ sự hội tụ của công nghệ không dây, công nghệ vi cơ điện tử và Internet. Việc kết nối có thể thực hiện qua mạng Wi-Fi, mạng di động băng rộng (3G, 4G), Bluetooth, ZigBee,… Các thiết bị có thể là smartphone, máy pha cafe, máy giặt, tai nghe, bóng đèn, camera… và nhiều thiết bị khác [1].2 Cấu phần của hệ thống IOT Kiến trúc IoT được đại diện cơ bản bởi bốn phần: Vạn vật (Things), trạm kết nối (Gateways), hạ tầng mạng và điện toán đám mây (Network and Cloud) và các lớp tạo và cung cấp dịch vụ (Services-creation and Solutions Layers) [1].1: Mô hình kiến trúc IOT Vạn vật (Things ): ví dụ xe hơi, thiết bị cảm biến, thiết bị đeo và điện thoại di động đang được kết nối trực tiếp thông qua băng tần mạng không dây và truy cập vào Internet. Giải pháp IoT giúp các thiết bị thông minh được sàng lọc, kết nối và quản lý dữ liệu một cách cục bộ, còn các thiết bị “chưa thông minh” thì có thể kết nối được thông qua các trạm kết nối [1].
3 Luan van Trạm kết nối (Gateways ): các trạm kết nối sẽ đóng vai trò là một trung gian trực tiếp, cho phép các thiết bị có sẵn này kết nối với điện toán đám mây một cách bảo mật và dễ dàng quản lý [1]. Hạ tầng mạng và điện toán đám mây (Network and Cloud ): Cơ sở hạ tầng kết nối Internet bao gồm thiết bị định tuyến, trạm kết nối, thiết bị tổng hợp, thiếp bị lặp và nhiều thiết bị khác có thể kiểm soát lưu lượng dữ liệu lưu thông và cũng được kết nối đến mạng lưới viễn thông và cáp - được triển khai bởi các nhà cung cấp dịch vụ. Trung tâm dữ liệu/hạ tầng điện toán đám mây bao gồm một hệ thống lớn các máy chủ (Server), hệ thống lưu trữ và mạng ảo hóa được kết nối [1]. Các lớp tạo và cung cấp dịch vụ (Services-Creation and Solutions Layers): Intel đã kết hợp những phần mềm quản lý API hàng đầu (Application Progmraming Interface) là Mashery và Aepona để giúp đưa các sản phẩm và giải pháp IoT ra thị trường một cách chóng và tận dụng được hết giá trị của việc phân tích các dữ liệu từ hệ thống và tài sản đang có sẵn [1].3 Ứng dụng IoT có thể ứng dụng được trong bất kì lĩnh vực nào mà chúng ta muốn.
Một số lĩnh vực nổi bật hiện nay được ứng dụng IoT nhiều nhất như: Nhà thông minh. Quản lý các thiết bị cá nhân: thiết bị đeo tay để đo nhịp tim huyết áp Quản lý môi trường: Xử lý trong các tình huống khẩn cấp. Quản lý giao thông. Lĩnh vực mua sắm thông minh Đồ dùng sinh hoạt hằng ngày: như máy pha coffee, bình nóng lạnh Tự động hóa: các công xưởng sản xuất xe hơi đã áp dụng công nghệ IoT để cắt giảm hầu hết các công nhân, thay vào đó là các bộ máy tích hợp trí thông minh nhân tạo cho năng suất tăng gấp nhiều lần và độ chính xác cao hơn.2 Các chuẩn giao tiếp 1.1 SPI 4 Luan van SPI (Serial Peripheral Interface) là một chuẩn truyền thông nối tiếp tốc độ cao do hãng Motorola đề xuất.
Đây là kiểu truyền thông Master-Slave, trong đó có 1 chip Master điều phối quá trình tuyền thông và các chip Slaves được điều khiển bởi Master vì thế truyền thông chỉ xảy ra giữa Master và Slave. SPI là một cách truyền song công (full duplex) nghĩa là tại cùng một thời điểm quá trình truyền và nhận có thể xảy ra đồng thời. SPI đôi khi được gọi là chuẩn truyền thông “4 dây” vì có 4 đường giao tiếp trong chuẩn này đó là SCK (Serial Clock), MISO (Master Input Slave Output), MOSI (Master Ouput Slave Input) và SS (Slave Select) [2]: SCK: Xung giữ nhịp cho giao tiếp SPI, vì SPI là chuẩn truyền đồng bộ nên cần 1 đường giữ nhịp, mỗi nhịp trên chân SCK báo 1 bit dữ liệu đến hoặc đi. Đây là điểm khác biệt với truyền thông không đồng bộ mà chúng ta đã biết trong chuẩn UART.
Sự tồn tại của chân SCK giúp quá trình tuyền ít bị lỗi và vì thế tốc độ truyền của SPI có thể đạt rất cao. Xung nhịp chỉ được tạo ra bởi chip Master [2]. MISO – Master Input/Slave Output: nếu là chip Master thì đây là đường Input còn nếu là chip Slave thì MISO lại là Output. MISO của Master và các Slaves đượcnối trực tiếp với nhau [2].
MOSI – Master Output/Slave Input: nếu là chip Master thì đây là đường Output còn nếu là chip Slave thì MOSI là Input. MOSI của Master và các Slaves được nối trực tiếp với nhau [2]. SS – Slave Select: SS là đường chọn Slave cần giao tiếp, trên các chip Slave đường SS sẽ ở mức cao khi không làm việc. Nếu chip Master kéo đường SS của một Slave nào đó xuống mức thấp thì việc giao tiếp sẽ xảy ra giữa Master và Slave đó.
Chỉ có 1 đường SS trên mỗi Slave nhưng có thể có nhiều đường điều khiển SS trên Master, tùy thuộc vào thiết kế của người dùng [2]. Hoạt động: mỗi chip Master hay Slave có một thanh ghi dữ liệu 8 bits. Cứ mỗi xung nhịp do Master tạo ra trên đường giữ nhịp SCK, một bit trong thanh ghi dữ liệu của Master được truyền qua Slave trên đường MOSI, đồng thời một bit trong thanh ghi dữ liệu của chip Slave cũng được truyền qua Master trên đường MISO. Do 2 gói dữ liệu trên 2 chip được gởi qua lại đồng thời nên quá trình truyền dữ liệu này được gọi là “song công”.
5 Luan van Hình 1.2: Truyền dữ liệu SPI 1.2 UART UART là từ viết tắt của Universal Asynchronous Receiver/Transmitter (truyền/nhận không đồng bộ) chuyển đổi giữa dữ liệu nối tiếp và song song. Một chiều, UART chuyển đổi dữ liệu song song bus hệ thống ra dữ liệu nối tiếp để truyền đi. Một chiều khác, UART chuyển đổi dữ liệu nhận được dạng dữ liệu nối tiếp thành dạng dữ liệu song song cho CPU có thể đọc vào bus hệ thống. UART của máy tính (PC) hỗ trợ cả hai kiểu giao tiếp là giao tiếp đồng thời và giao tiếp không đồng thời.
Giao tiếp đồng thời tức là UART có thể gửi và nhận dữ liệu vào cùng một thời điểm. Còn giao tiếp không đồng thời (không kép) là chỉ có một thiết bị có thể chuyển dữ liệu vào một thời điểm, với tín hiệu điều khiển hoặc mã sẽ quyết định bên nào có thể truyền dữ liệu. Giao tiếp không đồng thời được thực hiện khi mà cả 2 chiều chia sẻ một đường dẫn hoặc nếu có 2 đường nhưng cả 2 thiết bị chỉ giao tiếp qua một đường ở cùng một thời điểm. Thêm vào đường dữ liệu, UART hỗ trợ bắt tay chuẩn RS232 và tín hiệu điều khiển như RTS, CTS, DTR, DCR, RT và CD.
Trong PC, hệ điều hành và ngôn ngữ lập trình hỗ trợ cho lập trình liên kết nối tiếp mà không cần phải hiểu rõ chi tiết cấu trúc UART. Để mở liên kết, ứng dụng lựa chọn một tần số dữ liệu hoặc là thiết lập khác hoặc cho phép truyền thông tại các cổng. Để gửi 1 byte, ứng dụng ghi byte này vào bộ đệm truyền của cổng được lựa chọn và UART gửi dữ liệu này từng bit một, trong định dạng yêu cầu thêm bit Start, bit Stop, bit chẵn - lẻ khi cần. Một cách đơn giản, byte nhận được tự động được lưu trữ trong bộ 6 Luan van đệm.
UART có thể dùng nhanh một ngắt để báo cho CPU và các ứng dụng biết dữ liệu đang nhận được hoặc các sự kiện khác. Một số thông số: Baud Rate (tốc độ Baud): khi truyền nhận không đồng bộ để hai module hiểu được nhau thì cần quy định một khoảng thời gian cho 1 bit truyền nhận, nghĩa là trước khi truyền thì tốc độ phải được cài đặt đầu tiên. Theo định nghĩa thì tốc độ Baud là số bit truyền trong một giây [3]. Frame (khung truyền): do kiểu truyền thông nối tiếp này rất dễ mất dữ liệu nên ngoài tốc độ, khung truyền cũng được cài đặt từ ban đầu để tránh bớt sự mất mát dữ liệu.
Khung truyền quy định số bit trong mỗi lần truyền, các bit báo như Start, Stop, các bit kiểm tra như Parity và số bit trong một Data [3]. Start Bit: là bit dùng để đồng bộ dữ liệu. Đây là bit được thêm vào phía trước dữ liệu thực tế. Start bit đánh dấu nơi bắt đầu của gói dữ liệu.
Thông trường, trong trạng thái idle, khi không có dữ liệu nào được truyền, mức điện áp trên đường truyền là mức cao – HIGH. Khi bắt đầu truyền dữ liệu, UART truyền sẽ kéo mức điện áp trên bus từ mức cao xuống mức thấp (từ 1 xuống 0). UART nhận sẽ phát hiện được sự thay đổi mức điện áp này và sẽ bắt đầu đọc dữ liệu. Thông thường, Start bit chỉ có độ dài 1 bit [3].
Stop Bit: đánh dấu việc kết thúc gói dữ liệu. Nó có độ dài 2 bit nhưng thông thường, người ta chỉ sử dụng 1 bit. Sau khi kết thúc quá trình truyền dữ liệu, mức điện áp trên bus sẽ được giữ ở mức cao – HIGH [3]. Data Bits: là những bits chứa dữ liệu được gửi từ thiết bị truyền sang thiết bị nhận.
Độ dài của gói dữ liệu có thể từ 5 đến 9 bits (9 bits nếu như parity bit không được dùng và chỉ có 8 bits khi parity bit được dùng). Trong UART, bit LSB (bit có giá trị thấp nhất) được truyền đi trước, bit MSB (bit có giá trị cao nhất) được truyền đi sau [3]. Parity bit: là bit kiểm tra dữ liệu đúng không. Có hai loại Parity là chẵn (Even Parity), lẻ (Old Parity).
Parity chẵn là bit Parity thêm vào để số chữ số 1 trong Data + Parity = Chẵn. Parity lẻ là bit Parity thêm vào để số chữ số 1 trong Data + Parity = Lẻ. Bit Parity là không bắt buộc nên có thể dùng hoặc không [3].3 I2C I2C là tên viết tắt của cụm từ Inter-Intergrated Circuit. Đây là đường Bus giao tiếp giữa các IC với nhau.
Đây là một loại giao thức giao tiếp nối tiếp đồng bộ.