Tải bản đầy đủ (.pdf) (44 trang)

tên đề tài nghiên cứu thiết kế thiết bị hệ thống điều khiển cửa thông minh sử dụng họ vi điều khiển

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 (3.57 MB, 44 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>TRƯỜNG ĐẠI HỌC ĐIỆN LỰCKHOA ĐIỀU KHIỂN & TỰ ĐỘNG HÓA</b>

<b>ĐỒ ÁN VI XỬ LÝNGÀNH: ĐIỀU KHIỂN VÀ TỰ ĐỘNG HÓA</b>

<b>HÀ NỘI, 06/2022</b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>TRƯỜNG ĐẠI HỌC ĐIỆN LỰCKHOA ĐK & TĐH</b>

<b>CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAMĐộc lập – Tự do – Hạnh phúc</b>

<b>...o0o...</b>

<b>ĐỒ ÁN MÔN HỌC VI XỬ LÝ</b>

Sinh viên thực hiên: Nguyễn Trung Hiếu - 18810430214Vũ Nhật Long - 18810430156Trần Mạnh Cường - 18810430166 Lớp: D13TĐH&ĐKTBCN2

Giảng viên hướng dẫn: TS. Đoàn Thị Hương Giang

<b>I. Đề tài</b>

<b>Nghiên cứu thiết kế thiết bị “Hệ thống điều khiển cửa thông minh” sử dụnghọ vi điều khiển</b>

<b>II. Nội dung</b>

Chương 1: Đặt vấn đề, nhiệm vụ thư

Chương 2: Thiết kế phần cứng cho cửa thông minhChương 3: Thiết kế phần mềm

Chương 4: Mơ hình thực nghiệm và kết luận

<b>III. Kế hoạch thực hiện:</b>

Ngày giao đề: 18/02/2022Ngày hoàn thành: 09/06/2022

<i>Ngày tháng 06 năm 2022</i>

Giáo viên hướng dẫn

<i><b>TS. Đồn Thị Hương Giang</b></i>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>MỤC LỤC</b>

<b>LỜI NĨI ĐẦU...1</b>

<b>CHƯƠNG 1: ĐẶT VẤN ĐỀ VÀ NHIỆM VỤ THƯ...2</b>

<b>CHƯƠNG 2: THIẾT KẾ PHẦN CỨNG CHO CỬA THÔNG MINH...4</b>

<b>2.1 SƠ ĐỒ KẾT NỐI HỆ THỐNG CỬA...4</b>

<b>2.2LỰA CHỌN THIẾT BỊ...4</b>

<b>2.2.1Cấu tạo chung của Arduino (Arduino Uno R3)...4</b>

<b>2.2.2Thông số cơ bản của Arduino Uno R3...5</b>

<b>2.2.3Cấu tạo của Arduino Mega 2560...6</b>

<b>2.2.4LCD 16x2 và module I2C Arduino...8</b>

<b>2.2.5Module I2C Arduino...10</b>

<b>3.1.1Nguyên lý hoạt động của hệ thống...20</b>

<b>3.2LƯU ĐỒ THUẬT TỐN...21</b>

<b>3.2.1Lưu đồ thuật tốn hệ thống...21</b>

<b>3.2.2Lưu đồ thuật tốn dùng mật mã với phím ma trận 4x4...22</b>

<b>3.2.3Lưu đồ thuật tốn với Ethernet...23</b>

<b>3.2.4Lưu đồ thuật tốn đóng mở cửa...24</b>

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>3.3PHẦN LẬP TRÌNH CÁC CHƯƠNG TRÌNH ĐIỀU KHIỂN CỬA THƠNG </b>

<b>3.3.1Lập trình arduino...24</b>

<b>3.3.2Lập trình python...31</b>

<b>3.3.3Lập trình ethernet shield...39</b>

<b>CHƯƠNG 4: MƠ HÌNH THỰC NGHIỆM VÀ KẾT LUẬN...46</b>

<b>4.1U CẦU MƠ HÌNH...46</b>

<b>4.2MƠ HÌNH...46</b>

<b>4.3KẾT LUẬN VÀ PHƯƠNG HƯỚNG PHÁT TRIỂN CỬA THÔNG MINH....48</b>

<b>TÀI LIỆU THAM KHẢO...49</b>

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>DANH MỤC HÌNH V</b>

Hình 2. 1 Sơ đồ khối hệ thống điều khiển cửa thơng minh...4

Hình 2. 2 Sơ đồ chân Arduino Uno R3...5

Hình 2. 3 Sơ đồ chân Arduino Mega 2560...7

Hình 2. 9 Sơ đồ đấu nối Servo SG90s với Arduino...12

Hình 2. 10 Sơ đồ nguyên lý của keypad 4x4...13

Hình 2. 11 Sơ đồ đấu nối keypad 4x4 với arduino...13

Hình 3. 2 Lưu đồ thuật tốn với phím ma trận 4x4...22

Hình 3. 3 Lưu đồ thuật tốn với ethernet...23

Hình 3. 4 Lưu đồ thuật tốn đóng mở cửa với cảm biến...24

Bảng 2-2 Bảng chi tiết các chân của Arduino Mega 2560...7

Bảng 2-3 Bảng ký hiệu và chi tiết chân LCD...8

Bảng 2-4 Bảng các mã lệnh của LCD...9

Bảng 2-5 Bảng nối dây keypad với arduino...13

Bảng 2-6 Bảng nối dây arduino uno với module RFID...16

Bảng 2-7 Bảng thống kê thiết bị sử dụng...19

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<b>LỜI NÓI ĐẦU</b>

Trong những năm gần đây, với sự phát triển của khoa học – kỹ thuật. Đặc biệt làmảng tự động hóa với các ứng dụng của vi xử lý đã có những khả năng to lớn về việc điềukhiển với tốc độ cao, độ chính xác cao, khả năng xử lý các tính tốn và tính linh hoạt nênđang được ứng dụng nhiều trong đời sống con người, cũng như là thể hiện nhiều ưu điểmso với các thiết bị truyền thống.

Mặc dù tự động hóa nói chung và vi xử lý nói riêng đã có những bước tiến dàinhưng để tiếp cận được những kỹ thuật này không thể là một việc trong một sớm mộtchiều. Để tìm hiểu vi xử lý một cách khoa học và mang lại hiệu quả cao làm nền tảng choviệc tiến tới tìm hiểu những hệ thống tiên tiến hơn thì việc trang bị những kiến thức về vixử lý cho sinh viên là hết sức cần thiết. Xuất phát từ thực tiễn này, nhóm chúng em đã điđến quyết định thực hiện đề tài: “Điều khiển cửa tự động” nhằm đáp ứng nhu cầu hamhọc hỏi của bản thân chúng em.

Tuy nhiên vì thời gian có hạn và kiến thức chun mơn cịn hạn chế nên trong qtrình thực hiện đề tài này khơng thể tránh khỏi những sai xót nhất định. Vì vậy, chúng emrất mong có sự giúp đỡ, ý kiến đóng góp của thầy cơ cũng như là dưới sự hướng dẫn củaTS. Đồn Thị Hương Giang để đồ án này được hoàn thiện hơn.

Chúng em xin chân thành cảm ơn.

1

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

CHƯƠNG 1: ĐẶT VẤN ĐỀ VÀ NHIỆM VỤ THƯ

<b>1.1 Đặt vấn đề</b>

<i><b>1.1.1 Thực trạng</b></i>

Ngày nay, việc tự động đóng mở cửa khơng cịn xa lạ gì với chúng ta. Đặc biệt vớinhu cầu đời sống ngày càng phát triển thì việc mỗi gia đình đều muốn ngơi nhà của mìnhtrở thành một ngơi nhà thơng minh là rất phổ biến. Trong đó, hệ thống “cửa tự động” làmột trong những hệ thống tiêu biểu nhất của nhà thông minh, và cũng chính là điểm nhấncho gia chủ và khách khi lại nhà.

So sánh việc có một cánh cửa thông thường với một hệ thống “cửa tự động” đãphần nào nói lên những hạn chế của cửa thơng thường và sự tiện ích của hệ thống “cửa tựđộng” mang lại. Khi dùng cửa thông thường, chúng ta phải cần đến chìa khóa để có thểđóng mở, và cũng chính vì phải cần đến chìa khóa mà rất dễ xảy ra thất lạc. Với hệ thốngkhóa cổ điển thì khơng khó để có thể bẻ khóa, dẫn đến tính trạng mất trộm và đặc biệt làảnh hưởng đến sự an toàn của gia chủ.

Từ các hạn chế trên, hệ thống “cửa tự động” được ra đời để đảm bảo những yếu tốtrên được hạn chế ở mức thấp nhất. Cửa tự động khơng cần chìa khóa cồng kềnh, việc củachúng ta chỉ là quét 1 tấm thẻ, nhập mã số hoặc thập chí là đứng n nhìn vào cameracũng có thể mở cửa. Hệ thống này cịn rất khó có thể bẻ khóa nếu khơng có kiến thức vềlập trình, kỹ thuật cảm biến, tự động hóa, điện tử, cơng nghệ thơng tin,… Đảm bảo đượcsự an tồn về tính mạng cũng như tài sản.

Có rất nhiều hệ thống “cửa tự động” trên thị trường, như sử dụng khóa mã, thẻRFID, vân tay, giọng nói, hình ảnh khn mặt để mở cửa tự động,... Tùy vào nhu cầu, sởthích, độ tiện ích, thẩm mĩ của mỗi người để chọn ra hệ thống ưng ý nhất.

Nhưng để sở hữu những hệ thống này, chúng ta phải bỏ ra 1 chi phí khơng hề nhỏbởi phải nhập của nước ngồi. Và dù có ở Việt Nam thì cũng rất khó để tiếp cận làm chủcơng nghệ.

Chính vì vậy, chúng em muốn nghiên cứu tìm hiểu để làm chủ cơng nghệ này, đểcó thể góp phần nào đó đêm cơng nghệ này đến gần hơn với người dân ở nước ta. Nângcao trình độ, lối sống khoa học. Do hạn chế về thời gian nên những phương án đề ra trongbài chưa được tối ưu và hoàn chỉnh. Nhưng vẫn hoàn tồn phù hợp với nội dung mơn học.Chúng em mong thầy cơ có thể góp ý để chúng em có thể hồn thiện bài một cách tốtnhất.

<i><b>1.1.2 Vai trị của cửa tự động trong đời sống </b></i>

2

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

- Lắp đặt và bảo trì khó hơn cửa thơng thường- Giá thành cao

- Tiếp cận cơng nghệ khó khan- Cần người có kinh nghiệm và kiến thức

Với những ưu nhược điểm trên, dựa vào mục đích và nhu cầu của người sử dụngnên cũng có rất nhiều mẫu mã được sản xuất cũng như công nghệ được sử dụng.

<b>1.3 Nhiệm vụ thư</b>

Điều khiển cửa đóng mở có các chức năng như sau:- Sử dụng mở cửa theo các phương pháp:

+ Khóa số.+ Thẻ từ.

+ Điều khiển qua internet+ Điều khiển qua phím bấm - Có giao diện LCD để người dùng biết.- Cửa đóng mở sử dụng động cơ kéo cánh cửa.- Có hệ thống cảm biến báo trạng thái đóng mở cửa.- Chi tiết thiết kế sẽ được nêu trong các mục sau đây.

+ Chương 2: Thiết kế phần cứng cho điều khiển đóng mở cửa.+ Chương 3: Thiết kế phần mềm cho điều khiển đóng mở cửa.+ Chương 4: Mơ hình thực nghiệm và kết luận.

3

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b>CHƯƠNG 2: THIẾT KẾ PHẦN CỨNG CHO CỬA THÔNG MINH</b>

<b>2.1 Sơ đồ kết nối hệ thống cửa</b>

Sơ đồ khối hệ thống mạch điều khiển cửa thông minh

<i>Hình 2. 1 Sơ đồ khối hệ thống điều khiển cửa thơng minh</i>

Arduino là bảng mạch điều khiển chính của tồn bộ hệ thống. Arduino sẽ nhận tínhiệu từ phím, RIFD, mạng ethernet đưa về để xử lý sau đó sẽ xuất tín hiệu đến rơ le đểđiều khiển cửa và động cơ cửa đồng thời hiển thị cửa lên LCD. Arduino nhận tín hiệu từcảm biến để xác định cửa đang đóng hay đang mở.

c. Đầu cắm cổng USB máy tínhd. IC Atmega 16U2

e. Cổng nguồn ngồif. Cổng USB

g. Nút reset

h. ICSP của Atmega 16U2i. Chân xuất tín hiệu raj. IC Atmega 328

k. Chân ICSP của Atmega 328l. Chân lấy tín hiệu analogm. Chân cấp nguồn cho cảm biến

4

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<i><b>2.2.2 Thông số cơ bản của Arduino Uno R3 </b></i>

<i>Hình 2. 2 Sơ đồ chân Arduino Uno R3</i>

<b>Thơng số kĩ thuật:</b>

- Chíp ATMEGA328P-PU - Nguồn Cấp: 7-12V- Dòng Max chân 5V: 500mA- Dòng Max Chân I/O: 30mA- 14 Chân Digital I/O (6 chân PWM)- 6 Chân Analog Inputs

<i>Bảng 2-1 Bảng chi tiết các chân Arduino Uno R3</i>

Chân Vin Đây là điện áp đầu vào được cung cấp cho board mạch Arduino. Khác với 5V được cung cấp qua cổng USB. Chân này được sử dụng để cung cấp điện áp tồn mạch thơng qua jack nguồn, thơng thường khoảng 7VDC-12VDC.

Chân 5V Chân 5V được sử dụng để cung cấp điện áp đầu ra. Arduino được cấp nguồn bằng ba cách đó là USB, chân Vin của board mạch hoặc giắc nguồn DC.

USB Hỗ trợ điện áp khoảng 5V trong khi Vin và Power Jack hỗ trợ dải điện áp trong khoảng từ 7V đến 20V.

5

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

Chân GND Chân nối đất chung cho toàn mạch Arduino.Chân Reset Chân reset để thiết lập lại về ban đầu.

PWM PWM được cung cấp bởi các chân 3, 5, 6, 9, 10, 11. Các chân này được cấu hình để cung cấp PWM đầu ra 8 bit.Chân SPI Chân này được gọi là giao diện ngoại vi nối tiếp. Các chân

10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) cung cấp liên lạc SPI với sự trợ giúp của thư viện SPI.

