Hiện trạng IoT của bãi gửi xe tại trường Bãi gửi xe của trường ta là một bãi gửi xe thông minh sử dụng thẻ từ khi đã tích hợp các máy móc, công nghệ vào trong khâu quản lý.. + Cửa vào c
Trang 1TRƯỜNG ĐẠI HỌC KINH TẾ QUỐC DÂN VIỆN CÔNG NGHỆ THÔNG TIN VÀ KINH TẾ SỐ
-🙞🙞🙞
-BÀI TẬP LỚN MẠNG KẾT NỐI VẠN VẬT
Đề tài: Ứng dụng Internet of Thing trong bãi đậu xe thông minh tại Trường Đại học Kinh tế Quốc dân.
Họ và tên: Vũ Thị Kim Liên
Mã sinh viên: 11192733 Lớp: CNTT61B
Hà nội, 4/2022
Mục lục
Trang 2M đầầuở 1
I Hiện trạng IoT của bãi gửi xe tại trường 2
II Gi i phápả 3
1 Mô t h thôống ả ệ 3
2 Sơ đồ hệ thống 5
3 Sơ đồ chức năng 6
4 Quy trình vận hành 7
5 Lợi ích 7
II Mô phỏng hệ thống 9
1 Danh mục thiết bị cần thiết 9
2 Lập trình 9
T ng kếếtổ 17
Danh m c tài li u tham kh oụ ệ ả 18
Trang 3Mở đầu
Kinh tế Quốc dân là một trong những trường đại học hàng đầu của Việt Nam với chỉ tiêu tuyển sinh khoảng 25000 học sinh mỗi năm Trường ta có số sinh viên đông đúc trong khi đó phương tiện di chuyển đi lại chủ yếu là xe máy Mặc dù trường mình
đã có 3 bãi gửi xe dành cho sinh viên nhưng vẫn chưa đáp ứng hoàn toàn nhu cầu Con người đang tiến tới thời đại 4.0 với những giải pháp công nghệ thông tin tiên tiến hiện đại được áp dụng vào đời sống hàng ngày Là một trường đại học lớn, trường
ta nên áp dụng nhiều hơn các công nghệ thông minh đặc biệt là các công nghệ với kết nối vạn vật Internet of Things
Vì vậy, em mong muốn bãi gửi xe của nhà trường có thể hoạt động thông minh hơn để có thể đáp ứng nhu cầu của sinh viên Em đề xuất một mô hình bãi gửi xe thông minh kết hợp với công nghệ IoT Đây được xem là giải pháp hữu hiệu, mang lại hiệu quả cao nhất
Mô hình bãi giữ xe thông minh là một thành quả của việc áp dụng công nghệ thông tin, tự động hóa và viễn thông vào cuộc sống Giải pháp giúp quản lý thông tin
xe vào ra tại các bãi giữ xe trong siêu thị, bệnh viện, chung cư… bằng máy móc, thiết
bị công nghệ hiện đại Sự liên kết giữa các thiết bị giúp quản lý chính xác được xe ra -vào tới từng thời điểm, từng biến số xe và hình ảnh lái xe thông qua camera nhận dạng biển số và ID cấp cho từng thẻ Việc soát vé tại cổng ra / vào sẽ trở lên dễ dàng, hiệu quả, tiết kiệm thời gian, tránh ùn tắc xe và tạo nét văn minh, hiện đại cho các khu trung tâm
Đây là giải pháp nhằm quản lý khoa học, chính xác và an toàn cho các bãi giữ xe với quy mô từ nhỏ đến lớn Ngoài ra, giải pháp bãi đỗ xe thông minh còn đảm bảo việc chống mất cắp xe, quản lý thu phí chính xác, chống thất thoát, giảm nhân viên kiểm soát Giải pháp được đánh giá là giải pháp thân thiện với môi trường, không có rác thải
từ vé giấy và đặc biệt tất cả các thiết bị sử dụng đều đạt chuẩn công nghiệp, hoạt động liên tục, bền bỉ trong môi trường khắc nghiệt như tại Việt Nam
Trang 4I Hiện trạng IoT của bãi gửi xe tại trường
Bãi gửi xe của trường ta là một bãi gửi xe thông minh sử dụng thẻ từ khi đã tích hợp các máy móc, công nghệ vào trong khâu quản lý
+ Cửa vào của hệ thống: sinh viên vào giữ xe sẽ được cấp một thẻ cảm ứng, khi gửi xe nhân viên sẽ quét thẻ qua đầu đọc, hệ thống sẽ tự ra lệnh cho 2 camera chụp gương mặt và biển số của chủ xe
+ Với cửa ra: khi lấy xe, khách hàng hoặc nhân viên giữ xe quẹt thẻ qua đầu đọc,
hệ thống sẽ tự động nhận dạng chính xác và hiện lên hình ảnh của khách hàng đã được chụp lúc trước khi vào Đồng thời lúc đó, bảng sẽ hiện số tiền cần phải trả Nhân viên giữ xe sẽ xem hình, và so sánh, thu tiền
Tuy nhiên, mô hình mà trường đang áp dụng vẫn còn nhiều bất cập
Khi vào gửi xe, sinh viên sẽ được cấp thẻ từ Thẻ dùng hiện nay đã cũ và không thuận tiện cho người dùng Vẫn có nhiều sinh viên làm rơi mất thẻ xe, dẫn tới khó khăn khi làm thủ tục lấy xe ra
Hệ thống gửi xe này vẫn thu phí gửi theo cách truyền thống Điều này làm cho khó quản lý doanh thu cuối ngày cho nhân viên khi phí gửi xe là một số tiền nhỏ
và rải rác Ngoài ra khi thu phí như thế này cũng làm tốn thêm thời gian cho cả nhân viên và sinh viên và có thể gây ra tắc nghẽn nhất là trong giờ cao điểm
Chỗ để xe vẫn còn lộn xộn Sinh viên khi vào gửi không thể biết được chỗ nào còn trống dẫn tới việc mất thời gian tìm chỗ đậu xe Trong những ngày sinh viên
đi học đông còn có thể xảy ra trường hợp các xe để chen chúc với nhau có thể gây va chạm, hỏng xe của sinh viên
Hệ thống gửi xe vẫn còn truyền thống dẫn tới việc khó kiểm soát lượng xe
ra, vào bãi gửi Điều này làm giảm an ninh khu gửi xe khi sinh viên hay bị mất đồ: mũ bảo hiểm, áo mưa…
Trang 5II Giải pháp
Công nghệ đỗ xe thông minh sáng tạo kết hợp với kết nối IoT giúp giải quyết vấn
đề về an ninh, chất lượng bãi giữ xe tại trường mình Các cảm biến IoT được cài đặt xác định vị trí chỗ đậu xe trống Dữ liệu IoT này được truyền qua kết nối không dây đến máy chủ đám mây Tất cả dữ liệu từ bãi đậu xe được thu thập và phân tích trong thời gian thực để tạo ra một bản đồ không gian có sẵn được cung cấp cho những người tìm kiếm một không gian
Người lái xe tìm kiếm một chỗ đậu xe có thể tham khảo bản đồ bãi đậu xe thông minh thời gian thực và được hướng dẫn đến không gian trống gần nhất Các hệ thống tiên tiến có thể dành các không gian này và nhận thanh toán điện tử từ các trình điều khiển
Trong nghiên cứu trường hợp phát triển giải pháp đỗ xe thông minh IoT, các thành phần kỹ thuật bao gồm cảm biến siêu âm HC-SR04 đo khoảng cách vật lý bằng sóng siêu âm và vi điều khiển ESP8266 Cả hai đều được lắp đặt tại mọi chỗ đậu xe
Hình 1 Mô hình
Thiết bị IoT gửi bản cập nhật định kỳ bằng tín hiệu không dây bằng giao thức MQTT đến máy chủ đám mây chạy dịch vụ AWS IoT Máy chủ đám mây tập hợp dữ
Trang 6liệu về tất cả các vị trí đỗ xe Điều này cho người dùng thông qua một trang web hoặc ứng dụng di động các điểm đỗ xe có sẵn để cho phép họ chọn một
Trong hệ thống, em dùng cảm biến IR Cảm biến IR hay còn gọi là cảm biến hồng ngoại là cảm biến chiếu ra tia hồng ngoại mà mắt người không nhìn thấy được, nhằm trao đổi tín hiệu giữa các thiết bị với nhau hoặc dùng để quan sát, nhận diện vật thể trong tối Công nghệ này thường được ứng dụng để điều khiển các thiết bị từ xa
Hình 2 C m biếến IR ả
Cảm biến IR sẽ xác định xem chỗ đậu xe đã có xe hay chưa Khi đã có xe, đèn báo phía trên là màu đỏ, ngược lại là màu xanh Đèn báo sẽ giúp cho sinh viên dễ dàng tìm được chỗ đậu xe hơn
Từ cảm biến IR, hệ thống biết được số chỗ còn trống và cập nhật trên đèn LED thông báo Ở đầu mỗi dãy gửi xe, sẽ có biển thông báo về số chỗ trống trong dãy giúp cho sinh viên dễ dàng tìm được chỗ trống gửi xe
Ngoài cập nhât lên biển thông báo, hệ thống còn cập nhật trên màn hình thông báo của quản lý để dễ dàng kiểm soát
Trong mô hình bãi đậu xe thông minh còn có hệ thống nhận dạng thẻ từ Thẻ từ RFID được tích hợp trong thẻ sinh viên để tránh tình trạng rơi mất Thẻ từ dùng để xác nhận thời gian ra và vào của xe Từ đó, hệ thống có thể tính toán chi phí gửi xe của sinh viên
Trong chỗ đậu xe có hệ thống nhận diện biển số xe để thuận tiện cho lưu trữ và đảm bảo an ninh khu vực
Trang 7Dữ liệu về thời gian ra/vào, phí gửi… sẽ được đồng bộ hóa lên đám mây và sử dụng kèm theo ứng dụng trên điện thoại thông minh Dữ liệu về lịch sử gửi xe, thông tin sinh viên… được hiển thị trên ứng dụng giúp cho sinh viên dễ dàng quản lý Chi phí gửi xe sẽ được trừ vào số tiền sinh viên đã nạp trước vào trong hệ thống
2 Sơ đồ hệ thống
Hình 3 Mô t v trí đ u xe ả ị ậ
Trang 8Sau khi xe vào chỗ đỗ, thuật toán tự động trừ đi số chỗ còn trống được hiển thị trên bảng thông báo và màn hình hiển thị của quản lý viên Các đèn tại chỗ đã có xe đỗ chuyển sang màu đỏ Các dữ liệu sẽ được đồng bộ lên đám mây
3 Sơ đồ chức năng
Sơ đồ chức năng hệ thống
Hình 4 S đôồ ch c năng h thôếng ơ ứ ệ
4 Quy trình vận hành
Bãi đậu xe có biển thông báo ở đầu mỗi dãy xe Biển thông báo số chỗ còn trống trong mỗi hàng Phía trên mỗi chỗ đậu xe có đèn thông báo, đèn xanh là chỗ còn trống, khi đã có xe đậu, đèn chuyển sang màu đỏ Bên cạnh mỗi chỗ trống có một cột cảm ứng thẻ từ dùng để đọc thời gian vào và ra
Khi xe vào chỗ trống, đèn sẽ tự động chuyển sang đỏ Sinh viên quét thẻ để xác định chỗ trống đang có xe và xác nhận thời gian vào Hệ thống sửa đổng thông tin hiển thị trên biển thông báo và màn hình hiển thị của quản lý
Khi xe ra, sinh viên quét thẻ một lần nữa để xác nhận kết thúc gửi xe, hệ thống tính toán thời gian và phí gửi xe
Sau khi xe ra, đèn chuyển thành màu xanh Hệ thống tự động cập nhập trên biển báo và màn hình của quản lý
Trang 95 Lợi ích
Khi áp dụng cách quản lý bãi giữ xe thông minh bộ phận quản lý có thể hoàn toàn yên tâm về các vấn đề như doanh thu và giảm tối đa nguồn nhân lực so với cách quản lý bãi xe truyền thống:
- Giảm chi phí nhân lực
- Kiểm tra được doanh thu hàng ngày, tháng giảm thất thoát tối đa
- Phần mềm tự động phát hiện các xe gần hết hạn (với xe sử dụng gói nạp tiền theo tháng) và thông báo số tiền trong tài khoản sắp hết tiền để cảnh báo cho chủ phương tiện
- An toàn tuyệt đối tránh tình trạng làm giả vé dẫn đến thiệt hại về tài sản và uy tín
- Thuận tiện cho sinh viên trong việc quản lý phương tiện
Trang 10II Mô phỏng hệ thống
1 Danh mục thiết bị cần thiết
IR sensors (3 in this model): dùng để cảm ứng vị trí đậu xe còn trống hay không
Microcontroller (2 arduino boards): điều khiển hệ thống
WiFi module (ESP8266): kết nối các thiết bị với nhau
RFID tag: xác nhận thẻ
Servo motor
LCD display (optional): hiển thị thông báo
2 Lập trình
a Hệ thống kiểm soát chỗ trống
Các cảm biến IR sẽ được kết nối trong các chân khác nhau và sẽ cung cấp cho trạng thái của khu vực (1: đã có xe và 0: còn trống) Dữ liệu này sẽ được tải lên máy chủ Thông tin được tải lên bằng cách sử dụng mô-đun wifi ESP8266
Code lập trình trên Arduino:
#include <SoftwareSerial.h> //Software Serial library
const int ProxSensor1=5;
const int ProxSensor2=6;
const int ProxSensor3=7;
int inputVal = 0;
SoftwareSerial mySerial(12, 13);
SoftwareSerial espSerial(2, 3);
#define DEBUG true
String mySSID = "ram"; // WiFi SSID
String myPWD = "ramnath123$"; // WiFi Password
String myAPI = "I3SMDXSR4EMUK7CR"; // API Key
String myHOST = "api.thingspeak.com";
String myPORT = "80";
String myFIELD1 = "field1";
String myFIELD2 = "field2";
String myFIELD3 = "field3";
int sendVal1; int sendVal2; int sendVal3;
Trang 11int k=0;
void setup()
{
Serial.begin(9600);
mySerial.begin(115200);
espSerial.begin(115200);
pinMode(ProxSensor1,INPUT); //Pin 2 is connected to the output of proximity sensor
pinMode(ProxSensor2,INPUT);
pinMode(ProxSensor3,INPUT);
espData("AT+RST", 1000, DEBUG);//Reset the ESP8266 module
espData("AT+CWMODE=1", 1000, DEBUG); //Set the ESP mode as station mode
espData("AT+CWJAP=\""+ mySSID +"\",\""+ myPWD +"\"", 1000, DEBUG); //Connect to WiFi network
/*while(!esp.find("OK"))
{
//Wait for connection
}*/
delay(1000);
}
void loop()
{
sendVal1=digitalRead(ProxSensor1);
sendVal2=digitalRead(ProxSensor2);
sendVal3=digitalRead(ProxSensor3);
String sendData1 = "GET /update?api_key="+ myAPI +"&"+ myFIELD1 +"="+String(sendVal1);
String sendData2 = "GET /update?api_key="+ myAPI +"&"+ myFIELD2 +"="+String(sendVal2);
String sendData3 = "GET /update?api_key="+ myAPI +"&"+ myFIELD3 +"="+String(sendVal3);
espData("AT+CIPMUX=1", 1000, DEBUG); //Allow multiple connections
Trang 12espData("AT+CIPSTART=0,\"TCP\",\""+ myHOST +"\","+ myPORT,
1000, DEBUG);
espData("AT+CIPSEND=0," +String(sendData1.length() +4),1000,DEBUG);
espSerial.find(">");
espSerial.println(sendData1);
espData("AT+CIPMUX=1", 1000, DEBUG); //Allow multiple connections
espData("AT+CIPSTART=0,\"TCP\",\""+ myHOST +"\","+ myPORT,
1000, DEBUG);
espData("AT+CIPSEND=0," +String(sendData2.length() +4),1000,DEBUG);
espSerial.find(">");
espSerial.println(sendData2);
espData("AT+CIPMUX=1", 1000, DEBUG); //Allow multiple connections
espData("AT+CIPSTART=0,\"TCP\",\""+ myHOST +"\","+ myPORT,
1000, DEBUG);
espData("AT+CIPSEND=0," +String(sendData3.length() +4),1000,DEBUG);
espSerial.find(">");
espSerial.println(sendData3);
Serial.print("Value to be sent: ");
Serial.println(sendVal1);
Serial.print("Value to be sent: ");
Serial.println(sendVal2);
Serial.print("Value to be sent: ");
Serial.println(sendVal3);
if(k==0&&sendVal1==1&&sendVal2==1&&sendVal3==1)
{
SendMessage();
k=1;
}
if (mySerial.available()>0)
Serial.write(mySerial.read());
espData("AT+CIPCLOSE=0",1000,DEBUG);
//delay(100);
}
Trang 13String espData(String command, const int timeout, boolean debug)
{
Serial.print("AT Command ==> ");
Serial.print(command);
Serial.println(" ");
String response = "";
espSerial.println(command);
long int time = millis();
while ( (time + timeout) > millis())
{
while (espSerial.available())
{
char c = espSerial.read();
response += c;
}
}
if (debug)
{
//Serial.print(response);
}
return response;
}
}
b Hệ thống xác thực
Code:
#include<MFRC522.h>
#include<LiquidCrystal.h>
#include<SPI.h>
#include<Servo.h>
#define rs A0
#define en A1
#define d4 4
Trang 14#define d5 5
#define d6 6
#define d7 7
int pos=0;
MFRC522 mfrc522(10,9);
LiquidCrystal lcd(rs,en,d4,d5,d6,d7);
Servo myservo;
Servo myservo2;
//void up(int i){
// for (pos = 0; pos <= 180; pos += i) { // goes from 0 degrees
to 180 degrees
//// in steps of 1 degree
//myservo.write(pos); // tell servo to go to position in variable 'pos'
//delay(50); // waits 15ms for the servo to reach the position
// }}
//
// void down(int i){ for (pos = 180; pos >= 0; pos -= i) { // goes from 180 degrees to 0 degrees
//myservo.write(pos); // tell servo to go to position in variable 'pos'
//delay(50); // waits 15ms for the servo to reach the position
// }}
void setup()
{
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
Serial.begin(9600);
SPI.begin();
lcd.begin(16,2);
myservo.attach(8);
myservo.write(140);
myservo2.attach(3);
myservo2.write(140);
// Serial.print("#ACCESS CONTROL#");
Trang 15mfrc522.PCD_Init();
// Serial.println("Scan Tag");
}
void loop()
{ lcd.setCursor(0,0);
lcd.print(" PLEASE! SCAN ");
lcd.setCursor(0,1);
lcd.print(" TAG TO ENTER ");
if(!mfrc522.PICC_IsNewCardPresent())
{
return;
}
if(!mfrc522.PICC_ReadCardSerial())
{
return;
}
String uid="";
Serial.println();
Serial.print("UID=");
for(int i=0;i<mfrc522.uid.size;i++)
{
Serial.print(mfrc522.uid.uidByte[i]<0x10 ? "0" : "");
Serial.print(mfrc522.uid.uidByte[i],HEX);
uid.concat(String(mfrc522.uid.uidByte[i]<0x10 ? "0" : "")); uid.concat(String(mfrc522.uid.uidByte[i],HEX));
}
uid.toUpperCase();
if(uid=="D10DCA73")
{
//Serial.println("ravi");
lcd.clear();
delay(300);
lcd.setCursor(0,0);
lcd.print(" ACCESS GRANTED!");
lcd.setCursor(0,1);
lcd.print(" WELCOME Patel");
myservo.write(40);
myservo2.write(40);