1. Trang chủ
  2. » Thể loại khác

Bai-do-xe-tu-dong

65 48 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 65
Dung lượng 3,07 MB

Nội dung

Đồ án Vi điều khiển làm về đề tài Bãi đỗ xe thông minh kết hợp với giao diện trên phần mềm Visual Studio và điều khiển cơ cấu bằng vi điều khiển PIC16F877A nhằm làm về thiết kế phần cứng, thiết kế phần mềm và đưa ra hướng phát triển cho đồ án

TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐẠI HỌC ĐÀ NẴNG KHOA CƠ KHÍ ĐỒ ÁN VI ĐIỀU KHIỂN Đề tài: Bãi đỗ xe tự động Giảng viên hướng dẫn: Ts Đặng Phước Vinh Sinh viên thực hiện: Lưu Công Chung Lê Viết Cường Lớp: 18CDT1 Đà nẵng, ngày 24 tháng 11 năm 2021 Đồ án Vi điều khiển GVHD: TS Đặng Phước Vinh LỜI NÓI ĐẦU Đồ án vi điều khiển nội dung quan trọng thiếu với chương trình đào tạo ngành Cơ điện tử, nhằm cung cấp cho sinh viên kiến thức thực tiễn vi điều khiển ứng dụng công nghiệp đời sống hàng ngày Trong trình học mơn kỹ thuật vi điều khiển, chung em tìm hiểu làm quen với vi điều khiển PIC, biết cấu trúc phần cứng cách lập trình cho Đồ án vi điều khiển giúp chúng em vận dụng kiến thức học từ vi điều khiển kết hợp với phần mềm máy tính khác để tạo sản phẩm có tính ứng dụng cao phù hợp với q trình phát triển cơng nghiệp Đề tài nhóm chúng em chọn là: “Bãi đỗ xe thông minh kết hợp với giao diện phần mềm Visual Studio điều khiển cấu vi điều khiển PIC16F877A” Những năm gần đây, việc sử dụng thẻ từ mang mã ID khác ngày căng sử dụng rộng rãi nhiều linh vực khác Trong đó, việc dụng thẻ từ để quản lý bãi đỗ xe phổ biến Nhờ việc sử dụng thẻ từ, giảm bớt khối lượng cơng việc, tăng xác giảm đáng kể việc sử dụng vé giấy ghi tay sử dụng lần Trong trình làm đồ án, nhóm tìm hiểu nội dung sau: - Quá trình đọc truyền liệu RFID - Sử dụng phần mềm Visual Studio tạo giao diện người dùng - Giao tiếp phần mềm Visual Studio vi điều khiển PIC Trong q trình hồn thành đề tài đồ án nhóm có thêm nhiều hiểu biết yêu cầu thực tế đề tài Ứng dụng đề tài nhiều lĩnh vực, đặc biệt việc quản lý xe vào bãi đỗ xe Việc tìm hiểu lượng kiến thức đa dạng tổng hợp nên nhóm cịn phần chưa hồn tồn nắm vững Trong q trình làm đồ án nhóm tham khảo nhiều tài liệu giáo trình có liên quan, nhung khơng thể tranh khỏi sai sót Nhóm mong hướng dẫn thêm thầy để chúng em nắm vững tìm hiểu thêm kiến thức khác SVTH: Lưu Công Chung Lê Viết Cường Lớp: 18CDT1 Trang Đồ án Vi điều khiển GVHD: TS Đặng Phước Vinh Nhóm xin chân thành cảm ơn thầy môn, đặc biệt thầy Đặng Phước Vinh trực tiếp hướng dẫn nhóm q trình hồn thành đồ án Nhóm sinh viên thực Lưu Công Chung Lê Viết Cường SVTH: Lưu Công Chung Lê Viết Cường Lớp: 18CDT1 Trang Đồ án Vi điều khiển GVHD: TS Đặng Phước Vinh Mục lục LỜI NÓI ĐẦU Mục lục CHƯƠNG I: TỔNG QUAN ĐỀ TÀI 1.1 Tổng quan thực trạng thực tế 1.2 Giới thiệu chung bãi đỗ xe tụ động 1.2.1 Giới thiệu 1.2.2 Mục đích đề tài 1.2.3 Đối tượng nghiên cứu CHƯƠNG II: THIẾT KẾ PHẦN CỨNG A CƠ SỞ DỮ LIỆU THIẾT KẾ 2.A.1 Hệ thống RFID 2.A.1.1 Giới thiệu hệ thống RFID 2.A.1.2 Cấu trúc hệ thống RFID 2.A.1.3 Phương thức làm việc RFID 10 2.A.1.4 Ứng dụng hệ thống RFID 11 2.A.1.5 Ưu, nhược điểm hệ thống RFID 14 2.A.2 Tìm hiểu vi điều khiển PIC16F877A 15 2.A.2.1 Giới thiệu chung PIC 15 2.A.2.2 Đặc điểm chung PIC16F877A 16 2.A.2.3 Sơ đồ chức chân PIC16F877A 17 2.A.2.4 Đặc tính ngoại vi 20 2.A.3 Giới thiệu giao tiếp URAT – USB (TTL) 21 2.A.3.1 Khái niệm 21 2.A.3.2 Đặc điểm 21 2.A.3.3 Khung truyền liệu giao thức UART: 21 2.A.4 Chuẩn RS232 (Recommended Standard 232) 22 2.A.4.1 Khái niệm 22 2.A.4.2 Đặc điểm 22 2.A.5 Các phần tử khác 23 SVTH: Lưu Công Chung Lê Viết Cường Lớp: 18CDT1 Trang Đồ án Vi điều khiển GVHD: TS Đặng Phước Vinh 2.A.5.1 Màn hình LCD 23 2.A.5.2 Động Servo SG90 25 2.A.5.3 Cảm biến hồng ngoại 26 B THIẾT KẾ MẠCH 27 2.B.1 Sơ đồ mạch nguồn 27 2.B.2 Sơ đồ mạch giao tiếp máy tính RS232 28 2.B.3 Sơ đồ mạch tổng thể 29 CHƯƠNG III: THẾT KẾ PHẦN MỀM 30 A GIỚI THIỆU MỘT SỐ PHẦN MỀM 30 3.A.1 Phần mềm CCS 30 3.A.1.1 Khái quát phần mềm 30 3.A.1.2 Tạo Project CCS 31 3.A.2 Phần mềm Visual Studio 2013 34 3.A.2.1 Khái quát phần mềm 34 3.A.2.2 Giao diện làm việc 35 3.A.2.3 Một số thao tác 36 B THIẾT KẾ PHẦN MỀM 37 3.B.1 Sơ đồ khối 37 3.B.2 Lưu đồ thuật toán 38 3.B.3 Giới thiệu giao diện 39 3.B.4 Chương trình 42 3.B.4.1 Chương trình CCS 42 3.B.4.2 Chương trình Visual 47 CHƯƠNG IV: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 62 4.1 Kết luận 62 4.1.1 Đạt 62 4.1.2 Hạn chế 62 4.2 Hướng phát triển 62 TÀI LIỆU THAM KHẢO 64 SVTH: Lưu Công Chung Lê Viết Cường Lớp: 18CDT1 Trang Đồ án Vi điều khiển GVHD: TS Đặng Phước Vinh CHƯƠNG I: TỔNG QUAN ĐỀ TÀI 1.1 Tổng quan thực trạng thực tế Hiện nay, xã hội ngày phát triển, khu tổ hợp ngày mở rộng quy mô Mật độ khu thương mại, văn phòng, chung cư,… ngày nhiều Dân số ngày tăng cao, dẫn đến lượng ô tô cá nhân tăng theo rõ rệt Theo thống kê tính tới tháng 10.2019, Đà Nẵng có tổng số tơ đăng kí 12.193 xe1 Đặc biệt, dự đoán dân số Đà Nẵng tăng lên đến 2,5-3 triệu vào năm 20302 tình hình sở hạ tầng cho bãi đỗ xe tiếp tục bị thiếu hụt ngày nghiêm trọng Vì vậy, việc đáp ứng nhu cầu bãi đỗ trọng Khi cầu bãi đỗ xe tăng cao vậy, tương ứng cần có nhiều nhân viên an ninh để đảm bảo an toan cho bãi đỗ xe, việc trực tiếp tạo áp lực cho người quản lý bãi đỗ xe Do đó, việc đưa giải pháp quản lý bãi đỗ xe cách tối ưu với công nghệ đại nhu cầu cấp thiết Hệ thống bãi đỗ xe tự động phương án hiệu bảo đảm: - Giảm thiểu số lượng nhân viên an ninh bãi đỗ xe - Xe vào nhanh chóng, thuận tiện cho nhân viên kiểm sốt khách hàng - Có hệ thống quản lý nhân viên làm việc theo ca trực - Các phương tiện nhanh chóng tìm vị trí bãi đỗ thích hợp nhờ bảng hiển thị dẫn tự động, tránh chạy lòng vòng thời gian trật tự bãi - Cước phí quản lý chặt chẽ hệ thống máy tính Tránh gây gian lận, thất Cước phí tinh tự động theo tháng - Hệ thống có liệu báo cáo đầy đủ, rõ ràng, cung cấp chinh xác số lượng xe ra/vào ngày theo thời gian thực Nguồn: Tờ báo niên ngày 10.12.2019 Nguồn: Tờ báo tuổi trẻ ngày 08.12.2020 SVTH: Lưu Công Chung Lê Viết Cường Lớp: 18CDT1 Trang Đồ án Vi điều khiển GVHD: TS Đặng Phước Vinh 1.2 Giới thiệu chung bãi đỗ xe tụ động 1.2.1 Giới thiệu Để đáp ứng nhu cầu gửi xe ngày căng gia tăng đô thị, thành phố,… Các bãi đỗ xe thông minh sử dụng hệ thống RFID ngày căng phổ biến Hệ thống tự động nhận diện nhanh chóng thẻ xe đăng kí Từ đó, giúp quản lý số lượng xe, cước phí, tình trạng bãi đỗ cách thuận tiện, giảm số lượng lao động, gia tăng hiệu suất bãi đỗ xe 1.2.2 Mục đích đề tài Phục vụ trình nghiên cứu ứng dụng hệ thống RFID vào bãi đỗ xe tự động để ứng dụng vào đời sống Mơ hình đồ án phải đảm bảo u cầu sau: - Nhận diện thẻ tháng chủ xe đăng kí thẻ lượt bãi đỗ - Tốc độ xử lý hệ thống phải đạt yêu cầu - Đưa thông tin lên phần mềm lưu vào database - Tính tốn chinh xác chi phí - Có tính linh hoạt vận hành 1.2.3 Đối tượng nghiên cứu - Module RFID - PIC 16F877A - LCD 16x2 - Động Servo - Phần mềm Visual Studio SVTH: Lưu Công Chung Lê Viết Cường Lớp: 18CDT1 Trang Đồ án Vi điều khiển GVHD: TS Đặng Phước Vinh CHƯƠNG II: THIẾT KẾ PHẦN CỨNG A CƠ SỞ DỮ LIỆU THIẾT KẾ 2.A.1 Hệ thống RFID 2.A.1.1 Giới thiệu hệ thống RFID Công nghệ RFID (Radio Frequency Identification) công nghệ nhận dạng đối tượng sóng vơ tuyến, cho phép thiết bị đọc thông tin chứa chip khoảng cách xa, không cần tiếp xúc trực tiếp, không thực giao tiếp vật lý hai vật không nhìn thấy Cơng nghệ RFID cho ta phương pháp truyền, nhận liệu từ điểm đến điểm khác Kỹ thuật RFID sử dụng truyền thông không dây dải tần số vô tuyến để truyền liệu từ thẻ (Tag) đến đọc (Reader) Thẻ đính kèm gắn vào đối tượng nhận dạng chẳng hạn sản phẩm, hộp giá kệ Bộ đọc quét liệu thẻ gửi thông tin đến sở liệu thẻ Chẳng hạn, thẻ đặt kính chắn gió xe để hệ thống thu phí đường nhanh chóng nhận dạng thu tiền tuyến đường 2.A.1.2 Cấu trúc hệ thống RFID3 Hệ thống RFID bao gồm bốn thành phần: thẻ RFID, đầu đọc, antenna Server a Thẻ RFID Thẻ RFID thiết bị lưu trữ truyền liệu đến đầu đọc môi trường không tiếp xúc sóng vơ tuyến Thẻ RFID mang liêu vật sản phẩm gắn lên sản phẩm Mỗi thẻ có phần lưu trữ liệu bên cách giao tiếp với liệu Vài thẻ RFID giống nhãn giấy ứng dụng để bỏ vào hộp đóng gói Một số khác sáp nhập thành vách thùng chứa plastic đúc Còn số khác xây dựng thành miếng da bao cổ tay Mỗi thẻ lập trình với nhận dạng cho phép theo dõi không dây đối tượng người gần thẻ Thơng thường thẻ RFID có cuộn anten tất RFID có vi chip nguồn lượng riêng Nguồn tham khảo: Internet SVTH: Lưu Công Chung Lê Viết Cường Lớp: 18CDT1 Trang Đồ án Vi điều khiển GVHD: TS Đặng Phước Vinh Hình 2.1: Cấu trúc thẻ từ (Nguồn: Internet) Gồm phần chính: - Chip: (Bộ nhớ chứa tới 96 bit đến 512 bit liệu (gấp 64 lần so với mã vạch) lưu trữ số thứ thông tin dựa thẻ - Antenna: gắn với vi mạch truyền thơng tin từ chip đến reader Antenna có cơng suất lớn cho phép phạm vi đọc căng lớn b Các đầu đọc cảm biến để quét thẻ Đầu đọc FRlD (hay gọi interrogator) thiết bị kết nối không dây với thẻ để dễ dàng nhận dạng đối tượng gắn thẻ Nó thiết bị đọc ghi liệu nên thẻ FRID tương thích Thời gian mà đầu đọc phát lượng RF để đọc thẻ gọi chu trình làm việc đầu đọc Đầu đọc có nhiệm vụ kích hoạt thẻ, truyền liệu sóng vơ tuyến với thẻ, thực giải điều chế giải mã tín hiệu nhận từ thẻ dạng tín hiệu cần thiết để chuyển máy chủ, đồng thời nhận lệnh từ máy chủ để thực yêu cầu truy vấn hay đọc ghi thẻ Đầu đọc thẻ hệ thần kinh trung ương toàn hệ thống phần cứng RFID thiết lập việc truyền với thành phần điều khiển nó, thao tác quan trọng thực thể muốn liên kết với thiết bị phần cứng Các thành phần gồm: - Máy phát: Máy phát đầu đọc truyền nguồn AC chu kỳ xung đồng hồ qua anten đến thẻ phạm vi cho phép Đây phần máy phát thu, thành phần chịu trách nhiệm gửi tín hiệu đầu đọc đến môi trường xung quanh nhận lại đáp ứng thẻ qua anten đầu đọc anten SVTH: Lưu Công Chung Lê Viết Cường Lớp: 18CDT1 Trang Đồ án Vi điều khiển GVHD: TS Đặng Phước Vinh đầu đọc gắn với cổng anten Hiện số đầu đọc hỗ trợ lên đến 4, 8,16, 32 cổng anten - Máy thu: Nó nhận tín hiệu tương tự từ thẻ qua anten đầu đọc Sau gửi tín hiệu tới vi mạch đầu đọc chuyển liệu thành liệu biểu thị dạng số - Vi mạch: Cung cấp giao thức cho đầu đọc để kết nối với thẻ tương thích Nó thực giải mã kiểm tra lỗi tín hiệu tương tự nhận từ máy thu Ngoài vi mạch cịn có chứa xử lý để thực việc lọc xử lý liệu đọc từ thẻ - Bộ nhớ: Bộ nhớ dùng lưu liệu tham số cấu hình đầu đọc hệ thống bán kê khai số lần đọc thẻ Vì kết nối đầu đọc hệ thống vi mạch bị hỏng liệu khơng bị Tuy nhiên, dung lượng nhớ giới hạn số thẻ đọc khoảng thời gian Nếu trình đọc mà việc kết nối bị hỏng phần liệu lưu bị ( bị ghi đè thẻ khác đọc sau nó) - Mạch điều khiển: Cho phép thành phần bên ngồi người chương trình máy tính giao tiếp, điều khiển với đầu đọc Nó liền với đầu đọc (như phần mềm hệ thống firmware) tách riêng thành phần mềm phần cứng phải mua chung với đầu đọc Hình 2.2: Hình ảnh đầu đọc RFID (Nguồn: Ảnh chụp thực tế) SVTH: Lưu Công Chung Lê Viết Cường Lớp: 18CDT1 Trang Đồ án Vi điều khiển GVHD: TS Đặng Phước Vinh } private void button2_Click(object sender, EventArgs e) { button1.BackColor = Color.CornflowerBlue; button2.BackColor = Color.Red; button3.BackColor = Color.CornflowerBlue; button4.BackColor = Color.CornflowerBlue; hidecontrols(); if (panel2.Contains(cd1) == true) { panel2.Controls.Remove(cd1); } if (panel2.Contains(bc1) == true) { panel2.Controls.Remove(bc1); } if (panel2.Contains(ql1) == true) { panel2.Controls.Remove(ql1); } ql1 = new quanly(); ql1.TopLevel = false; panel2.Controls.Add(ql1); ql1.Show(); } private void button3_Click(object sender, EventArgs e) { button1.BackColor = Color.CornflowerBlue; button2.BackColor = Color.CornflowerBlue; button3.BackColor = Color.Red; button4.BackColor = Color.CornflowerBlue; hidecontrols(); if (panel2.Contains(cd1) == true) { panel2.Controls.Remove(cd1); } if (panel2.Contains(bc1) == true) { panel2.Controls.Remove(bc1); } if (panel2.Contains(ql1) == true) { panel2.Controls.Remove(ql1); } bc1 = new baocao(); bc1.TopLevel = false; panel2.Controls.Add(bc1); bc1.Show(); } private void Form1_Load(object sender, EventArgs e) { stream = new MJPEGStream("http://192.168.1.231:4747/video?640x480"); stream.NewFrame += stream_NewFrame; stream.Start(); camera = new VideoCapture(0); camera.ImageGrabbed += camera_ImageGrabbed; camera.Start(); } void stream_NewFrame(object sender, NewFrameEventArgs eventArgs) { Bitmap bmp = (Bitmap)eventArgs.Frame.Clone(); pictureBox3.Image = bmp; SVTH: Lưu Công Chung Lê Viết Cường Lớp: 18CDT1 Trang 50 Đồ án Vi điều khiển GVHD: TS Đặng Phước Vinh } void camera_ImageGrabbed(object sender, EventArgs e) { Mat frame = new Mat(); camera.Retrieve(frame, 0); pictureBox2.Image = frame.ToImage().Bitmap; } private void button4_Click(object sender, EventArgs e) { // panel3.Hide(); // panel2.Show(); // panel2.Controls.Clear(); // qt1.Close(); // cd1.Close(); // bc1.Close(); button1.BackColor = Color.CornflowerBlue; button2.BackColor = Color.CornflowerBlue; button3.BackColor = Color.CornflowerBlue; button4.BackColor = Color.Red; hidecontrols(); if (panel2.Contains(cd1) == true) { panel2.Controls.Remove(cd1); } if (panel2.Contains(bc1) == true) { panel2.Controls.Remove(bc1); } if (panel2.Contains(ql1) == true) { panel2.Controls.Remove(ql1); } cd1 = new caidat(); cd1.TopLevel = false; panel2.Controls.Add(cd1); cd1.Show(); } private void button5_Click(object sender, EventArgs e) { this.Close(); } private void timer1_Tick(object sender, EventArgs e) { if (vdk.IsOpen == true) { dataall = vdk.ReadExisting(); if (dataall.Length >= 12) { data1d = dataall.Substring(0, data2d = dataall.Substring(2, data3d = dataall.Substring(4, data4d = dataall.Substring(6, } 1); 1); 1); 1); }; if (data1d == "1") { button14.BackColor = Color.Red; } else button14.BackColor = Color.White; if (data2d == "1") { button13.BackColor = Color.Red; SVTH: Lưu Công Chung Lê Viết Cường Lớp: 18CDT1 Trang 51 Đồ án Vi điều khiển GVHD: TS Đặng Phước Vinh } else button13.BackColor = Color.White; if (data3d == "1") { button12.BackColor = Color.Red; } else button12.BackColor = Color.White; if (data4d == "1") { button11.BackColor = Color.Red; } else button11.BackColor = Color.White; } private void Form1_Leave(object sender, EventArgs e) { camera.Stop(); } private void button7_Click(object sender, EventArgs e) { vdk.Write("3"); } private void button8_Click(object sender, EventArgs e) { vdk.Write("4"); } private void timer2_Tick(object sender, EventArgs e) { if (qt1.IsOpen == true) { data3 = qt1.ReadExisting(); if (data3.Length >= 12) { data1 = data3.Substring(data3.IndexOf("") + 1, 12); } else { data3 = ""; data1 = ""; } } if (data1 == data4) { data1 = ""; } datahienthi = data1; if (datahienthi.Length > 8) { textBox3.Text = datahienthi; } DataTable dulieu = new DataTable(); if (qt1.IsOpen == true) { int a = Program.Database.dataflogin("SELECT * FROM quanlyve where ticketnumber = '" + data1 + "'"); data4 = data1; if (a == 1) { String slp4 = "Select COUNT(*) from history where ticketnumber = '" + data1 + "'"; int j = (int)Program.Database.doc(slp4); if (j % == 0) { SVTH: Lưu Công Chung Lê Viết Cường Lớp: 18CDT1 Trang 52 Đồ án Vi điều khiển GVHD: TS Đặng Phước Vinh String slp1 = "insert into history select owner,licenseplate,ticketnumber from quanlyve where ticketnumber = '" + data1 + "'"; OleDbDataReader reader = Program.Database.SelectSQL(slp1); String slp3 = "Select COUNT(*) from history"; int m = (int)Program.Database.doc(slp3); String slp2 = "Update history Set status = 'in', [date] = '" + DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss") + "' where (ID = " + m + ")"; Program.Database.UpdateSQL(slp2); string name_file = DateTime.Now.ToString("dd-MM-yyyy-hh-mmss"); string file_name = @"D:\dulieu\IN\" + name_file + ".png"; pictureBox2.Image.Save(file_name, ImageFormat.Png); if (vdk.IsOpen == true) { vdk.WriteLine("1"); } } else { String slp1 = "insert into history select owner,licenseplate,ticketnumber from quanlyve where ticketnumber = '" + data1 + "'"; OleDbDataReader reader = Program.Database.SelectSQL(slp1); String slp3 = "Select COUNT(*) from history"; int m = (int)Program.Database.doc(slp3); String slp2 = "Update history Set status = 'out', [date] = '" + DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss") + "' where (ID = " + m + ")"; Program.Database.UpdateSQL(slp2); string name_file = DateTime.Now.ToString("dd-MM-yyyy-hh-mmss"); string file_name = @"D:\dulieu\Out\" + name_file + ".png"; pictureBox2.Image.Save(file_name, ImageFormat.Png); if (vdk.IsOpen == true) { vdk.WriteLine("2"); } } } } } private void button9_Click(object sender, EventArgs e) { vdk.Write("5"); } private void button10_Click(object sender, EventArgs e) { vdk.Write("6"); } } } Quanly: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.OleDb; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; SVTH: Lưu Công Chung Lê Viết Cường Lớp: 18CDT1 Trang 53 Đồ án Vi điều khiển GVHD: TS Đặng Phước Vinh using Microsoft.Office.Interop.Excel; using app = Microsoft.Office.Interop.Excel.Application; using System.IO.Ports; namespace test1 { public partial class quanly : Form { String data1; public quanly() { InitializeComponent(); Form1.qt1.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler); } void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e) { data1 = Form1.qt1.ReadTo("_").TrimStart('_'); } private void label1_Click(object sender, EventArgs e) { } private void quanly_Load(object sender, EventArgs e) { khoi_tao_bang_1(); loadData1(); if (flogin.c == 1) { khoi_tao_bang_3(); loadData3(); } } private void loadData1() { System.Data.DataTable my_data = new System.Data.DataTable(); my_data.Load(Program.Database.SelectSQL("SELECT * FROM quanlyve")); dataGridView3.DataSource = my_data; } private void loadData3() { System.Data.DataTable my_data = new System.Data.DataTable(); my_data.Load(Program.Database.SelectSQL("SELECT * FROM Nhanvien")); dataGridView1.DataSource = my_data; } private void khoi_tao_bang_1() { dataGridView3.AutoGenerateColumns = false; const int NumberColumn = 7; dataGridView3.ColumnCount = NumberColumn; string[] list = new string[NumberColumn] { "ticketnumber", "owner", "type", "licenseplate", "fromdate", "todate","cost" }; string[] header_name = new string[NumberColumn] { "Số Vé", "Tên chủ xe", "Loại vé", "Biển số xe", "Từ ngày", "Đến ngày","giá tiền" }; int[] width_col = new int[NumberColumn] { 135, 150, 120, 120, 100, 100,100}; for (int i = 0; i < NumberColumn; i++) { dataGridView3.Columns[i].Name = list[i]; dataGridView3.Columns[i].DataPropertyName = list[i]; SVTH: Lưu Công Chung Lê Viết Cường Lớp: 18CDT1 Trang 54 Đồ án Vi điều khiển GVHD: TS Đặng Phước Vinh dataGridView3.Columns[i].HeaderText = header_name[i]; dataGridView3.Columns[i].Width = width_col[i]; dataGridView3.Columns[i].ValueType = typeof(String); dataGridView3.Columns[i].Visible = true; } } private void khoi_tao_bang_3() { dataGridView1.AutoGenerateColumns = false; const int NumberColumn = 5; dataGridView1.ColumnCount = NumberColumn; string[] list = new string[NumberColumn] {"ID","name","user", "password", "position"}; string[] header_name = new string[NumberColumn] {"ID","name","user", "password", "position" }; int[] width_col = new int[NumberColumn] { 135,150, 150, 120,150}; for (int i = 0; i < NumberColumn; i++) { dataGridView1.Columns[i].Name = list[i]; dataGridView1.Columns[i].DataPropertyName = list[i]; dataGridView1.Columns[i].HeaderText = header_name[i]; dataGridView1.Columns[i].Width = width_col[i]; dataGridView1.Columns[i].ValueType = typeof(String); dataGridView1.Columns[i].Visible = true; } } private void tabPage2_Click(object sender, EventArgs e) { } private void tabPage3_Click(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { try { String sql = "insert into quanlyve (ticketnumber, owner, type, licenseplate, fromdate, todate) values ('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox6.Text + "' ,'" + dateTimePicker1.Text + "','" + dateTimePicker2.Text + "')"; OleDbDataReader reader = Program.Database.SelectSQL(sql); loadData1(); } catch { MessageBox.Show("loi", "Loi"); } } private void button2_Click(object sender, EventArgs e) { String sql = "Update quanlyve Set owner = '" + textBox2.Text + "', type = '" + textBox3.Text + "', licenseplate = '" + textBox6.Text + SVTH: Lưu Công Chung Lê Viết Cường Lớp: 18CDT1 Trang 55 Đồ án Vi điều khiển GVHD: TS Đặng Phước Vinh "' , fromdate = '" + dateTimePicker1.Text + "' , todate = '" + dateTimePicker2.Text + "' where (ticketnumber = " + textBox1.Text + ")"; Program.Database.UpdateSQL(sql); loadData1(); } private void button3_Click(object sender, EventArgs e) { DialogResult HOI = MessageBox.Show("Chắc chắn muốn xoá chưa", "Chắc chưa", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (HOI == DialogResult.OK) { String sql = "Delete from quanlyve where (ticketnumber = '" + textBox1.Text + "')"; Program.Database.UpdateSQL(sql); loadData1(); } } private void button4_Click(object sender, EventArgs e) { System.Data.DataTable my_data = new System.Data.DataTable(); my_data.Load(Program.Database.SelectSQL("SELECT * FROM quanlyve where owner = '" + textBox2.Text + "' ")); dataGridView3.DataSource = my_data; } private void expert2excel(DataGridView g, string duongdan, string tenfile) { app obj = new app(); obj.Application.Workbooks.Add(Type.Missing); obj.Columns.ColumnWidth = 25; for (int i = 1; i < g.Columns.Count + 1; i++) { obj.Cells[1, i] = g.Columns[i - 1].HeaderText; } for (int i = 0; i < g.Rows.Count; i++) { for (int j = 0; j < g.Columns.Count; j++) { if(g.Rows[i].Cells[j].Value != null) { obj.Cells[i + 2, j + 1] = g.Rows[i].Cells[j].Value.ToString(); } } } obj.ActiveWorkbook.SaveCopyAs(duongdan + tenfile + ".xlsx"); obj.ActiveWorkbook.Saved = true; } private void button13_Click(object sender, EventArgs e) { expert2excel(dataGridView3, @"D:\", "xuatfileExcelve"); } private void dataGridView3_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e) { MessageBox.Show("gg"); } private void button12_Click(object sender, EventArgs e) { try { SVTH: Lưu Công Chung Lê Viết Cường Lớp: 18CDT1 Trang 56 Đồ án Vi điều khiển GVHD: TS Đặng Phước Vinh String sql = "insert into Nhanvien ([name], [user],[password],[position] ) values ('" + textBox16.Text + "','" + textBox15.Text + "','" + textBox14.Text + "','" + comboBox1.Text + "')"; OleDbDataReader reader = Program.Database.SelectSQL(sql); loadData3(); } catch { MessageBox.Show("loi", "Loi"); } } private void dataGridView3_CellClick(object sender,DataGridViewCellEventArgs e) { if (e.RowIndex >= 0) { DataGridViewRow row = this.dataGridView3.Rows[e.RowIndex]; textBox1.Text = row.Cells[0].Value.ToString(); textBox2.Text = row.Cells[1].Value.ToString(); textBox3.Text = row.Cells[2].Value.ToString(); textBox6.Text = row.Cells[3].Value.ToString(); } } private void button15_Click(object sender, EventArgs e) { expert2excel(dataGridView1, @"D:\", "xuatfileExcelnhanvien"); } private void button11_Click(object sender, EventArgs e) { String sql = "Update Nhanvien Set [user] = '" + textBox15.Text + "', [password] = '" + textBox14.Text + "', [position] = '" + comboBox1.Text + "'where ( [name] = '" + textBox16.Text + "')"; Program.Database.UpdateSQL(sql); loadData3(); } private void dataGridView1_CellClick(object sender,DataGridViewCellEventArgs e) { if (e.RowIndex >= 0) { DataGridViewRow row = this.dataGridView1.Rows[e.RowIndex]; textBox16.Text = row.Cells[1].Value.ToString(); textBox15.Text = row.Cells[2].Value.ToString(); textBox14.Text = row.Cells[3].Value.ToString(); comboBox1.Text = row.Cells[4].Value.ToString(); } } private void button10_Click(object sender, EventArgs e) { DialogResult HOI = MessageBox.Show("Chắc chắn muốn xoá chưa", "Chắc chưa", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (HOI == DialogResult.OK) { String sql = "Delete from Nhanvien where ([name] = '" + textBox16.Text + "')"; Program.Database.UpdateSQL(sql); loadData3(); } } } SVTH: Lưu Công Chung Lê Viết Cường Lớp: 18CDT1 Trang 57 Đồ án Vi điều khiển GVHD: TS Đặng Phước Vinh } Baocao: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.OleDb; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Microsoft.Office.Interop.Excel; using app = Microsoft.Office.Interop.Excel.Application; using System.IO.Ports; namespace test1 { public partial class baocao : Form { public baocao() { InitializeComponent(); } private void dateTimePicker2_ValueChanged(object sender, EventArgs e) { DateTime dtdate1 = DateTime.Parse(dateTimePicker1.Text); DateTime dtdate2 = DateTime.Parse(dateTimePicker2.Text); try { System.Data.DataTable my_data = new System.Data.DataTable(); my_data.Load(Program.Database.SelectSQL("SELECT * FROM history where [date] BETWEEN #" + dtdate1.ToString("MM/dd/yyyy hh:mm:ss") + "# AND #" + dtdate2.ToString("MM/dd/yyyy hh:mm:ss") + "#")); dataGridView1.DataSource = my_data; } catch { MessageBox.Show("loi", "Loi"); } } private void radioButton5_CheckedChanged(object sender, EventArgs e) { } private void baocao_Load(object sender, EventArgs e) { khoitaobang(); loadData(); } private void khoitaobang() { dataGridView1.AutoGenerateColumns = false; const int NumberColumn = 5; dataGridView1.ColumnCount = NumberColumn; string[] list = new string[NumberColumn] { "ID", "owner", "licenseplate", "status", "date"}; string[] header_name = new string[NumberColumn] { "ID", "Tên chủ xe","Biển số xe", "trạng thái", "ngày" }; int[] width_col = new int[NumberColumn] { 135, 150, 120, 120, 100}; for (int i = 0; i < NumberColumn; i++) { dataGridView1.Columns[i].Name = list[i]; SVTH: Lưu Công Chung Lê Viết Cường Lớp: 18CDT1 Trang 58 Đồ án Vi điều khiển GVHD: TS Đặng Phước Vinh dataGridView1.Columns[i].DataPropertyName = list[i]; dataGridView1.Columns[i].HeaderText = header_name[i]; dataGridView1.Columns[i].Width = width_col[i]; dataGridView1.Columns[i].ValueType = typeof(String); dataGridView1.Columns[i].Visible = true; } } private void loadData() { System.Data.DataTable my_data = new System.Data.DataTable(); my_data.Load(Program.Database.SelectSQL("SELECT * FROM history")); dataGridView1.DataSource = my_data; } private void radioButton1_CheckedChanged(object sender, EventArgs e) { System.Data.DataTable my_data = new System.Data.DataTable(); my_data.Load(Program.Database.SelectSQL("SELECT * FROM history")); dataGridView1.DataSource = my_data; } private void radioButton2_CheckedChanged(object sender, EventArgs e) { System.Data.DataTable my_data = new System.Data.DataTable(); my_data.Load(Program.Database.SelectSQL("SELECT * FROM history where status = 'in'")); dataGridView1.DataSource = my_data; } private void radioButton3_CheckedChanged(object sender, EventArgs e) { System.Data.DataTable my_data = new System.Data.DataTable(); my_data.Load(Program.Database.SelectSQL("SELECT * FROM history where status = 'out'")); dataGridView1.DataSource = my_data; } private void dateTimePicker1_ValueChanged(object sender, EventArgs e) { DateTime dtdate1 = DateTime.Parse(dateTimePicker1.Text); DateTime dtdate2 = DateTime.Parse(dateTimePicker2.Text); try { System.Data.DataTable my_data = new System.Data.DataTable(); my_data.Load(Program.Database.SelectSQL("SELECT * FROM history where [date] BETWEEN #" + dtdate1.ToString("MM/dd/yyyy hh:mm:ss") + "# AND #" + dtdate2.ToString("MM/dd/yyyy hh:mm:ss") + "#")); dataGridView1.DataSource = my_data; } catch { MessageBox.Show("loi", "Loi"); } textBox1.Text = dateTimePicker1.Value.ToString("MM/dd/yyyy hh:mm:ss tt"); } private void expert2excel(DataGridView g, string duongdan, string tenfile) { app obj = new app(); obj.Application.Workbooks.Add(Type.Missing); obj.Columns.ColumnWidth = 25; for (int i = 1; i < g.Columns.Count + 1; i++) { obj.Cells[1, i] = g.Columns[i - 1].HeaderText; } for (int i = 0; i < g.Rows.Count; i++) { SVTH: Lưu Công Chung Lê Viết Cường Lớp: 18CDT1 Trang 59 Đồ án Vi điều khiển GVHD: TS Đặng Phước Vinh for (int j = 0; j < g.Columns.Count; j++) { if (g.Rows[i].Cells[j].Value != null) { obj.Cells[i + 2, j + 1] = g.Rows[i].Cells[j].Value.ToString(); } } } obj.ActiveWorkbook.SaveCopyAs(duongdan + tenfile + ".xlsx"); obj.ActiveWorkbook.Saved = true; } private void button1_Click(object sender, EventArgs e) { expert2excel(dataGridView1, @"D:\", "xuatfileExcelvehistory"); } } } Caidat: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO.Ports; namespace test1 { public partial class caidat : Form { public static int a; public static int cc; public caidat() { InitializeComponent(); foreach (string s in SerialPort.GetPortNames()) { comboBox9.Items.Add(s); comboBox2.Items.Add(s); comboBox5.Items.Add(s); comboBox10.Items.Add(s); } } private void button6_Click(object sender, EventArgs e) { String portname = comboBox9.SelectedItem.ToString(); int baudRate =Convert.ToInt16(comboBox8.SelectedItem); Form1.vdk = new SerialPort(portname, baudRate); Form1.vdk.Open(); } private void button5_Click(object sender, EventArgs e) { Form1.vdk.Close(); } private void button9_Click(object sender, EventArgs e) { String portname = comboBox10.SelectedItem.ToString(); SVTH: Lưu Công Chung Lê Viết Cường Lớp: 18CDT1 Trang 60 Đồ án Vi điều khiển GVHD: TS Đặng Phước Vinh //Form1.qt1 = new SerialPort(portname,9600); Form1.qt1.PortName = portname; Form1.qt1.Open(); if (Form1.qt1.IsOpen == true) { cc = 1; Program.mainform.timer1.Enabled = true; } } private void button8_Click(object sender, EventArgs e) { Form1.qt2.Close(); } private void button10_Click(object sender, EventArgs e) { Form1.qt2.Close(); } private void button7_Click(object sender, EventArgs e) { Program.mainform.Close(); } } } SVTH: Lưu Công Chung Lê Viết Cường Lớp: 18CDT1 Trang 61 Đồ án Vi điều khiển GVHD: TS Đặng Phước Vinh CHƯƠNG IV: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 4.1 Kết luận 4.1.1 Đạt Sau ba tháng tìm hiểu thực với hướng dẫn tận tình thầy Đề tài bãi đỗ xe nhóm em hồn thành với với tiêu chí ban đầu nhóm đặt sau: - Tiến độ thực đề tài kịp với tiến độ giao - Biết sử dụng RFID vào hệ thống quản lý bãi đỗ xe - Có thể lập trình giao diện người dùng đơn giản phần mềm Visual Studio - Biết làm mô mạch phần mềm gia công mạch thực tế - Mạch, cảm biến, RFID hoạt động có độ tin cậy tốt, dễ dàng kết hợp với thiết bị ngoại vi khác để sử dụng thực tế - Các thành viên nhóm nâng cao khả làm việc nhóm, khả sử dụng phần mềm lập trình - Hệ thống đưa vào sử dụng thực tế quy mô vừa nhỏ 4.1.2 Hạn chế Song song với điều tích cực đạt Thì đề nhóm cịn tồn đọng hạn chế sau: - Hệ thống cịn hạn chế sử dụng hình LCD RFID Do đó, vào thực tế hệ thống gặp trường hợp mà chưa thể giải - Hệ thống chưa có Camera giám sát bãi đỗ - Phần mềm thiết chưa đẹp thân thiện với người dừng - Hệ thống chưa có cập nhật trưc tuyến - Các cảm biến, động không khả thi đưa vào sử dụng thực tế 4.2 Hướng phát triển Khi hệ thống đưa vào thực tế, cảm biến hồng ngoại nên đổi thành cảm biên hồng ngoại công nghiệp có khả sử dụng ổn định lâu dài SVTH: Lưu Công Chung Lê Viết Cường Lớp: 18CDT1 Trang 62 Đồ án Vi điều khiển GVHD: TS Đặng Phước Vinh Hệ thống nên tích hợp hai module RFID hình LCD cho hai luồng xe ra/vào Ngoài hai camera luồng vào, nên tích hợp thêm camera giám sát bãi đỗ để đảm bảo an toàn cho xe SVTH: Lưu Công Chung Lê Viết Cường Lớp: 18CDT1 Trang 63 Đồ án Vi điều khiển GVHD: TS Đặng Phước Vinh TÀI LIỆU THAM KHẢO [1] TS Đặng Phước Vinh, TS Võ Như Thành, Giáo trình Kỹ thuật Vi điều khiển, Nhà xuất Xây dựng, 2019 [2] Datasheet PIC16F877A: https://www.alldatasheet.com/datasheet-pdf/pdf/82338/MICROCHIP/PIC16F877A.html [3] Datasheer Servo SG90: https://datasheetspdf.com/pdf/791970/TowerPro/SG90/1 [4] https://en.wikipedia.org/wiki/Main_Page SVTH: Lưu Công Chung Lê Viết Cường Lớp: 18CDT1 Trang 64

Ngày đăng: 17/02/2022, 23:01

w