Chân AREF Chân này được gọi là tham chiếu tương tự, được sử dụng để cung cấp điện áp tham chiếu cho các đầu vào tương tự.Chân TWI Chân giao tiếp TWI được truy cập thông qua thư viện

dây. Chân A4 và A5 được sử dụng cho mục đích này.Serial

Chân ngắt ngồi Chân 2 và 3 được sử dụng để cung cấp các ngắt ngoài.

<i><b>2.2.3 Cấu tạo của Arduino Mega 2560</b></i>

Sơ đồ chân và Thông số kỹ thuật của Arduino Mega2560:- Chíp ATMEGA2560

- Điện Áp Hoạt Động: 5VDC

- Nguồn Cấp: 7V-12V (Giới Hạn 6-20V)- Cường độ dòng điện chân 5V: 500mA- Cường độ dòng điện trên mỗi 3.3V: 50mA - Cường độ dòng điện trên mỗi chân I/O: 40mA- 54 Chân Digital I/O (15 Chân PWM)- Flash memory: 256KB

- SRAM: 8KB

6

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

- EEPROM: 4KB- Clock Speed: 16MHz

<i>Hình 2. 3 Sơ đồ chân Arduino Mega 2560</i>

<i>Bảng 2-2 Bảng chi tiết các chân của Arduino Mega 2560</i>

