Đồ án Nghiên cứu, thiết kế hệ thống cảm biến nhiệt độ giao tiếp và ghép nối máy tính qua giao thức USB/lớp HID

pdf 88 trang phuongnguyen 6300
Bạn đang xem 20 trang mẫu của tài liệu "Đồ án Nghiên cứu, thiết kế hệ thống cảm biến nhiệt độ giao tiếp và ghép nối máy tính qua giao thức USB/lớp HID", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfdo_an_nghien_cuu_thiet_ke_he_thong_cam_bien_nhiet_do_giao_ti.pdf

Nội dung text: Đồ án Nghiên cứu, thiết kế hệ thống cảm biến nhiệt độ giao tiếp và ghép nối máy tính qua giao thức USB/lớp HID

  1. ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN BỘ MÔN: TỰ ĐỘNG HÓA o0o THUYẾT MINH ĐỒ ÁN TỐT NGHIỆP NGHIÊN CỨU, THIẾT KẾ HỆ THỐNG CẢM BIẾN NHIỆT ĐỘ GIAO TIẾP VÀ GHÉP NỐIMÁY TÍNHQUA GIAO THỨC USB/LỚP HID GVHD: ThS. Lâm Tăng Đức SVTH: Nguyễn Hữu Việt MSSV: 105106061149 Đà Nẵng, tháng 5/2011
  2. ĐẠI HỌC ĐÀ NẴNG Cộng hoà xã hội chủ nghĩa Việt Nam Trường đại học Bách Khoa Độc Lập - Tự Do - Hạnh Phúc Khoa Điện NHIỆM VỤ THIẾT KẾ ĐỒ ÁN TỐT NGHIỆP Tên: NGUYỄN HỮU VIỆT Lớp: 06D6 Khoa: Điện Nghành: Tự Động Hóa 1 - Đề tài: NGHIÊN CỨU, THIẾT KẾ HẾ THỐNG CẢM BIẾN NHIỆT ĐỘ GIAO TIẾP VÀ GHÉP NỐI MÁY TÍNH QUA GIAO THỨC USB/LỚP HID 2 - Nội dung thiết kế: Chương I: TỔNG QUAN ĐỀ TÀI Chương II: TỔNG QUAN VỀ GIAO THỨC USB VÀ LỚP HID Chương III: TỔNG QUAN VỀ MẠNG 1 DÂY Chương IV: TỔNG QUAN VỀ PIC 18F2550/4550 Chương V: GIỚI THIỆU CẢM BIẾN NHIỆT ĐỘ DS18B20 Chương VI: THIẾT KẾ VÀ LẮP RÁP CÁC MÔ HÌNH 3 - Ngày giao đề tài: Ngày tháng năm 2011 4 - Ngày nộp đề tài: Ngày tháng năm 2011 Ngày tháng năm 2011 Ngày tháng năm 2011 Cán bộ duyệt Cán bộ hướng dẫn ThS Lâm Tăng Đức i
  3. Ngày tháng năm 2011 Ngày tháng năm 2011 Trưởng Bộ Môn Chủ tịch hội đồng TS Nguyễn Hoàng Mai Ngày tháng năm 2011 Sinh Viên Thực Hiện Nguyễn Hữu Việt i
  4. LỜI NÓI ĐẦU Trong lĩnh vực Điện - Điện tử nói chung và ngành Tự động hóa nói riêng, truyền thông và ghép nối các thiết bị là vấn đề then chốt và rất phổ biến. Phần lớn các thiết bị, các hệ thống đều được kết nối với máy tính để thu thập thông tin, lưu trữ số liệu, điều khiển và giám sát các trạng thái của thiết bị. Ở trình độ của sinh viên, hầu hết các mô hình hay sản phẩm đều được kết nối qua giao thức RS-232. Giao thức này rất quen thuộc và dễ thực hiện, tuy nhiên bản thân nó cũng quá lỗi thời so với yêu cầu về tốc độ truyền của công nghệ ngày nay. Vì vậy trong đề tài Tốt Nghiệp này em xin gửi đến quí thầy cô cùng tất cả các bạn đọc giao thức USB, một phương pháp mới để tăng tốc độ truyền của dữ liệu, đồng thời thân thiện hơn với người dùng. Nội dung của đề tài này gồm 6 chương: Chương I: TỔNG QUAN ĐỀ TÀI Chương II: TỔNG QUAN VỀ GIAO THỨC USB Chương III:TỔNG QUAN VỀ MẠNG TRUYỀN THÔNG 1 DÂY Chương IV: TỔNG QUAN VỀ PIC 18F2550/4550 Chương V: GIỚI THIỆU CẢM BIẾN NHIỆT ĐỘ DS18B20 Chương VI:THIẾT KẾ VÀ LẮP RÁP CÁC MÔ HÌNH Mặc dù bản thân cũng rất nổ lực trong việc tìm kiếm thông tin, tài liệu để hoàn thành đề tài một cách trọn vẹn nhất nhưng mắc sai sót là điều khó tránh khỏi. Thành thật mong quý thầy cô cùng bạn đọc góp ý kiến để đề tài ngày càng hoàn thiện Cuối cùng em xin gửi lời cảm ơn chân thành đến gia đình, thầy cô và bạn bè đã động viên, giúp đỡtrong suốt thời gian qua. Đặc biệt, gửi lời cảm ơn đến thầy Lâm Tăng Đức đã trực tiếp hướng dẫn để đề tài được hoàn thành Đà Nẵng tháng 5 năm 2011 Sinh viên thực hiện NGUYỄN HỮU VIỆT ii
  5. Mục Lục CHƯƠNG I: TỔNG QUAN ĐỀ TÀI Error! Bookmark not defined. 1.1:Tầm quan trọng của truyền thông và ghép nối máy tính với ngànhTự động hóa Error! Bookmark not defined. 1.2:Thực trạng hiện nay Error! Bookmark not defined. 1.3: Nội dung đề tài Error! Bookmark not defined. CHƯƠNG II: TỔNG QUAN VỀ GIAO THỨC USB VÀ LỚP HID Error! Bookmark not defined. 2.1: Giới thiệu sơ bộ về giao thức USB Error! Bookmark not defined. 2.2:Quá trình phát triển giao thức USB Error! Bookmark not defined. 2.3: Phân tích ưu điểm và nhược điểm của giao thức USB Error! Bookmark not defined. 2.3.1: Ưu điểm: Error! Bookmark not defined. 2.3.2: Nhược điểm Error! Bookmark not defined. 2.4: Giới thiệu các lớp của giao thức USB Error! Bookmark not defined. 2.4.1: Lớp thiết bị âm thanh (Audio) Error! Bookmark not defined. 2.4.2: Lớp thiết bị thẻ thông minh (Chip/Smart Card Interface) . Error! Bookmark not defined. 2.4.3: Các thiết bị truyền thông (Modems and Networks) Error! Bookmark not defined. 2.4.4: Lớp thiết bị bảo mật thông tin Error! Bookmark not defined. 2.4.5 Lớp các thiết bị nâng cấp firmware Error! Bookmark not defined. 2.4.6:Lớp các thiết bị tương tác với con người (Human Interface) Error! Bookmark not defined. 2.4.7:Cầu chuyển đổi hồng ngoại (IrDA) Error! Bookmark not defined. 2.4.8: Lớp các thiết bị lưu trữ thứ cấp (Mass Storage) Error! Bookmark not defined. 2.4.9:Lớp các thiết bị in ấn (Printers) Error! Bookmark not defined. iii
  6. 2.4.10:Lớp các thiết bị lưu giữ hình ảnh tĩnh (Still Image Capture) Error! Bookmark not defined. 2.4.11: Các thiết bị đo đạc và kiểm tra Error! Bookmark not defined. 2.4.12: Lớp thiết bị ảnh động (Video) Error! Bookmark not defined. 2.4.13: Thực hiện các chức năng không tiêu chuẩn Error! Bookmark not defined. 2.5:Lớp thiết bị giao diện người sử dụng (HID-Human Interface Device) Error! Bookmark not defined. 2.5.1: Khái niệm về HID Error! Bookmark not defined. 2.5.2: Các yêu cầu về phần cứng Error! Bookmark not defined. 2.5.3: Các yêu cầu về vi chương trình (Firmware) . Error! Bookmark not defined. 2.5.4: Cách thức để chỉ ra một thiết bị thuộc lớp HID Error! Bookmark not defined. 2.5.5: Bộ mô tả báo cáo (Report Descriptor) Error! Bookmark not defined. 2.5.6: Các yêu cầu mà host có thể gửi tới một thiết bị thuộc lớp HID Error! Bookmark not defined. 2.6: Sự hỗ trợ của Hệ điều hành với lớp HID Error! Bookmark not defined. 2.7: Chọn chip Error! Bookmark not defined. CHƯƠNG III: TỔNG QUAN VỀ MẠNG TRUYỀN THÔNG 1 DÂY Error! Bookmark not defined. 3.1:Định nghĩa mạng truyền thông 1 dây Error! Bookmark not defined. 3.2: Tổng quan về Bus 1 dây Error! Bookmark not defined. 3.3: Các yêu cầu Error! Bookmark not defined. 3.4:Hoạt động của bus 1 dây Error! Bookmark not defined. 3.4: Mạng một dây và Vi điều khiển PIC Error! Bookmark not defined. CHƯƠNG IV: TỔNG QUAN VỀ PIC 18F2550/4550 . Error! Bookmark not defined. 4.1: Giới thiệu PIC 18F2550/4550 Error! Bookmark not defined. 4.2: Khái quát chức năng USB trong PIC Error! Bookmark not defined. 4.2.1:Trạng thái và điều khiển USB Error! Bookmark not defined. 4.2.2: Thanh ghi điểu khiển (UCON) Error! Bookmark not defined. 4.2.3: Thanh ghi cấu hình USB (UCFG) Error! Bookmark not defined. iii
  7. 4.2.4: Thanh ghi trạng thái USB Error! Bookmark not defined. 4.2.5: Thanh ghi điều khiền USB ENDPOINT( UEPn) Error! Bookmark not defined. 4.2.6: Thanh ghi trạng thái ngắt của giao thức USB Error! Bookmark not defined. 4.2.7: Thanh ghi kích hoạt trạng thái ngắt của giao thức USB Error! Bookmark not defined. CHƯƠNG V: GIỚI THIỆU CẢM BIẾN NHIỆT ĐỘ DS18B20 Error! Bookmark not defined. 5.1: Khái quát chung Error! Bookmark not defined. 5.2: Cấu trúc phần cứng Error! Bookmark not defined. 5.3:Hoạt động đo nhiệt độ Error! Bookmark not defined. 5.4: Hoạt động báo hiệu Error! Bookmark not defined. 5.5: Thanh ghi cấu hình và độ phân giải Error! Bookmark not defined. 5.6: 8 Bit CRC Error! Bookmark not defined. 5.7: Tập lệnh Error! Bookmark not defined. 5.7.1: Lệnh ROM Error! Bookmark not defined. 5.7.2: Lệnh chức năng bộ nhớ Error! Bookmark not defined. 5.8: Chuẩn 1 dây với cảm biến DS18B20 Error! Bookmark not defined. 5.8.1: Thời gian khởi động bus Error! Bookmark not defined. 5.8.2: Thiết lập các Slots ở chế độ ghi cho Master . Error! Bookmark not defined. CHƯƠNG VI: THIẾT KẾ VÀ LẮP RÁP MỘT SỐ CÁC ỨNG DỤNG Error! Bookmark not defined. 6.2: Sơ đồ nguyên lý Error! Bookmark not defined. 6.3: Mô-đun thu phát RF 8 phím bấm Error! Bookmark not defined. 6.3.1: Mô-đun thu RF Error! Bookmark not defined. 6.3.2: Mô đun phát RF (Remote 8 phím) Error! Bookmark not defined. 6.4: LCD 16x2 Error! Bookmark not defined. 6.5: Công cụ hỗ trợ Error! Bookmark not defined. 6.6: Xây dựng giao diện trên máy tính bằng VB 6.0 . Error! Bookmark not defined. iii
  8. 6.7: Sơ đồ khối firmware bên trong chip Error! Bookmark not defined. 6.8: Một số hình ảnh của sản phẩm Error! Bookmark not defined. TÀI LIỆU THAM KHẢO Error! Bookmark not defined. PHỤ LỤC Error! Bookmark not defined. Phụ Lục 0: Chương trình xây dựng giao diện trên VB Error! Bookmark not defined. Phụ Lục 1: Chương trình REMOTE 8 phím Error! Bookmark not defined. Phụ Lục 2: Chương trình đo nhiệt độ và ghép nối máy tính qua cổng USB Error! Bookmark not defined. Phụ Lục 3: Thư viện chuẩn 1-dây Error! Bookmark not defined. Phụ Lục 4: Danh sách các chip có hỗ trợ giao thức USB Error! Bookmark not defined. iii
  9. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC CHƯƠNG I: TỔNG QUAN ĐỀ TÀI 1.1:Tầm quan trọng của truyền thông và ghép nối máy tính với ngànhTự động hóa - Ngày nay trong tất cả các nhà máy, xí nghiệp, các hệ thống, các thiết bị đều có thể liên lạc và trao đổi thông tin cho nhau thông qua các chuẩn truyền dẫn khác nhau. Chính điều này đã tạo nên sự hoạt động hài hòa giữa các thiết bị trong hệ thống - Bên cạnh việc trao đổi thông tin cho nhau, các thiết bị phải được kết nối để đưa dữ liệu về máy tính chủ. Từ máy chủ người điều khiển có thể nhận biết được trạng thái hoạt động, thông tin sảm phẩm đồng thời cũng có thể lưu trữ, in ấn được các thông số này khi cần thiết 1.2:Thực trạng hiện nay Hiện nay giao thức RS-232 được sử dụng phổ biến nhất để thực hiện việc ghép nối các thiết bị ngoại vi với máy tính. Tuy nhiên giao thức này đã quá lỗi thời vì tốc độ truyền hạn chế và khả năng linh hoạt không cao. Chính vì vậy, các máy tính hiện đại đều đã tháo bỏ, chỉ còn lại các cổng giao thức USB. Vì vậy để có thể ghép nối các thiết bị ngoại vi với máy tính hiện đại các nhà thiết kế đã sử dụng các giải pháp sau: Một là sử dụng mô đun chuyển đổi USB-COM (Hình 1.1) Hai là sử dụng chip chuyển đổi USB-COM (Hình 1.2) Hình 1.1 Mô đun chuyển đổi USB qua COM SVTH: NGUYỄN HỮU VIỆT Trang 1
  10. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC Hình 1.2 Chip chuyển đổi USB-COM (PL2303) Nhìn trên nhiều phương diện, đây là vấn đề lớn cho mỗi nhà tiết kế cần cân nhắc - Xét về mặt kinh tế: Thêm Mô-đun chuyển đổi hay Chip chuyển đổi đều làm tăng giá thành của sản phẩm - Xét về mặt kỹ thuật: Chúng ta biết rằng giao thức USB có tốc độ truyền khá cao vào khoảng 12Mbit/sec (với chuẩn full-speed) trong khi đó giao thức RS-232 chỉ có 20Kbit/sec. Đây được gọi là nguyên lý truyền thông “cổ chai”. Vấn đề này cần tránh trong việc thiết kế các ứng dụng - Xét về mặt lợi ích của người sử dụng: Các thiết bị đã nêu ở trên đều cần có driver riêng cộng với tính “ảo” của nó đã gây lên một số trở ngại cho người sử dụng Vậy để giải quyết vấn đề này, đề tài đã đi vào nghiên cứu để đưa ra giải pháp mới nhằm khắc phục các yếu điểm trên, bằng cách ghép nối các thiết bị ngoại vi với máy tính trực tiếp qua giao thức USB 1.3: Nội dung đề tài Thiết kế và lập trình ứng dụng sử dụng giao thức USB/lớp HID bao gồm những phần sau: - Tổng quan về giao thức USB - Giới thiệu chip có hỗ trợ giao thức USB, PIC18F2550/4550 -Thiết kế và lắp rápbàn phím không dây dạng thu nhỏ và mạch đo nhiệt độ - Tìm hiểu sự hỗ trợ của Hệ điều hành với các lớp trong giao thức USB - Xây dựng chương trình giao diện trên Windowsbằng VB 6.0 để cập nhật giá trị nhiệt độ được gửi lên từ Vi điều khiển trực tiếp qua giao thức USB SVTH: NGUYỄN HỮU VIỆT Trang 2
  11. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC - Tạo firmware cho Vi điều khiển để Hệ điều hành có thể tự động nhận ra thiết bị và không cần driver giống như các thiết bị hiện có trên thị trường (Bàn phím, chuột ) - Trong đề tài này cảm biến nhiệt độ DS18B20 được sử dụng để đo nhiệt độ của môi trường sau đó truyền giá trị về Vi điều khiển. Trên thị trường hiện hay có hai loại cảm biến nhiệt độ phổ biến là: cảm biến có tín hiệu đầu ra liên tục (analog temperature sensor) và cảm biến có tín hiệu đầu ra số (digital temperature sensor). Đối với các cảm biến liên tục tín hiệu đầu ra hầu hết là điện áp còn đối với cảm biến số thì đầu ra là một chuẩn truyền thông nào đó, có thể là I2C, SPI hay UART.Riêng cảm biến này sử dụng chuẩn truyền thông “1 dây”. Thông qua cảm biến này đề tài cũng giới thiệu đến thầy cô và các bạn một giải pháp khá đơn giản trong lĩnh vực truyền thông: “Mạng truyền thông 1 dây”. - Sơ đồ khối cho các mô hình: SVTH: NGUYỄN HỮU VIỆT Trang 3
  12. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC CHƯƠNG II: TỔNG QUAN VỀ GIAO THỨC USB VÀ LỚP HID 2.1: Giới thiệu sơ bộ về giao thức USB Hình 2.1 Đầu cắm USB (type A) USB (Universal Serial Bus) là một giao thức cho phép kết nối giữa các thiết bị ngoại vi và máy tính chủ. Giao thức này được phát minh và phát triển bởi Ajay Bhatt trong khi ông làm việc tại Intel.USB đã thay thế cho nhiều giao thức đa dạng và phức tạp cũ như cổng giao tiếp nối tiếp và cổng giao tiếp song song USB có thể kết nối với nhiều thiết bị ngoại vi như chuột máy tính, bàn phím, máy in, camera kỹ thuật số, các ỗ đĩa flash và ổ đĩa di động Kể từ khi ra đời USB đã trở thành giao thức kết nối tiêu chuẩn cho các thiết bị này. Buổi ban đầu mới ra đời USB chỉ được thiết kế giành riêng cho máy tính cá nhân, nhưng thời gian trôi qua USB cũng trở nên phổ biến với các thiết bị như Smartphone,PDAs, Video game Không giống như các chuẩn truyền thông cũ (RS-232, Parallel port), cổng USB có cung cấp sẵn nguồn điện vì vậy các thiết bị ngoại vi kết nối qua cổng USB không cần nguồn riêng, ngoại trừ các thiết bị cần công suất lớn. SVTH: NGUYỄN HỮU VIỆT Trang 4
  13. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC 2.2:Quá trình phát triển giao thức USB Một nhóm gồm 7 công ty bắt đầu tìm hiểu và phát triển giao thức này từ năm 1994gồm Compaq, NEC, DEC, IBM, Intel, Cortel và Microsoft Phiên bản USB 1.0 được ra đời vào tháng 1 năm 1996 với tốc độ truyền 1.5MBit/s (Low speed). Phiên bản 1.1 được công bố vào tháng 9 năm 1998 với hai cấp tốc độ truyền 1.5 MBit/s (Low speed) và 12 MBit/s (Full speed). USB 1.1 có bổ sung thêm một kiểu truyền thông mới “interrupt OUT”. Tháng 4 năm 2000 giao thức USB 2.0 ra đời với 3 cấp tốc độ truyền 1.5 MBit/s (Low speed), 12 MBit/s (Full speed), 480 MBit/s (High speed). Ngày 12 tháng 11 năm 2008 giao thức USB 3.0 ra đời với tốc độ truyền 5 GBit/s. Sản phẩm sử dụng USB 3.0 đầu tiên được ra đời vào tháng 1 năm 2010. ( Trong đồ án này chỉ tìm hiểu về giao thức USB 2.0 Full speed) 2.3: Phân tích ưu điểm và nhược điểm của giao thức USB 2.3.1: Ưu điểm: 2.3.1.1:Đối với người sử dụng - USB rất linh hoạt đủ để tương thích với nhiều loại thiết bị ngoại vi, thay vì làm nhiểu kiểu đầu cắm cho từng loại thiết bị khác nhau ở đây ta chỉ cần 1 mà thôi. - Tự động thiết lập cấu hình: Khi người dùng kết nối thiết bị ngoại vi USB vào máy tính, Hệ điều hành sẽ phát hiện và tải xuống một driver tương ứng. Với 1 số thiết bị trong lần kết nối đầu tiên, Hệ điều hành sẽ yêu cầu người dùng cho vào 1 đĩa có chứa driver, sau đó quá trình cài đặt sẽ tự động tiến hành. Chúng ta cũng không cần khởi động lại máy tính trước khi sử dụng thiết bị ngoại vi đó. - Dễ dàng kết nối: Chúng ta không cần phải tháo rời máy tính để cắm thiết bị vào, bởi vì tất cả các máy tính đã có cổng USB ở mặt trước và mặt sau của máy. - Cáp nối đơn giản: Cáp có 4 sợi bên trong, nhỏ gọn, dài khoảng 5 mét, nếu có Hub thì có thể dài đến 30 mét. Cổng và Cáp USB đã được thiết lập sao cho cắm không bị sai chiều. SVTH: NGUYỄN HỮU VIỆT Trang 5
  14. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC Bảng 2.1:Bảng so sánh các giao thức - Cắm nóng: Chúng ta có thể cắm và tháo thiết bị khỏi máy tính bất cứ lúc nào chúng ta cần mà không làm hỏng máy tính hay thiết bị. Hệ điều hành tự động nhận ra thiết bị khi nó được cắm vào và sẵn sàng để dùng. - Không cần người dùng cài đặt thêm: Người dùng không cần phải chọn địa chỉ cổng và cũng không có jumper nào để thiết lập các mục đích khác - Nhiều thiết bị có thể cắm vào một máy tính mà không yêu cầu phần cứng quá phức tạp - Đôi khi không cần nguồn cung cấp: Với các thiết bị không yêu cầu công suất lớn (+5V, 500mA) ta không cần cấp nguồn ngoài cho thiết bị SVTH: NGUYỄN HỮU VIỆT Trang 6
  15. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC - Tốc độ truyền khá cao: Với USB Low speed 1.5MBit/s,Full speed 12MBit/s, High speed 12MBit/s. Dưới đây là 2.1 bảng so sánh các giao thức. -Độ tin cậy cao: Độ tin cậy của USB được thừa kế cả phần cứng và giao thức cho việc truyền dữ liệu. Đặc điểm của phần cứng giúp cho việc loại trừ nhiễu được dễ dàng.Đồng thời cơ chế tự kiểm tra lỗi và yêu cầu gửi lại giúp cho giao thức này tăng độ tin cậy -Giá thành hạ: Mặc dù USB phức tạp hơn các giao thức trước đây, tuy nhiên giá thành cho thiết bị lại không quá đắt. -Tiết kiệm năng lượng: Những mạch điện tiết kiệm năng lượng tự động “power down” khi thiết bị USB ở chế độ chờ và sẵn sàng khi chúng cần được sử dụng. Giảm tiêu thụ năng lượng đồng nghĩa với việc tiết kiệm tiền, thân thiện với môi trường và cũng tặng tuổi thọ của Pin 2.3.1.2:Đối với người thiết kế - Sự linh hoạt trong thiết kế: USB có 4 phương thức truyền và 3 cấp tốc độ, điều này giúp cho USB tương thích với nhiều loại thiết bị ngoại vi. Tùy thuộc vào đặc điểm của từng thiết bị ngoại vi mà ta chọn phương thức và tốc độ truyền cho phù hợp - Sự hỗ trợ của hệ điều hành: Hầu hết các hệ điều hành đều hỗ trợ giao thức USB, điển hình là Windows 98 trở về sau này. - Sự hỗ trợ của thiết bị ngoại vi: Trên thị trường có rất nhiều dòng Vi điều khiển hỗ trợ giao thức USB. Ví dụ: PIC 18F2550/18F4550/18F14K50 của hãng Microchip - Sự hỗ trợ về kiến thức: Ngày nay cùng với sự phát triển của máy tính và mạng Internet, chúng ta có thể tìm thấy thông tin cần thiết một cách đơn giản. Ví dụ: www.usb.org SVTH: NGUYỄN HỮU VIỆT Trang 7
  16. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC 2.3.2: Nhược điểm Như đã trình bày ở trên, USB có rất nhiều ưu điểm tuy nhiên bên cạnh đó cũng có nhưng hạn chế nhất định - Hạn chế về tốc độ: Mặc dù tốc độ truyền của USB khá cao tuy nhiên cũng còn chậm hơn so với IEEE-1394. - Khoảng cách. USB chỉ hỗ trợ cho các thiết bị có khoảng cách tương đối gần với máy tính chủ mà thôi. Bình thường khoảng 5 mét, nếu có sự hỗ trợ của Hub thì đạt được 30 mét. Vì vậy để truyền đi xa hơn ta phải sử dụng thiết bị chuyển đổi qua giao thức RS485. - Giao tiếp Chủ-Chủ: Giao thức USB chỉ cho phép kết nối giữa máy tính chủ và thiết bị ngoại vi mà thôi. Còn việc kết nối 2 máy tính chủ, trao đổi dữ liệu trực tiếp với nhau qua USB là điều không thể. - Cập nhật đa thiết bị: USB không cho phép máy chủ gửi cùng lúc nhiều dữ liệu xuống nhiều thiết bị khác nhau - Một số yêu cầu cho phần cứng: Đối với các thiết bị không hỗ trợ USB ta phải sử dụng bộ chuyển đổi USB qua các giao thức khác cho phù hợp. Các máy tính đời cũ, hệ điều hành không hỗ trợ giao thức USB cũng là một vấn đề cần nhắc tới SVTH: NGUYỄN HỮU VIỆT Trang 8
  17. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC 2.4: Giới thiệu các lớp của giao thức USB Dưới đây là bảng thống kê các lớp của giao thức USB Bảng 2.2: Bảng liệt kê các lớp của giao thức USB 2.4.1: Lớp thiết bị âm thanh (Audio) Lớp thiết bị âm thanh chính là lớp các thiết bị gửi và nhận dữ liệu âm thanh. Dữ liệu âm thanh có thể là tiếng nói được mã hoá, nhạc hay bất kỳ một loại âm thanh nào khác. Các thiết bị thuộc lớp thiết bị âm thanh có thể sử dụng kiểu truyền đẳng thời cho luồng âm thanh hoặc kiểu truyền khối cho dữ liệu đã được mã hoá bằng giao thức MIDI (Musical Instrument Digital Interface) 2.4.2: Lớp thiết bị thẻ thông minh (Chip/Smart Card Interface) Thẻ thông minh là các loại thẻ quen thuộc được sử dụng cho việc gọi điện thoại, thẻ ra vào, trả cước cầu đường, bảo hiểm y tế, giải mã cho các bộ thu truyền hình vệ tinh và nhiều các ứng dụng khác, những ứng dụng này yêu cầu một khối lượng thông tin nhỏ hoặc trung bình với sự truy cập dữ liệu lưu trong thẻ một cách dễ dàng. Mỗi thẻ là một module bao gồm bộ nhớ và thường thêm một CPU. Nhiều thẻ cho phép cập nhật nội dung của chúng để thay đổi một số thông tin ví dụ như giá trị tiền trong thẻ tín dụng hay mã của thẻ. Để truy cập một thẻ thông minh, bạn kết nối nó với thiết bị giao diện thẻ thông minh (CCID-Chip Card Interface Device) thường bằng cách nhét thẻ SVTH: NGUYỄN HỮU VIỆT Trang 9
  18. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC vào khe đọc hoặc soi nó trước các bộ đọc đối với loại thẻ không cần tiếp xúc. USB định nghĩa lớp thiết bị giao diện thẻ thông minh vì có một số thiết bị giao diện thẻ thông minh (CCID) sử dụng giao diện USB để giao tiếp với máy tính. 2.4.3: Các thiết bị truyền thông (Modems and Networks) Lớp các thiết bị truyền thông bao gồm hai loại thiết bị chính là: thiết bị thoại và các thiết bị mạng tốc độ trung bình. Thiết bị thoại bao gồm điện thoại tương tự, modem tương tự, Các bộ thích nghi đầu cuối ISDN và điện thoại số. Các thiết bị mạng bao gồm modem ADSL, modem điện tín, 10BASE-T Ethernet adapter và Hub 2.4.4: Lớp thiết bị bảo mật thông tin Lớp thiết bị bảo mật định nghĩa cách thức giúp ta điều khiển sự truy cập tới các file, âm nhạc, hình ảnh hoặc các dữ liệu khác được truyền trên bus (ví dụ muốn copy một file nào đó lên thiết bị hoặc đọc nội dung được lưu trong thiết bị thì phải có password). 2.4.5 Lớp các thiết bị nâng cấp firmware Lớp thiết bị cập nhật firmware định nghĩa một giao thức cho phép máy chủ gửi firmware tăng cường hoặc sửa lỗi cho một thiết bị. Sau khi nhận sự nâng cấp firmware thì thiết bị sẽ được thiết lập lại để sử dụng firmware mới của nó. Lớp thiết bị này được biết đến khi chúng ta sử dụng chức năng bootloader cho vi điều khiển. 2.4.6:Lớp các thiết bị tương tác với con người (Human Interface) Lớp thiết bị giao diện người sử dụng bao gồm các loại bàn phím, thiết bị con trỏ và các bộ điều khiển dùng để chơi game. Đối với những thiết bị này, máy chủ đọc thông báo từ thiết bị và gần như lập tức thực hiện theo các yêu cầu của người sử dụng (các yêu cầu này mang tính giao tiếp trực tiếp giữa người sử dụng và máy) như sự ấn phím, sự di chuyển của con chuột. Máy chủ phải đáp ứng đủ nhanh sao cho người sử dụng không nhận thấy độ trễ rất nhỏ giữa yêu cầu của họ và các đáp ứng của máy. 2.4.7:Cầu chuyển đổi hồng ngoại (IrDA) Lớp thiết bị cầu liên kết dữ liệu hồng ngoại định nghĩa những yêu cầu về phần cứng và các giao thức cho phép việc truyền tải dữ liệu ở khoảng cách ngắn thông qua SVTH: NGUYỄN HỮU VIỆT Trang 10
  19. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC năng lượng hồng ngoại. Thiết bị cầu liên kết dữ liệu hồng ngoại sẽ được nối với máy chủ qua cổng USB cho phép máy chủ sử dụng giao diện USB để giám sát, điều khiển và truyền dữ liệu qua một giao diện hồng ngoại. 2.4.8: Lớp các thiết bị lưu trữ thứ cấp (Mass Storage) Lớp thiết bị lưu trữ thứ cấp chính là các thiết bị có thể truyền dữ liệu theo cả hai hướng (từ máy chủ tới thiết bị hoặc từ thiết bị về máy chủ). Điển hình cho lớp thiết bị này có thể kể đến các ổ đĩa mềm, ổ đĩa cứng, ổ CD, ổ DVD và ổ nhớ flash. Các loại camera cũng có thể sử dụng lớp lưu trữ thứ cấp cho phép việc truy cập các file hình ảnh trong bộ nhớ của camera. Trong các máy tính sử dụng hệ điều hành Windows, các thiết bị thuộc lớp lưu trữ thứ cấp sẽ xuất hiện như các ổ đĩa trong cửa sổ My Computer và hệ điều hành cho phép người sử dụng sao chép, di chuyển và xoá các dữ liệu trong các thiết bị đó. 2.4.9:Lớp các thiết bị in ấn (Printers) Lớp printer được áp dụng cho các thiết bị chuyển đổi dữ liệu nhận được thành dạng văn bản, hình ảnh trên giấy hoặc một số dạng khác. Các máy in đời đầu chỉ in được các dòng chữ trong những font đơn cố định. Đối với các máy in fun hay laser thì có thể in nhiều dòng chữ dưới nhiều định dạng font khác nhau, đồng thời cũng có thể in các hình ảnh phức tạp 2.4.10:Lớp các thiết bị lưu giữ hình ảnh tĩnh (Still Image Capture) Lớp thiết bị này bao gồm các loại máy ảnh và máy quét. Công việc chủ yếu của lớp thiết bị này là truyền dữ liệu hình ảnh từ thiết bị lên máy tính chủ. Ngoài ra một vài thiết bị còn có thể nhận dữ liệu từ máy tính. Nếu tất cả những gì ta cần là truyền các file hình ảnh từ một máy ảnh lên máy tính chủ thì ta có thể đưa một máy ảnh vào lớp thiết bị lưu trữ thứ cấp. 2.4.11: Các thiết bị đo đạc và kiểm tra Lớp các thiết bị đo lường và kiểm tra là để dành cho các thiết bị đo đạc như các bộ ADC, DAC, cảm biến và các bộ chuyển đổi (chuyển đổi đơn vị vật lý chẳng hạn). Các thiết bị này có thể là một khối riêng rẽ hoặc là một cạc trong một máy tính lớn. SVTH: NGUYỄN HỮU VIỆT Trang 11
  20. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC 2.4.12: Lớp thiết bị ảnh động (Video) Lớp các thiết bị ảnh động: Lớp các thiết bị ảnh động hỗ trợ các thiết bị ghi hình số xách tay, webcam, và một số thiết bị có chức năng gửi, nhận hay can chỉnh ảnh động. Lớp thiết bị này cũng hỗ trợ việc truyền các ảnh tĩnh từ các thiết bị ảnh động. 2.4.13: Thực hiện các chức năng không tiêu chuẩn Một vài thiết bị không có sự phù hợp rõ rệt với một lớp thiết bị được định nghĩa. Ví dụ như các thiết bị điều khiển động cơ, rơ le, hay các cơ cấu chấp hành khác. Một ví dụ khác là các thiết bị kết nối giữa hai máy vi tính (Cầu sử dụng USB). Nếu một thiết bị đầu cuối mà không phù hợp để gán vào một lớp được định nghĩa thì người thiết kế sẽ phải viết driver cho thiết bị để cung cấp cho máy chủ các thông tin giúp nó giao tiếp được với thiết bị đó. 2.5:Lớp thiết bị giao diện người sử dụng (HID-Human Interface Device) Lớp thiết bị giao diện người sử dụng là một trong những lớp đầu tiên được hệ điều hành Windows hỗ trợ. Trên những chiếc máy tính cá nhân sử dụng Windows 98 hoặc các phiên bản muộn hơn thì những ứng dụng có thể giao tiếp với các thiết bị giao diện người sử dụng bằng cách sử dụng các bộ điều khiển (driver) được xây dựng sẵn trong hệ điều hành. Cũng chính vì lý do trên mà nhiều nhà cung cấp thiết bị đầu cuối USB sử dụng lớp thiết bị giao diện người sử dụng cho sản phẩm của họ. Chương này sẽ trình bày về lớp HID với mục đích giúp người đọc nhận định xem một thiết bị nào đó có phù hợp để gán vào lớp HID hay không. Chỉ ra các yêu cầu đối với vi chương trình (firmware) để định nghĩa một thiết bị thuộc lớp HID và cho phép nó trao đổi dữ liệu với máy tính chủ. 2.5.1: Khái niệm về HID Từ “giao diện người sử dụng” trong tên gọi của lớp HID để chỉ ra sự tương tác trực tiếp giữa con người với thiết bị thuộc lớp này. Ví dụ một con chuột có thể phát hiện việc chúng ta di chuyển hay nhấn chuột để gửi thông tin lên máy chủ và máy chủ sử dụng thông tin này để đem lại các đáp ứng mà người sử dụng đang mong đợi trong một ứng dụng cụ thể nào đó. Bên cạnh các thiết bị phổ biến của lớp HID như bàn phím, con chuột, cần điều khiển (joystick) thì lớp HID còn bao gồm một số SVTH: NGUYỄN HỮU VIỆT Trang 12
  21. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC thiết bị khác như các núm điều chỉnh, các chuyển mạch, nút nhấn, thanh trượt, điều khiển từ xa, bàn phím điện thoại, các thiết bị điều khiển dùng cho game như bao tay, bánh lái. Tuy nhiên một thiết bị thuộc lớp HID không nhất thiết phải có một giao diện người sử dụng. Một thiết bị có thể gán vào lớp HID khi các chức năng của nó nằm gọn trong các giới hạn của đặc tả lớp HID. Dưới đây là các giới hạn và khả năng chủ của các thiết bị thuộc lớp HID Tất cả dữ liệu được trao đổi dưới cùng một dạng cấu trúc được gọi là báo cáo (report). Máy chủ gửi và nhận dữ liệu bằng cách gửi các báo cáo và yêu cầu các báo cáo trong các phương thức truyền điều khiển hoặc truyền ngắt. Định dạng báo cáo là khá linh hoạt và nó có thể áp dụng cho rất nhiều dạng của dữ liệu song đối với mỗi một báo cáo đã được định nghĩa thì kích cỡ của nó là xác định. Một giao diện HID phải có một điểm cuối ngắt vào (interrupt IN enpoint) để gửi dữ liệu lên máy chủ. Một giao diện HID có thể có tối đa một điểm cuối ngắt vào và một điểm cuối ngắt ra (interrupt OUT enpoint). Nếu ta cần nhiều điểm cuối ngắt hơn nữa thì ta có thể tạo một thiết bị đa chức năng gồm nhiều thiết bị HID ở trong nó. Một ứng dụng phải đảm bảo sự điều khiển riêng biệt tới từng HID trong thiết bị đa chức năng. Điểm cuối ngắt vào cho phép HID gửi thông tin lên máy chủ ở những thời điểm mà không hề biết trước. Ví dụ không thể có cách nào giúp máy tính biết trước khi nào người sử dụng ấn một phím nào đó trên bàn phím do đó bộ điều khiển máy chủ sử dụng giao tác ngắt để thăm dò có định kỳ nhằm thu lượm dữ liệu mới. Tốc độ trao đổi dữ liệu là hạn chế, đặc biệt là khi truyền ở tốc độ thấp hoặc toàn tốc. Điểm cuối ngắt tốc độ thấp không thể vượt quá 800 bytes/sec, với các điểm cuối toàn tốc thì tốc độ tối đa là 64 KB/s còn điểm cuối ngắt tốc độ cao thì tốc độ tối đa vào khoảng 24 MB/s . Với bản Windows 98 Gold thì nó chỉ hỗ trợ USB 1.0 tức là không hỗ trợ điểm cuối ngắt ra do đó tất cả dữ liệu truyền từ máy chủ xuống thiết bị phải sử dụng truyền điều khiển. Lưu ý là giao diện HID có thể chỉ là một trong nhiều kiểu giao diện được hỗ trợ bởi một thiết bị. Ví dụ một loa USB có thể sử dụng phương thức truyền đẳng thời cho SVTH: NGUYỄN HỮU VIỆT Trang 13
  22. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC âm thanh đồng thời cũng có thể có một giao diện HID cho việc điều khiển độ to nhỏ, cân bằng, treble và bass – có nghĩa là với cùng một giao tiếp USB trên một thiết bị nhưng ta có thể sử dụng hai lớp giao tiếp khác nhau. 2.5.2: Các yêu cầu về phần cứng Các điểm cuối Tất cả các kiểu truyền của HID sử dụng hoặc điểm cuối điều khiển hoặc điểm cuối ngắt. Tất cả các HID phải có một điểm cuối ngắt vào để gửi dữ liệu tới máy chủ. Một điểm cuối ngắt ra là tuỳ chọn. Các loại báo cáo (Report) Yêu cầu đối với một điểm cuối ngắt vào cho thấy mọi HID phải có tối thiểu là một report đầu vào được định nghĩa trong bộ mô tả report của HID. Các report đầu ra và report đặc biệt là tuỳ chọn. Các yêu cầu có thể gửi từ Host tới thiết bị trong kiểu truyền điều khiển Đặc tả HID định nghĩa 6 yêu cầu cụ thể mà Host có thể gửi tới thiết bị. Hai trong số đó là Set_Report và Get_Report, đem lại cách để Host và thiết bị trao đổi report thông qua kiểu truyền điều khiển. Host sử dụng Set_Report để gửi report và Get_Report để nhận thông báo. Bốn yêu cầu còn lại liên quan tới việc cấu hình thiết bị. Các yêu cầu Set_Idle và Get_Idle dùng để thiết lập và đọc tốc độ rỗi, cái cho biết có hay không việc một thiết bị gửi lại dữ liệu không hề thay đổi kể từ lần thăm dò cuối. Các yêu cầu Set_Protocol và Get_Protocol thiết lập và đọc giá trị giao thức. Giá trị giao thức sẽ cho biết một thiết bị có thể được sử dụng hay không ngay cả khi bộ điều khiển đầy đủ của nó chưa được tải trên Host (ví dụ con chuột và bàn phím có thể thực hiện chức năng của nó ngay trong giai đoạn khởi động - khi mà bộ điều khiển chính thức của nó chưa được tải ở trên Host). Các loại yêu cầu vừa nêu sẽ được trình bày chi tiết hơn ở đoạn sau. SVTH: NGUYỄN HỮU VIỆT Trang 14
  23. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC Kiểu truyền ngắt Các điểm cuối ngắt đem lại sự luân phiên trong việc trao đổi dữ liệu, đặc biệt khi phía thu phải có được dữ liệu một cách nhanh chóng hoặc định kỳ. Truyền điều khiển có thể bị trễ nếu bus quá bận trong khi băng thông cho truyền ngắt lại được đảm bảo. Khả năng thực hiện truyền ngắt ra (OUT) được bổ sung ở phiên bản 1.1 của chuẩn USB. Windows 98 SE là phiên bản Windowsđầu tiên hỗ trợ USB 1.1 và HID 1.1. 2.5.3: Các yêu cầu về vi chương trình (Firmware) Vi chương trình phải phù hợp với các yêu cầu của lớp thiết bị. Các bộ mô tả của thiết bị phải bao gồm một bộ mô tả giao diện để định nghĩa thiết bị thuộc lớp HID, một bộ mô tả HID và một bộ mô tả điểm cuối ngắt vào (IN). Bộ mô tả điểm cuối ngắt ra (OUT) là tuỳ chọn. Vi chương trình cũng phải chứa một bộ mô tả report. Một HID có thể hỗ trợ một hay nhiều report. Bộ mô tả report chỉ ra kích thước và nội dung của dữ liệu chứa trong report cũng như cách mà phía thu sẽ sử dụng dữ liệu nhận được. Các giá trị trong bộ mô tả sẽ chỉ ra mỗi report là một report đầu vào, đầu ra hay là một report đặc biệt. Máy chủ nhận dữ liệu chứa trong report đầu vào và gửi dữ liệu chứa trong report đầu ra. Một report đặc biệt có thể được truyền theo cả hai hướng. Mọi thiết bị phải hỗ trợ tối thiểu một report đầu vào để máy chủ có thể thu nhận dữ liệu thông qua truyền ngắt hoặc truyền điều khiển. Các report đầu ra là tuỳ chọn. Để tương thích với Windows 98 Gold thì các thiết bị sử dụng các report đầu ra nên hỗ trợ việc gửi report thông qua truyền điều khiển. Sử dụng truyền ngắt cho các thông báo đầu ra là tuỳ chọn. Còn các thông báo đặc biệt cũng là tuỳ chọn và nếu được sử dụng thì nó luôn được truyền thông qua truyền điều khiển. 2.5.4: Cách thức để chỉ ra một thiết bị thuộc lớp HID Với bất kỳ thiết bị USB nào thuộc lớp HID thì các bộ mô tả của nó chỉ cho máy chủ thông tin máy chủ cần biết để giao tiếp với thiết bị. Máy chủ tìm hiểu về giao diện HID trong suốt quá trình thiết lập bằng cách gửi một yêu cầu Get_Descriptor. Các bộ mô tả của một thiết bị thuộc lớp HID bao gồm: Bộ mô tả thiết bị (Device Descriptor), bộ mô tả cấu hình (Configuration Descriptor), bộ mô tả giao diện SVTH: NGUYỄN HỮU VIỆT Trang 15
  24. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC (Interface Descriptor), bộ mô tả HID (HID Descriptor), bộ mô tả điểm cuối ngắt vào (IN interrupt Enpoint Descriptor), bộ mô tả điểm cuối ngắt ra (OUT Interrupt Endpoint Descriptor) và bộ mô tả điểm cuối ngắt đặc biệt (Feature Interrupt Endpoint Descriptor). Hai bộ mô tả sau cùng là tuỳ chọn (tức có thể có hoặc không). Ngoài các bộ mô tả vừa liệt kê ở trên thiết bị thuộc lớp HID còn phải có một bộ mô tả nữa đó là bộ mô tả Report (bộ mô tả Report sẽ được nói cụ thể sau). 2.5.5: Bộ mô tả báo cáo (Report Descriptor) Một bộ mô tả thông báo định nghĩa khuôn dạng và công dụng của dữ liệu chứa trong các report. Ví dụ nếu thiết bị là một con chuột thì dữ liệu trong report sẽ thông báo cho máy chủ biết sự di chuyển của con chuột và các sự kiện click chuột, nếu thiết bị là một bộ điều khiển rơle thì dữ liệu trong báo cáo sẽ cho biết rơle nào mở và rơle nào đóng. Bộ mô tả report cần phải đủ linh hoạt để điều khiển thiết bị với các mục đích khác nhau. Dữ liệu lưu trong report cần được tối ưu hoá về kích thước để tránh lãng phí không gian lưu trữ và rút ngắn thời gian khi truyền trên bus. 2.5.6: Các yêu cầu mà host có thể gửi tới một thiết bị thuộc lớp HID Như đã trình bày ở trên, đặc tả HID định nghĩa 6 yêu cầu mà Host có thể gửi tới một thiết bị thuộc lớp HID. Tất cả các HID phải hỗ trợ Get_Report, còn đối với các thiết bị hỗ trợ giao thức khởi động thì phải đáp ứng được các yêu cầu Get_Protocol và Set_Protocol. Các yêu cầu còn lại gồm Set_Report, Get_Idle và Set_Idle là tuỳ chọn, trừ trường hợp đối với một keyboard sử dụng giao thức khởi động phải hỗ trợ Set_Idle. Nếu một HID không có một điểm cuối ngắt ra (OUT) hoặc nếu HID đang giao tiếp với một máy chủ chỉ hỗ trợ USB 1.0 như Windows 98 Gold chẳng hạn thì HID đó nếu muốn nhận report từ host nó phải hỗ trợ Set_Report. Các yêu cầu ở trên sẽ được Host gửi tới thiết bị trong giai đoạn setup của truyền điều khiển. Giai đoạn setup của truyền điều khiển diễn ra như sau: ban đầu host phát ra gói thông báo setup, theo sau đó là gói dữ liệu dành cho giao tác setup có kích thước của phần dữ liệu là 8 byte, cuối cùng host chờ gói bắt tay ACK để biết rằng giao tác setup có thành công hay không. Các yêu cầu của host được SVTH: NGUYỄN HỮU VIỆT Trang 16
  25. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC chứa trong 8 byte dữ liệu của gói dữ liệu theo sau gói thông báo setup, nó có khuôn dạng như sau: Hình 2.2: Khuôn dạng dữ liệu của giai đoạn setup trong kiểu truyền Control Có một số Bit trong gói trên có giá trị giống nhau đối với cả 6 yêu cầu đó là: 5 Bit Destination type =00000B để chỉ ra đích đến của yêu cầu là một thiết bị. (00001B: đích là một giao diện cụ thể, 00010B: đích là một điểm cuối trên thiết bị, 00011B: đích là một trong các thành phần khác trong thiết bị). 2 Bit Request Type =01 để chỉ ra loại yêu cầu này là để dành cho một lớp thiết bị cụ thể. (00: tức request là một trong các request chuẩn (có 11 loại request chuẩn), 10: request được định nghĩa bởi nhà cung cấp thiết bị). Get_Report Host gửi yêu cầu này khi nó muốn nhận một Input report hoặc Feature report từ HID sử dụng truyền điều khiển. Bit Direction = 1 để chỉ ra rằng có một giai đoạn dữ liệu sau giai đoạn setup và hướng truyền của dữ liệu là từ thiết bị về host. bRequest = 01h cho biết yêu cầu mà host gửi tới thiết bị là Get_Report. wValue: Byte cao chứa thông tin cho biết host muốn nhận loại report nào từ thiết bị (1=Input, 3=Feature), byte thấp chứa report ID. wIndex: chứa số lượng giao diện mà yêu cầu được hướng tới. wlength: chứa chiều dài tối đa cho phép của report trong giai đoạn dữ liệu tính theo byte. Lưu ý: tất cả các HID nên hỗ trợ yêu cầu Get_Report. Get_Idle SVTH: NGUYỄN HỮU VIỆT Trang 17
  26. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC Host gửi yêu cầu này để đọc tốc độ rỗi từ thiết bị. Bit Direction = 1. bRequest = 02h. wValue: Byte cao = 00h, byte thấp chỉ ra report ID của report mà yêu cầu tác động tới. Nếu byte = 00h thì có nghĩa là yêu cầu sẽ tác động tới tất cả các Input report của HID. wIndex chứa số lượng giao diện hỗ trợ yêu cầu này. wlength = 1. 1 byte trường dữ liệu của gói dữ liệu trong giai đoạn dữ liệu sẽ chứa tốc độ rỗi tính theo số nguyên lần của 4 ms. Các HID không buộc phải hỗ trợ yêu cầu Get_Idle. Get_Protocol Mục đích của yêu cầu này là để host biết được HID có hỗ trợ giao thức khởi động hay không. Bit Direction = 1. bRequest = 03h. wValue = 0000h. wIndex chứa số lượng giao diện hỗ trợ yêu cầu này. wLength = 1. Nếu 1 byte trường dữ liệu của gói dữ liệu = 0 tức có hỗ trợ giao thức khởi động còn nếu ≠ 0 tức là không hỗ trợ giao thức khởi động. Các thiết bị có hỗ trợ giao thức khởi động thì phải đáp ứng yêu cầu này. Set_Report Host gửi yêu cầu này để thông báo rằng nó muốn gửi một Output hoặc Feature report tới thiết bị bằng cách sử dụng truyền điều khiển. Bit Direction = 0 để chỉ ra rằng hướng của report trong giai đoạn dữ liệu là từ host tới thiết bị. bRequest = 09h. wValue: Byte cao chứa thông tin về loại report sẽ được gửi trong giai đoạn dữ liệu (2: Output report, 3: Feature report). Byte thấp chứa report ID. SVTH: NGUYỄN HỮU VIỆT Trang 18
  27. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC wIndex chứa số lượng giao diện mà yêu cầu này được hướng tới. wLength: cho biết chính xác kích thước của report tính theo byte sẽ được gửi trong giai đoạn dữ liệu. Các HID có thể hỗ trợ hoặc không hỗ trợ yêu cầu Set_Report. Nếu một HID không có điểm cuối ngắt ra (OUT) hoặc HID đang làm việc với một máy chủ chỉ hỗ trợ phiên bản USB 1.0 mà lại muốn nhận dữ liệu từ Host thì việc đáp ứng lại yêu cầu Set_Report là cách duy nhất để có thể nhận dữ liệu từ host. Set_Idle Host gửi yêu cầu này là để tiết kiệm băng thông thông qua việc giới hạn tần số gửi báo cáo của một điểm cuối ngắt vào (IN) khi dữ liệu chứa trong báo cáo không có sự thay đổi so với báo cáo gần nhất. Bit Direction = 0 để chỉ ra hướng của dữ liệu trong giai đoạn dữ liệu nếu có thì sẽ là từ host tới thiết bị. bRequest = 0Ah. wValue: Byte cao thiết lập khoảng thời gian tối thiểu phải trôi qua giữa hai Input report có dữ liệu giống nhau mà lại được gửi kế tiếp nhau, byte thấp chứa report ID của report mà yêu cầu này tác động tới. Nếu byte thấp là 00h thì có nghĩa là yêu cầu này tác động tới tất cả các Input report của HID. wIndex chứa số lượng giao diện hỗ trợ yêu cầu này. wLength 0000h: Cho thấy không có giai đoạn dữ liệu theo sau giai đoạn setup. Chú thích: Khoảng thời gian giữa hai Input report là một số nguyên lần của 4 ms, như vậy với 1 byte cao của wValue thì khoảng thời gian này sẽ nằm trong phạm vi từ 4 tới 1020 ms. Nếu byte cao của wValue = 00h thì có nghĩa là HID chỉ được gửi Input report khi dữ liệu của report đã có thay đổi so với lần gửi ngay trước đó. Nếu dữ liệu của report có thay đổi so với lần gửi ngay trước đó thì nó có thể được gửi ngay khi có một thông báo IN bất kể giá trị byte cao của wValue là bao nhiêu. Trong trường hợp dữ liệu của report không hề có thay đổi gì so với lần gửi ngay trước đó mặt khác khoảng thời gian được gán trong byte cao của wValue chưa trôi qua kể từ lần gửi report ngay trước mà lại có một thông báo IN từ host thì HID sẽ gửi gói bắt tay NAK. Còn nếu khoảng thời gian được gán trong byte cao của SVTH: NGUYỄN HỮU VIỆT Trang 19
  28. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC wValue đã trôi qua kể từ lần gửi report ngay trước thì HID sẽ gửi tới host report mặc dù dữ liệu của report không hề có thay đổi so với lần gửi ngay trước. Nếu HID trả lời yêu cầu Set_Idle của host bằng gói bắt tay STALL thì nó có thể gửi report bất cứ khi nào có thông báo IN từ host kể cả khi dữ liệu của report không hề có sự thay đổi. Các HID không bị bắt buộc phải hỗ trợ yêu cầu Set_Idle của host ngoại trừ keyboard có sử dụng giao thức khởi động. Set_Protocol Host gửi yêu cầu này để chỉ định HID có nên sử dụng giao thức khởi động hay không. Bit Direction = 0 để chỉ ra hướng của dữ liệu trong giai đoạn dữ liệu nếu có thì sẽ là từ Host tới thiết bị. bRequest = 0Bh. wValue = 0000h: nên sử dụng giao thức khởi động; wValue ≠ 0000h: không nên sử dụng giao thức khởi động. wIndex chứa số lượng giao diện hỗ trợ yêu cầu này. wLength 0000h: Cho thấy không có giai đoạn dữ liệu theo sau giai đoạn setup. Thiết bị muốn thực hiện chức năng trong quá trình khởi động phải hỗ trợ yêu cầu Set_Protocol. 2.6: Sự hỗ trợ của Hệ điều hành với lớp HID Các hệ điều hành của Microsoft từ Windows 2000 trở đi đều hỗ trợ sẵn các driver. Vì vậy người thiết kế không cần phải xây dựng driver riêng, chỉ cần theo đúng các chuẩn của nhà cung cấp hệ điều hành đã tạp ra trước đó. Trong đề tài này, các sản phẩm và mô hình đều được thiết kế theo chuẩn của Windows, tuy nhiên các sản phẩm và mô hình này cũng có thể chạy tốt trên các hệ điều hành khác như Linux SVTH: NGUYỄN HỮU VIỆT Trang 20
  29. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC 2.7: Chọn chip Dưới đây là danh sách các chip có hỗ trợ giao thức USB, đồng thời cũng rất quen thuộc với sinh viên: AT43USB35x, AT67C713 của hãng Atmel PIC 18F2550/4550 của hãng Microchip EZ-USB của hãng Cypress Semiconductor TUSB3210/3410 của hãng Texas Instrument Ngoài ra còn có một số chip khác, mời xem thêm phụ lục 4 SVTH: NGUYỄN HỮU VIỆT Trang 21
  30. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC CHƯƠNG III: TỔNG QUAN VỀ MẠNG TRUYỀN THÔNG 1 DÂY 3.1:Định nghĩa mạng truyền thông 1 dây Mạng 1 dây là mạng sử dụng 1 dây để làm đường Bus truyền và nhận dữ liệu Hình 2.1: Sơ đồ mạng 1 dây 3.2: Tổng quan về Bus 1 dây Giao thức 1 dây sử dụng cổng logic CMOS/TTL và hoạt động ở điện áp từ 2.8V đến 6V Chủ và tớ đều có thể là thiết bị nhận hoặc là thiết bị truyền, tuy nhiên việc truyền dữ liệu tại 1 thời điểm chỉ được theo 1 hướng. Chủ thiết lập và điều khiển mọi hoạt động của giao thức 1 dây. Việc đọc và viết dữ liệu được thực hiện theo từng Bit 1, Bit có trọng số nhỏ nhất (LSB) được truyền trước, và việc đọc viết dữ liệu được thực hiện theo từng khoảng thời gian. Mỗi thiết bị không cần xung clock của hệ thống vì nó đã có clock riêng trong mỗi thiết bị và được đồng bộ bởi cạnh xuống của xung của chủ. SVTH: NGUYỄN HỮU VIỆT Trang 22
  31. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC 3.3: Các yêu cầu Những yêu cầu cho bất kì bus 1 dây: Hệ thống phải có khả năng tạo ra một khoảng thời gian delay chính xác và liên tục trong 1us để đạt được tốc độ chuẩn hay là 0.25us cho tốc độ tối đa. Cổng giao tiếp phải là song cổng (có thể nhập và xuất dữ liệu). Cổng xuất của nó phải là cực máng hở. Không được ngắt việc giao tiếp trong khi đang quá trình trao đổi dữ liệu đang diễn ra. (Chú ý: Hầu hết các dòng vi điều khiển PIC cho phép người dùng điều chỉnh bất kì chân I/O nào thành cực máng hở như yêu cầu.Để biết thêm các khuyến cáo về giá trị điện trở kéo lên. Xem trong datasheet kèm theo từng loại thiết bị tớ.) 3.4:Hoạt động của bus 1 dây Bốn thao tác cơ bản của Bus 1 dây là RESET, viết Bit 0, viết Bit 1 và đọc Bit. Sử dụng các thao tác Bit này, 1 thiết bị phải biết được 1 byte hoặc 1 khung các bytes. Hình 3.2: Cấu trúc Timing trên Bus SVTH: NGUYỄN HỮU VIỆT Trang 23
  32. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC Bus chủ thiết lập và điều khiển tất cả việc giao tiếp 1 dây. Hình 2.2 mô tả biểu đồ thời gian của giao tiếp 1 dây. Nó giống với Điều xung bởi vì dữ liệu được truyền đi bằng 1 xung rộng(logic = 0) và xung hẹp(logic 1) trong suốt khoảng thời gian truyền Bit dữ liệu hay là 1 ngăn thời gian. Một chuỗi giao tiếp bắt đầu khi bus chủ xuất ra 1 xung “Reset” đã được định sẵn độ dài, cái mà đồng bộ cả bus. Mỗi tớ trả lời xung “Reset” bằng 1 xung “Presence” có mức logic thấp. Để viết dữ liệu, chủ trước tiên thiết lập 1 ngăn thời gian bằng cách kéo đường 1 dây xuống mức thấp, sau đó, hoặc là giữ nguyên đường line ở mức thấp (xung rộng) để truyền mức logic 0, hoặc là “thả” đường line (xung hẹp) để cho bus về lại mức logic 1. Để đọc dữ liệu, chủ lại thiệt lập 1 ngăn thời gian bằng việc kép đương line xuống thấp với 1 xung hẹp. Tớ có thể hoặc là trả về logic 0 bằng cách mở đường xuất của nó với cực máng hở và giữ cho đường line ở mức thấp để mở rộng xung, hoặc trả về mức logic 1 bằng việc đóng đường xuất của nó với cực máng hở để cho đường line về lại mức cao. Hầu hết các thiết bị 1 dây hỗ trợ 2 mức tốc độ dữ liệu: Tốc độc chuẩn khoảng 15kbps và tốc độ tối đa và khoảng 111kbps. 3.4: Mạng một dây và Vi điều khiển PIC Vi điều khiển PIC có nhiều chân ra vào với mục đích chung (GPIO), và có thể dễ dàng hiệu chỉnh để thực hiện giao thức 1 dây của Maxim/Dallas Semiconductor(M/DS). Giao thức 1 dây (1-Wire) cho phép giao tiếp với nhiều thiết bị khác của M/DS, bao gồm pin, các thiết bị quản lí nhiệt, bộ nhớ, iButtons, và vân vân Các thiết bị 1 dây cung cấp các giải pháp vềbộ nhớ, timer, đo lường và điều khiển. Giao tiếp dữ liệu của mạng 1 dây được giảm thiểu đến mức tối đa (1 đường dữ liệu cùng với 1 đường nối mass ). Vì vậy hầu hết các thiết bị 1-dây cung cấp tương đối nhỏ khối lượng dữ liệu, tỉ lệ dữ liệu thông thường đạt 16kbps đủ cho các công việc mong muốn. Sử dụng một chân GPIO của 1 vi điều khiển 8 Bit hoặc 16 Bit để thực hiện như SVTH: NGUYỄN HỮU VIỆT Trang 24
  33. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC 1 bus chủ thường rất thuận tiện. các thiết bị 1 dây giao tiếp bằng cách sử dụng 1 đường dữ liệu đơn và đã xác định rõ ràng. Chú ý: Trạng thái nghỉ cho bus 1 dây là ở mức cao. Nếu việc truyền dữ liệu cần được kết thúc, dù bất kì 1 lí do gì, bus phải được đưa về trạng thái nghỉ. Nếu không được đưa về trạng thái nghỉ, và bus được đưa về mức thấp lâu hơn 120us, 1 hoặc nhiều thiếc bị trên bus sẽ bị reset. SVTH: NGUYỄN HỮU VIỆT Trang 25
  34. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC CHƯƠNG IV: TỔNG QUAN VỀ PIC 18F2550/4550 4.1: Giới thiệu PIC 18F2550/4550 PIC 18F2550/4550 là dòng PIC 8 Bit của Microchip có hỗ trợ chức năng USB với hai cấp tốc độ: full-speed và high-speed với các chuẩn truyền khác nhau gồm kiểu điều khiển, ngắt, không đồng bộ và bulk. Hỗ trợ hơn 32 endpoints. Giành riêng 1Kbyte RAM cho chức năng USB. Có bộ truyền nhận và bộ nắn điện áp trên chip. Hỗ trợ giao thức USB cho bộ truyền nhận ngoài Bên cạnh chức năng quan trọng trên, dòng Vi điều khiển này còn hỗ trợ rất nhiều các chức năng khác như: 3 ngắt ngoài, 4 timers, 2 bộ CCP/PWM, 1 bộ UART, I2C và SPI, 13 kênh ADC 10 Bit. Tần số hoạt động lên tới 48MHz Nguồn cung cấp từ 2.0V tới 5.5V cùng với các chế độ tiết kiệm năng lượng Bảng 4.1: Bảng tóm tắt chức năng của PIC 182550/4550 Hình 4.1: Sơ đồ chân của PIC 18F2550/4550 SVTH: NGUYỄN HỮU VIỆT Trang 26
  35. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC 4.2: Khái quát chức năng USB trong PIC Hình 4.2: Cấu trúc của chức năng USB bên trong chip 4.2.1:Trạng thái và điều khiển USB Hoạt động của mô-đun USB được định dạng và quản lí thông qua 3 thanh ghi điều khiển. Ngoài ra còn có tổng cộng 19 thanh ghi được dùng vào việc quản lí việc giao dịch của USB. 4.2.2: Thanh ghi điểu khiển (UCON) Thanh ghi này bao gồm những Bit cần thiết cho việc điều khiển hoạt động của mô-đun trong suốt quá trình trao đổi dữ liệu. Thanh ghi này bao gồm các Bit thiết cấu hình để điều khiển các vấn đề sau: + Kích hoạt chức năng chính của thiết bị ngoại vi USB + Reset con trỏ bộ đệm ping-pong + Điều khiển chế độ tiết kiệm năng lượng + Vô hiệu hóa quá trình truyền SVTH: NGUYỄN HỮU VIỆT Trang 27
  36. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC Bit 7 và Bit 0: Không dùng, đọc giá trị 0 Bit 6: PPBRST – Bit reset cho bộ đệm ping-pong 1 = reset tất cả các con trỏ của bộ đệm ping-pong 0 = các giá trị của bộ đệm ping-pong không bị reset Bit 5: SE0 – Bit cờ cho biết sự có mặt của thiết bị trên bus 1 = Cho biết giao thức USB được hình thành 0 = Giao thức USB chưa được hình thành Bit 4: PKTDIS – Bit vô hiệu hóa quá trình truyền packet 1 = Quá trình truyền packet bị vô hiệu hóa 0 = Quá trình truyền packet được thiết lập Bit 3: USBEN – Bit kích hoạt mô-đun USB 1 = Mô-đun USB được kích hoạt 0 = Mô-đun USB bị vô hiệu hóa Bit 2: RESUME – Bit kích hoạt phục hồi tín hiệu 1 = Quá trình phục hồi tín hiệu được kich hoạt 0 = Quá trình phục hồi bị vô hiệu hóa Bit 1: SUSPND – Bit trì hoãn quá trình 1 = Chế độ tiết kiệm năng lượng được thiết lập SVTH: NGUYỄN HỮU VIỆT Trang 28
  37. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC 4.2.3: Thanh ghi cấu hình USB (UCFG) Thanh ghi UCFG bao gồm hầu hết các Bit điều khiển mức độ hoạt động của hệ thống trong mô-đun USB + Tốc độ trên bus + Kích hoạt điện trở kéo bên trong chip + Kích hoạt bộ truyền nhận bên trong chip + Sử dụng bộ đệm ping-pong Trên thanh ghi này cũng bao gồm 2 Bit giúp đỡ cho việc kiểm tra mô-đun, debug. Bit 7: UTEYE – Bit kích hoạt chức năng “Eye Pattern Test” (EPT) 1 = Kích hoạt chức năng EPT 0 = Vô hiệu hóa chức năng EPT Bit 6: UOEMON- Bit kích hoạt giám sát USB OE (Output Enable) 1 = Bật tín hiệu OE, Bit này cho biết khoảng thời gian dữ liệu chạy trên bus 0 = Tắt tín hiệu OE Bit 5: Không dùng Bit 4: UPUEN – Bit kích hoạt điện trở kéo trong chip 1 = Điện trở kéo được kích hoạt 0 = Điện trở kéo không được kích hoạt SVTH: NGUYỄN HỮU VIỆT Trang 29
  38. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC Bit 3: UTRDIS – Bit kích hoạt mô-đun truyền nhận trên chip 1 = Mô-đun truyền nhận trên chip bị tắt, giao thức truyền nhận mô-đun số được kích hoạt 0 = Mô-đun truyền nhận trên chip được kích hoạt Bit 2: FSEN –Bít kích hoạt Full-Speed 1 = Full Speed 0 = Low Speed Bit 1-0: PPB1:PPB0 – Các Bit thiết lập cấu hình của bộ đệm ping-pong 11 = Dự trữ 10 = Bộ đệm được dùng cho tất cả các endpoint 01 = Bộ đệm được dùng cho OUT endpoint 0 00 = Bộ đệm bị tắt 4.2.4: Thanh ghi trạng thái USB Thanh ghi trạng thái này cho chúng ta biết trạng thái của sự gia dịch trong suốt quá trình truyền nhận Bit 7 : Chưa tích hợp Bit 6-3: ENDP3:ENP0 - Số mã hóa của hoạt động endpoint cuối cùng 1111 = Endpoint 15 1110 = Endpoint 14 0001 = Endpoint 1 0000 = Endpoint 0 SVTH: NGUYỄN HỮU VIỆT Trang 30
  39. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC Bit 2: DIR - Bit chỉ thị hướng của BD cuối cùng 1 = Hoạt động truyền dữ liệu cuối cùng là 1 IN token 0 = Hoạt động truyền dữ liệu cuối cùng là 1 OUT hoặc SETUP token Bit 1: PPBI - Bit con trỏ chỉ thị Ping-Pong BD 1 = Hoạt động truyền dữ liệu cuối cùng là bank BD lẻ 0 = Hoạt động truyền dữ liệu cuối cùng là bank BD chẳn Bit 0: Chưa tích hợp 4.2.5: Thanh ghi điều khiền USB ENDPOINT( UEPn) Mỗi enpoint trong tổng số 16 endpoint có thanh ghi điều khiển riêng, chữ n là số thứ tự của endpoint. Tất cả các thanh ghi đều giống nhau về mặt bố trí và chức năng của Bit điều khiển Bit 7-5: Chưa thích hợp Bit 4: EPHSHK - Bit khởi động bắt tay Endpoint (Endpoint handshake) 1 = Kích hoạt Endpoint handshake 0 = Không kích hoạt Endpoint handshake. Bit 3: EPCONDIS - Bit điều khiển Endpoint ( nếu EPOUTEN = 1 và EPINEN = 1) 1 = Tắt Endpoint n control transfers; chỉ có IN và OUT transfers được cho phép 0 = Bật Endpoint n control transfers; IN và OUT transfers cũng được cho phép Bit 2: EPOUTEN - Bit kích hoạt Endpoint Output 1 = Bật Endpoint n output 0 = Tắt Endpoint n output SVTH: NGUYỄN HỮU VIỆT Trang 31
  40. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC Bit 1: EPINEN: Bit kích hoạt Endpoint Input 1 = Bật Endpoint n input 0 = Tắt Endpoint n input Bit 0: EPSTALL: Bit kích hoạt Endpoint Stall 1 = Endpoint n được stall 0 = Endpoint n không được stall 4.2.6: Thanh ghi trạng thái ngắt của giao thức USB Thanh ghi này gồm có nhiều cờ báo hiệu mỗi trạng thái ngắt từ nhiều nguồn khác nhau Bit 7: Chưa được tích hợp Bit 6: SOFIF - Bit ngắt START-OF-FRAME Token 1 = SIE nhận được một START-OF-FRAME token 0 = SIE không nhận được bất kì START-OF-FRAME token Bit 5: STALLIF - Bit ngắt STALL Handshake 1 = SIE vừa truyền một STALL Handshake 0 = STALL Handshake chưa được truyền Bit 4: IDLEIF - Bit ngắt phát hiện trạng thái chờ 1 = Phát hiện chờ (trạng thái chờ khoảng 3ms hoặc hơn) 0 = Không rãnh Bit 3: TRNIF - Bit ngắt hoàn thành quá trình truyền 1 = Quá trình truyền hoàn tất, đọc thanh ghi USTAT về thông tin endpoint 0 = Quá trình truyền chưa hoàn tất hoặc là không có transaction nào đang chờ. SVTH: NGUYỄN HỮU VIỆT Trang 32
  41. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC Bit 2: ACTVIF - Bit ngắt phát hiện hoạt động của bus 1 = Phát hiện hoạt động trên đường D+/D- 0 = Không có hoạt động trên đường D+/D- Bit 1: UERRIF - Bit ngắt điều kiện lỗi USB 1 = Một điều kiện lỗi không xác định xảy ra 0 = Không có lỗi Bit 0: URSTIF - Bit ngắt reset USB 1 = Reset USB hợp lệ. 00h được nạp vào thanh ghi UADDR 0 = USB reset không xảy ra. 4.2.7: Thanh ghi kích hoạt trạng thái ngắt của giao thức USB Thanh ghi này bao gồm các Bit kích hoạt cho các trạng thái ngắt của giao thức USB Bit 7: Chưa tích hợp Bit 6: SOFIE - Bit kích hoạt ngắt START-OF-FRAME token 1 = Kích hoạt 0 = Không kích hoạt Bit 5: STALLIE - Bit kích hoạt ngắt STALL Handshake 1 = Kích hoạt 0 = Không kích hoạt Bit 4: IDLEIE - Bit kích hoạt ngắt phát hiện nghỉ 1 = Kích hoạt 0 = Không kích hoạt SVTH: NGUYỄN HỮU VIỆT Trang 33
  42. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC Bit 3: TRNIE - Bit kích hoạt hoàn thành Transaction 1 = Kích hoạt 0 = Không kích hoạt Bit 2: ACTVIE -Bit kích hoạt ngắt phát hiện hoạt động của bus 1 = Kích hoạt 0 = Không kích hoạt Bit 1: UERRIE -Bit kích hoạt ngắt lỗi USB 1 = Kích hoạt 0 = Không kích hoạt Bit 0: URSTIE - Bit kích hoạt ngắt USB reset 1 = Kích hoạt 0 = Không kích hoạt SVTH: NGUYỄN HỮU VIỆT Trang 34
  43. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC CHƯƠNG V: GIỚI THIỆU CẢM BIẾN NHIỆT ĐỘ DS18B20 5.1: Khái quát chung DS1820 là một sản phẩm của công ty Dallas (Hoa Kỳ), đây cũng là công ty đóng góp nhiều vào việc cho ra đời bus một dây và các cảm biến một dây. Hình dạng bên ngoài của cảm biến một dây DS1820 được mô tả trên hình 5.1, trong đó dạng vỏ TO- 92 với 3 chân là dạng thường gặp và được dùng trong nhiều ứng dụng, còn dạng vỏ SOIC với 8 chân được dùng để đo nhiệt độ bề mặt, kể cả da người Hình 5.1: Dạng đóng vỏ và bề ngoài của cảm biến DS1820 Các đặc điểm kỹ thuật của cảm biến DS1820 có thể kể ra một cách tóm tắt như sau: Sử dụng giao diện một dây nên chỉ cần có một chân ra để truyền thông. o Độ phân giải khi đo nhiệt độ là 9, 10, 11, hay 12Bit. Dải đo nhiệt độ -55 C đến 125oC, từng bậc 0.5oC; 0.25oC; 0.125o; 0.0625oC SVTH: NGUYỄN HỮU VIỆT Trang 35
  44. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC Rất thích hợp với các ứng dụng đo lường đa điểm vì nhiều đầu đo có thể được nối trên một bus, bus này được gọi là bus một dây (1-wire bus) Không cần thêm linh kiện bên ngoài. Điện áp nguồn nuôi có thể thay đổi trong khoảng rộng, từ 3,0 V đến 5,5 V một chiều và có thể được cấp thông qua đường dẫn dữ liệu. Dòng tiêu thụ tại chế độ nghỉ cực nhỏ. Thời gian lấy mẫu và biến đổi thành số tương đối nhanh, <=750 ms (12 Bit). Mỗi cảm biến có một mã định danh duy nhất 64 Bit chứa trong bộ nhớ ROM trên chip (on chip), giá trị nhị phân được khắc bằng tia laze. Đầu đo nhiệt độ số DS1820 đưa ra số liệu để biểu thị nhiệt độ đo được dưới dạng mã nhị phân. Các thông tin được gửi đến và nhận về từ DS1820 trên giao diện 1-wire, do đó chỉ cần hai đường dẫn gồm một đường cho tín hiệu và một đường làm dây đất là đủ để kết nối vi điều khiển đến điểm đo. Nguồn nuôi cho các thao tác ghi/đọc/chuyển đổi có thể được trích từ đường tín hiệu, không cần có thêm đường dây riêng để cấp điện áp nguồn. 5.2: Cấu trúc phần cứng Hình 5.2 Sơ đồ các khối cấu tạo nên cảm biến DS18B20 SVTH: NGUYỄN HỮU VIỆT Trang 36
  45. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC Nhìn từ bên trái của sơ đồ5.2: - Khối đầu tiên là bộ nguồn: Có 2 cách cấp nguồn cho cảm biến, ta có thể cấp nguồn bằng cách trích điện áp trên dây tín hiệu hay cấp nguồn ngoài qua chân Vcc Hình 5.3 Các phương thức cấp nguồn cho cảm biến - Khối tiếp theo là 64 Bit ROM code: Mỗi cảm biến nhiệt độ DS1820 có một dãy mã 64 Bit duy nhất được lưu trữ trong bộ nhớ ROM từ khi sản xuất bằng kỹ thuật laze. Ý nghĩa của 64 Bit mã được giải thích trên hình5.4: Hình 5.4:Nội dung dãy mã 64-Bit trên bộ nhớ ROM Như vậy dãy mã được chia ra thành 3 nhóm, trong đó: Tám Bit đầu tiên là mã định danh họ một dây, mã của DS1820 là 28h. SVTH: NGUYỄN HỮU VIỆT Trang 37
  46. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC 48 Bit tiếp theo là mã số xuất xưởng duy nhất, nghĩa là mỗi cảm biến DS1820 chỉ có một số mã. Tám Bit có ý nghĩa nhất là byte mã kiểm tra CRC (cyclic redundancy check), byte này được tính toán từ 56 Bit đầu tiên của dãy mã trên ROM (Hình 5.4). Khối tiếp theo( Memory Control Logic ): Khối nãy giống như một bộ VĐK trung tâm Khối tiếp theo là vùng nhớ nháp (Scratchpad) : Hình 5.5 Sơ đồ bộ nhớ của cảm biến Các khối cuối cùng bên phải gồm có: Cảm biến nhiệt độ, 3 thanh ghi của EEPROM ( Thnh ghi TH,TL, và thanh ghi cấu hình) và 8 Bit CRC SVTH: NGUYỄN HỮU VIỆT Trang 38
  47. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC 5.3:Hoạt động đo nhiệt độ Hình 5.6Cách thức mã hóa giá trị Hình 5.7 Định dạng của 2 byte lưu giá trị nhiệt độ 5.4: Hoạt động báo hiệu Hình 5.8 Cấu trúc thanh ghi báo hiệu 7 Bit đầu để chứa giá trị của ngưỡng nhiệt độ. Bit cuối cùng là để xác định dấu của giá trị: Số dương S = 0, Số âm S = 1 SVTH: NGUYỄN HỮU VIỆT Trang 39
  48. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC 5.5: Thanh ghi cấu hình và độ phân giải Hình 5.9 Độ phân giải của cảm biến Ở chế độ mặc định thì R0 = 1 và R1 = 1 tương ứng với độ phân giải 12 Bit của ADC 5.6: 8 Bit CRC Biểu thức tính giá trị CRC 5.7: Tập lệnh Để truy cập lên cảm biến một dây DS1820 ta phải sử dụng hai nhóm lệnh: các lệnh ROM và các lệnh chức năng (function commands) bộ nhớ, các lệnh này có thể được mô tả ngắn gọn như sau: Sau khi thiết bị chủ (thường là một vi điều khiển) phát hiện ra một xung presence pulse, nó có thể xuất ra một lệnh ROM. Có 5 loại lệnh ROM, mỗi lệnh dài 8 Bit. Thiết bị chủ phải đưa ra lệnh ROM thích hợp trước khi đưa ra một lệnh chức năng để giao tiếp với cảm biến DS18S20. SVTH: NGUYỄN HỮU VIỆT Trang 40
  49. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC 5.7.1: Lệnh ROM - READ ROM (33h): Cho phép đọc ra 8 byte mã đã khắc bằng laser trên ROM, bao gồm: 8 Bit mã định tên linh kiện (10h), 48 Bit số xuất xưởng, 8 Bit kiểm tra CRC. Lệnh này chỉ dùng khi trên bus có 1 cảm biến DS1820, nếu không sẽ xảy ra xung đột trên bus do tất cả các thiết bị tớ cùng đáp ứng. - MATCH ROM (55h): Lệnh này được gửi đi cùng với 64 Bit ROM tiếp theo, cho phép bộ điều khiển bus chọn ra chỉ một cảm biến DS1820 cụ thể khi trên bus có nhiều cảm biến DS1820 cùng nối vào. Chỉ có DS1820 nào có 64 Bit trên ROM trung khớp với chuỗi 64 Bit vừa được gửi tới mới đáp ứng lại các lệnh về bộ nhớ tiếp theo. Còn các cảm biến DS1820 có 64 Bit ROM không trùng khớp sẽ tiếp tục chờ một xung reset. Lệnh này được sử dụng cả trong trường hợp có một cảm biến một dây, cả trong trường hợp có nhiều cảm biến một dây. - SKIP ROM (CCh): Lệnh này cho phép thiết bị điều khiển truy nhập thẳng đến các lệnh bộ nhớ của DS1820 mà không cần gửi chuỗi mã 64 Bit ROM. Như vậy sẽ tiết kiệm được thời gian chờ đợi nhưng chỉ mang lại hiệu quả khi trên bus chỉ có một cảm biến. - SEARCH ROM (F0h): Lệnh này cho phép bộ điều khiển bus có thể dò tìm được số lượng thành viên tớ đang được đấu vào bus và các giá trị cụ thể trong 64 Bit ROM của chúng bằng một chu trình dò tìm. - ALARM SEARCH (ECh): Tiến trình của lệnh này giống hệt như lệnh Search ROM, nhưng cảm biến DS1820 chỉ đáp ứng lệnh này khi xuất hiện điều kiện cảnh báo trong phép đo nhiệt độ cuối cùng. Điều kiện cảnh báo ở đây được định nghĩa là giá trị nhiệt độ đo được lớn hơn giá trị TH và nhỏ hơn giá trị TL là hai giá trị nhiệt độ cao nhất và nhiệt độ thấp nhất đã được đặt trên thanh ghi trong bộ nhớ của cảm biến. SVTH: NGUYỄN HỮU VIỆT Trang 41
  50. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC 5.7.2: Lệnh chức năng bộ nhớ Sau khi thiết bị chủ (thường là một vi điều khiển) sử dụng các lệnh ROM để định địa chỉ cho các cảm biến một dây đang được đấu vào bus, thiết bị chủ sẽ đưa ra các lệnh chức năng DS1820. Bằng các lệnh chức năng thiết bị chủ có thể đọc ra và ghi vào bộ nhớ nháp (scratchpath) của cảm biến DS1820. khởi tạo quá trình chuyển đổi giá trị nhiệt độ đo được và xác định chế độ cung cấp điện áp nguồn. Các lệnh chức năng có thể được mô tả ngắn gọn như sau: - WRITE SCRATCHPAD (4Eh): Lệnh này cho phép ghi 3 byte dữ liệu vào bộ nhớ nháp của DS1820. Byte đầu tiên được ghi vào thanh ghi TH (byte 2 của bộ nhớ nháp), byte thứ hai được ghi vào thanh ghi TL (byte 3 của bộ nhớ nháp)còn byte thứ ba được ghi vào thanh ghi cấu hình (byte 4 của bộ nhớ nháp). Dữ liệu truyền theo trình tự đầu tiên là Bit có ý nghĩa nhất và kế tiếp là những Bit có ý nghĩa giảm dần. Cả hai byte này phải được ghi trước khi thiết bị chủ xuất ra một xung reset hoặc khi có dữ liệu khác xuất hiện. - READ SCRATCHPAD (BEh): Lệnh này cho phép thiết bị chủ đọc nội dung bộ nhớ nháp. Quá trình đọc bắt đầu từ Bit có ý nghĩa nhấy của byte 0 và tiếp tục cho đến byte thứ 9 (byte 8 – CRC). Thiết bị chủ có thể xuất ra một xung reset để làm dừng quá trình đọc bất kỳ lúc nào nếu như chỉ có một phần của dữ liệu trên bộ nhớ nháp cần được đọc. - COPYSCRATCHPAD (48h): Lệnh này copy nội dung của 3 thanh ghi TH, TL và thanh ghi cấu hình (byte 2, byte 3, byte 4) vào bộ nhớ EEPROM. Nếu cảm biến được sử dụng trong chế dộ cấp nguồn l bắt đầu việc đo. - CONVERT T (44h): Lệnh này khởi động một quá trình đo và chuyển đổi giá trị nhiệt độ thành số (nhị phân). Sau khi chuyển đổi giá trị kết quả đo nhiệt độ được lưu trữ trên thanh ghi nhiệt độ 2 byte trong bộ nhớ nháp. Thời gian chuyển đổi không quá 750 ms tuỳ vào độ phân giải, trong thời gian đang chuyển đổi nếu thực hiện lệnh đọc thì các giá trị đọc ra đều bằng 0. SVTH: NGUYỄN HỮU VIỆT Trang 42
  51. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC - READ POWER SUPPLY (B4h): Một lệnh đọc tiếp sau lệnh này sẽ cho biết DS1820 đang sử dụng chế độ cấp nguồn như thế nào, giá trị đọc được bằng 0 nếu cấp nguồn bằng chính đường dẫn dữ liệu và bằng 1 nếu cấp nguồn qua một đường dẫn riêng. Đến đây ta có thể thấy là việc sử dụng các lệnh vừa trình bày là một công việc không đơn giản, nhất là với những bạn đọc chưa từng tìm hiểu về kỹ thuật vi xử lý. Cũng vì vậy mà trong khuôn khổ một bài viết ta chưa thể hiểu hể cách làm chủ hoạt động của một cảm biến một dây. Trong phần sau sẽ trình bày thêm về cách ghép nối cảm biến một dây với vi điều khiển và tổ chức của bus một dây. 5.8: Chuẩn 1 dây với cảm biến DS18B20 5.8.1: Thời gian khởi động bus Hình 5.10 Timing khởi động bus Quá trình khởi động báo hiệu cho các thiết bị tớ (Slave) trên bus biết được hệ thống bắt đầu khởi động, đồng thời giúp cho thiết bị chủ (Master) biết được có thiết bị tớ nào nối vào mạng hay không Ban đầu Master phát đi một xung “mức 0” rộng tối thiểu là 480us để báo hiệu cho các Slave,lúc này các Slave ở chế độ chờ cho đến khi Master giải phóng bus, lập tức trở 4.7k kéo bus lên “mức 1”. Các Slave nhận được cạnh lên nó vẫn tiếp tục chờ 15– 60us sau đó sẽ gửi lên một xung phản hồi ở mức thấp khoảng 60 – 240us SVTH: NGUYỄN HỮU VIỆT Trang 43
  52. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC 5.8.2: Thiết lập các Slots ở chế độ ghi cho Master Ghi thì có 2 mức : Mức 1 cho Logic 1 và Mức 0 cho Logic 0 Tất cả các Slot phải có độ rộng tối thiểu là 60us và cần tối thiểu là 1us để khởi động 1 lần ghi Các Slave dựa vào cạnh xuống để chuẩn bị cho 1 lần lấy mẫu trên bus Mẫu sẽ được các Slave cập nhật sau 1 khoảng thời gian 15 – 60us kể từ khi nhận được cạnh xuống của Master Quá trình đọc cũng tương tự, tuy nhiên thời gian cho phép Master lấy mẫu trên bus lại bị hạn chế khá nhiều (chỉ khoảng 10 us) Hình 5.11 Timing đọc của Master SVTH: NGUYỄN HỮU VIỆT Trang 44
  53. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC CHƯƠNG VI: THIẾT KẾ VÀ LẮP RÁP MỘT SỐ CÁC ỨNG DỤNG 6.1: Giới thiệu các ứng dụng trong thiết kế Như đã giới thiệu ở phần 3 chương I, mô hình có hai ứng dụng bao gồm: + Bàn phím không dây dạng thu gọn + Mạch đo nhiệt độ môi trường và hiển thị lên LCD đồng thời ghép nối với máy tính qua giao thức USB để hiễn thị lên màn hình máy tính thông qua một giao diện nhỏ được tạo ra từ VB 6.0 - Bàn phím không dây gồm có 3 mô-đun chính: Mô-đun phát RF, Mô-đun thu RF và Mô-đun Vi điều khiển để tạo ra giao thức USB - Mạch đo nhiệt độ gồm có các khối cấu kiện sau: Các cảm biến đo nhiệt độ DS18B20, Mô-đun Vi điều khiển để tạo ra giao thức USB. Ngoài ra còn có LCD để hiển thị các giá trị đo được và các đèn led, nút bấm để kiểm tra quá trình truyền nhận của ứng dụng - Để hiển thị được các giá trị đo được lên màn hình máy tính ta cần một giao diện nhỏ được xây dựng trên nền tảng của VB 6.0. Nhiệm vụ của phần mềm là làm thế nào phát hiện được lúc nào thiết bị đã được cắm vào máy tính. Bên cạnh đó phối hợp cùng Hệ điều hành cập nhật các giá trị được gửi lên từ Vi điều khiển, đồng thời điều khiển và giám sát trạng thái của các đèn led và nút bấm. - Trong đề tài này vấn đề xây dựng driver không được đề cập vì các ứng dụng này được thiết kế theo bộ driver chuẩn của nhà xây dựng Hệ điều hành. Một cách cụ thể, đề tài này được thiết kế theo chuẩn của Windows - Chú ý: + Các ứng dụng này đã được kiểm tra trên nhiều Hệ điều hành khác nhau bao: Windows XP, Windows 7 và Linux. Kết quả thu được, bàn phím không dây có thể hoạt động tốt trên 3 Hệ điều hành này. Riêng mạch đo nhiệt độ thì chỉ có thể chạy trên Windows vì giao diện của nó được thực hiện bằng VB và tạo ra file *.exe, Linux không hỗ trợ loại file này mặc dù thiết bị đã được tự động phát hiện và bắt tay + Các ứng dụng này chỉ có thể chạy tốt trên các hệ điều hành kể từ Windows 2000 trở về sau SVTH: NGUYỄN HỮU VIỆT Trang 45
  54. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC 6.2: Sơ đồ nguyên lý J1 J7 D4 R7 Vss 1 RESET 1 D+ 2 LED Vcc 2 D- 3 Vss Vss 3 Vcc 4 Vcc 330 PGD 4 LED PGC 5 USB 10k JAK_NAP Reset PVN1 1 11 MCLR*/VPP/RE3 RC0/T1OSO/T13CKI 12 2 RC1/T1OSI/CCP2/UOE* 13 3 RA0/AN0 RC2/CCP1 14 4 RA1/AN1 VUSB 15 D- RA2/AN2/Vref -/CVref RC4/D-/VM SW1 5 16 D+ C1 Vss RESET 6 RA3/AN3/Vref + RC5/D+/VP 17 CAP NP 7 RA4/T0CKI/C1OUT/RCV RC6/TX/CK 18 LED RA5/AN4/SS*/HLVDIN/C2OUT RC7/RX/DT/SD0 RESET Vss 21 D 9 RB0/AN12/INT0/FLT0/SDI/SDA 22 C C2 OSC1/CLKIN RB1/AN10/INT1/SCK/SCL 23 B RB2/AN8/INT2/VM0 24 A 33p Y1 RB3/AN9/CCP2/VP0 25 RB4/AN11/KBI0 CRYSTAL 26 Vss C3 10 RB5/KBI1/PGM 27 PGC OSC2/CLKOUT/RA6 RB6/KBI2/PGC 28 PGD Vss 8 RB7/KBI3/PGD 33p Vss 19 VSS 20 Vcc VSS VDD PIC18F2550 J8 Vss 1 Vcc 2 A 3 B 4 C 5 D5 R9 D 6 Vss 7 RF LED_RF LED_RF Hình 6.1 Sơ đồ nguyên lý mạch REMOTE D1 R6 Vcc LED1 Vcc R3 330 Vss R_SW1 D2 R5 LED 10k J5 SW2 Reset LED2 SW1 Vcc 1 10u DS18B202 J3 330 J2 SW 1 Vss 3 LED Vcc 1 Vcc 1 C_Reset DS3 DS18B20 2 DS18B202 J1 Vss 3 Vss 3 SW1 Vcc 1 Vss RESET 1 40 PGD DS1 DS2 D- 2 Vcc D7 2 1 40 39 PGC D+ 3 2 39 RESET D6 3 38 Vss 4 R4 D5 4 3 38 37 R_SW2 D4 5 4 37 36 Vcc U2 6 5 36 35 SW2 USB 6 35 7 34 SW1 Vss 1 SW3 8 7 34 33 Vcc 2 VSS J4 SW2 Vss 9 8 33 32 Vcc R1 LCD 3 VDD 9 32 VEE 10 31 Vss 4.7k RS 4 1 SW 2 Vcc 11 10 31 30 RW 5 RS LCD2 Vss 12 11 30 29 DS18B20 E 6 RW Vss3 C1 13 12 29 28 LED2 7 E 14 13 28 27 LED1 8 D0 33p Y1 E 15 14 27 26 9 D1 LCD R_LCD 15 26 D2 J7 CRYSTAL RW 16 25 10 Vss C2 RS 17 16 25 24 D+ D4 11 D3 RESET 1 18 17 24 23 D- D5 12 D4 Vcc 2 19 18 23 22 D6 13 D5 Vss 3 R2 33p 20 19 22 21 D7 14 D6 PGD 4 C3 20 21 Vcc 15 D7 PGC 5 CAP NP Vss A PIC18F4550 16 R_Led_LCD K JAK_NAP Vss LCD Hình 6.2Sơ đồ nguyên lý mạch đo nhiệt độ SVTH: NGUYỄN HỮU VIỆT Trang 46
  55. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC 6.3: Mô-đun thu phát RF 8 phím bấm 6.3.1: Mô-đun thu RF Hình 6.3 Mô đun thu RF Mô-đun này là một bo mạch gồm có 1 IC giải mã SC2272 của hãng SivalChip ElectronicsTech và một số các linh kiện phụ trợ khác. Mô-đun này có 7 chân vào ra và được phân công theo như hình dưới Test D C B A VCC GND Hình 6.4 Thứ tự các chân Mô-đun thu RF GND: Nối 0V VCC: Nối 5V A,B,C,D: 4 chân này để mã hóa tín hiệu tương ứng với 8 phím của remote Test: Chân này thông thường được nối với led để kiểm tra tình trang thu của Mô-đun SVTH: NGUYỄN HỮU VIỆT Trang 47
  56. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC 6.3.2: Mô đun phát RF (Remote 8 phím) Hình 6.5Mô đun phát RF (Remote) Mô-đun này gồm có 8 phím được đánh số thứ tự từ 1 đến 8. Bên trong gồm có 1 IC mã hóa CS5211, an-ten và một số lịnh kiện phụ trợ. Nguồn cung cấp cho mô-đun là pin 12V chuẩn 23A 6.4: LCD 16x2 Hình 6.6 LCD TC1602A LCD này có 2 dòng và 16 cột, có thể hiện thị các giá trị mong muốn. Trong đề tài này LCD được dùng để hiển thị nhiệt độ SVTH: NGUYỄN HỮU VIỆT Trang 48
  57. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC Sơ đồ chân của LCD được mô tả theo bảng dưới: Stt Ký hiệu Chức năng 1 Vss GND 2 Vdd +3V -> +5V 3 Vo Điều chỉnh độ tương phản 4 RS H/L tín hiệu chọn thanh ghi 5 RW H/L Tín hiệu đọc ghi 6 E H->L Tin hiệu kích hoạt 7 DB0 H/L đường dữ liệu 8 DB1 H/L đường dữ liệu 9 DB2 H/L đường dữ liệu 10 DB3 H/L đường dữ liệu 11 DB4 H/L đường dữ liệu 12 DB5 H/L đường dữ liệu 13 DB6 H/L đường dữ liệu 14 DB7 H/L đường dữ liệu 15 A Cấp nguồn cho led màn hình (+4.2v) 16 K GND Bảng 6.1: Chức năng của các chân LCD 6.5: Công cụ hỗ trợ - Công cụ lập trình : Phần mềm CCS có cấu trúc lệnh theo chuẩn của ngôn ngữ C với bộ thư viện chuẩn và đầy đủ có tất cả các tính năng của các dòng PIC của hãng Microchip - Công cụ thiết kế giao diện: Phần mềm VB 6.0 với một số thư viện được update từ Internet - Công cụ thiết kế mạch: Phần mềm Orcad 10.5 với bộ thư viện chuẩn được update từ các diễn đàn điện tử - Công cụ mô phỏng: Phần mềm Protues 6.6: Xây dựng giao diện trên máy tính bằng VB 6.0 - VB 6.0 là công cụ được nhiều người thiết kế chọn dùng vì nó đơn giản dể sử dụng và nguồn tài liệu phong phú từ Internet - Cùng với sự phát triển của công nghệ, Internet là công cụ đắt lực để trợ giúp cho vấn đề tìm kiếm và cập nhật thông tin. Dựa và sự tiện lợi này nhiều thư viện từ bên ngoài đã được cập nhật nhằm rút ngắn thời gian xây dựng giao diện. SVTH: NGUYỄN HỮU VIỆT Trang 49
  58. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC Hình 6.7 Hình ảnh lúc giao diện đang được xây dựng Nhìn vào giao diện (Hình 6.7) ta thấy được: Thanh Menu, 2 Timer, 3 Nút ấn và một số Label. Trong đó: Label6: Hiển thị thời gian thực của hệ thống.Label7: Hiển thị ngày,tháng,năm của hệ thống. Nhãn “1” và nhãn “2” là nơi để hiện thị các giá trị nhiệt độ đo được từ 2 cảm biến Timer bên trái (trong hình 6.7) dùng để cập nhật thời gian và ngày tháng của hệ thống. Timer bên phải tạo vòng lặp nhằm mục đích phát hiện thiết bị khi được cắm vào máy tính Label “Device Status”: Hiển thị trạng thái của thiết bị khi cắm vào và khi tháo ra khỏi máy tính. Hai nút ấn màu đen dùng để điều khiển và giám sát trạng thái các đèn led trên bo mạch. Nút bên dưới dùng để kết thúc chương trình Hình 6.8 Giao diện trên máy tính được hoàn thành SVTH: NGUYỄN HỮU VIỆT Trang 50
  59. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC 6.7: Sơ đồ khối firmware bên trong chip Hình 6.8 Sơ đồ khối quá trình Hình 6.9 Sơ đồ khối của cập nhật giá trị nhiệt độ firmware mạch đo nhiệt độ Giải thích sơ đồ hình 6.8: Bước đầu tiên là khởi động Bus 1 dây bằng cách kéo Bus xuống mức thấp khoảng 65us. Tiếp theo truyền xuống tất cả các cảm biến giá trị 55h để báo cho các cảm biến biết rằng sắp tới sẽ có trình Match-ROM. Quá trình Match-ROM sẽ được thực hiện bằng việc truyền xuống 64bit ROM-code của một cảm biến nào đó. Cảm biến nào có 64bit ROM-code trùng với 64bit vừa nhận được sẽ chờ để thực hiện lệnh tiếp theo. Các cảm biến còn lại tiếp tục nằm chờ xung reset tiếp theo. Sau đó tiếp tục truyền xuống giá trị 44h để cảm biến thực hiện quá trình chuyển đổi nhiệt độ và lưu vào 2 thanh ghi của bộ nhớ tạm. Tiếp tục Match-ROM một lần nữa, sau đó truyền xuống giá trị BEh để cảm biến gửi giá trị lên thiết bị chủ. Sau khi thực hiện truyền xong giá trị BEh, thiết bị chủ phải lập tức quay sang đọc các giá trị mà cảm biến gửi lên. Sau khi SVTH: NGUYỄN HỮU VIỆT Trang 51
  60. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC nhận được giá trị gửi lên từ cảm biến, thiết bị chủ thực hiện quá trình tính toán và lưu vào biến nhớ. Giải thích sơ đồ hình 6.9: Ban đầu thực hiện các quá trình khởi động USB,LCD và thiết lập ngắt ngoài (ngắt ngoài được sử dụng cho các nút bấm). Các quá trình khởi động đã được tạo ra sẵn từ các thư viện của CCS. Tiếp theo kiểm tra trạng thái bắt tay của thiết bị ngoại vi và máy tính. Nếu quá trình chưa sẵn sàng (No) tiếp tục quay lại kiểm tra. Nếu quá trình này hoàn tất thì thực hiện kiểm tra ngắt nhận của USB. Nếu xác định có dữ liệu từ máy chủ gửi đến ta tiếp tục thực hiện việc điều khiển led theo các giá trị nhận được rồi qua bước tiếp theo. Nếu không nhận được giá trị nào ta sẽ thực hiện quá trình cập nhật nhiệt độ và hiển thị lên LCD và máy tính. 6.8: Một số hình ảnh của sản phẩm Hình 6.10: Mạch đo nhiệt độ và ghép nối máy tính qua giao thức USB SVTH: NGUYỄN HỮU VIỆT Trang 52
  61. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC Hình 6.11: Bàn phím máy tính không dây dạng thu nhỏ Stt phím Mode 0 (Reset) Mode 1 Mode 2 1 Lên () a 1 2 Xuống () b 2 3 Trái () c 3 4 Phải ( ) d 4 5 Back-space e 5 6 Space f 6 7 Enter g 7 8 Chuyển tới Mode 1 Chuyển tới Mode 2 Chuyển về Mode 0 Bảng 6.2: Bảng chức năng của các phím bấm được mã hóa theo các chế độ SVTH: NGUYỄN HỮU VIỆT Trang 53
  62. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC TÀI LIỆU THAM KHẢO [1] Văn Thế Minh, Kỹ Thuật Vi Xử Lí, Nhà xuất bản Giáo dục, 1997 [2] Quách Tuấn Ngọc, Ngôn ngữ lập trình C, Nhà xuất bản thống kê, 2003 [3] Hoàng Minh Sơn, Mạng truyền thông công nghiệp, Nhà xuất bản Khoa học và Kỹ thuật, 2001 [4] Ngô Diên Tập, Lập trình ghép nối máy tính trong Windows, Nhà xuất bản Khoa học và Kỹ thuật, 2005 [5] Jan Axelson, USB Complete, Lakeview Reasearch LLC - Madison WI 53704, 2005 Các website tham khảo [1] [2] [3] [4] [5] [6] [7] SVTH: NGUYỄN HỮU VIỆT Trang 54
  63. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC PHỤ LỤC Phụ Lục 0: Chương trình xây dựng giao diện trên VB Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long) Dim led1 As Integer Option Explicit Private Sub Command1_Click() If MsgBox("Are you sure?", vbQuestion + vbYesNo, "Message!") = vbYes Then Unload Me End If End Sub Private Sub Command2_Click() End Sub Private Sub Form_Load() 'frmMain.Show tmrDelay.Enabled = False led1 = 0 End Sub Private Sub Form_Unload(Cancel As Integer) Dim Result As Long If MyDeviceDetected Then OutputReportData(0) = 0 OutputReportData(1) = 0 SVTH: NGUYỄN HỮU VIỆT Trang 55
  64. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC Call WriteReport End If Result = CloseHandle(HIDHandle) Result = CloseHandle(ReadHandle) End Sub Private Sub led_Click() If (led.BackColor = vbBlack) Then led.BackColor = vbYellow If MyDeviceDetected Then OutputReportData(0) = 1 Call WriteReport End If Else led.BackColor = vbBlack If MyDeviceDetected Then OutputReportData(0) = 0 Call WriteReport End If End If End Sub Private Sub led2_Click() If (led2.BackColor = vbBlack) Then SVTH: NGUYỄN HỮU VIỆT Trang 56
  65. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC led2.BackColor = vbYellow If MyDeviceDetected Then OutputReportData(1) = 1 Call WriteReport End If Else led2.BackColor = vbBlack If MyDeviceDetected Then OutputReportData(1) = 0 Call WriteReport End If End If End Sub Private Sub mnuabout_Click() author.Show End Sub Private Sub mnuexit_Click() Call Command1_Click End Sub Private Sub timerCheckConnection_Timer() Label6.Caption = Time Label7.Caption = Date SVTH: NGUYỄN HỮU VIỆT Trang 57
  66. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC If FindTheHid Then lblConnect.Caption = "Connected" lblConnect.ForeColor = vbBlue tmrDelay.Enabled = True led.Enabled = True led2.Enabled = True Else lblConnect.Caption = "Disconnected" lblConnect.ForeColor = vbRed tmrDelay.Enabled = False Label2.Caption = "" Label3.Caption = "" led.Enabled = False led2.Enabled = False End If End Sub Private Sub tmrDelay_Timer() If Not MyDeviceDetected Then MyDeviceDetected = FindTheHid End If If MyDeviceDetected Then Call ReadReport SVTH: NGUYỄN HỮU VIỆT Trang 58
  67. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC Label2 = Str$(ReadBuffer(1)) & "," & Str$(ReadBuffer(2)) Label3 = Str$(ReadBuffer(3)) & "," & Str$(ReadBuffer(4)) If (ReadBuffer(5)) = "1" Then led.BackColor = vbBlack End If If (ReadBuffer(5)) = "2" Then led.BackColor = vbYellow End If If (ReadBuffer(6)) = "1" Then led2.BackColor = vbBlack End If If (ReadBuffer(6)) = "2" Then led2.BackColor = vbYellow End If End If End Sub SVTH: NGUYỄN HỮU VIỆT Trang 59
  68. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC Phụ Lục 1: Chương trình REMOTE 8 phím // // //Chuong trinh REMOTE 8 phim va USB interface #include #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VR EGEN #use delay(clock=20M) //Tells the CCS PIC USB firmware to include HID handling code. #DEFINE USB_HID_DEVICE TRUE //the following defines needed for the CCS USB PIC driver to enable the TX endpoint 1 #define USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT //turn on EP1 for IN bulk/interrupt transfers #define USB_EP1_TX_SIZE 8 #define USB_EP2_TX_ENABLE USB_ENABLE_INTERRUPT //turn on EP2 for IN bulk/interrupt transfers #define USB_EP2_TX_SIZE 8 #define USB_EP2_RX_ENABLE USB_ENABLE_INTERRUPT //turn on EP2 for IN bulk/interrupt transfers #define USB_EP2_RX_SIZE 4 #include #include //USB Configuration and Device descriptors for this UBS device #include //handles usb setup tokens and get descriptor reports #define SIG_A PIN_B3 #define SIG_B PIN_B2 SVTH: NGUYỄN HỮU VIỆT Trang 60
  69. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC #define SIG_C PIN_B1 #define SIG_D PIN_B0 #define LED PIN_C7 int8 i=0; void usb_debug_task(void) { static int8 last_enumerated; int8 new_enumerated; new_enumerated=usb_enumerated(); if (new_enumerated) output_high(LED); else output_low(LED); last_enumerated=new_enumerated; } void usb_keyboard_task(void) { static int8 tx_msg[7]={0,0,0,0,0,0,0}; int8 str[3][7] = {{82,81,80,79,42,44,40},{4,5,6,7,8,9,10},{30,31,32,33,34,35,36}}; if(input(SIG_A)||input(SIG_B)||input(SIG_C)||input(SIG_D)) { if ((input(SIG_A))&&(!input(SIG_B))&&(!input(SIG_C))) //phim 1 tx_msg[2]=str[i][0]; if ((!input(SIG_A))&&(input(SIG_B))&&(!input(SIG_C))) //phim 2 tx_msg[2]=str[i][1]; SVTH: NGUYỄN HỮU VIỆT Trang 61
  70. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC if ((input(SIG_A))&&(input(SIG_B))&&(!input(SIG_C))) //phim 3 tx_msg[2]=str[i][2]; if ((!input(SIG_A))&&(!input(SIG_B))&&(input(SIG_C))) //phim 4 tx_msg[2]=str[i][3]; if ((input(SIG_A))&&(!input(SIG_B))&&(input(SIG_C))) //phim 5 tx_msg[2]=str[i][4]; if ((!input(SIG_A))&&(input(SIG_B))&&(input(SIG_C))) //phim 6 tx_msg[2]=str[i][5]; if ((input(SIG_A))&&(input(SIG_B))&&(input(SIG_C))) //phim 7 tx_msg[2]=str[i][6]; if (input(SIG_D)) { while(input(SIG_D)){} i++; if(i>2) i=0; } //tx_msg[2]=str[i][3]; //tab } else tx_msg[2]=0; usb_put_packet(2,tx_msg,sizeof(tx_msg),USB_DTS_TOGGLE); } void main(void) { SVTH: NGUYỄN HỮU VIỆT Trang 62
  71. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC output_low(LED); i=0; usb_init_cs(); while (TRUE) { usb_task(); usb_debug_task(); if (usb_enumerated()) { usb_keyboard_task(); delay_ms(10); } } } SVTH: NGUYỄN HỮU VIỆT Trang 63
  72. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC Phụ Lục 2: Chương trình đo nhiệt độ và ghép nối máy tính qua cổng USB // // //Chuong trinh do nhiet do su dung ds18B20 va USB interface #include #device *=16 //su dung het ram trong Pic #use delay(clock=20M) #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT #FUSES NOLVP,NOCPD, NOWRT ,USBDIV,PLL5,CPUDIV1,VREGEN #DEFINE USB_HID_DEVICE TRUE //Tells the CCS PIC USB firmware to include HID handling code. #DEFINE USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT //turn on EP1 for IN bulk/interrupt transfers #DEFINE USB_EP1_TX_SIZE 64 //allocate 64 bytes in the hardware for transmission #DEFINE USB_EP1_RX_ENABLE USB_ENABLE_INTERRUPT //turn on EP1 for OUT bulk/interrupt transfers #DEFINE USB_EP1_RX_SIZE 64 //allocate 64 bytes in the hardware for reception // CCS USB Libraries #include //Microchip 18Fxx5x hardware layer for usb.c #include //USB Configuration and Device descriptors for this UBS device #include //handles usb setup tokens and get descriptor reports #include "LCD_v.h" #include "1wire_v.h" #define LED1 PIN_D4 SVTH: NGUYỄN HỮU VIỆT Trang 64
  73. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC #define LED2 PIN_D5 #define SW2 PIN_B1 #define SW1 PIN_B2 int1 l1,l2; float t[2],t1[2]; int i,j,v,k; int8 buffer[2][2],hien_thi[2]; unsigned int8 s[2][8] = {{40,27,34,78,02,00,00,124},{40,237,15,158,02,00,00,169}}; int8 send_data[8]; int8 receive_data[8]={0,0,0,0,0,0,0,0}; void match_rom() { for(i=0;i<2;i++) { if(init_1wire()) { write_1wire(0x55); //match ROM for(j=0;j<8;j++) { v=s[i][j]; write_1wire(v); } } write_1wire(0x44); //convert T SVTH: NGUYỄN HỮU VIỆT Trang 65
  74. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC if(init_1wire()) { write_1wire(0x55); //match ROM for(j=0;j 10)//neu nhiet do la am dao lai buffer[i][1],buffer[i][0] { buffer[i][1]=~buffer[i][1]; buffer[i][0]=~buffer[i][0]; buffer[i][0]=buffer[i][0]+1;//hieu chinh lai de hien thi cho dung hien_thi[i]=0; // hien_thi[i]=0 thi hien thi gia tri nhiet am } else { hien_thi[i]=1;//hien_thi[i]=1 thi hien thi gia tri nhiet duong } SVTH: NGUYỄN HỮU VIỆT Trang 66
  75. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC t[i]=make16(buffer[i][1],buffer[i][0]); //calculate temperature t[i]=(float)t[i]/16.0; } //hien thi if ((t[0]!=t1[0])||(t[1]!=t1[1])) //update LCD va PC khi nhiet do thay doi { printf(lcd_putc,"\f " );//xoa man hinh lcd lcd_gotoxy(3,1);//cot 2,dong 1 printf(lcd_putc,"SS1"); lcd_gotoxy(3,2);//cot 2,dong 2 printf(lcd_putc,"SS2"); for(i=0;i<2;i++) { k=i+1; switch (hien_thi[i]) { case 1: lcd_gotoxy(6,k);//cot 2,dong k printf(lcd_putc," = %3.1f*C",t[i]); //duong t1[i]=t[i]; break; case 0: lcd_gotoxy(6,k);//cot 2,dong k printf(lcd_putc," = -%3.1f*C",t[i]); //am SVTH: NGUYỄN HỮU VIỆT Trang 67
  76. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC t1[i]=t[i]; break; } } } } void separate_temp() { send_data[0]=(t[0]*10)/10; send_data[1]=(t[0]*10)-(send_data[0]*10); send_data[2]=(t[1]*10)/10; send_data[3]=(t[1]*10)-(send_data[2]*10); } void main() { lcd_init (); //LCD start lcd_init_custom_chars(); usb_init(); enable_interrupts(global); enable_interrupts(INT_EXT1); ext_int_edge( 1, H_TO_L); // Set up PIC18 EXT1 clear_interrupt(INT_EXT1); enable_interrupts(INT_EXT2); ext_int_edge( 2, H_TO_L); // Set up PIC18 EXT2 SVTH: NGUYỄN HỮU VIỆT Trang 68
  77. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC clear_interrupt(INT_EXT2); output_low(LED1); output_low(LED2); send_data[4] = 1; send_data[5] = 1; l1=0; l2=0; printf(lcd_putc,"\f " );//xoa man hinh lcd t1[0]=0; t1[1]=0; while(1) { usb_task(); if (usb_enumerated()) { if (usb_kbhit(1)) { usb_get_packet(1, receive_data, 8); if(receive_data[0]==1) {output_high(LED1); send_data[4] = 0;} else {output_low(LED1); send_data[4] = 0;} SVTH: NGUYỄN HỮU VIỆT Trang 69
  78. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC if(receive_data[1]==1) {output_high(LED2); send_data[5] = 0;} else {output_low(LED2); send_data[5] = 0;} } match_rom(); separate_temp(); usb_put_packet(1, send_data, 8, USB_DTS_TOGGLE); delay_ms(50); } } } #INT_EXT1 void interrupt1() { while(!input(SW2)) {} //kt dinh nut if(l2) { output_low(LED2); send_data[5] = 1; l2=0; } SVTH: NGUYỄN HỮU VIỆT Trang 70
  79. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC else { output_high(LED2); send_data[5] = 2; l2=1; } clear_interrupt(INT_EXT1); } #INT_EXT2 void interrupt2() { while(!input(SW1)) {} //kt dinh nut if(l1) { output_low(LED1); send_data[4] = 1; l1=0; } else { output_high(LED1); send_data[4] = 2; l1=1; } SVTH: NGUYỄN HỮU VIỆT Trang 71
  80. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC clear_interrupt(INT_EXT2); } Phụ Lục 3: Thư viện chuẩn 1-dây // // //Thu vien chuan 1 day #define DQ PIN_D6 init_1wire() { int a; output_low(DQ); delay_us(480); output_float(DQ); delay_us(65); a=!input(DQ); delay_us(240); if(a) return(1); else return(0); } SVTH: NGUYỄN HỮU VIỆT Trang 72
  81. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC // read byte byte read_1wire() { byte a,data; for(a=0;a<8;a++) { output_low(DQ); delay_us(14); output_float(DQ); delay_us(5); shift_right(&data,1,input(DQ)); delay_us(100); } return(data); } // write byte byte write_1wire(byte data) { byte a; for(a=0;a<8;a++) { output_low(DQ); delay_us(10); if(shift_right(&data,1,0)) SVTH: NGUYỄN HỮU VIỆT Trang 73
  82. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC output_high(DQ); else output_low(DQ); delay_us(50); output_high(DQ); delay_us(50); } return(1); } SVTH: NGUYỄN HỮU VIỆT Trang 74
  83. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC Phụ Lục 4: Danh sách các chip có hỗ trợ giao thức USB SVTH: NGUYỄN HỮU VIỆT Trang 75
  84. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC Mục Lục CHƯƠNG I: TỔNG QUAN ĐỀ TÀI 1 1.1:Tầm quan trọng của truyền thông và ghép nối máy tính với ngànhTự động hóa 1 1.2:Thực trạng hiện nay 1 1.3: Nội dung đề tài 2 CHƯƠNG II: TỔNG QUAN VỀ GIAO THỨC USB VÀ LỚP HID 3 2.1: Giới thiệu sơ bộ về giao thức USB 4 2.2:Quá trình phát triển giao thức USB 5 2.3: Phân tích ưu điểm và nhược điểm của giao thức USB 5 2.3.1: Ưu điểm: 5 2.3.2: Nhược điểm 8 2.4: Giới thiệu các lớp của giao thức USB 9 2.4.1: Lớp thiết bị âm thanh (Audio) 9 2.4.2: Lớp thiết bị thẻ thông minh (Chip/Smart Card Interface) 9 2.4.3: Các thiết bị truyền thông (Modems and Networks) 10 2.4.4: Lớp thiết bị bảo mật thông tin 10 2.4.5 Lớp các thiết bị nâng cấp firmware 10 2.4.6:Lớp các thiết bị tương tác với con người (Human Interface) 10 2.4.7:Cầu chuyển đổi hồng ngoại (IrDA) 10 2.4.8: Lớp các thiết bị lưu trữ thứ cấp (Mass Storage) 11 2.4.9:Lớp các thiết bị in ấn (Printers) 11 2.4.10:Lớp các thiết bị lưu giữ hình ảnh tĩnh (Still Image Capture) 11 2.4.11: Các thiết bị đo đạc và kiểm tra 11 2.4.12: Lớp thiết bị ảnh động (Video) 12 2.4.13: Thực hiện các chức năng không tiêu chuẩn 12 2.5:Lớp thiết bị giao diện người sử dụng (HID-Human Interface Device) 12 2.5.1: Khái niệm về HID 12 2.5.2: Các yêu cầu về phần cứng 14 SVTH: NGUYỄN HỮU VIỆT Trang 76
  85. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC 2.5.3: Các yêu cầu về vi chương trình (Firmware) 15 2.5.4: Cách thức để chỉ ra một thiết bị thuộc lớp HID 15 2.5.5: Bộ mô tả báo cáo (Report Descriptor) 16 2.5.6: Các yêu cầu mà host có thể gửi tới một thiết bị thuộc lớp HID 16 2.6: Sự hỗ trợ của Hệ điều hành với lớp HID 20 2.7: Chọn chip 21 CHƯƠNG III: TỔNG QUAN VỀ MẠNG TRUYỀN THÔNG 1 DÂY 22 3.1:Định nghĩa mạng truyền thông 1 dây 22 3.2: Tổng quan về Bus 1 dây 22 3.3: Các yêu cầu 23 3.4:Hoạt động của bus 1 dây 23 3.4: Mạng một dây và Vi điều khiển PIC 24 CHƯƠNG IV: TỔNG QUAN VỀ PIC 18F2550/4550 26 4.1: Giới thiệu PIC 18F2550/4550 26 4.2: Khái quát chức năng USB trong PIC 27 4.2.1:Trạng thái và điều khiển USB 27 4.2.2: Thanh ghi điểu khiển (UCON) 27 4.2.3: Thanh ghi cấu hình USB (UCFG) 29 4.2.4: Thanh ghi trạng thái USB 30 4.2.5: Thanh ghi điều khiền USB ENDPOINT( UEPn) 31 4.2.6: Thanh ghi trạng thái ngắt của giao thức USB 32 4.2.7: Thanh ghi kích hoạt trạng thái ngắt của giao thức USB 33 CHƯƠNG V: GIỚI THIỆU CẢM BIẾN NHIỆT ĐỘ DS18B20 35 5.1: Khái quát chung 35 5.2: Cấu trúc phần cứng 36 5.3:Hoạt động đo nhiệt độ 39 5.4: Hoạt động báo hiệu 39 5.5: Thanh ghi cấu hình và độ phân giải 40 5.6: 8 Bit CRC 40 SVTH: NGUYỄN HỮU VIỆT Trang 77
  86. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC 5.7: Tập lệnh 40 5.7.1: Lệnh ROM 41 5.7.2: Lệnh chức năng bộ nhớ 42 5.8: Chuẩn 1 dây với cảm biến DS18B20 43 5.8.1: Thời gian khởi động bus 43 5.8.2: Thiết lập các Slots ở chế độ ghi cho Master 44 CHƯƠNG VI: THIẾT KẾ VÀ LẮP RÁP MỘT SỐ CÁC ỨNG DỤNG 45 6.2: Sơ đồ nguyên lý 46 6.3: Mô-đun thu phát RF 8 phím bấm 47 6.3.1: Mô-đun thu RF 47 6.3.2: Mô đun phát RF (Remote 8 phím) 48 6.4: LCD 16x2 48 6.5: Công cụ hỗ trợ 49 6.6: Xây dựng giao diện trên máy tính bằng VB 6.0 49 6.7: Sơ đồ khối firmware bên trong chip 51 6.8: Một số hình ảnh của sản phẩm 52 TÀI LIỆU THAM KHẢO 54 PHỤ LỤC 55 Phụ Lục 0: Chương trình xây dựng giao diện trên VB 55 Phụ Lục 1: Chương trình REMOTE 8 phím 60 Phụ Lục 2: Chương trình đo nhiệt độ và ghép nối máy tính qua cổng USB 64 Phụ Lục 3: Thư viện chuẩn 1-dây 72 Phụ Lục 4: Danh sách các chip có hỗ trợ giao thức USB 75 SVTH: NGUYỄN HỮU VIỆT Trang 78
  87. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC Mục lục hình vẽ Hình 1.1 Mô đun chuyển đổi USB qua COM 1 Hình 1.2 Chip chuyển đổi USB-COM (PL2303) 2 Hình 1.3Mô đun thu của bàn phím không dây 2 Hình 1.4Mô đun phát của bàn phím không dây 2 Hình 1.5Sơ đồ cấu tạo mạch đo nhiệt độ 2 Hình 2.1 Đầu cắm USB (type A) 4 Hình 2.2: Khuôn dạng dữ liệu của giai đoạn setup trong kiểu truyền Control 17 Hình 2.1: Sơ đồ mạng 1 dây 22 Hình 3.2: Cấu trúc Timing trên Bus 23 Hình 4.1: Sơ đồ chân của PIC 18F2550/4550 26 Hình 4.2: Cấu trúc của chức năng USB bên trong chip 27 Hình 5.1: Dạng đóng vỏ và bề ngoài của cảm biến DS1820 35 Hình 5.2 Sơ đồ các khối cấu tạo nên cảm biến DS18B20 36 Hình 5.3 Các phương thức cấp nguồn cho cảm biến 37 Hình 5.4:Nội dung dãy mã 64-Bit trên bộ nhớ ROM 37 Hình 5.5 Sơ đồ bộ nhớ của cảm biến 38 Hình 5.6 Cách thức mã hóa giá trị 39 Hình 5.7 Định dạng của 2 byte lưu giá trị nhiệt độ 39 Hình 5.8 Cấu trúc thanh ghi báo hiệu 39 Hình 5.9 Độ phân giải của cảm biến 40 Hình 5.10 Timing khởi động bus 43 Hình 5.11 Timing đọc của Master 44 Hình 6.1 Sơ đồ nguyên lý mạch REMOTE 46 Hình 6.2Sơ đồ nguyên lý mạch đo nhiệt độ 46 Hình 6.3 Mô đun thu RF 47 Hình 6.4 Thứ tự các chân Mô-đun thu RF 47 Hình 6.5Mô đun phát RF (Remote) 48 Hình 6.6 LCD TC1602A 48 SVTH: NGUYỄN HỮU VIỆT Trang 79
  88. ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC Hình 6.7 Hình ảnh lúc giao diện đang được xây dựng 50 Hình 6.8 Giao diện trên máy tính được hoàn thành 50 Hình 6.9 Sơ đồ khối của firmware mạch đo nhiệt độ 51 Hình 6.8 Sơ đồ khối quá trình cập nhật giá trị nhiệt độ 51 Hình 6.10: Mạch đo nhiệt độ và ghép nối máy tính qua giao thức USB 52 Hình 6.11: Bàn phím máy tính không dây dạng thu nhỏ 53 Mục lục bảng biểu Bảng 2.1:Bảng so sánh các giao thức 6 Bảng 2.2: Bảng liệt kê các lớp của giao thức USB 9 Bảng 4.1: Bảng tóm tắt chức năng của PIC 182550/4550 26 Bảng 6.1: Chức năng của các chân LCD 49 Bảng 6.2: Bảng chức năng của các phím bấm được mã hóa theo các chế độ 53 SVTH: NGUYỄN HỮU VIỆT Trang 80