Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 43 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
43
Dung lượng
1,68 MB
Nội dung
LỜI CẢM ƠN Trong suốt thời gian học tập vừa qua, dẫn, giúp đỡ quý thầy cô trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh, thơng qua đồ án mơn học này, em xin gửi lời cảm ơn chân thành đến: Quý thầy cô Khoa Điện – Điện tử, đặc biệt thầy cô thuộc Bộ môn Điện Tử Cơng Nghiệp tận tình bảo chúng em suốt q trình học tập Q thầy khoa có liên quan cung cấp cho chúng em kiến thức cần thiết sinh viên Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh tạo điều kiện cho em học tập, nghiên cứu suốt thời gian qua Đặc biệt, nhóm chúng em xin gởi lời cảm ơn sâu sắc đến Thầy ThS NGUYỄN ĐÌNH PHÚ, góp ý, hướng dẫn chia sẻ nhiều kinh nghiệm quý báu giúp cho chúng em hoàn thành thực tốt đề tài Đồ án môn học Chúng em xin chân thành cảm ơn! Sinh viên thực : Cao Đức Hiếu – 16141150 Huỳnh Trương Bá Khôi - 16141187 MỤC LỤC Chương 1: 1.1 GIỚI THIỆU 1.2 GIỚI HẠN .7 Chương 2: 2.1 GIỚI THIỆU 2.2 THIẾT KẾ SƠ ĐỒ KHỐI 2.2.1 VẼ SƠ ĐỒ KHỐI 2.2.2 CHỨC NĂNG VÀ GIẢI THÍCH TỪNG KHỐI 2.3 THIẾT KẾ SƠ ĐỒ NGUYÊN LÍ 2.3.1 KHỐI ĐIỀU KHIỂN TRUNG TÂM 2.3.2 KHỐI HIỂN THỊ 12 a Chuẩn giao tiếp I2C: 12 b LCD 16x2: .13 c Kết nối với I2C: 15 d Kết nối với Arduino Uno: 16 2.3.3 KHỐI TÍN HIỆU VÀO 17 2.3.4 KHỐI NGÕ RA 20 a Động RC Servo: 20 b Còi Buzzer: 22 2.3.5 KHỐI NGUỒN 23 2.3.6 SƠ ĐỒ NGUYÊN LÝ TOÀN MẠCH .23 Sinh viên thực : Cao Đức Hiếu – 16141150 Huỳnh Trương Bá Khôi - 16141187 ĐỒ ÁN MƠN HỌC MẠCH KHĨA SỐ ĐIỆN TỬ SỬ DỤNG ARDUINO Chương 3: 25 3.1 THI CÔNG PCB 25 3.2 HÀN LINH KIỆN 26 3.3 VIẾT CHƯƠNG TRÌNH ĐIỀU KHIỂN 28 3.3.1 YÊU CẦU GIẢI THUẬT 28 3.3.2 LƯU ĐỒ GIẢI THUẬT 28 3.3.3 PHẦN MỀM LẬP TRÌNH ARDUINO IDE 31 3.3.4 CHƯƠNG TRÌNH ĐIỀU KHIỂN 35 Chương 4: 40 4.1 KẾT QUẢ THỰC HIỆN 40 4.2 HƯỚNG PHÁT TRIỂN 41 Sinh viên thực : Cao Đức Hiếu – 16141150 Huỳnh Trương Bá Khơi - 16141187 ĐỒ ÁN MƠN HỌC MẠCH KHÓA SỐ ĐIỆN TỬ SỬ DỤNG ARDUINO MỤC LỤC HÌNH ẢNH : Hình Sơ đồ khối hệ thống khóa số điện tử Hình Board Arduino UNO R3 10 Hình Sơ đồ kết nối thiết bị theo chuẩn giao tiếp I2C 12 Hình LCD 16x02 .14 Hình Module giao tiếp I2C 15 Hình Kết nối Module I2C với LCD 16 Hình Kết nối LCD I2C với Arduino Uno 16 Hình Keypad 4x4 .17 Hình Ma trận phím 4x4 .18 Hình 10 Các chân Keypad 19 Hình 11 Động RC Servo 9G 20 Hình 12 Tín hiệu điều khiển động RC Servo 21 Hình 13 Cịi Buzzer 22 Hình 14 Sơ đồ nguyên lý Mạch khóa số tự động sử dụng Arduino UNO 24 Hình 15 Sơ đồ mạch in 26 Hình 16 Mạch sau hàn xong 26 Hình 17 Mạch gắn linh kiện 27 Hình 18 Mạch hồn chỉnh 27 Hình 19 Lưu đồ chương trình điều khiển Mạch khóa số điện tử sử dụng Arduino 29 Hình 20 Lưu đồ chương trình 30 Hình 21 Biểu tượng phần mềm 31 Hình 22 Giao diện mơi trường lập trình cho Arduino 32 Hình 23 Nhấn vào Windows ZIP file for non admin install 33 Hình 24 Nhấp vào JUST DOWNLOAD để tải phần mềm 33 Hình 25 Giải nén file vừa tải 34 Hình 26 Giao diện Arduino IDE 34 Sinh viên thực : Cao Đức Hiếu – 16141150 Huỳnh Trương Bá Khơi - 16141187 ĐỒ ÁN MƠN HỌC MẠCH KHÓA SỐ ĐIỆN TỬ SỬ DỤNG ARDUINO Chương 1: GIỚI THIỆU YÊU CẦU – GIỚI HẠN CỦA ĐỀ TÀI 1.1 GIỚI THIỆU Khóa cửa dụng cụ thường làm kim loại để ngăn việc mở cửa, làm với mục đích khơng cho người khác mở cửa không cho phép Muốn mở cửa khóa phải có chìa khóa làm kim loại khóa khóa ổ, yêu cầu khác thẻ từ, vân tay, nhận dạng hình ảnh, nhập mã số,…đối với khóa điện tử Khóa điện tử khái niệm khóa cửa điện tử, sử dụng để thay khóa truyền thống việc sử dụng công nghệ thông minh giúp cho ổ khóa mở điều khiển từ xa mở mã số, vân tay, Trước đây, tính thường áp dụng cho nơi cần an ninh tuyệt đối, ứng dụng rộng rãi để tạo ổ khóa điện tử thơng minh hữu ích sống Ưu điểm khóa điện tử: Tiện lợi, không cần mang theo, không sợ hay để qn chìa khóa An tồn, bảo mật cao Dễ sử dụng Đa dạng kiểu dáng Bên cạnh phát triển vi xử lí, vi điều khiển, IC số ngày thơng dụng hồn thiện Khóa điện tử ngày tối ưu hơn: nhỏ gọn hơn, xử lý nhanh hơn, dễ sử dụng hơn, Nhưng nói xuất Arduino vào năm 2005 Italia mở hướng Sự xuất Arduino hỗ trợ cho người nhiều lập trình thiết kế Phần cứng thiết bị tích hợp nhiều chức mã nguồn mở Thư viện phong phú chia sẻ miễn phí Dựa vào yếu tố chúng em chọn đề tài “THIẾT KẾ MẠCH KHĨA SỐ DÙNG ARDUINO” để nghiên cứu chọn làm đề tài Đồ án môn học Sinh viên thực : Cao Đức Hiếu – 16141150 Huỳnh Trương Bá Khơi - 16141187 ĐỒ ÁN MƠN HỌC MẠCH KHÓA SỐ ĐIỆN TỬ SỬ DỤNG ARDUINO Nội dung đề tài xây dựng hệ thống theo dõi, điều khiển đóng mở cửa vào, tùy chỉnh mã số theo ý muốn, cảnh báo nhập sai mã cố gắng mở khóa khơng cho phép 1.2 GIỚI HẠN Sử dụng Board Arduino Uno để làm khối điều khiển trung tâm Sử dụng LCD 16x2 để hiển thị Sử dụng Keypad 4x4 để nhập mật mã Sử dụng động Servo để điều khiển chốt cửa Sử dụng còi chip 5v để phát tiếng báo động Giới hạn mã số chữ số, không dùng chữ ký tự đặc biệt Sinh viên thực : Cao Đức Hiếu – 16141150 Huỳnh Trương Bá Khôi - 16141187 ĐỒ ÁN MƠN HỌC MẠCH KHĨA SỐ ĐIỆN TỬ SỬ DỤNG ARDUINO Chương 2: THIẾT KẾ SƠ ĐỒ KHỐI 2.1 GIỚI THIỆU Đề tài giám sát việc đóng mở cửa mã số Người dùng quản lý việc đóng mở cửa, nhận cảnh báo có người cố gắng mở cửa mà chưa cho phép Có thể trực tiếp thay đổi mã số cần Màn hình hiển thị đầy đủ thơng tin cần thiết cho người dùng sử dụng điện 2.2 THIẾT KẾ SƠ ĐỒ KHỐI 2.2.1 VẼ SƠ ĐỒ KHỐI Theo yêu cầu đề tài nhóm chúng em tiến hành thiết kế sơ đồ khối mạch khóa số điện tử dùng Arduino Hình 2.1: Hình Sơ đồ khối hệ thống khóa số điện tử Sinh viên thực : Cao Đức Hiếu – 16141150 Huỳnh Trương Bá Khơi - 16141187 ĐỒ ÁN MƠN HỌC MẠCH KHÓA SỐ ĐIỆN TỬ SỬ DỤNG ARDUINO 2.2.2 CHỨC NĂNG VÀ GIẢI THÍCH TỪNG KHỐI Khối nguồn: Cung cấp nguồn cho toàn mạch, đề tài sử dụng loại nguồn 5VDC cấp cho mạch điều khiển, động chuông báo động Khối điều khiển trung tâm: Ở sử dụng điều khiển trung tâm Board Arduino Uno, tạo lệnh điều khiển, điều khiển hoạt động hệ thống, nhận tín hiệu từ Keypad gửi tín hiệu điều khiển sang khối khác Khối tín hiệu vào: Sử dụng Keypad 4x4 đề nhập mã số, sau gửi Board Arduino để xử lý Khối hiển thị: Sử dụng LCD 16x2 để hiển thị mã số kết Khối ngõ ra: Sử dụng động Servo để điều khiển đóng mở cửa chng để cảnh báo 2.3 THIẾT KẾ SƠ ĐỒ NGUYÊN LÍ 2.3.1 KHỐI ĐIỀU KHIỂN TRUNG TÂM Trong năm gần đây, phát triển mạnh mẽ Arduino cho thấy tầm ảnh hưởng nhiều tới giới tại, với cộng đồng mạng hỗ trợ, thư viện hỗ trợ hầu hết module, sản phẩm thiết bị ngoại vi khác, thấy quan trọng phù hợp với yêu cầu đề tài này, nên nhóm chúng em chọn Arduino Các loại điều khiển trung tâm khác sử dụng thiết kế lập trình phức tạp hơn, nên lựa chọn Arduino để đơn giản hóa khâu thiết kế, lập trình, … Bộ điều khiển trung tâm chúng em chọn sử dụng Arduino UNO R3 lập trình kết nối dễ dàng nhờ cộng đồng người dùng đông đảo Arduino UNO R3 sử dụng vi điều khiển ATmega328 họ bit, với 14 chân digital dùng để đọc xuất tín hiệu Arduino UNO cấp nguồn 5V thông qua cổng USB cấp nguồn với điện áp khuyên dùng 7-12V DC giới hạn 6-20V Thường cấp nguồn pin vng 9V hợp lí khơng có sẵn nguồn từ cổng USB Nếu cấp nguồn vượt ngưỡng giới hạn trên, làm hỏng Arduino UNO Bên cạnh đó, điều khiển trung tâm thiết bị ngõ lắp đặt hộp điều khiển để đảm bảo việc hệ thống vận hành an toàn tốt Sinh viên thực : Cao Đức Hiếu – 16141150 Huỳnh Trương Bá Khơi - 16141187 ĐỒ ÁN MƠN HỌC MẠCH KHĨA SỐ ĐIỆN TỬ SỬ DỤNG ARDUINO Hình Board Arduino UNO R3 - Các chân lượng: GND (Ground): cực âm nguồn điện cấp cho Arduino UNO Khi bạn dùng thiết bị sử dụng nguồn điện riêng biệt chân phải nối với 5V: cấp điện áp 5V đầu Dòng tối đa cho phép chân 500mA 3.3V: cấp điện áp 3.3V đầu Dòng tối đa cho phép chân 50mA Vin (Voltage Input): để cấp nguồn cho Arduino UNO, bạn nối cực dương nguồn với chân cực âm nguồn với chân GND IOREF: điện áp hoạt động vi điều khiển Arduino UNO đo chân Và dĩ nhiên ln 5V Mặc dù bạn không lấy nguồn 5V từ chân để sử dụng chức khơng phải cấp nguồn RESET: việc nhấn nút Reset board để reset vi điều khiển tương đương với việc chân RESET nối với GND qua điện trở 10KΩ - Các cổng vào ra: Arduino UNO có 14 chân digital dùng để đọc xuất tín hiệu Chúng có mức điện áp 0V 5V với dòng vào/ra tối đa chân 40mA Ở chân có điện trở pull-up từ cài đặt vi điều khiển ATmega328 (mặc định điện trở khơng kết nối) Sinh viên thực : Cao Đức Hiếu – 16141150 Huỳnh Trương Bá Khôi - 16141187 ĐỒ ÁN MƠN HỌC MẠCH KHĨA SỐ ĐIỆN TỬ SỬ DỤNG ARDUINO Chân Serial: (RX) (TX): dùng để gửi (transmit – TX) nhận (receive – RX) liệu TTL Serial Arduino Uno giao tiếp với thiết bị khác thông qua chân Kết nối bluetooth thường thấy nói nơm na kết nối Serial không dây Nếu không cần giao tiếp Serial, bạn không nên sử dụng chân không cần thiết Chân PWM: 3, 5, 6, 9, 10, 11: cho phép bạn xuất xung PWM với độ phân giải 8bit (giá trị từ → 28-1 tương ứng với 0V → 5V) hàm analogWrite() Nói cách đơn giản, bạn điều chỉnh điện áp chân từ mức 0V đến 5V thay cố định mức 0V 5V chân khác Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) Ngoài chức thơng thường, chân cịn dùng để truyền phát liệu giao thức SPI với thiết bị khác LED 13: Arduino UNO có đèn led màu cam (kí hiệu chữ L) Khi bấm nút Reset, bạn thấy đèn nhấp nháy để báo hiệu Nó nối với chân số 13 Khi chân người dùng sử dụng, LED sáng Arduino UNO có chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10bit (0 → 210-1) để đọc giá trị điện áp khoảng 0V → 5V Với chân AREF trên board, bạn để đưa vào điện áp tham chiếu sử dụng chân analog Tức bạn cấp điện áp 2.5V vào chân bạn dùng chân analog để đo điện áp khoảng từ 0V → 2.5V với độ phân giải 10bit Đặc biệt, Arduino UNO có chân A4 (SDA) A5 (SCL) hỗ trợ giao tiếp I2C/TWI với thiết bị khác Bảng 2.1: Thông số kỹ thuật Board Arduino UNO Điện áp hoạt động Điện áp vào (đề nghị) Điện áp vào (giới hạn) Chân số (Digital I/O) Chân tương tự Dòng tối đa chân I/O Dòng tối đa ( 5V ) 5V 7V – 12V 6V – 20V 14 ( chân PWM ) ( độ phân giải 10bit ) 30 mA 500 mA Sinh viên thực : Cao Đức Hiếu – 16141150 Huỳnh Trương Bá Khơi - 16141187 10 ĐỒ ÁN MƠN HỌC MẠCH KHÓA SỐ ĐIỆN TỬ SỬ DỤNG ARDUINO LƯU ĐỒ CHƯƠNG TRÌNH CON: Nhập mật Mở cửa Cảnh báo LCD hiển thị ³ VO HIEU HOA ´ LCD hiển thị ³ Correct ³ Quét mã phím Buzzer ON Servo ON Hiển thị lên LCD Buzzer OFF LCD ³ OPEN ³ Lưu giá trị Reset biến Reset biến i==4 Kết thúc Kết thúc Biến count=1 Hình 20 Lưu đồ chương trình Lưu đồ chương trình chính: Khi cấp nguồn mạch bắt đầu hoạt động LCD hiển thị “HELLO”, chưa cho phép nhập mật khấu Khi nhấn phím A Keypad, LCD hiển thị “Enter Password” hàng 1, biến i=1 cho phép bắt đầu nhập mật Chạy chương trình “Nhập mật khẩu” Trong q trình nhâp mật ta nhấn phím “#” Keypad chương trình dừng lại cho phép nhập mật quay trở ban đầu, biến i=0 Khi nhập xong mật khẩu, biến count=1, thực kiểm tra mật So sánh mảng mật vừa nhập srt[ ] với mảng mật đặt trước SRT[ ] Mật nhập vào chạy chương trình mở cửa Mật sai biến i=1, biến count=0, cho phép nhập lại mật đồng thời tăng biến cảnh báo (cb+ +) Nếu nhập sai mật lần liên tiếp, biến cảnh báo cb=3 chạy chương trình cảnh báo Sinh viên thực : Cao Đức Hiếu – 16141150 Huỳnh Trương Bá Khôi - 16141187 29 ĐỒ ÁN MƠN HỌC MẠCH KHĨA SỐ ĐIỆN TỬ SỬ DỤNG ARDUINO Chương trình nhập mật khẩu: Thực quét mã phím Keypad, giá trị phím nhấn gán cho biến Key Biến i=1, nhập số mật khấu, mật nhập vào từ Keypad lưu vào mảng srt[ ] hiển thị hàng LCD giây sau chuyển thành “*”, tăng biến i lên đơn vị (i++) Với i=4, thực nhập số cuối mật biến count=1 Chương trình mở cửa: LCD hiển thị dịng chữ “Correct” để thơng báo mật nhập vào đúng, sau 2s hệ thống điều khiển động Servo góc 90 độ để mở chốt cửa, LCD hiển thị “OPEN” chương trình kết thúc Nếu mật nhập vào sai, LCD hiển thị “Incorrect!” delay 3s, LCD hiển thị “Try Again”, bắt đầu nhập lại mật khẩu, biến cảnh báo tăng lên (cb++) Chương trình cảnh báo: Khi biến cảnh báo (cb=3), chương trình dừng cho phép nhập mật KEY=0, LCD hiển thị “VO HIEU HOA”, còi Buzzer bật để phát cảnh báo, sau phút cịi tắt, reset tất biến, chương trình kết thúc 3.3.3 PHẦN MỀM LẬP TRÌNH ARDUINO IDE Hình 21 Biểu tượng phần mềm Được giới thiệu vào năm 2005, Những nhà thiết kế Arduino cố gắng mang đến phương thức dễ dàng, không tốn cho người yêu thích, sinh viên giới chuyên nghiệp để tạo thiết bị có khả tương tác với môi trường thông qua cảm biến cấu chấp hành Arduino thật bo mạch vi xử lý dùng để lập trình tương tác với thiết bị phần cứng cảm biến, động cơ, đèn thiết bị khác Đặc điểm bật Arduino môi trường phát triển ứng dụng dễ sử dụng, với ngôn ngữ lập Sinh viên thực : Cao Đức Hiếu – 16141150 Huỳnh Trương Bá Khôi - 16141187 30 ĐỒ ÁN MƠN HỌC MẠCH KHĨA SỐ ĐIỆN TỬ SỬ DỤNG ARDUINO trình học cách nhanh chóng với người am hiểu điện tử lập trình Và điều làm nên tượng Arduino mức giá thấp tính chất nguồn mở từ phần cứng tới phần mềm Arduino thực gây sóng gió thị trường người dùng DIY (là người tự chế sản phẩm mình) tồn giới vài năm gần đây, gần giống với Apple làm thị trường thiết bị di động Số lượng người dùng cực lớn đa dạng với trình độ trải rộng từ bậc phổ thông lên đến đại học làm cho người tạo chúng phải ngạc nhiên mức độ phổ biến Các ứng dụng bật board mạch Arduino: robot đơn giản, điều khiển nhiệt độ, phát chuyển động, game tương tác Sơ lược mơi trường lập trình Arduino Software: Thiết kế bo mạch nhỏ gọn, trang bị nhiều tính thơng dụng mang lại nhiều lợi cho Arduino, nhiên sức mạnh thực Arduino nằm phần mềm Mơi trường lập trình đơn giản dễ sử dụng, ngơn ngữ lập trình Wiring dễ hiểu dựa tảng C/C++ quen thuộc với người làm kỹ thuật Và quan trọng số lượng thư viện code viết sẵn chia sẻ cộng đồng nguồn mở lớn Hình 22 Giao diện mơi trường lập trình cho Arduino Giao diện lập trình đơn giản, dễ sử dụng Có button Verify để biên dịnh chương trình button Upload để nạp chương trình vào board Arduino Ngồi IDE cịn cung Sinh viên thực : Cao Đức Hiếu – 16141150 Huỳnh Trương Bá Khơi - 16141187 31 ĐỒ ÁN MƠN HỌC MẠCH KHÓA SỐ ĐIỆN TỬ SỬ DỤNG ARDUINO cấp số ví dụ bản, người dùng mở để tham khảo qua vài thao tác đơn giản Cài đặt Arduino IDE Bước 1: Truy cập địa http://arduino.cc/en/Main/Software/ Đây nơi lưu trữ cập nhật IDE Arduino Bấm vào mục Windows Zip file for non admin install hình minh họa Hình 23 Nhấn vào Windows ZIP file for non admin install Sau chuyển đến trang mời quyền góp tiền để phát triển phần mềm cho Arduino, tiếp tục bấm JUST DOWNLOAD để bắt đầu tải Hình 24 Nhấp vào JUST DOWNLOAD để tải phần mềm Bước 2: Sau download xong, ta bấm chuột phải vào file arduino-1.8.5 windows.zip vừa Download chọn “Extract here” để giải nén Sinh viên thực : Cao Đức Hiếu – 16141150 Huỳnh Trương Bá Khôi - 16141187 32 ĐỒ ÁN MƠN HỌC MẠCH KHĨA SỐ ĐIỆN TỬ SỬ DỤNG ARDUINO Hình 25 Giải nén file vừa tải Bước 3: Copy thư mục arduino-1.8.5 vừa giải nén đến nơi lưu trữ Bước 4: Chạy file arduino.exe thư mục arduino-1.8.5 để khởi động Arduino IDE Hình 26 Giao diện Arduino IDE Giao diện gồm nút lệnh menu (File, Edit, Sketch, Tools, Help) Phía icon cho phép sử dụng nhanh chức thường dùng IDE miêu tả sau: Bảng 3.2: Các nút lệnh thường dùng: Ico n Chức Biên dịch chương trình soạn thảo để kiểm tra lỗi lập trình Sinh viên thực : Cao Đức Hiếu – 16141150 Huỳnh Trương Bá Khôi - 16141187 33 ĐỒ ÁN MƠN HỌC MẠCH KHĨA SỐ ĐIỆN TỬ SỬ DỤNG ARDUINO Biên dịch upload chương trình soạn thảo Mở trang soạn thảo Mở chương trình lưu Lưu chương trình soạn Mở cửa sổ Serial Monitor để gửi liệu máy tính board Arduino 3.3.4 CHƯƠNG TRÌNH ĐIỀU KHIỂN #include // Khai báo thư viện sử dụng cho động #include // Khai báo thư viện LCD sử dụng I2C LiquidCrystal_I2C lcd(0x3f, 16, 2); // 0x3f địa LCD, 16 cột hàng #include // Khai báo thư viện Keypad Khai báo thư viện sử dụng, sau dòng khai báo thư viện I2C phải khai báo loại LCD sử dụng với địa LCD số cột số hàng, LCD 16 cột hàng const byte ROWS = 4; // Bốn hàng const byte COLS = 4; // bốn cột char keys[ROWS][COLS] = { {'1', '2', '3','A'}, {'4', '5', '6','B'}, {'7', '8', '9','C'}, {'*', '0', '#','D'}}; byte rowPins[ROWS] = {2, 3, 4, 5}; //chân kết nối byte colPins[COLS] = {6, 7, 8, 9}; Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS); Servo myServo; Sinh viên thực : Cao Đức Hiếu – 16141150 Huỳnh Trương Bá Khôi - 16141187 34 ĐỒ ÁN MƠN HỌC MẠCH KHĨA SỐ ĐIỆN TỬ SỬ DỤNG ARDUINO Khai báo loại Keypad sử dụng số hàng với số cột 4, chuỗi ma trận mã ký tự cho Keypad lúc ứng với vị mã phím lấy ký tự chuỗi Khai báo chân kết nối cho Keypad theo hàng cột Dòng cuối khai báo tên cho động Servo sử dụng char STR[4] = {'2', '0', '1', '8'}; // Cài đặt mật tùy ý char str[4] = {' ', ' ', ' ', ' '}; int i, count = 0, cb = 0; Tạo mảng để lưu mật mật nhập vào từ Keypad, tùy ý đặt mật Khai báo biến sử dụng chương trình Kiểu int kiểu số nguyên dùng chương trình Arduino, kiểu int chiếm 2byte nhớ với Arduino Uno có giá trị 16bit void setup() { myServo.attach(10); // Khai báo chân điều khiển động pinMode(11,OUTPUT); lcd.init(); // Khai báo sử dụng LCD lcd.begin(16, 2); lcd.backlight(); lcd.clear(); lcd.print(" HELLO"); } Chương trình điều khiểu Ở ta khai báo chân điều khiển cho Servo chân số 10, ngõ chân 11 để điều khiển còi Buzzer Khai báo sử dụng LCD, màu nền, xóa hình hiển thị dịng chữ “HELLO” lên LCD void loop() { char key = keypad.getKey(); // Ký tự nhập vào gán cho biến Key switch (key) { case 'A': lcd.clear(); lcd.print(" Enter Password"); i = 1; break; } Bắt đầu chương trình Đầu tiên ta gán ký tự nhập vào từ Keypad cho biến Key Ta dùng lệnh switch/ case để điều khiển riêng biệt cho mã phím, mã phím nhập vào “A” cho biến i=1 phép nhập mật LCD in dịng “Enter Password” để thơng báo phép nhập mật if (key && i>0) // Nhập mật { Sinh viên thực : Cao Đức Hiếu – 16141150 Huỳnh Trương Bá Khôi - 16141187 35 ĐỒ ÁN MƠN HỌC MẠCH KHĨA SỐ ĐIỆN TỬ SỬ DỤNG ARDUINO if (i == 1) { str[0] = key; lcd.setCursor(6, 1); lcd.print(str[0]); delay(1000); // Ký tự hiển thị hình LCD 1s lcd.setCursor(6, 1); lcd.print("*"); // Ký tự che dấu * } if (i == 2) { str[1] = key; lcd.setCursor(7, 1); lcd.print(str[1]); delay(1000); lcd.setCursor(7, 1); lcd.print("*"); } if (i == 3) { str[2] = key; lcd.setCursor(8, 1); lcd.print(str[2]); delay(1000); lcd.setCursor(8, 1); lcd.print("*"); } if (i == 4) { str[3] = key; lcd.setCursor(9, 1); lcd.print(str[3]); delay(1000); lcd.setCursor(9, 1); lcd.print("*"); count = 1; } i = i + 1; } Ta dùng lệnh If để kiểm tra điều kiện, có phím nhấn với biến i>0 hay cho phép nhập mật Mật có số tương ứng với i=1,2,3,4 Với i có cấu trúc If thực nhập mật khẩu, ví dụ i=1, mã phím Keypad lưu vào vị trí “0” mảng str[ ], in giá trị mã phím lên LCD vị trí cột thứ hàng thứ 2,sau khoảng thời gian giây chuyển thành “*” để bảo vệ tính bảo mật cho mật Sau lần nhấn phím biến i tăng lên đơn vị (i++) để chuyển qua lệnh If tiếp theo, cấu trúc If với i=4 Sinh viên thực : Cao Đức Hiếu – 16141150 Huỳnh Trương Bá Khơi - 16141187 36 ĐỒ ÁN MƠN HỌC MẠCH KHÓA SỐ ĐIỆN TỬ SỬ DỤNG ARDUINO sau nhập xong mật biến count phép thực chương trình kiểm tra mật if (count == 1) { if (str[0] == STR[0] && str[1] == STR[1] && str[2] == STR[2] && str[3] == STR[3]) { lcd.clear(); lcd.print(" Correct!"); delay(2000); myServo.write(180); // Mở cửa lcd.clear(); lcd.print(" Opened!"); i = 0; count = 0; } else { lcd.clear(); lcd.print(" Incorrect!"); delay(3000); lcd.clear(); lcd.print(" Try Again!"); delay(3000); lcd.clear(); lcd.print(" Enter Password"); i = 1; count = 0; cb++; } } Khi biến count=1, ta dùng lệnh If để thực so sánh giá trị với hai mảng str[] STR[] Nếu giá trị hai mảng giống tức mật nhập vào xuất LCD dòng chữ “Correct”, delay 2s, dùng lệnh myServo.write() để điều khiển góc quay Servo mở chốt cửa Sau mở chốt LCD hiển thị “Opened”, reset biến i biến count Nếu mật nhập vào sai, LCD hiển thị “Incorrect” delay 3s LCD hiển thị “Try Again” delay 3s LCD hiển thị “Enter Password” đồng thời set biế i biến count 0, cho phép nhập lại mật đồng thời tăng biến cảnh báo lên đơn vị (cb++); if(cb==3)//chỉ có lần sai, tới lần vơ hiệu hóa khóa { lcd.clear(); lcd.print("VO HIEU HOA"); lcd.setCursor(3, 1); Sinh viên thực : Cao Đức Hiếu – 16141150 Huỳnh Trương Bá Khôi - 16141187 37 ĐỒ ÁN MƠN HỌC MẠCH KHĨA SỐ ĐIỆN TỬ SỬ DỤNG ARDUINO lcd.print("1 phut'"); digitalWrite(11,HIGH); delay(60000); digitalWrite(11,LOW); cb=0; i=0; count = 0; lcd.clear(); lcd.print(" HELLO"); } Nếu nhập sai mật lần liên tiếp, biến cb=3 LCD hiển thị “VO HIEU HOA” hàng thứ nhất, “1 phut” hàng thứ hai, chân 11 ngõ mức cao để bật còi Buzzer, delay phút, chân 11 ngõ mức thấp để tắt còi, reset biến 0, LCD hiển thị “HELLO” switch (key) { case '#': lcd.clear(); myServo.write(0); lcd.print(" Closed!"); delay(5000); lcd.clear(); lcd.print(" HELLO"); i = 0; break; } } Trong lúc thực chương trình, nhấn phím “#” Keypad, Servo quay góc độ, LCD hiển thị “Closed” delay 5s, LCD hiển thị “HELLO”, đưa chương trình quay ban đầu, reset tất biến Sinh viên thực : Cao Đức Hiếu – 16141150 Huỳnh Trương Bá Khôi - 16141187 38 ĐỒ ÁN MƠN HỌC MẠCH KHĨA SỐ ĐIỆN TỬ SỬ DỤNG ARDUINO Chương 4: KẾT QUẢ THỰC HIỆN – HƯỚNG PHÁT TRIỂN 4.1 KẾT QUẢ THỰC HIỆN Qua trình nghiên cứu thực đề tài, nhóm sinh viên thực đề tài nhận thấy đề tài có khả ứng dụng vào thực tế cao, đáp ứng nhu cầu ngày cao người xu hướng thời đại Đồng thời đề tài nguồn tài liệu có giá trị cho bạn sinh viên khóa tham khảo nghiên cứu đề tài liên quan Bên cạnh chúng em bổ sung cho kiến thức hay bổ ích Biết cách sử dụng Arduino Uno: Arduino Uno board mạch thông minh sử dụng rộng rãi Tuy nhiên, để sử dụng thành thạo đầy đủ chức khơng dễ Trong đề tài nhóm thực khả hiển thị thơng tin theo yêu cầu LCD 16x2, nhận thông tin giải mã để sử dụng từ Keypad 4x4, điều khiển động Servo Từ nhóm phát triển ý tưởng làm khóa thơng minh từ Arduino Biết cách sử dụng LCD 16x2 thông qua Arduino: LCD hình hiển thị đơn giản, giá thành rẻ dễ sử dụng Qua q trình nghiên cứu, thơng qua chuẩn giao tiếp I2C điều khiển Arduino, nhóm biết cách sử dụng LCD để hiển thị thông tin mong muốn Biết cách sử dụng Keypad 4x4: Keypad 4x4 thực chất ma trận phím nhấn với hàng cột 16 phím nhấn Qua q trình nghiên, nhóm cách dùng Arduino để nhận liệu phím nhấn từ Keypad sau sử lý mã phím để dùng cho với mục đích mong muốn Sinh viên thực : Cao Đức Hiếu – 16141150 Huỳnh Trương Bá Khơi - 16141187 39 ĐỒ ÁN MƠN HỌC MẠCH KHÓA SỐ ĐIỆN TỬ SỬ DỤNG ARDUINO Nhận xét: Sau thời gian 15 tuần nghiên cứu thực đề tài, mạch đáp ứng yêu cầu thiết kế ban đầu Sau số nhận xét: Ưu điểm: Giao diện thiết kế dễ sử dụng, tháo tác điều khiển đơn giản, thay đổi mật tùy ý, mạch chạy với yêu cầu, Hạn chế: Chỉ điều khiển chiều từ bên để mở cửa vào, chưa thể cảnh báo cho chủ nhà xa MƠ HÌNH MẠCH KHĨA SỐ ĐIỆN TỬ HỒN THIỆN Hình 27 Mặt trước sản phẩm Sinh viên thực : Cao Đức Hiếu – 16141150 Huỳnh Trương Bá Khôi - 16141187 40 ĐỒ ÁN MƠN HỌC MẠCH KHĨA SỐ ĐIỆN TỬ SỬ DỤNG ARDUINO Hình 28 Mặt sau sản phẩm 4.2 HƯỚNG PHÁT TRIỂN Tăng khả cảnh báo hệ thống, thông qua tin nhắn SMS mạng wifi để phát cảnh báo chủ nhà xa từ can thiệp thơng qua Smartphone để trực tiếp điều khiển khóa từ xa tăng an tồn Có thể thêm vài cảm biến nhiệt độ, độ ẩm, … phát cảnh báo có cố phát sinh nhà Thêm bảng điều khiển phía sau cánh cửa để người dùng chủ đơng điều khiển khóa nhà Thay mật số nhận diện vân tay khn mặt để tăng báo mật, tránh tình trạng để lộ mật quên mật Sinh viên thực : Cao Đức Hiếu – 16141150 Huỳnh Trương Bá Khơi - 16141187 41 ĐỒ ÁN MƠN HỌC MẠCH KHÓA SỐ ĐIỆN TỬ SỬ DỤNG ARDUINO TÀI LIỆU THAM KHẢO Sách hướng dẫn: [1] Nguyễn Đình Phú, “Giáo trình vi xử lý – Vi điều khiển pic”, NXB Trường ĐH Sư Phạm Kỹ Thuật Tp.HCM, 2016 [2] Phạm Quang Huy Lê Cảnh Trung, “Lập trình điều khiển với Arduino”, NXB Khoa Học Kỹ Thuật, 2014 [3] Nguyễn Văn Hiệp, “Giáo trình – Lập trình Android”, NXB Đại học Quốc gia Tp.HCM, 2014 Trang web tham khảo: [1] Cộng đồng Arduino Việt Nam, “Giới thiệu Arduino Uno R3”, 22/5/2014, http://arduino.vn/bai-viet/42-arduino-uno-r3-la-gi [7] Cộng đồng Arduino Việt Nam, “Chuẩn giao tiếp I2C”, 08/02/2015, http://arduino.vn/bai-viet/369-giao-tiep-i2c-va-su-dung-module-realtime-clockds1307 [9] Diễn đàn Arduino Việt Nam, “Động RC Servo 9G ”, 19/06/2014, http://arduino.vn/tutorial/1423-avr-dieu-khien-dong-co-servo-sieu-chuan-voi-biendo-goc-cuc-nho Sinh viên thực : Cao Đức Hiếu – 16141150 Huỳnh Trương Bá Khôi - 16141187 42 ĐỒ ÁN MƠN HỌC MẠCH KHĨA SỐ ĐIỆN TỬ SỬ DỤNG ARDUINO Sinh viên thực : Cao Đức Hiếu – 16141150 Huỳnh Trương Bá Khôi - 16141187 43 ... nhập mã số, …đối với khóa điện tử Khóa điện tử khái niệm khóa cửa điện tử, sử dụng để thay khóa truyền thống việc sử dụng công nghệ thông minh giúp cho ổ khóa mở điều khiển từ xa mở mã số, vân... mạch khóa số điện tử dùng Arduino Hình 2.1: Hình Sơ đồ khối hệ thống khóa số điện tử Sinh viên thực : Cao Đức Hiếu – 16141150 Huỳnh Trương Bá Khơi - 16141187 ĐỒ ÁN MƠN HỌC MẠCH KHÓA SỐ ĐIỆN TỬ SỬ... lý Mạch khóa số tự động sử dụng Arduino UNO Chương 3: Sinh viên thực : Cao Đức Hiếu – 16141150 Huỳnh Trương Bá Khôi - 16141187 23 ĐỒ ÁN MƠN HỌC MẠCH KHĨA SỐ ĐIỆN TỬ SỬ DỤNG ARDUINO THI CƠNG MẠCH