Chân 5V và 3.3V Chân này được sử dụng để cung cấp điện áp đầu ra khoảng 5V. Chân GND Có năm chân nối mass có sẵn trên board Arduino Mega, giúp dễ

dàng kết nối nếu thực hiện dự án với nhiều kết nối thiết bị ngoạivi.

Chân reset Được sử dụng để thiết lập lại board mạch về lại ban đầu. Mức tích cực low được thiết lập sẽ reset lại board mạch.

Chân Vin Là chân điện áp đầu vào cung cấp cho mạch Arduino Mega, điện áp từ 7V đến 20V. Mặt khác điện áp được cấp bởi jack nguồn DC có thể được lấy thơng qua chân này. Tuy nhiên, điện áp đầu ra thông qua chân này đến mạch Arduino sẽ được tự động thiết lập là 5V.

Chân truyền Chân truyền thông nối tiếp (Serial Communication): RXD và 7

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

thông nối tiếp TXD là các chân nối tiếp được sử dụng để truyền và nhận dữ liệu nối tiếp, chân Rx đại diện cho việc truyền dữ liệu còn Tx được sử dụng để nhận dữ liệu. Có tất cả 4 kết hợp các chân nối tiếp này được sử dụng trong đó Serial 0 là chân RX (0) và TX (1), serial 1 là chân TX (18) và RX (19), serial 2 là chân TX (16) và RX (17), và serial 3 là chân TX (14) và RX (15).Chân Ngắt ngoài Sáu chân được sử dụng để tạo các ngắt ngồi đó là ngắt 0 (chân

0), ngắt 1 (chân 3), ngắt 2 (chân 21), ngắt 3 (chân 20), ngắt 4 (chân 19), ngắt 5 (chân 18). Các chân này tạo ra các ngắt bằng một số cách tức là cung cấp giá trị low, tăng hoặc giảm hoặc thay đổi giá trị cho các chân ngắt.

