Chương 1: Tổng quan. Chương 2: Cơ sở lý thuyết liên quan. Chương 3: Xây dựng và thiết kế hệ thống. Chương 4: Kết quả và thực nghiệm.
Chương 5: Kết luận và hướng phát triển. 3 do an CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2. Chuẩn truyền dữ liệu nối tiếp UART UART – là viết tắt của Universal Asynchronous Receiver – Transmitter có nghĩa là truyền nhận dữ liệu nối tiếp bất đồng bộ. Đặc điểm: Truyền dữ liệu nối tiếp bất đồng bộ có 1 đường phát dữ liệu (Tx) và 1 đường nhận dữ liệu (Rx), do không có tín hiệu xung clock nên gọi là bất đồng bộ.
Để truyền được dữ liệu thì cả bên phát và bên nhận phải tự tạo xung clock có cùng tần số và thường được gọi là tốc độ baud, ví dụ như 2400 baud, 4800 baud, 9600 baud… Ưu điểm: Đơn giản, chi phí truyền thấp, hiệu quả tương đối cao, tiết kiệm năng lượng cho hệ thống nên được sử dụng phổ biến trong các hệ thống IoTs. Khuyết điểm: Do tồn tại các bit start và bit stop, khoảng trống dẫn đến thời gian truyền chậm. Thông số chuẩn truyền UART Tốc độ truyền ( baud rate ) Như trong ví dụ trên về việc truyền 1 bit trong 1ms, để việc truyền và nhận bất đồng bộ xảy ra thành công thì các thiết bị tham gia phải thống nhất nhau về khoảng thời gian dành cho 1 bit truyền, hay nói cách khác tốc độ truyền phải được cài đặt như nhau trước, tốc độ này gọi là tốc độ baud. Theo định nghĩa, tốc độ baud là số bit truyền trong 1 giây.
Ví dụ nếu tốc độ baud được đặt là 19200 thì thời gian dành cho 1 bit truyền là 1/19200 ~ 52. Khung dữ liệu (frame) Do truyền thông nối tiếp và nhất là nối tiếp bất đồng bộ nên rất dễ mất hoặc sai lệch dữ liệu, quá trình truyền theo kiểu này phải tuân theo một số quy cách nhất định. Bên cạnh tốc độ baud, khung truyền là một yếu tố quan trọng tạo nên sự thành công khi truyền và nhận. Khung truyền bao gồm các quy định về số bit trong mỗi lần truyền, các bit “báo” như bit Start và bit Stop, các bit kiểm tra như Parity, ngoài ra số lượng các bit trong một data cũng được quy định bởi khung truyền.
Start bit Start là bit đầu tiên được truyền trong một frame truyền, bit này có chức năng báo cho thiết bị nhận biết rằng có một gói dữ liệu sắp được truyền tới. Start bit là bit 4 do an bắt buộc phải có trong khung truyền. Đối với chuẩn truyền UART Start bit luôn luôn là mức thấp (0V). Data Data hay dữ liệu cần truyền là thông tin chính mà chúng ta cần gởi và nhận.
Data không nhất thiết phải là gói 8 bit. Trong truyền nối tiếp UART, bit có ảnh hưởng nhỏ nhất (Least Significant Bit, bit bên phải) của data sẽ được truyền trước và cuối cùng là bit có ảnh hưởng lớn nhất (Most Significant Bit, bit bên trái). Parity bit Parity là bit dùng kiểm tra tính đúng đắn của dữ liệu truyền (một cách tương đối). Có 2 loại parity là parity chẵn (even parity) và parity lẻ (odd parity).
Parity chẵn nghĩa là số lượng bit 1 trong dữ liệu bao gồm bit parity luôn là số chẵn. Ngược lại tổng số lượng các bit 1 nếu là parity lẻ thì luôn là số lẻ. Ví dụ, nếu dữ liệu là 10111011 nhị phân, có tất cả 6 bit 1 trong dữ liệu này, nếu parity chẵn được dùng, bit parity sẽ mang giá trị 0 để đảm bảo tổng số các bit 1 là số chẵn (6 bit 1). Stop bit Stop bits là một hoặc các bit báo cho thiết bị nhận biết rằng một gói dữ liệu đã được gởi xong.
Sau khi nhận được stop bits, thiết bị nhận sẽ tiến hành kiểm tra khung truyền để đảm bảo tính chính xác của dữ liệu. Stop bits là các bits bắt buộc xuất hiện trong khung truyền và luôn luôn là mức cao.Các khái niệm cơ bản I2C trở thành một chuẩn công nghiệp cho các giao tiếp điều khiển, Bus I2C được sử dụng làm bus 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 8051, PIC, AVR, ARM. chip nhớ như: RAM tĩnh (Static Ram), EEPROM, bộ chuyển đổi tương tự số (ADC), số tương tự(DAC), IC điểu khiển LCD, LED.Cấu tạo và nguyên lý hoạt động I2C sử dụng hai đường truyền tín hiệu: Một đường xung nhịp đồng hồ (SCL) chỉ do Master phát đi (thông thường ở 100kHz và 400kHz. Mức cao nhất là 1Mhz và 3.
Một đường dữ liệu (SDA) theo 2 hướng. 5 do an Có rất nhiều thiết bị có thể cùng được kết nối vào một bus I2C, tuy nhiên sẽ không xảy ra chuyện nhầm lẫn giữa các thiết bị, bởi mỗi thiết bị sẽ được nhận ra bởỉ một địa chỉ duy nhất với một quan hệ chủ/tớ tồn tại trong suốt thời gian kết nối. Mỗi thiết bị có thể hoạt động như là thiết bị nhận hoặc truyền dữ liệu hay có thể vừa truyền vừa nhận. Hoạt động truyền hay nhận còn tùy thuộc vào việc thiết bị đó là chủ (master) hãy tớ (slave).
Một thiết bị hay một IC khi kết nối với bus I2C, ngoài một địa chỉ (duy nhất) để phân biệt, nó còn được cấu hình là thiết bị chủ hay tớ. Trên một bus I2C thì quyền điều khiển thuộc về thiết bị chủ. Thiết bị chủ nắm vai trò tạo xung đồng hồ cho toàn hệ thống, khi giữa hai thiết bị chủ-tớ giao tiếp thì thiết bị chủ có nhiệm vụ tạo xung đồng hồ và quản lý địa chỉ của thiết bị tớ trong suốt quá trình giao tiếp. Thiết bị chủ giữ vai trò chủ động, còn thiết bị tớ giữ vai trò bị động trong việc giao tiếp.
Về lý thuyết lẫn thực tế I2C sử dụng 7 bit để định địa chỉ, do đó trên một bus có thể có tới 27 địa chỉ tương ứng với 128 thiết bị có thể kết nối, nhưng chỉ có 112 địa chỉ, trong đó 16 địa chỉ còn lại được sử dụng vào mục đích riêng. Bit còn lại quy định việc đọc hay ghi dữ liệu (1 là write, 0 là read). Điểm mạnh của I2C chính là hiệu suất và sự đơn giản của nó: một khối điều khiển trung tâm có thể điều khiển cả một mạng thiết bị mà chỉ cần hai lối ra điều khiển. Ngoài ra I2C còn có chế độ 10 bit địa chỉ tương đương với 1024 địa chỉ, có 1008 thiết bị có thể kết nối, còn lại 16 địa chỉ sẽ dùng để sử dụng mục đích riêng.1: Chuẩn giao tiếp I2C.
Web Sever và Cơ sở dữ liệu 2. Các ngôn ngữ lập trình cho website Bản chất của phát triển website là phát triển các giao tiếp. Cụ thể hơn đó là giao tiếp giữa hai chủ thể khác nhau thông qua giao thức HTTP: Server: giữ vai trò phục vụ cho trang cần được hiển thị Client: gửi yêu cầu trang đến server, và hiển thị chúng trên trình duyệt cho người dùng. Trong hầu hết các trường hợp, client thường là trình duyệt web.
Việc lập trình bằng ngôn ngữ nào phụ thuộc vào việc sẽ chạy nó trên máy nào, server hay là client. Chính vì vậy nên có thể chia ngôn ngữ lập trình cho website thành 2 phía: phía server (server-side) và phía client (client-side). Nếu như nhiệm vụ của các ngôn ngữ lập trình chạy trên client là giúp hiển thị nội dung của trang web trên trình duyệt, tạo ra các trang tương tác, gửi yêu cầu cho server và nhận phản hồi từ nó, thì các ngôn ngữ lập trình phía server lại hoạt động phức tạp hơn nhiều. Các ngôn ngữ này được web server thông dịch và trả về các phản hồi, quản lí yêu cầu người dùng, xử lí sự kiện, lưu trữ - trích xuất dữ liệu từ cơ sở dữ liệu.
Có hai ngôn ngữ server-side chính hiện nay là ASP.NET và PHP. Ngôn ngữ ASP.NET dành cho máy chủ Windows, còn ngôn ngữ PHP linh động hơn có thể chạy trên cả máy chủ Windows lẫn máy chủ Linux. a) Khái quát về ngôn ngữ PHP PHP (Hypertext Preprocessor) là một ngôn ngữ lập trình kịch bản (script language). PHP là một ngôn ngữ lai, vay mượn một số cú pháp từ C, Pert, Shell và Java, lấy các tính năng tốt nhất từ ngôn ngữ khác và tạo ra một ngôn ngữ lập trình mạnh mẽ, dễ sử dụng.
PHP rất thích hợp với môi trường web và có thể dễ dàng nhúng vào trang HTML. Do được tối ưu hóa cho các ứng dụng web, tốc độ nhanh, cú pháp giống C và Java, dễ học, linh động và thời gian xây dựng sản phẩm tương đối ngắn hơn so với các ngôn ngữ khác nên PHP đã nhanh chóng trở thành một ngôn ngữ lập trình web phổ biến nhất, là một ông vua không thể bàn cãi về ngôn ngữ kịch bản máy chủ (server-side) – nó chạy trên 75% tất cả các máy chủ web trên thế giới hiện nay. Đoạn code sau minh họa cách PHP được lồng vào các trang HTML dễ dàng như thế nào: 7 do an Hình 2.2: PHP được nhúng vào trang HTML. Thẻ <?php> và thẻ <?> sẽ đánh đấu sự bắt đầu và sự kết thúc của phần code PHP qua đó giúp máy chủ biết để thực thi cho đúng.
Đây là một điểm khá tiện lợi của PHP giúp cho việc viết code PHP trở nên khá trực quan và dễ dàng trong việc xây dựng trang web. Và đi kèm với PHP là MySQL ngôn ngữ lập trình và cơ sở dữ liệu được sử dụng nhiều nhất cho các ứng dụng web hiện nay. Phương thức GET trong PHP Phương thức GET là phương thức gửi dữ liệu thông qua đường dẫn URL nằm trên thanh địa chỉ của trình duyệt. Server sẽ nhận đường dẫn đó và phân tích trả về kết quả cho client.
Server sẽ phân tích tất cả những thông tin đằng sau dấu chấm hỏi (?). Đó chính là phần dữ liệu mà client gửi lên Phương thức GET có các đặc điểm sau: o Giới hạn gửi tối đa chỉ 1024 ký tự. o Kém bảo mật. o GET không thể gửi dữ liệu nhị phân, ví dụ như hình ảnh hoặc tài liệu word lên Server.
o Dữ liệu gửi bởi phương thức GET có thể được truy cập bằng cách sử dụng biến môi trường QUERY_STRING. PHP cung cấp mảng liên hợp $_GET để truy cập tất cả các thông tin đã được gửi bởi phương thức GET Ví dụ: $nd=$_GET['nhietdo']; //nhan du lieu tu Arduino $anhsang=$_GET['anhsang']; // nhan du lieu tu Arduino $doamdat=$_GET['doamdat']; //nhan du lieu tu Arduino $doamkhongkhi=$_GET['doamkhongkhi']; 8 do an Phương thức POST trong PHP Phương thức POST truyền thông tin thông qua HTTP header. Thông tin này được mã hóa và đặt vào một header được gọi là QUERY_STRING.