Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (7.89 MB, 100 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
<b>THÀNH PHỐ HỒ CHÍ MINH</b>
<b> </b>
<b> <sup> </sup> <sup> </sup> </b>
<b> </b>
<b> </b>
<b> KHĨA LUẬN TỐT NGHIỆP</b>
<b>NGÀNH CƠNG NGHỆ KỸ THUẬT ĐIỆN, ĐIỆN TỬ; ĐIỆN CÔNG NGHIỆP</b>
<b>GVHD:ThS. VÕ ĐỨC DŨNG SVTH: PHAN VĨNH TRIỀU ANH HỒ TÔN ĐẠT </b>
<b> </b>
<b>KHOA ĐIỆN – ĐIỆN TỬ </b>
<b>NGÀNH : CNKT ĐIỆN TỬ-VIỄN THÔNG (CLC) GVHD : ThS. VÕ ĐỨC DŨNG </b>
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">Độc lập – Tự do – Hạnh phúc ----***----
Tp. Hồ Chí Minh, ngày 05 tháng 01 năm 2024
<b>NHIỆM VỤ KHÓA LUẬN TỐT NGHIỆP </b>
Họ tên sinh viên: Phan Vĩnh Triều Anh MSSV: 17142004 Hồ Tôn Đạt MSSV: 17142008 Ngành: Công nghệ kỹ thuật Điện tử - Viễn Thông (CLC)
Giáo viên hướng dẫn: ThS. Võ Đức Dũng
Ngày nhận đề tài: 11//09/2023 Ngày nộp đề tài: 30/12/2023
1. Tên đề tài: Thiết kế và thi công hệ thống quản lý mơ hình AIRBNB, HOMESTAY. 2. Các số liệu, tài liệu ban đầu:
− Kiến thức về các môn học: Cơ sở và ứng dụng IoTs, Vi xử lý, Arduino, Cảm biến điện tử và ứng dụng, Công nghệ không dây, Công nghệ RFID, …
− Các tài liệu về lập trình: Arduino, HTML, JavaScript. 3. Nội dụng thực hiện đề tài:
− Kết nối Arduino với các module (RFID, báo cháy, LCD, Servo…). − Kết nối ESP32 với Internet để cập nhật, quản lý dữ liệu.
− Kết nối giao tiếp UART giữa Arduino với ESP32
− Nghiên cứu xây dựng Webserver giám sát, quản lý hệ thống − Thiết kế mơ hình hệ thống.
− Ngun cứu lập trình để cập nhật dữ liệu liên tục lên Webserver. − Thi công phần cứng, chạy thử nghiệm và hiệu chỉnh hệ thống. − Viết và hoàn chỉnh báo cáo thực hiện.
− Bảo vệ luận văn.
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">sát thông qua web, điều khiển mở khóa bằng RFID (khách, chủ), thời gian đặt/trả phịng, quản lý thời gian vào/ra, tính tiền, kết nối wifi cho hệ thống và đưa dữ liệu lên Webserver, cảnh báo cháy, dùng bàn phím để nhập mật khẩu khẩn cấp.
TRƯỞNG NGÀNH GIÁO VIÊN HƯỚNG DẪN
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5"><b><small> Bộ Môn Điện Tử Công Nghiệp *** </small></b>
<b><small>Tp. Hồ Chí Minh, ngày 11 tháng 09 năm 2023 </small></b>
Họ tên sinh viên: Phan Vĩnh Triều Anh MSSV: 17142004 Lớp: 17141CLDT1B
Họ tên sinh viên: Hồ Tôn Đạt MSSV: 17142008 Lớp: 17141CLDT2B
Tên đề tài: Thiết kế và thi cơng hệ thống quản lý mơ hình AIRBNB, HOMESTAY
<b>GVHD </b>
Tuần 1 (11/09 - 16/09)
− Gặp GVHD tiến hành xét duyệt đề tài. − Viết đề cương chi tiết.
Tuần 2 (17/09 - 23/09)
− Gặp GVHD ký đề cương chi tiết. − Tìm hiểu Arduino, ESP32. Tuần 3
(24/09 - 01/10)
− Tìm hiểu linh kiện và datasheet
− Cài đặt, tìm hiểu lập trình trên Arduino IDE Tuần 4
(02/10 – 08/10)
− - Tìm hiểu giao tiếp UART giữa Arduino và ESP32
Tuần 5 (09/10 – 15/10)
− - Tiến hành giao tiếp UART giữa Arduino và ESP32
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">GV HƯỚNG DẪN (Ký và ghi rõ họ và tên) − Vẽ sơ đồ khối
Tuần 7 (23/10 – 29/10)
− Tiến hành lập trình Arduino với các module (RFID, báo cháy, bàn phím, …)
Tuần 8 (30/10 – 05/11)
− Tìm hiểu cơ chế bảo mật trên RFID − Tìm hiểuWebserver trên ESP32 Tuần 9,10,11
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">tài liệu hay công trình đã có trước đó. Nếu có bất kỳ sự gian lận nào chúng tôi xin chịu trách nhiệm về nội dung đồ án của mình.
Người thực hiện
Phan Vĩnh Triều Anh Hồ Tơn Đạt
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">Dũng đã tận tình hướng dẫn, giúp đỡ và tạo điều kiện thuận lợi cho nhóm em trong suốt q trình thực hiện báo cáo. Nhóm xin gửi đến thầy lời cảm ơn chân thành và sâu sắc nhất.
Đồng thời, nhóm em cũng xin cảm ơn đến các bạn bè đã hỗ trợ, đóng góp ý kiến cũng như chia sẻ kinh nghiệm để nhóm em hồn thành tốt đề tài.
Mặc dù đã cố gắng hết sức, nhưng do lượng kiến thức cịn eo hẹp nên khơng tránh khỏi những thiếu sót. Do vậy, nhóm em rất mong nhận được sự góp ý q báu của Thầy để có thể hồn thiện và tốt hơn nữa cũng như tích lũy kinh nghiệm để hồn thành thực tập mơn học và báo cáo đồ án tốt nghiệp sau này.
Sau cùng, nhóm em kính chúc q thầy thật dồi dào sức khỏe, ln tràn đầy nhiệt huyết cùng với thành công trong sự nghiệp cao quý.
Nhóm em xin chân thành cảm ơn! Sinh viên thực hiện
Phan Vĩnh Triều Anh Hồ Tôn Đạt
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">TRANG BÌA ... i
NHIỆM VỤ KHĨA LUẬN TỐT NGHIỆP ... ii
LỊCH TRÌNH THỰC HIỆN KHĨA LUẬN ... iv
LỜI CAM ĐOAN ... vi
LỜI CẢM ƠN ... vii
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">2.3.3 ESP32 [14][15]... 16
2.3.4 Servo MG90s [16][17] ... 18
2.3.5 Cảm Biến Phát Hiện Lửa (Flame Sensor) [18] ... 19
2.3.6 Màn hình LCD TFT [19][20] ... 21
2.4 CÁC CHUẨN GIAO TIẾP ... 23
2.4.1 Chuẩn giao tiếp UART ... 23
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">5.1.2 Khối ESP32 RFID và Khối Arduino RFID ... 65
5.1.3 Khối báo cháy ... 73
5.1.4 Khối giám sát thiết bị ... 74
5.1.5 Giao điện đặt phòng và Admin ... 75
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">Hình 3. 8 Sơ đồ nối dây ESP32 với các thiết bị ... 35
Hình 3. 9 Sơ đồ ngun lý tồn mạch ... 37
Hình 4. 1 Mạch PCB board mạch chính hệ thống ... 40
Hình 4. 2 Mơ hình mạch in ... 41
Hình 4. 3 Khi chưa cấp nguồn cho hệ thống ... 42
Hình 4. 4 Arduino TFT LCD, ESP32 RFID và cảm biến ... 42
Hình 4. 5 Lưu đồ Arduino ... 44
Hình 4. 6 Lưu đồ qt thẻ phịng ... 46
Hình 4. 7 Lưu đồ Arduino TFT LCD ... 48
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">Hình 4. 10 Lưu đồ trạng thái số "0" ... 51
Hình 4. 11 Lưu đồ trạng thái số "1" ... 53
Hình 4. 12 Lưu đồ trạng thái số "2" ... 54
Hình 4. 13 Lưu đồ ESP32 với Websever ... 56
Hình 4. 14 Lưu đồ giao điện giám sát thiết bị ... 57
Hình 4. 15 Lưu đồ giao điện tính tiền ... 59
Hình 4. 16 Giao điện TFT LCD ... 60
Hình 4. 17 Giao diện đặt phịng ... 61
Hình 4. 18 Giao điện giám sát thiết bị ... 62
Hình 4. 19 Hình cửa 3 phịng sau khi nhập mật khẩu ... 72
Hình 5. 1 Arduino TFT LCD khi chưa cấp nguồn ... 63
Hình 5. 2 Arduino TFT LCD khi cấp nguồn ... 63
Hình 5. 3 Màn hình khi TFT LCD nhập số ... 64
Hình 5. 4 Màn hình TFT LCD sau khi nhấn nút # ... 64
Hình 5. 5 RC522 nối với ESP32 khi chưa cấp nguồn ... 65
Hình 5. 6 RC522 nối với ESP32 khi cấp nguồn ... 65
</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">Hình 5. 19 Khi xóa xong thẻ phịng 3 ... 71
Hình 5. 20 Khi xóa xong thẻ mới ... 72
Hình 5. 21 Cảm biến phát hiện lửa ... 73
Hình 5. 22 Thơng báo trên giao diện giám sát ... 73
Hình 5. 23 Cơng tắt đèn và quạt của 3 phịng ... 74
Hình 5. 24 Khi chưa có thiết bị hoạt động ... 74
Hình 5. 25 Khi quạt, đèn của 1 phịng hoạt động ... 75
Hình 5. 26 Giao diện đặt phịng ... 75
Hình 5. 27 Phịng và giá tiền từng phịng... 76
Hình 5. 28 Điền thơng tin cá nhân ... 76
Hình 5. 29 Thơng tin khách hàng và phòng ... 77
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">Bảng 2. 2 Bảng các thông số chân Arduino Uno R3 ... 8
Bảng 2. 3 Bảng các thông số kỹ thuật RFID-RC522 ... 11
Bảng 2. 4 Bảng các thông số chân RFID-RC522 ... 11
Bảng 2. 5 Bảng các thông số kỹ thuật ESP32 ... 17
Bảng 2. 6 Bảng các thông số chân Servo MG90s ... 18
Bảng 2. 7 Bảng các thông số kỹ thuật Servo MG90s ... 19
Bảng 2. 8 Thông số kỹ thuật Cảm Biến Phát Hiện Lửa (Flame Sensor) ... 20
Bảng 2. 9 Bảng các thông số chân Cảm Biến Phát Hiện Lửa (Flame Sensor) ... 20
Bảng 2. 10 Thông số kỹ thuật màn hình LCD TFT ... 21
Bảng 2. 11 Bảng các thơng số chân màn hình LCD TFT ... 22
Bảng 4 1 Thông tin các thiết bị, linh kiện chuẩn bị cho Board mạch ... 39
Bảng 5. 1 Bảng dự toán đề tài ... 79
</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">Hiện nay, cuộc sống của mỗi người ngày càng hiện đại dẫn theo mức sống ngày càng tăng cao ở những trung tâm đô thị lớn khiến cho nhu cầu du lịch đến những nơi có khơng khí mát mẻ trong lành để nghỉ dưỡng ngày một tăng cao. Nhu cầu của khách du lịch ngày một đa dạng để phù hợp, ngành du lịch không ngừng thay đổi cập nhật xu thế tạo ra các mơ hình độc lạ, ấm cúng, chi phí thấp nhằm tạo ra khơng gian sống gần gũi với khách hàng, tăng sức cạnh tranh. Trong đó lĩnh vực Homestay kết hợp với AirBNB là một loại hình phát triển gần đây cịn khá mới mẻ và đang có xu thế phát triển được nhiều các bạn trẻ, gia đình, tour du lịch lựa chọn hiện nay.
Homestay nghĩa là “ở tại nhà người dân”. Khi khái niệm homestay mới ra đời, cách thức hoạt động của nó rất đơn giản. Người dân bản xứ tại các địa điểm du lịch cho du khách thuê lại căn phòng còn trống, khơng có người sử dụng trong nhà mình[1][2].
Airbnb là viết tắt của cụm từ AirBed and Breakfast, là một startup với mơ hình kết nối người cần th nhà, th phịng nghỉ với những người có phịng cho th trên khắp thế giới thông qua ứng dụng di động tương tự như ứng dụng chia sẻ xe Uber. Tất cả việc thanh tốn sẽ được thực hiện thơng qua Airbnb, sử dụng thẻ tín dụng và nhà trung gian này sẽ thu một khoản phí đối với cả người cần đặt phòng và chủ nhà[3].
Airbnb Homestay Đối tượng Cung cấp một phạm vi rộng hơn
các loại chỗ ở, bao gồm cả căn hộ, nhà riêng và phòng trọ.
Cung cấp phòng trọ trong nhà riêng của người dân.
Trải nghiệm Như ở khách sạn. Gần gũi với người dân và cộng đồng.
Giá Cao vì trong đó có cả chi phí dịch vụ và tính bảo mật cao
Thấp hơn vì không cần thông qua bên trung gian.
</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">Đặt phòng Đặt trước phỏng nhanh chóng, dễ dàng.
Đặt trực tiếp nếu có trung gian thì sẽ nhanh và dễ dàng hơn.
Dịch vụ Hỗ trợ 24/7 Tùy chổ Sự an toàn Cung cấp mọi thơng tin chổ ở cho
khách hàng, cung cấp tính bảo mật cho khách hàng lẫn chủ nhà.
Homestay cần kiểm tra thông tin cá nhân tại quầy, tính bảo mật và an toàn tương đối. Trung gian Tạo Web giao tiếp giữa chủ và
Sau khi tham khảo các đề tài cùng với kết hợp kiến thức được học ở trường, về tìm hiểu kiến thức cơ bản của C/C++ của thầy Nguyễn Đình Phú, Trương Ngọc
<i>Anh, “Giáo trình: Vi xử lý”, Trường ĐHSPKT, Tp.HCM, Nhà xuất bản ĐH Quốc </i>
Gia, 2013[8] và kiến thức về kỹ thuật số của thầy Nguyễn Trường Duy, Võ Đức
<i>Dũng, Nguyễn Thanh Hải, “Giáo trình: Kỹ thuật số”, Trường ĐHSPKT, Tp.HCM, </i>
Nhà xuất bản ĐH Quốc Gia, Tp.HCM, 2018,[9] tìm hiểu về truyền dữ liệu giữa các linh kiện với nhau và kiến thức giao tiếp RFID cửa thầy Nguyễn Văn Hiệp, Phạm
</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">Quang Huy, “Công Nghệ Nhận Dạng Bằng Sóng Vơ Tuyến RFID”, Nhà xuất bản khoa học và kỹ thuật[10], để tìm hiểu quá trình ghi và đọc thẻ Mifare.
Từ những thông tin mà nhóm tham khảo từ các nguồn. Nhóm em sẽ thực hiện hệ thống thông qua những kiến thức học tập tại trường cũng như tham khảo, tìm hiểu
<b>và nghiên cứu. Do đó, nhóm em sẽ thực hiện hệ thống: “Thiết kế và thi công hệ </b>
<b>thống quản lý mơ hình AIRBNB, HOMESTAY”, mơ hình này tạo sự an toàn và </b>
tin cậy đến cho nhà đầu tư lẫn khách du lịch mang đến sự công bằng minh bạch cho hai bên.
<b>1.2 MỤC TIÊU </b>
Thiết kế và thi cơng mơ hình hệ thống điều khiển thiết bị thông qua wifi: giám sát thông qua web, điều khiển mở khóa bằng RFID (khách, chủ), thời gian đặt/trả phịng, quản lý thời gian vào/ra, tính tiền, kết nối wifi cho hệ thống và đưa dữ liệu lên Webserver, cảnh báo cháy, dùng bàn phím để nhập mật khẩu khẩn cấp.
<b>1.3 NỘI DUNG NGHIÊN CỨU </b>
Trong quá trình thực hiện Đồ án tốt nghiệp với đề tài Thiết kế và thi cơng hệ thống quẩn lý mơ hình AIRBNB, HOMESTAY, nhóm chúng em đã tập trung giải quyết và hoàn thành được những nội dung sau:
<b>- Nội dung 1: Kết nối Arduino với các module (RFID, báo cháy, GLCD, </b>
Servo…)
<b>- Nội dung 3: Kết nối giao tiếp UART giữa Arduino với ESP32 </b>
<b>- Nội dung 4: Nghiên cứu xây dựng Webserver giám sát, quản lý hệ thống - Nội dung 5: Thiết kế mơ hình hệ thống. </b>
<b>- Nội dung 6: Ngun cứu lập trình để cập nhật dữ liệu liên tục lên Webserver. - Nội dung 7: Thi công phần cứng, chạy thử nghiệm và hiệu chỉnh hệ thống. - Nội dung 8: Viết và hoàn chỉnh báo cáo thực hiện. </b>
<b>- Nội dung 9: Bảo vệ luận văn. </b>
</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20"><b>1.4 GIỚI HẠN </b>
Các thông số giới hạn của đề tài bao gồm:
• Webserver: chỉ có thể đặt phịng qua đường link
• Mật khẩu phịng cố định, có thể thay đổi mật khẩu trong code • Chưa điều khiển thiết bị trong phỏng bằng giọng nói được • Thời gian đáp ứng của hệ thống chưa được tối ưu
<b>1.5 BỐ CỤC BÁO CÁO </b>
Nội dung đề tài gồm các phần sau:
Chương 1: Tổng quan: Nếu tính cấp thiết của đề tài cũng với xu hướng và tình hình khoa học cũng như công nghệ hiện nay. Sự phát triển công nghiệp cùng với nhu cầu phục vụ đời sống hàng ngày là lý do chọn đề tài và xác định mục tiêu cho đề tài. Chương 2: Cơ sở lý thuyết: Trình bày tổng quan về thành phần, đặc tính cũng như chức năng của từng loại linh kiện ở phần cứng trong hệ thống, từ đó sẽ kết hợp lại để xây dựng nên một hệ thống hoàn chỉnh về mơ hình.
Chương 3: Mơ phổng hệ thống: Từ yêu cầu của đề tài, thiết kế sơ đồ cho hệ thống (Sơ đồ khối, Sơ đồ nguyên lý). Đưa ra các phương pháp xử lý rồi từ đó thiết kế nên mơ hình.
Chương 4: Kết quả thực hiện: Trình bày kết quả của từng khối nhỏ và kết quả hiển thị qua led 7 đoạn. Xuất ra hiển thị lập trình mong muốn.
Chương 5: Kết luận và hướng phát triển: Dựa trên kết quả có được từ chương 4, đưa ra tổng quan nhất nhưng gì đã đạt được và nhưng thiết sót chưa đạt được. Từ đó sẽ đưa ra hướng phát triển để cải thiện cho mơ hình, hệ thống
</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21"><b>2.1 CƠ SỞ ĐỀ TÀI </b>
Để thực hiện đồ án, nhóm đả tham khảo một số đồ án khác để hồn chỉnh với mục đích đề ra. Cụ thể, nhóm đả tham khảo cơ chế bảo mật RFID như đồ án của Bùi Đình Cường, Lưu Văn Dương, Nguyễn Quang Anh, Đặng Huy Hoàng, 2017, với đề tài: “Thiết kế thiết bị khóa cửa bằng bảo mật và thẻ chip RFID ”[5], trong đề tài này có sử dụng RFID kết hợp với cơ chế bảo mật giúp thông tin khách hàng được hiệu quả hơn. Và để tạo ra một giao diện khách hàng để cho việc quản lí một cách tốt nhất như Đồ án môn học 2 của Xaipanya Phoutsady, 2019, với đề tài: “Phần mềm quản lý khách sạn” [7]. Bên cách tham khảo các đồ án trên, nhóm em cịn tham khảo một số tính năng cơng nghệ mà RFID thực hiện trong việc quản lý khách sạn [6], áp dụng thêm một số quản lý, giảm sát khách để tạo ra mơi trường an tồn [2].
Từ những thơng tin mà nhóm tham khảo từ các nguồn. Nhóm em sẽ thực hiện hệ thống thông qua những kiến thức học tập tại trường cũng như tham khảo, tìm hiểu và nghiên cứu. Nhóm em dùng Arduino kết hợp module thu phát wifi ESP32 thông qua đường truyền internet (4G, router), kết hợp với cảm biến để mở cửa và cảnh báo. Dựa trên các thơng tin trên nhóm em đề ra mục tiêu cho KLTN, đồng thời phát triển thêm khả năng tính toàn tiền, quản lý thời gian để tạo ra một trường an toàn giữa chủ và khách hàng.
<b>2.2 GIỚI THIỆU NGƠN NGỮ LẬP TRÌNH 2.2.1 Ngơn ngữ lập trình C/C++ </b>
C++ (C Plus Plus) là một ngơn ngữ lập trình đa năng và phổ biến hiện nay, là một ngôn ngữ nâng cao của C. Ngôn ngữ C++ được thiết kế hướng đến việc lập trình máy tính và phần mềm nhúng cho các mạch xử lý vì sở hữu nhiều tính năng vượt trội, hiệu năng và tính linh hoạt cao.
C ++ là một ngơn ngữ lập trình được phát triển bởi Bjarne Stroustrup vào năm 1979 tại Bell Labs. C ++ được coi là ngôn ngữ bậc trung (middle-level) như một phần mở rộng của ngơn ngữ lập trình C, hoặc “C với các lớp Class” vì nó bao gồm sự kết
</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">Ngôn ngữ C++ mang đến cho người dùng tiện ích và nó mang lại lại một số điểm mạnh như:
• Tính phổ biến: là một trong những ngôn ngữ phổ biến trong môi trường làm việc và trường học.
• Tính thực thi nhanh: C++ cho phép người dùng sử dụng Assembly (Hợp ngữ),Assembly (Hợp ngữ) là ngơn ngữ lập trình thấp nhất cho phần cứng của máy tính.
• Thư viện đầy đủ: C++ có nhiều tài nguyên cho người lập trình sử dụng, bao gồm cả đồ họa cao như API, 2D,3D, và một số thư viện ngoại vi cho các lập trình viên, sinh viên như chip, module I2C, cảm biến, … dễ dàng cho người sử dụng.
• Đa mơ hình: C++ hướng đến đối tượng đa dạng tùy theo yêu cầu của lập trình viên.
<b>2.2.2 HTML </b>
HTML là viết tắt của cụm từ Hypertext Markup Language (tạm dịch là Ngôn ngữ đánh dấu siêu văn bản). HTML khơng phải là ngơn ngữ lập trình, nó có chức năng xác định nội dung và cấu trúc của một web. HTML đánh dấu các nội dung khác nhau của văn bản: paragraph-đoạn văn, links-liên kết, headings-tiêu đề, image-hình ảnh, …
HTML ứng dụng trong việc dựng ra các trang web, dựng giao diện cho các phần mềm và các ứng dụng (ứng dụng chạy được trình duyệt, desktop, mobile, ...).
<b>2.2.3 JavaScript </b>
Là 1 trong 3 ngôn ngữ lập trình web cơ bản mà một người lập trình viên cần phải học là HTML, CSS và JavaScript. JavaScript là ngơn ngữ lập trình phổ biển trong vịng 20 năm qua. JavaScript cịn có tên gọi là Mocha (1995), Mona, Livescript và cuối cùng là JavaScript.
</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">JavaScript có rất nhiều điểm mạnh có thể được kể đến:
• Đối với lập trình viên: dễ học, dễ phát hiện và sửa các lỗi sai. Thơng qua ngon ngữ này lập trình viên có thể kiểm tra các dữ liệu đầu vào, nhằm giảm bớt các bước thủ cơng, ngơn ngữ cịn sử dụng được ở nhiều nển tảng, trình duyệt khác nhau vì chúng có thể biên dịch bởi HTML từ trình duyệt web.
• Đối với khách hàng truy cập: có thể dễ dàng truy cập và tương tác với web hiệu quả hơn. Được hỗ trở bởi tất cả các trình duyệt, miễn phí và dễ dàng truy cập.
Bên cạnh điểm mạnh thì cũng có điểm yếu:
<small>• </small> Ngơn ngữ tĩnh, khơng sử dụng để thiết kế các trang web động.
<small>• </small> Vì là một ngơn ngữ phổ biến nên việc dễ bị khai thác bởi các hacker là một điều dễ hiểu, khai thác lỗi bảo mật để đưa mã đọc vào máy tính của người dùng.
<small>• </small> Bên cạnh những trình duyệt hỗ trợ JavaScript thì cũng có những trình duyệt khơng hỗ trợ làm cho trải nghiệm không thuận tiện trên thiết bị.
<b>2.3 GIỚI THIỆU PHẦN CỨNG 2.3.1 Arduino Uno R3 [11] </b>
Arduino UNO là một bo mạch vi điều khiển dựa trênATmega328P. Nó có 14 chân đầu vào/đầu ra kỹ thuật số (trong đó 6 chân có thể được sử dụng làm đầu ra PWM), 6 đầu vào analog, bộ cộng hưởng gốm 16 MHz, kết nối USB, jack cắm nguồn, đầu ICSP và nút đặt lại. Nó chứa mọi thứ cần thiết để hỗ trợ vi điều khiển; chỉ cần kết nối nó với máy tính bằng cáp USB hoặc cấp nguồn cho nó bằng bộ chuyển đổi AC-to-DC hoặc pin để bắt đầu. Bạn có thể sửa lại UNO của mình mà khơng phải lo lắng q nhiều về việc làm sai điều gì đó, trong trường hợp xấu nhất, bạn có thể thay thế con chip với một vài đô la và bắt đầu lại từ đầu.
</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24"><i>Hình 2. 1 Arduino Uno R3 </i>
<i>Bảng 2. 1 Bảng các thông số kỹ thuật Arduino Uno R3 </i>
Vi điều khiển ATmega328 họ 8bit
Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB) Tần số hoạt động 16 MHz
Dòng tiêu thụ khoảng 30mA Điện áp vào khuyên dùng 7-12V DC Điện áp vào giới hạn 6-20V DC
Số chân Digital I/O 14 (6 chân hardware PWM) Số chân Analog 6 (độ phân giải 10bit) Dòng tối đa trên mỗi chân I/O 30 mA
Dòng ra tối đa (5V) 500mA Dòng ra tối đa (3.3V) 50 mA
Bộ nhớ flash <sup>32 KB (ATmega328) với 0.5KB dùng bởi </sup>bootloader
SRAM 2 KB (ATmega328) EEPROM 1 KB (ATmega328)
<i>Bảng 2. 2 Bảng các thông số chân Arduino Uno R3 </i>
</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">Chức năng
Loại Miêu tả
NC NC Không kết nối IOREF IOREF đọc điện áp vi điều khiển
Reset Reset Reset
GND Power Nối đất GND Power Nối đất
VIN Power Đầu vào điện áp A0 Analog/GPIO Đầu vào tương tự 0 /GPIO A1 Analog/GPIO Đầu vào tương tự 1 /GPIO A2 Analog/GPIO Đầu vào tương tự 2 /GPIO A3 Analog/GPIO Đầu vào tương tự 3 /GPIO A4/SDA Analog
input/I2C
Chân dữ liệu nối tiếp
A5/SCL Analog input/I2C
Chân đồng hồ nối tiếp D0/RX Digital/GPIO Ngõ vào số 0/GPIO
Được sử dụng để nhận dữ liệu (RX) D1/TX Digital/GPIO Ngõ vào số 1/GPIO
Truyền dữ liệu (TX) TTL D2 Digital/GPIO Ngõ vào số 2/GPIO D3 Digital/GPIO Ngõ vào số 3/GPIO
Cung cấp đầu ra xung PWM D4 Digital/GPIO Ngõ vào số 4/GPIO D5 Digital/GPIO Ngõ vào số 5/GPIO
Cung cấp đầu ra xung PWM
</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">D6 Digital/GPIO Ngõ vào số 6/GPIO Cung cấp đầu ra xung PWM D7 Digital/GPIO Ngõ vào số 7/GPIO D8 Digital/GPIO Ngõ vào số 8/GPIO D9 Digital/GPIO Ngõ vào số 9/GPIO
Cung cấp đầu ra xung PWM SS Digital Hỗ trợ giao tiếp SPI bằng
thư viện SPI
Cung cấp đầu ra xung PWM
MOSI Digital Cung cấp đầu ra xung PWM
MISO Digital SCL Digital
GND Digital Nối đất
<b>2.3.2 RFID-RC522 [12][13] </b>
Về RFID có nhiều loại tần sồ và khoảng cách khác nhau như: LF RFID (134 KHz - 10 cm), HF RFID (13,56 MHz - 10 cm), UHF RFID (300 MHz đến 3 GHz - 12 met) trong UHF RFID có UHF Gen2 RFID (860 đến 960 MHz hoặc 900 đến 915 MHz - 12 met) tùy thuộc nhà sản xuất mà dao động tần số thay đổi.
Nhóm UHF được quy định bởi một tiêu chuẩn toàn cầu gọi là tiêu chuẩn ECPglobal Gen2 (ISO 18000-6C) UHF.
Sau khi tham khảo, nhóm em chọn HF RFID. Và tham khảo thêm các chủng loại thuộc nhóm HF RFID để thực hiện gồm có : LC522, FM17550 và RC522. Thì nhóm em chọn RFID-RC522 để thực hiện đồ án này vì trước đó tụi em đã học, tìm hiểu nó thơng qua mơn Cơng nghệ RFID của thầy Hiệp và ứng dụng được nó trong việc thêm, xóa thẻ phù hợp với mục tiêu ban đầu đề ra.
Mạch RFID NFC 13.56MHz RC522 sử dụng IC MFRC522 được sử dụng để đọc và ghi dữ liệu cho thẻ RFID / NFC tần số 13.56MHz, mạch có thiết kế nhỏ gọn
</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">được sử dụng rất phổ biến hiện nay với Arduino hoặc các loại Vi điều khiển khác trong các ứng dụng cần ghi, đọc thẻ RFID / NFC.
<i>Hình 2. 2 RFID-RC522 </i>
<i><b>Bảng 2. 3 Bảng các thông số kỹ thuật RFID-RC522 </b></i>
Nguồn sử dụng 3.3VDC Dòng điện 13~26mA Tần số hoạt động 13.56Mhz
Khoảng cách hoạt động 0~60mm(mifare1 card) Chuẩn giao tiếp SPI
Tốc độ truyền dữ liệu tối đa 10Mbit/s
Các loại card RFID hỗ trợ mifare1 S50, mifare1 S70, mifare UltraLight, mifare Pro, mifare Desfire
Kích thước 40mm × 60mm
<i>Bảng 2. 4 Bảng các thông số chân RFID-RC522 </i>
Chân Mô tả chi tiết
Chân 1 VCC Chân nguồn VCC. Trong một số phiên bản của RC522, chân này được ký hiệu là 3V3 thay vì VCC.
</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28"><b>2.3.2.1 Cơ cấu tổ chức EEPROM trong thẻ Mifare </b>
Trong cấu trúc của 1 thẻ Mifare bất kỳ thì bộ nhớ Eeprom là phần đóng vai trị quan trọng nhất trong hoạt động lưu trữ dữ liệu và cơ cấu bảo mật của thẻ. Trước khi Chân 2 RST Là chân reset được sử dụng để đặt lại
giá trị trong trường hợp xảy ra lỗi khi thiết bị không bất kỳ phản hồi.
Chân 3 Ground Chân nối đất giúp tạo mass chung với các thiết bị bên ngoài (ví dụ bộ nguồn, bi điều khiển hoặc arduino).
Chân 4 IRQ Linh kiện có thể chuyển sang chế độ ngủ để tiết kiệm điện năng và chân IRQ sẽ khởi động lại nó
Chân 5 MISO SCL-TX Chân này kết nối với Arduino / Vi điều khiển để giao tiếp SPI. Truyền dữ liệu từ module sang Arduino.
Chân MISO cũng có thể sử dụng cho các chức năng khác thay vì SPI. Cũng có thể giao tiếp I2C và UART Serial để giao tiếp dữ liệu với module. Chân 6 MOSI MOSI là chân đầu vào dữ liệu module
RFID khi giao tiếp SPI
Chân 7 SCK Các chân SCK gửi xung clock khi giao tiếp SPI.
Chân 8 SS SDA-RX Chân SS của RFID có thể được sử dụng như một chân thứ hai (SDA) của giao tiếp I2C.
Cũng là chân nhận dữ liệu trong quá trình giao tiếp UART.
</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">bắt đầu lập trình với Mifare, người dùng buộc phải nắm rõ được cơ cấu tổ chức bên trong loại thẻ này để có được phương án lập trình thích hợp và tối ưu nhất, hơn nữa còn hạn chế được rủi ro trong quá trình sử dụng thẻ. Hình dưới đây cho ta thấy được cấu trúc của bộ nhớ Eeprom trên 1 thẻ Mifare Classic:
Bộ nhớ Eeprom có dung lượng 1 KByte được chia thành 16 Sectors hay vùng nhớ. Các Sector này được đánh số từ 0 đến 15, được truy xuất không theo thứ tự nghĩa là các vùng nhớ được đọc/ghi một các độc lập, không rang buộc với nhau. Trong mỗi Sector lại được chia thành 4 Block (được đánh số từ 0 đến 3) chứa dữ liệu người dùng và các khóa bảo mật, dung lượng của mỗi Block là 16 Bytes được đánh số từ trái sang phải từ Byte 0 đến 15.
Mỗi Sector Trailer gồm 3 thành phần chính là 2 mã bảo mật có thể lập trình được gọi là Key A (nằm từ Byte 0 đến Byte 5) và Key B(nằm từ Byte 10 đến Byte 15) để truy cập đọc/ghi vào chính Sector mà nó quy định. Và thành phần còn lại là AccessBit (nằm từ Byte 6 đến Byte 9) có khả năng quy định chức năng cho Key A, B và khả năng truy xuất thông tin của thẻ.
Duy chỉ có Sector 0 là đặc biệt hơn so với 15 Sector cịn lại, đó là việc nó có 1 Block của nhà sản xuất gọi là Manafacturer Block. Block này được nhà sản xuất
</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">ghi mã Serial Number vào nhằm phân biệt các thẻ với nhau và các mã Serial Number này là duy nhất. Người lập trình khơng được ghi, xóa dữ liệu vào Block này để tránh việc bị lỗi Sector này (theo khuyến cáo của nhà sản xuất).
<b>2.3.2.2 Cơ cấu bảo mật của thẻ MIFARE </b>
a. Đối với 1 thẻ Mifare Classic thì ta có 4 cách để bảo mật thông tin trên thẻ: Dựa vào UID độc nhất của mỗi thẻ, mỗi thẻ Mifare đều có 1 Seri Number độc nhất do nhà sản xuất quy định và chúng ta sẽ không thể thay đổi và tác động vào. Ứng dụng vào các bãi giữ xe trong các trường học, bệnh viện, siêu thị….
b. Dựa vào thuật tốn truy xuất:
Mỗi nhà loại thẻ có một lưu đồ thuật tốn khác nhau nên chỉ có đầu đọc được thiết kế cho loại thẻ đó mới có thể đọc/ghi dữ liệu trên thẻ được. Đáng tiếc rằng thuật tốn truy xuất vào thẻ thì có thể bị sao chép nên phương án bảo mật này không được đánh giá cao.
c. Dựa vào KeyA, key B:
Đây là hai khóa bảo mật được đặt trong Trailer Block của mỗi Block, được coi như chìa khóa mở ra thơng tin trên mỗi Block của thẻ vì khi lập trình, người dùng buộc phải khai báo đúng hai khóa này trước khi tác động vào thơng tinh trên thẻ. Phương án này được đánh giá khá cao bởi người dùng thẻ Mifare chỉ sau Access Bit.
d. Dựa vào Access Bit:
Đây là phương án bào mật cao nhất trên thẻ Mifare. Access Bit là tổ hợp các bộ ba bit điều khiển chức năng của Key A, Key B cũng như khả năng được xuất hiện của dữ liệu trên thẻ.
<b>2.3.2.3 Thêm cơ chế bảo mật bằng cách sử dụng key A, key B </b>
1. Cách sử dụng Key A, B
Để truy xuất thông tin trên thẻ Mifare, sau khi nhận được tính hiệu có thẻ được đưa vào, đầu đọc sẽ yêu cầu người dùng xác thực với các mã bảo mật, nếu mã bảo mật được cung cấp là đúng thì sẽ trả về “True” ngược lại trả về “False”. Dựa vào các trạng thái True/False đầu đọc sẽ tiếp tục thực hiện yêu cầu hay không. Khi mã bảo mật được cung cấp là đúng, Đọc mã xác nhận trên thẻ và tiến hành các hoạt động
</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">đọc/ghi dữ liệu. Khi một thẻ mới được mua về và chuẩn bị được sử dụng thì việc thay đổi các khóa bảo mật nên được thực hiện. ở phần này, chúng ta chỉ tác động với Key A, Key B để thấy được rõ vai trò của chúng, nên các Access Bit nên được giữ nguyên, các Access Bit sẽ được hướng dẫn ở phần sau. Việc thay đổi Key A, Key B được thực hiện thông qua các bước chính như sau:
Hình 2. 3 Quy trình thay Key A và Key B
2. Thay đổi khóa bảo mật Key A, Key B
Việc thay đổi Key A, Key B cũng chính là ghi dữ liệu nhưng đặc biệt hơn là chúng ta phải thay đổi vào vùng nhớ của Trailer Block vì chỉ Trailer Block mới chứa các mã bảo mật này. Một lưu ý quan trọng là khi thay chọn mảng để thay đổi, thì đặt vào đủ 16byte của Trailer Block mặc dù có những Bytes không thay đổi ở đây là Access Bit. Tùy vào Access Bit qui định cho từng Block thì sẽ tương ứng với Key
</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">nào được gọi trong quá trình ghi. Chương trình ghi ở phần này cũng là chương trình ghi đã đưa ở phần trước. Lưu đồ thay đổi khóa bảo mật như sau:
Hình 2. 4 Quá trình ghi thẻ
<b>2.3.3 ESP32 [14][15] </b>
Kit RF thu phát Wifi ESP32 NodeMCU LuaNode32 được phát triển trên nền module trung tâm là ESP32 với công nghệ Wifi, BLE và nhân ARM SoC tích hợp mới nhất hiện nay, kit có thiết kế phần cứng, firmware và cách sử dụng tương tự Kit NodeMCU ESP8266, với ưu điểm là cách sử dụng dễ dàng, ra chân đầy đủ. Mạch WiFi này là sự lựa chọn hàng đầu trong các nghiên cứu, ứng dụng về Wifi, BLE, IoT và điều khiển, thu thập dữ liệu qua mạng.
Đặc điểm:
• Khối lượng nhỏ, dễ dàng ứng dụng vào các sản phẩm khác
</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">• Chức năng mạnh mẽ với giao thức LWIP, Freertos • Hỗ trợ ba chế độ: AP, STA và AP + STA
• Hỗ trợ chương trình Lua, dễ dàng phát triển
Hình 2. 5 ESP32
Bảng 2. 5 Bảng các thông số kỹ thuật ESP32
CPU Xtensa Dual-Core LX6 microprocessor. Tốc độ xử lý 160MHZ up to 240 MHz
Tốc độ xung nhịp 40mhz --> 80mhz RAM 520 KByte SRAM WIFI 802.11 b/g/n/e/i Bluetooth v4.2 BR/EDR and BLE Nhiệt độ hoạt động -40 + 85C
Điện áp hoạt động 2.2-3.6V Số cổng GPIOs 34
</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34">Hình 2. 6 Hình các thơng số chân ESP32
<b>2.3.4 Servo MG90s [16][17] </b>
Động cơ Servo MG90S bánh răng kim loại là phiên bản nâng cấp của động cơ RC Servo 9G với các bánh răng được làm bằng kim loại cho lực khéo khỏe và độ bền cao, động cơ có kích thước nhỏ gọn, cách điều khiển giống như các động cơ RC Servo phổ biến trên thị trường hiện nay: MG996, MG995, 9G, … Phù hợp cho nhiều ứng dụng khác nhau: Robot cánh tay máy, robot nhện, cơ cấu chuyển hướng, cơ cấu quay góc,…
Hình 2. 7 Servo MG90s
Bảng 2. 6 Bảng các thông số chân Servo MG90s
STT Tên chân Chức năng
</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35">1 Đỏ Chân Nguồn 2 Nâu Chân Đất 3 Cam Chân tín hiệu
Bảng 2. 7 Bảng các thông số kỹ thuật Servo MG90s
Trọng lượng 13.4g
Kích thước 22.8 x 12.2 x 28.5 mm
Stall Torque 1.8 kg.cm (4.8V); 2.2 kg.cm (6V) Nhiệt độ hoạt động 0 - 55 độ C
Tốc độ 0.1 giây / 60° (4.8V), 0,08 giây / 60° Điện áp hoạt động 4.8 → 6 V DC
Chiều dài dây nối 175mm
<b>2.3.5 Cảm Biến Phát Hiện Lửa (Flame Sensor) [18] </b>
Cảm biến lửa có nhiều loại như: cảm biến lửa mke-s04 ir infrared flame sensor, YG1006, KY-026,... Sau khi tìm hiểu nhóm em chọn YG1006 vì đã tìm hiểu và thực hiện các đồ án mơn học với cảm biến đó nhiều.
Cảm biến phát hiện lửa (flame sensor) là một cảm biến hòng ngoại thường được sử dụng cho việc phát hiện lửa được ứng dụng nhiều trong các mơ hình : xe robot chữa cháy, cảnh báo cháy,… Có tầm phát hiện trong khoảng 80cm, góc quét 60<small>0</small> và bước sóng từ 760mm – 1100mm.
Cảm biến phát hiện lửa (flame sensor) có hai ngõ ra tín hiệu là Digital và Analog rất dễ dử dụng.
Mạch được tích hợp IC LM393 so sánh để tạo mức tín hiệu. Ta có thể chỉnh độ nhạy bằng biến trở.
</div><span class="text_page_counter">Trang 36</span><div class="page_container" data-page="36">Hình 2. 8 Cảm Biến Phát Hiện Lửa (Flame Sensor)
Bảng 2. 8 Thông số kỹ thuật Cảm Biến Phát Hiện Lửa (Flame Sensor)
STT Thông số Giá trị 1 Nguồn cấp 3.3V – 5VDC 2 Dịng tiêu thụ 15mA
3 Tín hiệu ra Digital 3.3 – 5VDC 4 Analog
5 Khoảng cách 80cm 6 Góc quét 60<small>0</small>
7 Kích thước 3.2 x 1.4 cm
Bảng 2. 9 Bảng các thông số chân Cảm Biến Phát Hiện Lửa (Flame Sensor)
Chân Tên Mô tả
1 V<small>CC</small> 3.3V ~ 5.3V
2 GND Ground
3 A<small>OUT</small> (AO) Đầu ra Analog
4 D<small>OUT</small> (DO) Đầu ra Digital
</div><span class="text_page_counter">Trang 37</span><div class="page_container" data-page="37"><b>2.3.6 Màn hình LCD TFT [19][20] </b>
Màn hình LCD TFT cảm ứng điện trở 2.8inch ILI9341 giao tiếp SPI được sử dụng trong việc điều khiển và hiển thị, màn hình dễ dàng giao tiếp và sử dụng trên màn hình, có thể giúp người dùng xây dựng giao diện điều khiển cảm ứng trên một màn hình. Đi cùng với màn hình là bút cảm ứng giúp người dùng dễ giao tiếp và thiết kế hình trên màn hình một cách chuyên nghiệp.
<i>Hình 2. 9 Màn hình LCD TFT </i>
<i>Bảng 2. 10 Thơng số kỹ thuật màn hình LCD TFT </i>
STT Thuộc tính Giá trị 1 Kích thước đường chéo 3.2 inch 2 IC Driver ILI9341 3 Giao tiếp SPI 4 Độ phân giải 320 x 240 pixels 5 Cảm ứng Có
6 Kích thước vùng nhìn 48.6 x 64.8mm 7 Loại cảm ứng Điện trở 8 Điện áp cấp 3.3VDC 9 Loại đèn nền Backlight LED 10 Chế độ hiển thị Transmissive
</div><span class="text_page_counter">Trang 38</span><div class="page_container" data-page="38">11 Kích thước 55.04 x 89.3mm 12 Công nghệ hiển thị TFT 13 Số màu 65,536 14 Nhiệt độ hoạt động -10 ~ +60°C 15 Loại Điện trở
<i>Bảng 2. 11 Bảng các thông số chân màn hình LCD TFT </i>
STT Chân Miêu tả 1 VCC Đầu vào nguồn 5V/3.3V
10 T_CLK T_CLK Chạm vào tín hiệu đồng hồ bus SPI
11 T_CS Tín hiệu chọn chip màn hình cảm ứng T_CS, bật mức thấp 12 T_DIN T_DIN Chạm vào đầu vào bus SPI
13 T_DO Chạm vào đầu ra bus SPI
14 T_IRQ Tín hiệu ngắt màn hình cảm ứng T_IRQ, mức thấp khi phát hiện cảm ứng
</div><span class="text_page_counter">Trang 39</span><div class="page_container" data-page="39"><b>2.4 CÁC CHUẨN GIAO TIẾP 2.4.1 Chuẩn giao tiếp UART </b>
Chuẩn giao tiếp UART, viết tắt là Universal Asynchronous Receiver / Transmitter Mục đích chính của chuẩn giao tiếp UART là truyền và nhận dữ liệu nối tiếp
• TX (Transmiter) – truyền dữ liệu • RX (Receiver) – nhận dữ liệu Số dây sử dụng 2
Tốc độ Từ 9600 bps -> 115200 bps Phương thức truyền dữ liệu Không đồng bộ Kiểu truyền dữ liệu Nối tiếp
Master (thiết bị chủ) 1 Slave (thiết bị tớ) 1
UART1 và UART2 truyền và nhận dữ liệu từ bus dữ liệu thông qua truyền dữ liệu song song.
UART truyền và nhận dữ liệu ở tốc độ được đặt trước (Baud rate).
Ưu điểm của UART bao gồm sử dụng chỉ hai dây, khơng cần tín hiệu đồng hồ, có bit chẵn lẻ để kiểm tra lỗi, cấu trúc gói dữ liệu có thể thay đổi, và phương pháp được sử dụng rộng rãi.
Nhược điểm của UART bao gồm kích thước khung dữ liệu giới hạn, khơng hỗ trợ nhiều hệ thống, tốc độ truyền giới hạn và yêu cầu tốc độ truyền cụ thể cho mỗi UART.
<b>2.4.2 Giao thức SPI </b>
SPI là một giao thức giao tiếp phổ biến được ứng dụng trong nhiều thiết bị khác nhau như module thẻ SD, module đầu đọc thẻ RFID, và bộ phát/thu không dây 2,4 GHz. So với các giao thức khác như I2C và UART, SPI có lợi ích duy nhất là có thể truyền dữ liệu mà không bị gián đoạn, không bị hạn chế về số lượng bit và khơng u cầu các gói dữ liệu.
</div><span class="text_page_counter">Trang 40</span><div class="page_container" data-page="40">Giao tiếp SPI thường có cấu trúc master-slave, trong đó master (thường là vi điều khiển) điều khiển slave (cảm biến, màn hình hoặc chip nhớ). Hệ thống có thể có một master và một slave, hoặc một master có thể điều khiển nhiều hơn một slave.
Các tín hiệu quan trọng trong SPI bao gồm MOSI (đầu ra master/đầu vào slave) cho việc truyền dữ liệu từ master đến slave, MISO (đầu vào master/đầu ra slave) cho slave trả lại dữ liệu, SCLK (clock) để đồng bộ hóa truyền dữ liệu, và SS/CS (Slave Select/Chip Select) để master chọn slave nào để tương tác.
Ưu điểm của SPI bao gồm khả năng truyền dữ liệu liên tục mà khơng bị gián đoạn, khơng có hệ thống địa chỉ phức tạp như I2C, tốc độ truyền dữ liệu cao hơn I2C, và khả năng gửi và nhận dữ liệu đồng thời qua các đường MISO và MOSI.
Tuy nhiên, SPI cũng có nhược điểm như sử dụng bốn dây (so với hai của I2C và UART), khơng có xác nhận dữ liệu đã được nhận thành cơng, khơng có hình thức kiểm tra lỗi như bit chẵn lẻ trong UART, và chỉ cho phép một master duy nhất.
</div>