Đèn LED Arduino Mega 2560 tích hợp đèn led trên board mạch kết nối với chân mười ba. Giá trị high đèn led được bật và low đèn led tắt. Giúp người lập trình quan sát trực quan khi test, kiểm tra chương trình trên board Arduino.

Chân AREF Chân tạo điện áp tham chiếu cho đầu vào AnalogCác chân tương

Có mười sáu chân Analog được tích hợp trên board Arduino có ký hiệu là A0 đến A15. Điều quan trọng cần lưu ý là tất cả các chân Analog này có thể được sử dụng làm chân I/O Digital. Mỗi chân Analog đi kèm với độ phân giải 10 bit. Các chân này có thểcó điện áp thay đổi tử 0V đến 5V.

Giao tiếp I2C Hai chân 20 và 21 hỗ trợ giao tiếp I2C trong đó 20 đại diện cho SDA (Dịng dữ liệu nối tiếp chủ yếu được sử dụng để giữ dữ liệu) và 21 đại diện cho SCL (Dòng đồng hồ nối tiếp chủ yếu được sử dụng để cung cấp đồng bộ hóa dữ liệu giữa các thiết bị).

Truyền thơng SPI Được sử dụng để truyền dữ liệu giữa Arduino và các thiết bị ngoại vi khác. Chân 50 (MISO), Chân51 (MOSI), Chân 52 (SCK), Chân 53 (SS) được sử dụng để liên lạc SPI.

