Thiết kế hệ thống giữ xe tự động dùng thẻ từ rfid và chế tạo mô hình thu nhỏ Thiết kế hệ thống giữ xe tự động dùng thẻ từ rfid và chế tạo mô hình thu nhỏ Thiết kế hệ thống giữ xe tự động dùng thẻ từ rfid và chế tạo mô hình thu nhỏ luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CƠ KHÍ CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự - Hạnh phúc NHẬN XÉT ĐỒ ÁN TỐT NGHIỆP Thông tin chung: Họ tên sinh viên: Nguyễn Lê Khanh - Nguyễn Anh Tuấn Lớp: 12CDT2 - 12CDT1 Số thẻ SV: 101120347 - 101120325 Tên đề tài: THIẾT KẾ HỆ THỐNG GIỮ XE TỰ ĐỘNG DÙNG THẺ TỪ RFID VÀ CHẾ TẠO MÔ HÌNH THU NHỎ Người hướng dẫn: Lưu Đức Bình Học hàm/ học vị: Tiến sĩ II Nhận xét, đánh giá đồ án tốt nghiệp: Về tính cấp thiết, tính mới, khả ứng dụng đề tài: (điểm tối đa 2đ) ……………………………………………………………………………………… ……………………………………………………………………………………… Về kết giải quyết nội dung nhiệm vụ yêu cầu đồ án: (điểm tối đa 4đ) ……………………………………………………………………………………… ……………………………………………………………………………………… Về hình thức, cấu trúc, bố cục đồ án tốt nghiệp: (điểm tối đa 2đ) ……………………………………………………………………………………… ……………………………………………………………………………………… Đề tài có giá trị khoa học/ có báo/ giải quyết vấn đề đặt doanh nghiệp nhà trường: (điểm tối đa 1đ) ……………………………………………………………………………………… ……………………………………………………………………………………… Các tồn tại, thiếu sót cần bổ sung, chỉnh sửa: ……………………………………………………………………………………… ……………………………………………………………………………………… III Tinh thần, thái độ làm việc sinh viên: (điểm tối đa 1đ) ……………………………………………………………………………………… IV Đánh giá: Điểm đánh giá:…… /10 (lấy đến số lẻ thập phân) Đề nghị: ☐ Được bảo vệ đồ án ☐ Bổ sung để bảo vệ ☐ Không bảo vệ Đà Nẵng, ngày tháng năm 2017 Người hướng dẫn ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CƠ KHÍ CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự - Hạnh phúc NHẬN XÉT PHẢN BIỆN ĐỒ ÁN TỐT NGHIỆP I Thông tin chung: Họ tên sinh viên: Nguyễn Lê Khanh - Nguyễn Anh Tuấn Lớp: 12CDT2 - 12CDT1 Số thẻ SV: 101120347 - 101120325 Tên đề tài: THIẾT KẾ HỆ THỐNG GIỮ XE TỰ ĐỘNG DÙNG THẺ TỪ RFID VÀ CHẾ TẠO MÔ HÌNH THU NHỎ Người phản biện: Châu Mạnh Lực Học hàm/ học vị: Thạc sĩ II Nhận xét, đánh giá đồ án tốt nghiệp: TT Các tiêu chí đánh giá 1a 1b 1c 2a 2b Sinh viên có phương pháp nghiên cứu phù hợp, giải đủ nhiệm vụ đồ án giao - Tính (nội dung ĐATN có phần so với ĐATN trước đây) - Đề tài có giá trị khoa học, cơng nghệ; ứng dụng thực tiễn - Kỹ giải quyết vấn đề; hiểu, vận dụng kiến thức bản, sở, chuyên ngành vấn đề nghiên cứu - Chất lượng nội dung ĐATN (thuyết minh, vẽ, chương trình, mơ hình,…) - Có kỹ vận dụng thành thạo phần mềm ứng dụng vấn đề nghiên cứu; - Có kỹ đọc, hiểu tài liệu tiếng nước ứng dụng vấn đề nghiên cứu; - Có kỹ làm việc nhóm; Kỹ viết: - Bố cục hợp lý, lập luận rõ ràng, chặt chẽ, lời văn súc tích - Thuyết minh đồ án khơng có lỗi tả, in ấn, định dạng Tổng điểm đánh giá theo thang 100: Quy thang 10 (lấy đến số lẻ) Điểm Điểm tối đa đánh giá 80 15 50 15 20 15 - Các tồn tại, thiếu sót cần bổ sung, chỉnh sửa: ……………………………………… ……………………………………………………………………………………… - Câu hỏi đề nghị sinh viên trả lời buổi bảo vệ: ………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… - Đề nghị: ☐ Được bảo vệ đồ án ☐ Bổ sung để bảo vệ ☐ Không bảo vệ Đà Nẵng, ngày tháng năm 2017 Người phản biện ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CƠ KHÍ CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự - Hạnh phúc PHIẾU CHẤM ĐỒ ÁN TỐT NGHIỆP I Thông tin chung: Họ tên sinh viên: Nguyễn Lê Khanh - Nguyễn Anh Tuấn Lớp: 12CDT2 - 12CDT1 Tên đề tài: THIẾT KẾ HỆ THỐNG GIỮ XE TỰ ĐỘNG DÙNG THẺ TỪ RFID VÀ CHẾ TẠO MÔ HÌNH THU NHỎ II Nhận xét, đánh giá đồ án tốt nghiệp: Điểm Điểm tối đa Đánh giá TT Các tiêu chí đánh giá 1a 1b 1c 2a 2b 3 Sản phẩm đồ án tốt nghiệp (Thuyết minh đồ án, vẽ, mơ hình, chương trình máy tính ) - Tính (nội dung ĐATN có phần so với ĐATN trước đây); - Đề tài có giá trị khoa học, cơng nghệ; ứng dụng thực tiễn: - Kỹ giải quyết vấn đề; hiểu, vận dụng kiến thức bản, sở, chuyên ngành vấn đề nghiên cứu; - Chất lượng nội dung ĐATN (thuyết minh, vẽ, chương trình, mô hình,…); - Có kỹ vận dụng thành thạo phần mềm ứng dụng vấn đề nghiên cứu; - Có kỹ đọc, hiểu tài liệu tiếng nước ngồi ứng dụng vấn đề nghiên cứu; - Có kỹ làm việc nhóm; Thuyết trình đề tài: - Nội dung thuyết trình thể mục đích, phương pháp, nội dung giải quyết kết đề tài - Kỹ thuyết trình, thời gian thuyết trình; - Chất lượng slides công cụ minh họa/ hỗ trợ Trả lời câu hỏi: - Vận dụng kiến thức liên quan để trả lời hoàn chỉnh câu hỏi Chủ tịch Hội đồng đề nghị trả lời khoảng thời gian quy định; - Tự tin, thể mức độ am hiểu sâu kiến thức liên quan; Tổng điểm đánh giá: theo thang 100 Quy thang 10 (lấy đến số lẻ) 50 10 30 10 25 15 10 25 25 - Ý kiến khác: ………………………………………………………………………… ……………………………………………………………………………………… Đà Nẵng, ngày tháng năm 2017 Họ tên & chữ ký người chấm TÓM TẮT Tên đề tài: THIẾT KẾ HỆ THỐNG GIỮ XE TỰ ĐỘNG DÙNG THẺ TỪ RFID VÀ CHẾ TẠO MÔ HÌNH THU NHỎ Sinh viên thực hiện: Nguyễn Anh Tuấn – Nguyễn Lê Khanh Mã thẻ sinh viên: 101120325 – 101120347 Lớp: 12CDT1 – 12CDT2 Chương 1: Tổng quan hệ thống giữ xe tự động - Nhu cầu thực trạng tình hình sử dụng ô tô: Tình hình sử dụng ô tô ngày tăng… - Các loại bãi giữ xe có: Bãi đổ xe kiểu truyền thống, bãi đỗ xe kiểu tự động… - Một số loại mơ hình bãi đỗ xe tự động có Chương 2: Lựa chọn phương án thiết kế - Giới thiệu số dịng xe thơng dụng ngồi nước - Các phương án thiết kế cho mô hình Chương 3: Thiết kế hệ thống khí - Tính tốn cấu di chuyển ngang - Tính tốn cấu di chuyển đứng - Tính tốn cấu chuyển xe vào Chương 4: Thiết kế hệ thống điều khiển - Giới thiệu thành phần điều khiển có hệ thống như: thẻ từ RFID, arduino mega 2560, module L298… - Sơ đồ khối điều khiển - Sơ đồ mạch điều khiển - Thuật toán điều khiển hệ thống Chương 5: Thiết kế thi cơng mơ hình - giao diện điều khiển - Thiết kế thi công mô hình - Thiết kế giao diện điều khiển ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA CỘNG HỊA XÃ HƠI CHỦ NGHĨA VIỆT NAM Độc lập - Tự - Hạnh phúc KHOA CƠ KHÍ NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP TT Họ tên sinh viên Số thẻ SV Lớp Ngành Nguyễn Anh Tuấn 101120325 12CDT1 Kỹ Thuật Cơ Điện Tử Nguyễn Lê Khanh 101120347 12CDT2 Kỹ Thuật Cơ Điện Tử Tên đề tài đồ án: Thiết kế hệ thống giữ xe tự động dùng thẻ từ RFID chế tạo mô hình thu nhỏ Đề tài thuộc diện: ☐ Có ký kết thỏa thuận sở hữu trí tuệ kết thực Các số liệu liệu ban đầu: Thiết kế hệ thống giữ xe tự động dùng thẻ từ RFID chế tạo mô hình thu nhỏ với số liệu kiểu mô hình tự chọn Nội dung phần thuyết minh tính tốn: a Phần chung: TT Họ tên sinh viên Nội dung Nguyễn Anh Tuấn Nguyễn Lê Khanh Thiết kế nguyên lý tính tốn kết cấu khí Lập trình điều khiển hệ thống b Phần riêng: TT Họ tên sinh viên Nội dung Nguyễn Anh Tuấn Giới thiệu thành phần điều khiển Nguyễn Lê Khanh Tổng quan hệ thống giữ xe tự động Các vẽ, đồ thị ( ghi rõ loại kích thước vẽ ): a Phần chung: TT Họ tên sinh viên Nội dung Nguyễn Anh Tuấn Nguyễn Lê Khanh Bản vẽ sơ đồ nguyên lý (A0) Bản vẽ tổng thể hệ thống (A0) b Phần riêng: TT Họ tên sinh viên Nội dung Nguyễn Anh Tuấn Bản vẽ kết cấu nâng xe (A0) Bản vẽ chế tạo số chi tiết Nguyễn Lê Khanh Bản vẽ sơ đồ thuật toán điều khiển (A0) Bản vẽ sơ đồ mạch điện điều khiển (A0) Họ tên người hướng dẫn: Phần/ Nội dung: TS Lưu Đức Bình Thuyết minh - Bản vẽ - Mô hình Ngày giao nhiệm vụ đồ án: Ngày hồn thành đồ án: Trưởng Bộ mơn …… /……./201… …… /……./201… Đà Nẵng, ngày tháng năm 2017 Người hướng dẫn LỜI NÓI ĐẦU Ngày nay, phương tiện lại ngày phát triển, đặc biệt số lượng ô tơ tăng lên nhanh chóng năm trở lại Chính vì việc xây dựng bãi giữ xe cần thiết, nhất khu đô thị lớn thành phố Hồ Chí Minh, thủ Hà Nội…Nhưng với diện tích đất ngày bị thu hẹp thì việc xây dựng bãi giữ xe có diện tích lớn việc khó thực Với phát triển công nghệ đại thì việc xây dựng bãi giữ xe tơ có sức chứa lớn, lại chiếm diện tích đất nhỏ chuyện hồn tồn Nắm bắt u cầu cấp thiết với mong muốn kết hợp kiến thức học được, để tạo sản phẩm có khả ứng dụng thực tế Chúng em thực đề tài “Thiết kết hệ thống giữ xe tự động dùng thẻ từ RFID chế tạo mô hình thu nhỏ” Cuối chúng em xin gữi lời cảm ơn tới q thầy khoa Cơ Khí, thầy cô môn Cơ Điện Tử giúp đỡ nhóm em suốt thời gian thực đề tài Đặc biệt chúng em xin chân thành cảm ơn thầy Lưu Đức Bình tận tình hướng dẫn tạo điều kiện thuận lợi để nhóm em thực hoàn thành tốt đồ án Qua xin gữi lời cảm ơn đến bạn tập thể lớp 12CDT_những người bạn học giúp đỡ lẫn suốt trình học tập Đà nẵng, tháng năm 2017 Sinh viên thực Nguyễn Anh Tuấn - Nguyễn Lê Khanh i CAM ĐOAN Chúng xin cam đoan công trình nghiên cứu hướng dẫn thầy Lưu Đức Bình Các nội dung nghiên cứu, kết đề tài trung thực chưa công bố bất kỳ hình thức trước Các tài liệu tham khảo đồ án nên rõ mục tài liệu tham khảo đảm bảo liêm học thuật Sinh viên thực Nguyễn Anh Tuấn - Nguyễn Lê Khanh ii MỤC LỤC Tóm tắt Nhiệm vụ đồ án tốt nghiệp Lời nói đầu i Cam đoan ii Mục lục iii Danh sách bảng, hình vẽ v Danh sách ký hiệu, chữ viết tắt vii Trang Chương 1: Tổng quan hệ thống giữ xe tự động 1.1 Nhu cầu thực trạng tình hình sử dụng tơ 1.2 Các loại bãi đỗ xe tơ có 1.2.1 Bãi đỗ xe kiểu truyền thống (không tự động) 1.2.2 Bãi đỗ xe ô tô tự động 1.3 Một số loại bãi đỗ xe ô tô tự động 1.3.1 Hệ thống đỗ xe tự động – dạng thang máy, robot 1.3.2 Hệ thống đỗ xe tự động - dạng cầu trục di chuyển 1.3.3 Hệ thống đỗ xe tự động - dạng thang nâng, quay vòng ngang 1.3.4 Hệ thống đỗ xe tự động - dạng thang nâng quay vòng tầng 1.3.5 Hệ thống đỗ xe tự động - thang nâng quay vòng tròn 1.3.6 Hệ thống đỗ xe tự động - dạng thang máy dịch chuyển ngang 1.3.7 Hệ thống đỗ xe tự động - dạng nâng hạ, dịch chuyển 1.3.8 Hệ thống đỗ xe tự động – dạng quay vòng đứng 10 1.4 Lựa chọn mơ hình hệ thống 11 Chương 2: Lựa chọn phương án thiết kế 12 2.1 Một số dòng xe ô tô thông dụng nước 12 2.1.1 Dòng xe Sedan 12 2.1.2 Dòng xe Hatchback 12 2.1.3 Dòng xe SUV Crossover 13 2.1.4 Dòng xe bán tải (Pick-up) 15 2.1.5 Dòng xe Minivan 15 2.1.6 Dòng xe Coupe convertible 16 2.2 Các phương án thiết kế mơ hình 18 iii 2.2.1 Phương án 18 2.2.2 Phương án 19 2.2.3 Phương án 20 2.3 Chọn phương án thiết kế 21 Chương 3:Thiết kế hệ thống khí 22 3.1 Tính tốn cấu nâng xe 22 3.1.1 Cơ cấu di chuyển ngang 22 3.1.2 Cơ cấu di chuyển đứng 24 3.1.3 Tính toán cấu chuyển xe 28 Chương 4: Thiết kế hệ thống điều khiển 30 4.1 Tổng quan công nghệ RFID 30 4.1.1 Giới thiệu RFID 30 4.1.2 Hệ thống RFID 30 4.1.2 Tag RFID (thẻ RFID) 33 4.2 Cảm biến RFID RC522 38 4.3 Arduino mega 2560 39 4.4 Module cầu mạch cầu H L298 41 4.5 Mạch điều khiển hệ thống 42 4.5.1 Sơ đồ khối mô hình điều khiển 42 4.5.2 Sơ đồ mạch điều khiển hệ thống 43 4.6 Thuật toán điều khiển 43 4.6.1 Thuật toán đưa xe vào vị trí 43 4.6.2 Thuật toán lấy xe 44 4.6.3 Thuật toán điều khiển động để đưa xe đến vị trí xác định 45 4.6.4 Thuật toán điều khiển động để lấy xe 45 Chương 5: Thiết kế thi cơng mơ hình - giao diện điều khiển 46 5.1 Thiết kế thi cơng mơ hình 46 5.1.1 Thiết kế mô hình 46 5.1.2 Thi công mô hình 47 5.2 Thiết kế giao diện điều khiển máy tính 51 5.2.1 Ngôn ngữ C# Windows Forms 51 5.2.2 Xây dựng giao diện điều khiển 52 KẾT LUẬN 53 TÀI LIỆU THAM KHẢO 54 PHỤ LỤC PHỤ LỤC iv MessageBox.Show("Không thể mở cổng" + serialPort1.PortName, "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } private void button2_Click(object sender, EventArgs e) { Application.Exit(); } private void btn_1ai_Click(object sender, EventArgs e) { serialPort1.Write("1"); } private void btn_1ao_Click(object sender, EventArgs e) { serialPort1.Write("2"); } private void btn_1bi_Click(object sender, EventArgs e) { serialPort1.Write("3"); } private void btn_1bo_Click(object sender, EventArgs e) { serialPort1.Write("4"); } private void btn_1ci_Click(object sender, EventArgs e) { serialPort1.Write("5"); } private void btn_1co_Click(object sender, EventArgs e) { serialPort1.Write("6"); } private void btn_1di_Click(object sender, EventArgs e) { serialPort1.Write("7"); } private void btn_1do_Click(object sender, EventArgs e) { serialPort1.Write("8"); } private void btn_2ai_Click(object sender, EventArgs e) { serialPort1.Write("9"); } private void btn_2ao_Click(object sender, EventArgs e) { Phụ lục serialPort1.Write("a"); } private void btn_2bi_Click(object sender, EventArgs e) { serialPort1.Write("b"); } private void btn_2bo_Click(object sender, EventArgs e) { serialPort1.Write("c"); } private void btn_2ci_Click(object sender, EventArgs e) { serialPort1.Write("d"); } private void btn_2co_Click(object sender, EventArgs e) { serialPort1.Write("e"); } private void btn_2di_Click(object sender, EventArgs e) { serialPort1.Write("f"); } private void btn_2do_Click(object sender, EventArgs e) { serialPort1.Write("g"); } private void btn_2ei_Click(object sender, EventArgs e) { serialPort1.Write("h"); } private void btn_2eo_Click(object sender, EventArgs e) { serialPort1.Write("i"); } private void btn_3ai_Click(object sender, EventArgs e) { serialPort1.Write("k"); } private void btn_3ao_Click(object sender, EventArgs e) { serialPort1.Write("l"); } private void btn_3bi_Click(object sender, EventArgs e) { serialPort1.Write("m"); } private void btn_3bo_Click(object sender, EventArgs e) { serialPort1.Write("n"); Phụ lục } private void btn_3ci_Click(object sender, EventArgs e) { serialPort1.Write("o"); } private void btn_3co_Click(object sender, EventArgs e) { serialPort1.Write("p"); } private void btn_3di_Click(object sender, EventArgs e) { serialPort1.Write("q"); } private void btn_3do_Click(object sender, EventArgs e) { serialPort1.Write("r"); } private void btn_3ei_Click(object sender, EventArgs e) { serialPort1.Write("s"); } private void btn_3eo_Click(object sender, EventArgs e) { serialPort1.Write("t"); } private void button21_Click(object sender, EventArgs e) { serialPort1.Write("u"); } private void toolStripMenuItem1_Click(object sender, EventArgs e) { Form2 frm = new Form2(); frm.ShowDialog(); } private void btn_quetthe_Click(object sender, EventArgs e) { serialPort1.Write("A"); } private void btn_tudong_Click(object sender, EventArgs e) { serialPort1.Write("v"); } private void btn_khancap_Click(object sender, EventArgs e) { if (btn_refresh.Enabled == false) { btn_refresh.Enabled = true; btn_1ao.Enabled = true; btn_1bo.Enabled = true; btn_1co.Enabled = true; Phụ lục btn_1do.Enabled btn_2ao.Enabled btn_2bo.Enabled btn_2co.Enabled btn_2do.Enabled btn_2eo.Enabled btn_3ao.Enabled btn_3bo.Enabled btn_3co.Enabled btn_3do.Enabled btn_3eo.Enabled = = = = = = = = = = = true; true; true; true; true; true; true; true; true; true; true; } else { btn_refresh.Enabled = false; btn_1ao.Enabled = false; btn_1bo.Enabled = false; btn_1co.Enabled = false; btn_1do.Enabled = false; btn_2ao.Enabled = false; btn_2bo.Enabled = false; btn_2co.Enabled = false; btn_2do.Enabled = false; btn_2eo.Enabled = false; btn_3ao.Enabled = false; btn_3bo.Enabled = false; btn_3co.Enabled = false; btn_3do.Enabled = false; btn_3eo.Enabled = false; } } private void btn_refresh_Click(object sender, EventArgs e) { serialPort1.Write("x"); } } } Phụ lục PHỤ LỤC CHƯƠNG TRÌNH ĐIỀU KHIỂN #include #include #include #include #include #include // Khai bao chan Dong co -#define IN1 22 #define IN2 24 #define IN3 26 #define IN4 28 #define IN5 else if(a == 16){ if(b == 0){ OUT(1,2); } else if(b == 1){ EEPROM.writeLong(16, 0); key[4] = 0; DocThe = 0; a = 56; ThoatLap = 2; b = 2; } } #define IN6 // Chan RFID -#define SS_PIN 53 #define RST_PIN #define MAX_SPEED 255 else if(a == 20){ if(b == 0){ OUT(2,2); } else if(b == 1){ EEPROM.writeLong(20, 0); #define MIN_SPEED #define Button1 21 #define Button2 20 key[5] = 0; DocThe = 0; a = 56; #define LED 13 unsigned long lastDebounceTime = 0; unsigned long deDebounceDelay = 1500; unsigned long newtime; unsigned long oldtime = 0; byte h = 0; //thoat ham Lay_Xe() byte k = 0; //thoat ham Dat_Xe() byte h1 = 0; //thu tu ham IN dua xe vao byte h2 = 0; //thu tu ham OUT dua xe byte x = 1; //bien dem ngat CB1 ngang byte y = 1; //bien dem ngat CB2 doc byte z1 = 1; //bien doi trang thai cong tac hanh trinh byte z2 = 1; //bien doi trang thai cong tac hanh trinh byte DocThe = 0; //Bien de tien hanh doc the va thoat Phụ lục ThoatLap = 2; b = 2; } } else if(a == 24){ if(b == 0){ OUT(3,2); } else if(b == 1){ EEPROM.writeLong(24, 0); key[6] = 0; DocThe = 0; a = 56; ThoatLap = 2; b = 2; doc the int val; //Bien truyen C# va arduino byte ThoatLap = 0; //Thoat vong lap so sanh ID card de lay xe } } else if(a == 28){ byte a = 0; // lay vi tri ID card roi xac dinh vi tri xe byte b = 0; // de thoat khoi ham lay xe va set lai thong so if(b == 0){ OUT(4,2); } byte vao = 0; //chong nhieu lay xe byte key[14] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0}; //khoa cong IN da co xe o else if(b == 1){ EEPROM.writeLong(28, 0); key[7] = 0; DocThe = 0; a = 56; ThoatLap = 2; b = 2; } MFRC522 mfrc522(SS_PIN, RST_PIN); unsigned long uidDec, uidDecTemp; void setup() { Serial.begin(9600); SPI.begin(); mfrc522.PCD_Init(); pinMode(2,INPUT); pinMode(3,INPUT); pinMode(LED, OUTPUT); digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(LED, LOW); pinMode(IN1,OUTPUT); pinMode(IN2,OUTPUT); pinMode(IN3,OUTPUT); pinMode(IN4,OUTPUT); pinMode(IN5, OUTPUT); pinMode(IN6, OUTPUT); pinMode(Button1, INPUT_PULLUP); pinMode(Button2, INPUT_PULLUP); } else if(a == 32){ if(b == 0){ OUT(5,2); } else if(b == 1){ EEPROM.writeLong(32, 0); key[8] = 0; DocThe = 0; a = 56; ThoatLap = 2; b = 2; } } else if(a == 36){ } if(b == 0){ OUT(1,3); } else if(b == 1){ EEPROM.writeLong(36, 0); key[9] = 0; DocThe = 0; a = 56; ThoatLap = 2; b = 2; } // - Ham doc the void Read_Card(){ if(DocThe == 0){ if ( ! mfrc522.PICC_IsNewCardPresent()){ return; } //Doc the if( ! mfrc522.PICC_ReadCardSerial()){ return; } Phụ lục } uidDec = 0; for(byte i = 0; i < mfrc522.uid.size; i++) { else if(a == 40){ if(b == 0){ OUT(2,3); } uidDecTemp = mfrc522.uid.uidByte[i]; uidDec = uidDec*256 + uidDecTemp; } digitalWrite(LED, HIGH); delay(200); DocThe = 1; } else if (DocThe == 1){ digitalWrite(LED, LOW); Timer1.detachInterrupt(); } } // Ham ngat CB1 ngang void tangx(){ if(millis() - lastDebounceTime > deDebounceDelay){ if(digitalRead(2) == HIGH){ else if(b == 1){ EEPROM.writeLong(40, 0); key[10] = 0; DocThe = 0; a = 56; ThoatLap = 2; b = 2; } } else if(a == 44){ if(b == 0){ OUT(3,3); } else if(b == 1){ EEPROM.writeLong(44, 0); key[11] = 0; x = x + 1; lastDebounceTime = millis(); } DocThe = 0; a = 56; ThoatLap = 2; b = 2; } } } // Ham ngat CB2 doc -void tangy(){ if(millis() - lastDebounceTime > deDebounceDelay){ if(digitalRead(3) == HIGH){ y = y + 1; lastDebounceTime = millis(); } else if(a == 48){ if(b == 0){ OUT(4,3); } } else if(b == 1){ EEPROM.writeLong(48, 0); key[12] = 0; DocThe = 0; a = 56; ThoatLap = 2; b = 2; } } } // Ngat cong tac hanh trinh -void NgatButton1(){ newtime = millis(); if(newtime - oldtime > 1000){ if(digitalRead(21) == 0){ z1 = !z1; oldtime = newtime; } } Phụ lục } else if(a == 52){ if(b == 0){ OUT(5,3); } // -Ngat cong tac hanh trinh -void NgatButton2(){ } else if(b == 1){ EEPROM.writeLong(52, 0); key[13] = 0; newtime = millis(); if(newtime - oldtime > 1000){ if(digitalRead(20) == 0){ DocThe = 0; a = 56; ThoatLap = 2; z2 = !z2; oldtime = newtime; b = 2; } } } } } } void DC1_Dung() { digitalWrite(IN1,LOW); digitalWrite(IN2,LOW); } void DC2_Dung() { digitalWrite(IN3,LOW); digitalWrite(IN4,LOW); } void DC1_Tien() { digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW); } void DC1_Lui() { digitalWrite(IN1,LOW); digitalWrite(IN2,HIGH); } void DC2_Tien() { digitalWrite(IN3,LOW); digitalWrite(IN4,HIGH); } void DC2_Lui() { digitalWrite(IN3,HIGH); digitalWrite(IN4,LOW); } void DC3_Dung(){ digitalWrite(IN5, LOW); Phụ lục case '1': //1A IN if((uidDec != 0)&&(key[0] == 0)){ if(vao == 0){ EEPROM.writeLong(0, uidDec); DocThe = 0; vao = 1; } else if(vao == 1){ IN_1(2,1); } else if(vao == 2){ uidDec = 0; key[0] = 1; } } break; case '2': //1A OUT OUT1(2,1); DocThe = 0; EEPROM.writeLong(0, 0); key[0] = 0; break; case '3': //1B IN if((uidDec != 0)&&(key[1] == 0)){ if(vao == 0){ EEPROM.writeLong(4, uidDec); DocThe = 0; vao = 1; } else if(vao == 1){ digitalWrite(IN6, LOW); IN_1(3,1); } else if(vao == 2){ uidDec = 0; } void DC3_Lui(int speed){ speed = constrain ( speed, MIN_SPEED, MAX_SPEED); digitalWrite(IN5, HIGH); analogWrite(IN6, 255 - speed); } void DC3_Tien(int speed){ speed = constrain ( speed, MIN_SPEED, MAX_SPEED); digitalWrite(IN5, LOW); analogWrite(IN6, speed); } // -Dieu khien cho dong co tien den vi tri yeu cau -void DK_DC_Tien(int a, int b){ if(a == x){ detachInterrupt(0); DC1_Dung(); if(b == y){ detachInterrupt(1); DC2_Dung(); h1 = 2; h2 = 1; } else if(1 4000){ delay(300); attachInterrupt(1,tangy,RISING); oldtime = newtime; } } } else if(1 4000){ delay(300); attachInterrupt(0,tangx,RISING); oldtime = newtime; } Phụ lục key[1] = 1; } } break; case '4': //1B OUT OUT1(3,1); DocThe = 0; EEPROM.writeLong(4, 0); key[1] = 0; break; case '5': //1C IN if((uidDec != 0)&&(key[2] == 0)){ if(vao == 0){ EEPROM.writeLong(8, uidDec); DocThe = 0; vao = 1; } else if(vao == 1){ IN_1(4,1); } else if(vao == 2){ uidDec = 0; key[2] = 1; } } break; case '6': //1C OUT OUT1(4,1); DocThe = 0; EEPROM.writeLong(8, 0); key[2] = 0; break; case '7': //1D IN if((uidDec != 0)&&(key[3] == 0)){ if(vao == 0){ EEPROM.writeLong(12, uidDec); DocThe = 0; vao = 1; } } } // Dieu khien dong co lui ve vi tri ban dau -void DK_DC_Lui(int a, int b){ if(b == y){ detachInterrupt(1); DC2_Dung(); if(a == x){ detachInterrupt(0); DC1_Dung(); h1 = 5; h2 = 4; vao = 2; } else if(1 4000){ delay(300); attachInterrupt(0,tangx,RISING); oldtime = newtime; } } } else if(1 4000){ delay(300); attachInterrupt(1,tangy,RISING); oldtime = newtime; } } } // -Lay xe de dua di hoac dua ve void Lay_Xe(){ if(h == 0){ DC3_Tien(110); attachInterrupt(2,NgatButton1,FALLING); if(z1 == 0){ detachInterrupt(2); DC3_Dung(); DC2_Tien(); Phụ lục else if(vao == 1){ IN_1(5,1); } else if(vao == 2){ uidDec = 0; key[3] = 1; } } break; case '8': //1D OUT OUT1(5,1); DocThe = 0; EEPROM.writeLong(12, 0); key[3] = 0; break; case '9': //2A IN if((uidDec != 0)&&(key[4] == 0)){ if(vao == 0){ EEPROM.writeLong(16, uidDec); DocThe = 0; vao = 1; } else if(vao == 1){ IN(1,2); } else if(vao == 2){ uidDec = 0; key[4] = 1; } } break; case 'a': //2A OUT OUT(1,2); DocThe = 0; EEPROM.writeLong(16, 0); key[4] = 0; break; case 'b': //2B IN if((uidDec != 0)&&(key[5] == 0)){ if(vao == 0){ EEPROM.writeLong(20, uidDec); DocThe = 0; vao = 1; delay(1300); DC2_Dung(); h = 1; } } else if(vao == 1){ IN(2,2); } } else if(h == 1){ DC3_Lui(110); else if(vao == 2){ uidDec = 0; key[5] = 1; attachInterrupt(3,NgatButton2,FALLING); if(z2 == 0){ detachInterrupt(3); DC3_Dung(); DC2_Lui(); delay(1280); DC2_Dung(); h1 = 1; h2 = 2; h = 2; } } } void Lay_Xe1(){ if(h == 0){ DC3_Tien(110); attachInterrupt(2,NgatButton1,FALLING); if(z1 == 0){ detachInterrupt(2); DC3_Dung(); DC2_Tien(); delay(1300); DC2_Dung(); h = 1; } } else if(h == 1){ DC3_Lui(110); attachInterrupt(3,NgatButton2,FALLING); if(z2 == 0){ detachInterrupt(3); DC3_Dung(); h1 = 1; h2 = 2; h = 2; } } Phụ lục } } break; case 'c': //2B OUT OUT(2,2); DocThe = 0; EEPROM.writeLong(20, 0); key[5] = 0; break; case 'd': //2C IN if((uidDec != 0)&&(key[6] == 0)){ if(vao == 0){ EEPROM.writeLong(24, uidDec); DocThe = 0; vao = 1; } else if(vao == 1){ IN(3,2); } else if(vao == 2){ uidDec = 0; key[6] = 1; } } break; case 'e': //2C OUT OUT(3,2); DocThe = 0; EEPROM.writeLong(24, 0); key[6] = 0; break; case 'f': //2D IN if((uidDec != 0)&&(key[7] == 0)){ if(vao == 0){ EEPROM.writeLong(28, uidDec); DocThe = 0; } // Dat xe vao -void Dat_Xe(){ if( k == 0){ DC2_Tien(); delay(1300); DC2_Dung(); k = 1; } else if(k == 1){ DC3_Tien(110); attachInterrupt(2,NgatButton1,FALLING); if(z1 == 1){ detachInterrupt(3); DC3_Dung(); DC2_Lui(); delay(1280); DC2_Dung(); k = 2; } } else if(k == 2){ DC3_Lui(110); attachInterrupt(3,NgatButton2,FALLING); if(z2 == 1){ detachInterrupt(3); DC3_Dung(); h1 = 3; h2 = 5; b = 1; k = 3; } } } void Dat_Xe1(){ if( k == 0){ k = 1; } else if(k == 1){ DC3_Tien(110); attachInterrupt(2,NgatButton1,FALLING); if(z1 == 1){ detachInterrupt(3); Phụ lục vao = 1; } else if(vao == 1){ IN(4,2); } else if(vao == 2){ uidDec = 0; key[7] = 1; } } break; case 'g': //2D OUT OUT(4,2); DocThe = 0; EEPROM.writeLong(28, 0); key[7] = 0; break; case 'h': //2E IN if((uidDec != 0)&&(key[8] == 0)){ if(vao == 0){ EEPROM.writeLong(32, uidDec); DocThe = 0; vao = 1; } else if(vao == 1){ IN(5,2); } else if(vao == 2){ uidDec = 0; key[8] = 1; } } break; case 'i': //2E OUT OUT(5,2); DocThe = 0; EEPROM.writeLong(32, 0); key[8] = 0; break; case 'k': //3A IN if((uidDec != 0)&&(key[9] == 0)){ if(vao == 0){ EEPROM.writeLong(36, uidDec); DC3_Dung(); DC2_Lui(); delay(1280); DC2_Dung(); k = 2; } } else if(k == 2){ DC3_Lui(110); attachInterrupt(3,NgatButton2,FALLING); if(z2 == 1){ detachInterrupt(3); DC3_Dung(); h1 = 3; h2 = 5; b = 1; k = 3; } } } DocThe = 0; vao = 1; } else if(vao == 1){ IN(1,3); } else if(vao == 2){ uidDec = 0; key[9] = 1; } } break; case 'l': //3A OUT OUT(1,3); DocThe = 0; EEPROM.writeLong(36, 0); key[9] = 0; break; case 'm': //3B IN if((uidDec != 0)&&(key[10] == 0)){ void loop() { while(Serial.available()){ val = Serial.read(); delay(500); } switch (val){ case 'A': //QUET THE h = 0;k = 0; h1 = 0; x = 1; y = 1; z1 = 1; z2 = 1; h2 = 0; ThoatLap = 0; b = 0; vao = 0; Timer1.initialize(40000); Timer1.attachInterrupt(Read_Card); break; case 'x'://Reset lai bien h = 0;k = 0;h1 = 0; x = 1; y = 1; z1 = 1; z2 = 1; h2 = 0; ThoatLap = 0; b = 0; vao = 0; break; case 'v':// OUT vao = 3; if(ThoatLap == 0){ for(int i = 0; i