▪ 1: Hệ thống yêu cầu việc cất xe?
▪ 2: Thực hiện việc cất xe.
▪ 3: Hệ thống yêu cầu việc lấy xe?
▪ 4: Thực hiện việc lấy xe.
1 Bắt đầu Kết thúc Cất xe Lấy xe Thực hiện việc cất xe Thực hiện việc lấy xe Đ Đ S S Thực hiện việc cất xe Thực hiện việc lấy xe 2 3 4
75 a) Lưu đồ thuật toán điều khiển cất xe
▪ 1: Di chuyển đến vị trí vào.
▪ 2: Nâng xe khỏi vị trí vào.
▪ 3: Di chuyển đến vị trí cất xe.
▪ 4: Đặt xe vào vị trí cất.
▪ 5: Quay về vị trí ban đầu.
2 1 Bắt đầu Di chuyển đến vị trí vào Nâng xe khỏi vị trí vào Di chuyển đến vị trí cất xe Đặt xe vào vị trí Quay về vị trí ban đầu Kết thúc 3 4 5
76 b) Lưu đồ thuật toán điều khiển lấy xe
▪ 1: Di chuyển đến vị trí cần lấy xe.
▪ 2: Lấy xe khỏi vị trí cất.
▪ 3: Di chuyển đến vị trí trả xe.
▪ 4: Đặt xe vào vị trí ra
▪ 5: Quay về vị trí ban đầu
Bắt đầu Di chuyển đến vị trí cần lấy xe Lấy xe khỏi vị trí Di chuyển đến vị trí trả xe Đặt xe vào vị trí ra Quay về vị trí ban đầu Kết thúc 2 1 3 4 5
77
CHƯƠNG 4: KẾT QUẢ VÀ ĐỊNH HƯỚNG
PHÁT TRIỂN
4.1 Kết quảđạt được
4.1.1 Kết nối hệ thống
a, Kết nối máy tính với Esp32
❖ Cách kết nối máy tính với Esp32:
- Một Esp32 thông thường bao gồm 2 phần: Phần cứng gồm một board mạch mã nguồn mở (thường gọi là vi điều khiển) có thể lập trình được. Và các phần mềm hỗ trợ phát triển tích hợp IDE ( Intergrated Development Environment) dùng để soạn thảo, biên dịch code và nạp chương trình cho board.
➢ Các chương trình của Esp32 đưuọc viết trên phần mềm IDE, do đó việc quan trọng nhất để trao đổi và nạp code cho Esp32 là cách thức giao tiếp với Esp32 và phần mềm IDE. Vì vậy mỗi board Esp32 sẽ được kết nối với máy tính thông qua một cáp Micro USB để nạp code để trao đổi dữ liệu giữa board Esp32 và máy tính. - Các bước kết nối và giao tiếp board Esp32 và máy tính.
+ Bước 1: Kết nối Esp32 với máy tính
+ Bước 2: Tìm cổng kết nối của Esp32 với máy tính.
• Khi Esp32 kết nối với máy tính, nó sẽ sử dụng một cổng COM
(communication port- cổng dữu liệu ảo) để máy tính và bo mạch có thể truyền tải dữ liệu thông qua cổng này.
• Windows có thể quản lý đến 256 cổng COM. Để tìm được cổng COM đang sử dụng để máy tính và mạch Esp32 giao tiếp với nhau ta thực hiện như sau: This PC / manage / device nanager / mở mục Port ( COM & LPT) / sẽ xuất hiện cổng COM Esp32 đang kết nối.
+ Bước 3: Khởi động phần mềm Arduino IDE.
+ Bước 4: Cấu hình phiên làm việc cho Arduino IDE ( loại Esp32).
78
Hình 4. 1: Chọn loại Esp32
• Vào menu Tools / Serial Port / chọn cổng Esp32 đang kết nối với máy tính.
• Xác nhận cổng COM của arduino IDE góc dưới cùng bên phải cửa sổ làm việc.
• Vào menu Tools / Programmer / chọn AVR ISP.
+ Bước 5: Tạo chương trình và nạp code cho Esp32 bằng cách
• Nhấn Verify để kiểm tra trương trình ( không có lỗi nào chương trình mới được upload)
• Nhấn Upload để nạp code cho board Esp32. b, Kết nối máy tính với PLC Mitsubishi FX3U.
❖ Giới thiệu phần mềm
- Để viết chương trình cho hệ thống và hệ thống điều khiển PLC thì nhóm dùng phần mềm GX Work 2.
Hình 4. 2: Biểu tượng phần mềm GXWorks2
+ Phần mềm GX – Work 2 là phần mềm được mitsubishi nâng cấp và thay thế cho GX Development trong lập trình PLC Mitsubishi với giao diện trực quan đẹp hơn,
79
thao tác mượt mà và có hỗ trợ thêm các ngôn ngữ lập trình khác như FBD ( Function Block Diagram), SFC ( Sequential Function Block Chart)
+ Phần mềm GX – Work 2 là một công cụ lập trình để thiết kế, gỡ lỗi và duy trì chương trình trên window.
+ Phần mềm GX -Work 2 đã cải thiện chức năng và khả năng thao tác với những tính năng dễ sử dụng hơn khi so sánh với GX Development đã có.
- Để tạo một giao diện làm mới của GX – Work2 ta thực hiện theo các bước sau: + Bước 1: Tạo một project mới bằng cách chọn vào New project trên thanh công cụ hoặc chọn mục Project / New project.
+ Bước 2: Chọn các thiết bị cho Project bằng cách:
• Mục Series: Chọn dòng PLC mitsubishi FX ( loại FXCPU)
• Mục type: Chọn loại PLC ( loại FX3U/FXUC)
• Mục Project type:
• Mục Language: Chọn ngôn ngữ lập trình cho Project (loại Ladder)
• Nhấn OK
Hình 4. 3: Mở một project mới
80
❖ Cách kết nối máy tính với PLC Mitsubishi.
- PLC mitsubishi tương tự như các loại PLC dòng khác để trao đổi và nạp dữ liệu từ phần mềm lập trình tương ứng phải có cách thức để giao tiếp giữa PLC và máy tính. Như vậy, để kết nối được PLC với máy tính để nạp chương trình ta cần phải có thiết bị trung gian là cáp. Dây cáp lập trình mỗi PLC mỗi hãng PLC sẽ sử dụng một loại cáp thích hợp khác nhau để kết nối. Loại cáp sử dụng để kết nối giữa PLC FX3U và máy tính thường là loại USBSC09-FX.
- Các bước kết nối máy tính với PLC Mitsubishi FX3U. + Bước 1: Kết nối bộ PLC mitsubishi Fx3u với máy tính.
+ Bước 2: Kiểm tra kết nối bằng cách vào mục This PC / Manage / Device manager / trong mục mở mục Port ( COM & LPT) / sẽ xuất hiện cổng COM PLC Mitsubishi FX3U đang kết nối.
+ Bước 3: Khởi động phần mềm lập trình GX – Work2 trên máy tính + Bước 4 : Thiết lập kết nối:
• Vào mục Conection Destination / Conection 1.
• Tại PC side I/F: chọn serial, chọn cổng COM đúng với cổng COM của cáp lập trình và tốc độ truyền.
• Tại PLC side I/F chọn PLC module.
• Để kiểm tra kết nối đã thành công hay chưa, ấn chọn Conection test. Nếu tất cả các vấn đề về kết nối giữa PLC mitsubishi và máy tính đã chính xác, phần mềm sẽ hiển thị lên thông báo Successfully Conected.
81
Hình 4. 4: Thiết lập kết nối máy tính với PLC
+ Bước 5: Nạp code cho PLC đang kết nối bằng cách: Vào mục Online / Write to PLC / chọn Select all / chọn Execute / Yes/ Close.
c, Kết nối PLC với Esp32
- Nhóm sử dụng Relay để kết nối giữa PLC và Esp32.
- Giao tiếp giữa PLC và Esp32 được điều khiển bằng áp. Khi đầu ra của Esp32 có tín hiệu thì cuộn hút sẽ trở thành nam châm điện và hút lấy tiếp điểm, khi đó tiếp điểm thường mở NO sẽ đóng, cho dòng điện chạy qua và truyền tín hiệu vào cho PLC.
82
4.1.2 Sơ đồ mạch điện
a) Sơ đồ mạch điện
- Kết nối từ nguồn 220V vào nguồn tổ ong :
Hình 4. 6: Sơ đồ kết nối nguồn 220V với nguồn tổ ong
Chú thích: + G1 là nguồn tổ ong
+ G2 là mạch tăng áp XL6009 cấp nguồn nuôi PLC
+ G3 là mạch hạ áp LM2596 cấp nguồn nuôi cho Driver A4988 - Kết nối nguồn và các đầu vào với PLC:
Hình 4. 7: Sơ đồ kết nối nguồn và các đầu vào với PLC
83 - Kết nối các đầu ra của PLC:
Hình 4. 8: Sơ đồ kết nối các đầu ra của PLC
Chú thích: Các đầu ra 07-1,3,6 là các đầu ra động cơ bước - Kết nối các Driver A4988:
Hình 4. 9: Sơ đồ kết nối các driver A4988
Chú thích: Các mũi tên 06-4,5,6 nối vào driver nhằm điều khiển bước và hướng quay động cơ bước
84 - Kết nối với động cơ bước:
Hình 4. 10: Sơ đồ nối các động cơ bước
b) Xây dựng sơ đồ nguyên lí - Sơ đồ chân nối nguồn:
85
- Sơ đồ nối chân đầu vào input mạch đọc RFID RC522:
Hình 4. 12: Sơ đồ nối chân của mạch đọc RFID RC522
- Sơ đồ nối chân của ESP32:
86 - Sơ đồ nối chân mạch Driver A4988:
87 - Sơ đồ nối chân PLC:
88
Hình 4. 16: Sơ đồ nối chân PLC với đầu vào
c) Tạo mạch in
- Từ sơ đồ nguyên lí, tạo ra mạch in của hệ thống:
89
4.1.3 Xây dựng mô hình
a) Xây dựng khung cơ khí của hệ thống
Hình 4. 20: Phần để xe và dẫn hướng động cơ Hình 4. 19: Động cơ và một số chi tiết
90
Hình 4. 21: Tổng thể mô hình
b) Xây dựng mạch điện hệ thống
Hình 4. 22: Mạch điện bộvi điều khiển
4.2 Định hướng phát triển
Đúc rút từ quá trình làm đồ án và thực hiện mô hình cơ khí, cũng như từ quá trình vận hành mô hình và những kết quả đạt được, nhóm đã nhận thấy được những điểm còn thiếu sót từ đồ án này và cần được cải thiện hơn nữa để phù hợp với nhu cầu ngày càng cao của người sử dụng nếu muốn đưa mô hình “ Bãi đỗ xe tự động” ra ứng dụng thực tế.
Nhóm xin đề ra những định hướng phát triển trong tương lai của mô hình “Bãi đỗ xe tự động” nhằm hoàn thiện hơn nữa, đảm bảo tính an ninh và thuận tiện, nhanh chóng cho người sử dụng :
91
+ Mô hình hệ thống bãi đỗ xe tự động mà nhóm thiết kế ứng dụng tính năng của thẻ RFID để đảm bảo an ninh cho hệ thống. Tuy nhiên, điều này vẫn chưa thể đảm bảo an ninh tuyệt đối cho hệ thống. Trong tương lai, nhóm có thể ứng dụng thêm xử lí ảnh bằng hệ thống Camera nhận diện biển số nhằm xác định một cách chính xác nhất xe được cất và lấy là cùng một chiếc.
+ Sử dụng thêm các cảm biến tạo tín hiệu phản hồi cho hệ thống để hệ thống hoạt động một cách chính xác.
+ Ứng dụng lập trình C# Winform trong quản lí bãi đỗ xe tự động để lưu dữ liệu về bãi đỗ xe như dữ liệu hình ảnh biển số xe của khách hàng được xử lí từ Camera nhận diện, dữ liệu về khách hàng như số điện thoại, số Chứng minh thư/ Căn cước công dân,….
+ Có thể phát triển thêm ứng dụng bãi đỗ xe trên di động hoặc website, giao diện thể hiện lên được còn chỗ trống trong bãi đỗ xe hay không, đặt trước chỗ đỗ xe,…
+ Ứng dụng công nghệ xử lí ảnh trong nhận diện khuôn mặt, hoặc quét dấu vân tay chủ xe đảm bảo mức an ninh cao nhất, đặc biệt với những chiếc xe cao cấp đỗ trong bãi, tạo niềm tin cho những khách hàng tiềm năng.
Trên đây là những phương án mà nhóm đề xuất trong tương lai, bãi đỗ xe tự động, thông minh có thể được áp dụng trong thực tế nhằm nâng cao chất lượng, uy tín, tính thuận tiện cơ động, an ninh cao.
92
CHƯƠNG 5: KẾT LUẬN VÀ ĐÁNH GIÁ
5.1 Thử nghiệm mô hình
Thông qua chạy thử nghiệm mô hình, nhóm thu được kết quả như sau : + Số lần tiến hành cất lấy xe: 20
+ Số lần thực hiện đúng quy trình: 18 + Số lần thực hiện lỗi: 2
5.2 Kết luận và đánh giá
a) Kết luận
Qua những cố gắng và nổ lực của cả nhóm, sự giúp đỡ tận tình của giảng viên hướng dẫn và bạn bè trong thời gian qua, nhóm đã hoàn thành đề tài “Nghiên cứu, thiết kếbãi đỗ xe tựđộng”.
Nhóm đã xây dựng được mô hình cơ khí mô tả hoạt động của hệ thống bãi đỗ xe dạng tầng. Ứng dụng được công nghệ thẻ từ thể hiện sự tối ưu của tự động hoá, giúp cho quá trình lấy gửi và lấy xe được bảo mật, an toàn.
Quá trình điều khiển hoạt động ổn định, an toàn, tự động. Quá trình gửi và lấy xe được thực hiện chính xác nhờ lập trình điều khiển PLC.
b) Đánh giá
Đề tài “Nghiên cứu, thiết kế bãi đỗ xe tự động” là mô hình thực tế. Phần quan
trọng nhất của đề tài là thiết kế và xây dựng được mô hình bãi đỗ xe, cất và lấy xe một cách nhanh chóng, thuận tiện. Để hoàn thành được đề tài này, nhóm phải nắm rõ về lập trình điều khiển PLC cũng như phương thức giao tiếp giữa PLC và vi điều khiển ESP 32. Việc ứng dụng mô hình vào thực tế cần xem xét tới kinh phí cũng như tăng thêm các thiết bị để đảm bảo an toàn, thuận tiện hơn.
Qua quá trình vận hành, chạy thử mô hình, nhóm nhận thấy mô hình đã đạt được những yêu cầu đề ra, bên cạnh đó cũng có một số vấn đề cần được cải thiện, khắc phục.
Cụ thể đề tài đã đạt được những nội dung sau: - Hệ thống có thể đưa xe vào và lấy xe ra
- Thẻ RFID giao tiếp được với Adruino và máy tính - Vận hành cất, lấy xe chính xác.
93
Bên cạnh những kết quả đạt được như trên thì hệ thống không thể tránh được những sai sót:
- Hệ thống chạy thực sự chưa được ổn đinh - Vẫn có lỗi xảy ra khi thực hiện cất, lấy xe Lý do xảy ra các lỗi trên:
- Sử dụng Relay đổi mức chậm hơn so với vòng quét của PLC dẫn đến lỗi khi cất lấy xe
94
TÀI LIỆU THAM KHẢO
-Tài liệu:
1.Hà Văn Phương, Giáo trình Đo lường và cảm biến, NXB Khoa học và kĩ thuật, 2013.
2.Trịnh Chất- Lê Văn Uyển, Tính toán thiết kế hệ dẫn động cơ khí tập 1, NXB Giáo dục, 2006.
3.Ths. Châu Trí Đức, Kỹ thuật lập trình PLC SIMATIC S7 200, TP Hồ Chí Minh, 10-2008.
4.Vũ Quang Hồi.-H, Giáo trình Kỹ thuật cảm biến, NXB Giáo dục Việt Nam, 2015. -Website: [1] Http://ttz.vn/lich-su-hinh-thanh-bai-do-xe-tren-the-gioi.htm [2] Https://vietnamarch.com.vn/bai-do-xe-thong-minh [3] Https://www.haphan.com/News/17500/tong-quan-cong-nghe-rfid-trong-thoi- dai-4-0 [4] http://arduino.vn [5] unlockplc.com
95
PHỤ LỤC
A. CHƯƠNG TRÌNH VI ĐIỀU KHIỂN ESP 32
#include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); #include <SPI.h> #include <MFRC522.h> MFRC522 mfrc522(5,15); #define IR_sense 14 #define EN 27 #define IN1 36 #define IN2 39 #define IN3 34 #define IN4 35 #define OUT1 32 #define OUT2 33 #define OUT3 25 #define OUT4 26 String tagID = ""; String whitecard[12] = {"D0F7421","FC336633","C85F33","ECA9732","1CB77333","2CD96A33","5C10 33","3C157233","FC87732","8C26732","9CE8733","C166333"};
bool pos[6]={0,0,0,0,0,0}; // 1 : available, 0: empty int check=0;
96 void setup() {
// put your setup code here, to run once: Serial.begin(9600);
SPI.begin(); // Init SPI bus
mfrc522.PCD_Init(); // Init MFRC522 card pinMode(14,INPUT);pinMode(EN,OUTPUT); pinMode(IN1,INPUT);pinMode(IN2,INPUT);pinMode(IN3,INPUT);pinMode(IN4, INPUT); pinMode(OUT1,OUTPUT);pinMode(OUT2,OUTPUT);pinMode(OUT3,OUTPUT) ;pinMode(OUT4,OUTPUT); digitalWrite(EN,0); digitalWrite(OUT4,1);digitalWrite(OUT1,1);digitalWrite(OUT2,1);digitalWrite(O UT3,1); lcd.init(); lcd.backlight(); lcd.print(" Loading....");delay(2000); lcd.clear(); lcd.setCursor(0,0);lcd.print(" Welcome! "); delay(2000);lcd.clear(); //digitalWrite(EN,1); }
void transmit_data(bool x, bool y, bool z){ digitalWrite(OUT1,x);
97 digitalWrite(OUT3,z); } void loop() { lcd.setCursor(0,0);lcd.print("P1:");lcd.print(pos[0]); lcd.setCursor(5,0);lcd.print("P2:");lcd.print(pos[1]); lcd.setCursor(10,0);lcd.print("P3:");lcd.print(pos[2]); lcd.setCursor(0,1);lcd.print("P4:");lcd.print(pos[3]); lcd.setCursor(5,1);lcd.print("P5:");lcd.print(pos[4]); lcd.setCursor(10,1);lcd.print("P6:");lcd.print(pos[5]); bool k=digitalRead(IR_sense); //Serial.println(k);
if((k==0 && c==0) || (k==0 && c==1) ) { //detected vehicle check=1;
}
else if(k==1 && c==1){ //no vehicle and has car in shelve check=2;
//Serial.println("vehicle on the shelve"); }
else if(k==1 && c==0){ // no vehicle and no car in shelve check=0;
//Serial.println("no one at all"); }
98 if(check==1){
//Serial.println("vehicle detected!");