<i><b>2.2.4 LCD 16x2 và module I2C Arduino</b></i>

Là một linh kiện điện tử được sử dụng rộng dãi trong các dự án điện tử và lậptrình. Được sử dụng để hiện thị các trạng thái hoặc thông số.

8

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

<i>Hình 2. 4 Màn hình LCD 16x2</i>

Thơng số kĩ thuật của LCD 16x2:

- LCD 16x2 có mười sáu chân trong đó tám chân dữ liệu (D0 - D7) và ba chân điềukhiển (RS, RW, EN).

- Năm chân còn lại dùng để cấp nguồn và đèn nền cho LCD 16x2.

- Các chân điều khiển giúp ta dễ dàng cấu hình LCD ở chế độ lệnh hoặc chế độ dữliệu.

- Chúng cịn giúp ta cấu hình ở chế độ đọc hoặc ghi.- Chức năng liên kết các chân LCD

<i>Bảng 2-3 Bảng ký hiệu và chi tiết chân LCD</i>

1 VSS Chân nối đất cho LCD, khi thiết kế mạch ta nối chân này với GND của mạch điều khiển

2 VDD Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân nàyvới VCC=5V của mạch điều khiển

3 VEE Điều chỉnh độ tương phản của LCD

4 RS logic “0” (GND) hoặc logic “1” (VCC) để chọn thanh ghi.<sup>Chân chọn thanh ghi (Register select). Nối chân RS với </sup>+ Logic “0”: Bus DB0 - DB7 sẽ nối với thanh ghi lệnh IR của LCD (ở chế độ “ghi” - write) hoặc nối với bộ đếm địa chỉ của LCD (ở chế độ “đọc” - read)

+ Logic “1”: Bus DB0 - DB7 sẽ nối với thanh ghi dữ liệu DR bên trong LCD.

9

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

chuông bật và hệ thống vộ hiệu hóa trong hai phút sau hai phút tắt chng người dùngphải thực hiện quy trình mở cửa lại từ đầu.

- Ngồi ra hệ thống cung có một chng ở ngồi cửa dành cho khác khi bấmchng thì hệ thống sẽ gửi thông báo và đồng thời chuông sẽ bật cho đến khi ngừng bấmchng.

<b>3.2 Lưu đồ thuật tốn</b>

<i><b>3.2.1 Lưu đồ thuật tốn hệ thống</b></i>

<i>Hình 3. 1 Lưu đồ thuật toán hệ thống</i>

25

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

<i><b>3.2.2 Lưu đồ thuật tốn dùng mật mã với phím ma trận 4x4</b></i>

<i>Hình 3. 2 Lưu đồ thuật tốn với phím ma trận 4x4</i>

26

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

<i><b>3.2.3 Lưu đồ thuật tốn với Ethernet</b></i>

<i>Hình 3. 3 Lưu đồ thuật toán với ethernet</i>

27

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

<i><b>3.2.4 Lưu đồ thuật tốn đóng mở cửa</b></i>

<i>Hình 3. 4 Lưu đồ thuật tốn đóng mở cửa với cảm biến</i>

<b>3.3 Phần lập trình các chương trình điều khiển cửa thơng minh</b>

<i><b>3.3.1 Lập trình arduino</b></i>

#include <Servo.h>#include <Keypad.h>

#include <LiquidCrystal_I2C.h>#define Password_Length 7#include <SPI.h>#include <MFRC522.h>#include <SPI.h>#include <MFRC522.h>

28

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

String tag;

#define SS_PIN 53 //định nghĩa chân#define RST_PIN 49

MFRC522 mfrc522(SS_PIN, RST_PIN);Servo servo1;

Servo servo2;int pos = 18;int door_status = 0;int white_button = 0;int count_key = 0;int coi = 22;int count = 0;int dem = 0;int dem1 = 0;int update_web = 4;int RFID = 0;int x = 0;int lap = 0;

char Data[Password_Length];

char Master[Password_Length] = "123456";byte data_count = 0, master_count = 0;bool Pass_is_good;

LiquidCrystal_I2C lcd(0x27, 16, 2);const byte ROWS = 4;

const byte COLS = 4;

char hexaKeys[ROWS][COLS] = { {'1', '2', '3', 'A'},

{'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}};

byte rowPins[ROWS] = {43, 41, 39, 37};byte colPins[COLS] = {42, 40, 38, 36};

Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

29

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

//********************************************************//void setup() {

SPI.begin(); // Kích hoạt cổng truyền thơng giao tiếp SPI mfrc522.PCD_Init(); // Initiate MFRC522

pinMode(coi, OUTPUT); lcd.init();

lcd.backlight();

servo1.attach(7); servo1.write(pos); servo2.attach(32); servo2.write(145); Serial.begin(9600); SPI.begin();

mfrc522.PCD_Init(); // Initiate MFRC522 pinMode(update_web, OUTPUT);}

//************************************************************//void face() {

if (!Serial.available()) {

x = Serial.readString().toInt(); }

// Serial.print(x);

}

//************************************************************//void the_tu() {

if ( ! mfrc522.PICC_IsNewCardPresent()) return;

if (mfrc522.PICC_ReadCardSerial()) { for (byte i = 0; i < mfrc522.uid.size; i++) { tag += mfrc522.uid.uidByte[i]; }

} {

if ( tag == "1952541709" or tag == "8222710633") {

open_door(); RFID = 1;

30

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

delay(3000); close_door(); tag.remove(0, 15); }

else {

lcd.clear(); lcd.setCursor(3, 0); lcd.print("Incorrect"); delay(3000); tag.remove(0, 15); }

}}

void open_door(){

lcd.clear(); lcd.setCursor(4, 0); lcd.print("WELLCOME"); digitalWrite(update_web, HIGH); servo2.write(0);

for (pos = 18; pos <= 140; pos += 1) { servo1.write(pos);

delay(10); }

door_status = 1;}

void close_door(){

for (pos = 140; pos >= 18; pos -= 1) { servo1.write(pos);

delay(10);

if (digitalRead(33) == 1) {

for (pos; pos <= 140; pos += 1) {

servo1.write(pos); delay(10); }

door_status = 1; break;

31

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

}

if (pos == 18) {

delay(500); servo2.write(145); door_status = 0; RFID = 0; white_button = 0; dem = 0;

digitalWrite(update_web, LOW); }

}}

void password(){

char customKey = customKeypad.getKey(); if (customKey) {

// if (count == 0) lcd.clear(); count += 1; lcd.setCursor(0, 0);

lcd.print("NHAP MAT KHAU:"); Data[data_count] = customKey; lcd.setCursor(data_count, 1); lcd.print(Data[data_count]); data_count++;

Serial.println(customKey); }

if (data_count == Password_Length - 1) { lcd.clear();

if (!strcmp(Data, Master)) { open_door();

delay(5000); close_door(); count_key = 0; count = 0; } else {

count_key += 1; lap = 0;

32

</div>

×