TỔNG QUAN VỀ ĐỀ TÀI
Tính cấp thiết của đề tài
Với sự phát triển của đô thị hóa và xe máy, ôtô ngày càng tăng, tình trạng tắc giao thông và rất hiếm chỗ đỗ xe đã trở thành một vấn đề nghiêm trọng Để đáp ứng nhu cầu ngày càng cao về đỗ xe của mọi người và giải quyết tình trạng kẹt xe
Bãi đỗ xe thông minh là một giải pháp mang tính đột phá, cho phép quản lý xe một cách hiệu quả và thông minh Thông qua nền tảng Thingspeak và ứng dụng trên SmartPhone, người dùng có thể dễ dàng tra cứu thông tin về các bãi đỗ xe trống và đầy Điều này giúp tiết kiệm thời gian của chúng ta trong cuộc sống ngày nay Bãi đỗ xe thông minh không chỉ cung cấp thông tin về tình trạng sử dụng của bãi đỗ xe, mà còn giúp quản lý việc đỗ xe một cách thuận tiện Người dùng có thể đặt chỗ trước và tránh tình trạng không có chỗ đỗ khi đến nơi Điều này không chỉ giúp giảm thiểu thời gian tìm kiếm chỗ đỗ mà còn tạo ra trải nghiệm thuận tiện cho người dùng Vì vậy nên em quyết định thực hiện một hệ thống đơn giản để áp dụng lý thuyết đã học vào đề tài thực hiện là: “Thiết kế, chế tạo mô hình bãi đỗ xe thông minh”.
Mục tiêu của đề tài
Mục tiêu của đề tài là Thiết kế, chế tạo mô hình bãi đỗ xe thông minh, giúp mọi người tiết kiệm thời gian trong việc đỗ xe Tối ưu hóa việc sử dụng không gian trong đô thị và giảm tình trạng kẹt xe hiện nay ở các thành phố, sử dụng app để quản lý cung cấp thông tin về bãi đỗ xe, cung cấp cho chúng ta thông tin và số lượng và chổ trống đậu xe tốt nhất Giảm rủi ro tính trang xe bị hư hỏng an ninh khu vực tăng hiệu xuất làm việc tốt nhất, xây dựng thành phố hiện đại tạo ra một hệ thông minh cho người dùng linh hoạt một cách hiệu quả.
Đối tượng nghiên cứu và phạm vi nghiên cứu
- Sử dụng thẻ RFID: là một thiết bị nhỏ có hình dạng của một thẻ nhựa nó chứa thông tin được sử dụng để nhận dạng và thu thập dữ liệu từ xa bằng công nghệRFID.
- Sử dụng cảm biến: là thiết bị module cảm nhận sự chuyện động kiểm soát xe ra vào.
- Sử dụng arduino và ESP 8266 : sử dụng arduino và ESP để lập trình và quản lý qua APP Thingspeak à Android Studio.
- Thiết kế hệ thống: quản lý bãi đỗ xe, phát hiện xe và quét mã thẻ người dùng. Thiết kế cách hoạt động của cảm biến kiểm soát và cách gửi thông tin lên webserver cơ sở dữ liệu để lưu trữ thông tin về bãi đỗ xe, xe và người dùng.
- Phát triển ứng dụng di động: Xây dựng ứng dụng di động cho người dùng để họ có thể kiểm soát xe của mình Cập nhật thông tin về bãi đỗ xe và trạng thái của xe lên ứng dụng Cung cấp tính năng quét mã thẻ người dùng để xác thực và đăng ký xe.
- Phát triển web server: Xây dựng web server để nhận thông tin từ cảm biến kiểm soát và lưu trữ vào cơ sở dữ liệu Xây dựng Thingspeak và ứng dụng android studio để ứng dụng di động có thể truy cập và cập nhật thông tin.
- Kiểm thử, đánh giá và đưa ra các kiến nghị: Đánh giá hiệu suất và khả năng mở rộng của hệ thống.
Phương pháp nghiên cứu
- Thiết kế, thi công mô phỏng trên máy tính
- Xây dựng các sơ đồ khối, lưu đồ thuật toán, viết chương trình
- Xây dụng mô hình áp dụng và thực tế
Cấu trúc báo cáo
Chương 1: TỔNG QUAN VỀ ĐỀ TÀI
Trình bày về những vấn đề như tính cấp thiết của đề tài, mục tiêu đề tài, đối tượng và phạm vi nghiên cứu, cách tiếp cận và phương phấp nghiên cứu.
CHƯƠNG 2: CƠ SƠ LÝ THUYẾT VÀ CÁC LINH KIỆN ĐƯỢC SỬ DỤNG
Trình bày về các lý thuyết, ứng dụng liên quan đến đề tài như IOT, xây dựng ứng dụng trên nền tảng Thingspeak,Android Studio, và lý thuyết và cách sử dụng các linh kiện được sử dụng trong đề tài.
CHƯƠNG 3: THIẾT KẾ VÀ THI CÔNG HỆ THỐNG
Trình bày về sơ đồ khối, sơ đồ thuật toán của hệ thống cũng như cách kết nối giữa các linh kện và vi điều khiển.
CHƯƠNG 4: KIỂM THỬ VÀ ĐÁNH GIÁ HỆ THỐNG
Trình bày kết quả đo được sau khi hệ thống đã hoàn thiện từ đó ta có thể đánh giá được các ưu, nhược điểm của hệ thống.
CƠ SỞ LÝ THUYẾT VÀ CÁC LINH KIỆN ĐƯỢC
Cơ sở lý thuyết
Internet of Things (IoT) là sự kết hợp giữa công nghệ phần cứng và phần mềm, tạo ra một mạng lưới kết nối hàng tỷ thiết bị và cảm biến, cho phép truyền và nhận dữ liệu thông qua việc sử dụng công nghệ điện toán đám mây và các công cụ thông minh IoT cho phép mọi thứ trở thành thiết bị kết nối, miễn là chúng có khả năng truyền và nhận dữ liệu qua mạng và được thiết kế để thực hiện một nhiệm vụ cụ thể.
Trong các lĩnh vực kinh tế và đời sống, IoT có tác động đa dạng Dưới đây là một số ứng dụng tiêu biểu và phổ biến của IoT:
Thiết bị mang theo (wearables):
Giám sát tình trạng sức khỏe của con người Kiểm soát và định vị vị trí cho trẻ em, người già và cảnh báo khi có sự cố xảy ra.
Thành phố thông minh (smart city):
Quản lý và tối ưu hóa nguồn năng lượng, như điện Giám sát và theo dõi chất lượng môi trường sống, chẳng hạn như không khí và nguồn nước Tối ưu hóa và điều phối việc đỗ xe Kiểm soát giao thông và phát hiện tội phạm thông qua hệ thống camera thông minh Dự báo dựa trên dữ liệu đã thu thập được.
Nhà thông minh (smart home):
Tự động hoá và nâng cao trải nghiệm sống trong nhà.
Quản lý đội xe (fleet management):
Quản lý vị trí và lộ trình của xe Giám sát hiệu suất xe (quãng đường đã đi, nhiên liệu sử dụng) để tối ưu hóa lợi nhuận kinh doanh.
Nông nghiệp thông minh (smart farming):
Phát triển nông nghiệp sạch trong nhà kính Hỗ trợ tự động tưới tiêu (hệ thống tưới thông minh) Giám sát chất lượng môi trường, chẳng hạn như đất và nước, và cảnh báo khi có sự cố để xử lý kịp thời và giảm thiểu thiệt hại.
Máy Web Server là máy chủ có dung lượng lớn, tốc độ cao, được dùng để lưu trữ thông tin như một ngân hàng dữ liệu, chứa những website đã được thiết kế cùng với những thông tin liên quan khác Tất cả các Web Server đều có một địa chỉ IP (IP Address) hoặc cũng có thể có một Domain Name Giả sử khi bạn đánh vào thanh Address trên trình duyệt của bạn một dòng http://www.abc.com sau đó gõ phím Enter bạn sẽ gửi một yêu cầu đến một Server có Domain Name là www.abc.com Server này sẽ tìm trang Web có tên là index.htm rồi gửi nó đến trình duyệt của bạn Web service là một hệ thống phần mềm được thiết kế để hỗ trợ khả năng tương tác giữa các ứng dụng trên các máy tính khác nhau thông qua mạng Internet, giao diện chung và sự gắn kết của nó được mô tả bằng XML
Web service là tài nguyên phần mềm có thể xác định bằng địa chỉ URL, thực hiện các chức năng và đưa ra các thông tin người dùng yêu cầu Trước hết, có thể nói rằng ứng dụng cơ bản của Web service là tích hợp các hệ thống và là một trong những hoạt động chính khi phát triển hệ thống
Trong hệ thống này, các ứng dụng cần được tích hợp với cơ sở dữ liệu(CSDL) và các ứng dụng khác, người sử dụng sẽ giao tiếp với CSDL để tiến hành phân tích và lấy dữ liệu Trong thời gian gần đây, việc phát triển mạnh mẽ của thương mại điện tử cũng đòi hỏi các hệ thống phải có khả năng tích hợp với CSDL của các đối tác kinh doanh (nghĩa là tương tác với hệ thống bên ngoài – bên cạnh tương tác với các thành phần bên trong của hệ thống trong doanh nghiệp).
Thingspeak là gì
ThingSpeak là một ứng dụng Internet (IET) và API nguồn mở (IoT) để lưu trữ và lấy dữ liệu từ những thứ bằng cách sử dụng giao thức HTTP qua Internet hoặc thông qua Mạng cục bộ Ứng dụng theo dõi vị trí và mạng các cảm biến có cập nhật
Hình 2.2: Khái quát WebserverHình 2.2 Khái quát Web Service trạng thái lên máy chủ.ThingSpeak ban đầu được đưa ra bởi ioBridge vào năm 2010 như một dịch vụ hỗ trợ các ứng dụng IoT.
Một cloud service khá phổ biến trong các cộng đồng IoT là ThingSpeak. Đây là một cloud service cho phép người dùng dễ dàng gửi dữ liệu và cung cấp các giao diện đồ họa hiển thị dữ liệu thông qua giao thức HTTP.
Sau đây là cách tạo 1 tài khoản ThingSpeak và 1 data channel và dùng Blocky để đưa data lên channel này thông qua giao thức HTTP.
Bước 1: Tạo Tài Khoản ThingSpeak
Bạn truy cập vào địa chỉ https://thingspeak.com và chọn Sign Up để đăng ký một tài khoản miễn phí Sau khi điền đầy đủ các thông tin yêu cầu, bạn sẽ nhận được email yêu cầu xác thực tài khoản email.
Hình 2.4: Tạo tài khoàn ThingSpeak
Sau khi xác thực, bạn sẽ có thể login vào và thấy được các thông tin về tài khoản của mình.
Sau khi login, bạn cần tạo một data channel để lưu trữ dữ liệu Trong My
Channels, bạn chọn New Channel và điền các thông tin cần thiết. Ở đây mình tạo 1 channel để chứa các dữ liệu từ cảm biến thu được từ cảm biến của mình với Field 1 là nhiệt độ cơ thể và Field 2 là nhịp tim:
Hình 2.5: Tạo kênh trên ThingSpeak
Bước 3: Lấy URL cần thiết để upload dữ liệu Để upload hay lấy dữ liệu về bạn cần biết URL để truy cập Mở channel mới tạo, tìm đến tab API Keys và sẽ thấy được các URL để get hay upload data:
Hình 2.6: URL để upload dữ liệu
Bước 4: Upload dữ liệu từ Blocky
Bạn upload chương trình sau vào Blocky
Sau khi Blocky chạy và bắt đầu upload dữ liệu lên ThingSpeak, có thể xem các dữ liệu này trong channel, tab Private View
Hình 2.7: Biểu đồ trên ThingSpeak
Có thể tìm hiểu thêm các tính năng khác của ThingSpeak như phân tích và vẽ đồ thị cho dữ liệu
Giới thiệu về xây dựng ứng dụng trên nền tảng Android
Android là một hệ điều hành dựa trên nền tảng Linux được thiết kế dành cho các thiết bị di động có màn hình cảm ứng Android có mã nguồn mở và Google phát hành mã nguồn theo Giấy phép Apache Chính mã nguồn mở cùng với một giấy phép không có nhiều ràng buộc đã cho phép các nhà phát triển thiết bị, mạng di động và các lập trình viên nhiệt huyết được điều chỉnh và phân phối Android một cách tự do.
Android có một hạt nhân dựa trên nhân Linux phiên bản 2.6, kể từ Android 4.0 Ice Cream Sandwich trở về sau, là phiên bản 3.x, với middleware, thư viện và API viết bằng C, còn phần mềm ứng dụng chạy trên một nền tảng ứng dụng gồm các thư viện tương thích với Java dựa trên Apache Harmony Android sử dụng máy ảo Dalvik với một trình biên dịch động để chạy 'mã dex' (Dalvik Executable) của Dalvik, thường được biên dịch sang Java bytecode Nền tảng phần cứng chính của Android là kiến trúc ARM Người ta cũng hỗ trợ x86 thông qua dự án Android x86, và Google TV cũng sử dụng một phiên bản x86 đặc biệt của Android.
2.3.2 Giới thiệu Android Studio - Phần mềm lập trình ứng dụng Android
Android Studio là một IDE (Intergrated Development Environment) được google xây dựng và cung cấp miễn phí cho các nhà phát triển ứng dụng Android.Android studio dựa vào IntelliJ IDEA, là một IDE tốt cho nhất Java hiện nay Do đóAndroid Studio sẽ là môi trường phát triển ứng dụng tốt nhất cho Android
Các linh kiện được sử dụng
ESP 8288 là một vi mạch tích hợp WI-FI được phát triên bởi công ty Espressif Systems Nó kết hợp chức năng xử lý và giao tiếp Wifi trong một chip duy nhất cho phép các thiết bị nhung như Arduino hoặc Raspberry Pi kết nối và giao tiếp thông qua mạng Wifi
ESP 8266 có một bộ xử 32- bit Tensilica Xtensa LX 106, bộ nhớ flash tích hợp và RAM Được sử dụng rộng rãi trong các ứng dụng IoT và các dự án nhúng như cảm biến, điều khiển thiết bị từ xa, giám sat môi trường, nó có thể lập trình bằng ngôn ngữ Arduino IDE hoặc Python và hỗ trợ các thư viện và công cụ phát triển phố biến dễ dàng phát triển ứng dụng IoT
ESP 8266 có tổng cộng 17 chân GPIO:
- GPIO0 (D3): Chân này thường được sử dụng để kiểm soát chế độ khởi động và lập trình của ESP8266 Nó cũng có thể được sử dụng làm chân GPIO thông thường.
- GPIO1 (TX) và GPIO3 (RX): Đây là các chân UART (giao tiếp serial) mặc định trên ESP8266 Chúng được sử dụng để kết nối với các thiết bị ngoại vi UART hoặc giao tiếp với máy tính thông qua cổng serial.
- GPIO2 (D4): Chân này thường được sử dụng để kết nối với diode LED nội bộ trên module ESP8266 Nó cũng có thể được sử dụng làm chân GPIO thông thường.
- GPIO4 (D2), GPIO5 (D1), GPIO6 (D6), GPIO7 (D7), GPIO8 (D5), GPIO9 (D11), GPIO10 (D12), GPIO11 (D13), GPIO12 (D9), GPIO13 (D10), GPIO14 (D15), GPIO15 (D8), GPIO16 (D0): Đây là các chân GPIO thông thường mà bạn có thể sử dụng để kết nối với các linh kiện ngoại vi, như cảm biến, đèn LED, nút nhấn, và nhiều thiết bị khác.
Atmega328 là một chíp vi điều khiển được sản xuất bời hãng Atmel thuộc họ MegaAVR có sức mạnh hơn hẳn Atmega8 Atmega 328 là một bộ vi điều khiển 8 bít dựa trên kiến trúc RISC bộ nhớ chương trình 32KB ISP flash có thể ghi xóa hàng nghìn lần, 1KB EEPROM, một bộ nhớ RAM vô cùng lớn trong thế giới vi xử lý 8 bít (2KB SRAM)
Với 23 chân có thể sử dụng cho các kết nối vào hoặc ra i/O, 32 thanh ghi, 3 bộ timer/counter có thể lập trình, có các gắt nội và ngoại (2 lệnh trên một vector ngắt), giao thức truyền thông nối tiếp USART, SPI, I2C Ngoài ra có thể sử dụng bộ biến đổi số tương tự 10 bít (ADC/DAC) mở rộng tới 8 kênh, khả năng lập trình được watchdog timer, hoạt động với 5 chế độ nguồn, có thể sử dụng tới 6 kênh điều chế độ rộng xung (PWM), hỗ trợ bootloader.
Thông số chính Atmega328P-PU:
+ Xung nhịp lớn nhất: 20Mhz
+ Bộ nhớ chương trình (FLASH): 32KB
+ Điện áp hoạt động rộng: 1.8V – 5.5V
+ Số timer: 3 timer gồm 2 timer 8-bit và 1 timer 16-bit
+ Số kênh xung PWM: 6 kênh (1timer 2 kênh)
Cảm biến tiệm cận (proximity sensor) là một loại cảm biến được sử dụng để phát hiện sự hiện diện hoặc khoảng cách đối tượng gần mà không cần tiếp xúc với vật thể đó.
- Chân thứ 1 Vcc là chân nguồn cảm biến
- Chân thứ 2 GND là chân đất
- Chân thứ 3 Signal là chân tín hiệu dùng để truyền tín hiệu và là chân analog
Cảm biến tiệm cận có thể dựa trên nguyên lý từ, ánh sáng, siêu âm hoặc hồng ngoại.
Khoảng cách phát hiện 30 đến 1m là khoảng cách tối đa mà cảm biến có thể phát hiện tượng gần
Hình 2.11: cảm biến tiệm cận
RTC là viết tắt của Real-Time Clock là đồng hồ thời gian thực Nó là một thành phần điện tử được sử dụng để theo dõi thời gian thực trong các hệ thống điện tử RTC thường bao gồm một mạch vi xử lý nhỏ và một bộ đếm thời gian có thể duy trì thông tin về ngày, tháng, năm, giờ, phút và giây.
RTC thường được sử dụng trong các ứng dụng yêu cầu đồng bộ hóa và theo dõi thời gian chính xác, chẳng hạn như hệ thống đồng hồ, đèn báo thức, thiết bị đo lường, hệ thống đăng nhập và các thiết bị IoT.
Trong Arduino, module RTC có thể được sử dụng để cung cấp chức năng đồng hồ thời gian thực cho hệ thống Module RTC thường được kết nối với Arduino thông qua giao tiếp I2C hoặc SPI và có thể được lập trình để đọc và ghi dữ liệu thời gian từ và vào vi xử lý Arduino.
Hình 2.12: Thời gian thực RTC
2.4.5 Màn hình hiển thị (LCD)
LCD 1602 (Liquid Crystal Display) được sử dụng trong rất nhiều các ứng dụng của VĐK LCD 1602 có rất nhiều ưu điểm so với các dạng hiển thị khác như:khả năng hiển thị kí tự đa dạng (chữ, số, kí tự đồ họa); dễ dàng đưa vào mạch ứng dụng theo nhiều giao thức giao tiếp khác nhau, tiêu tốn rất ít tài nguyên hệ thống,giá thành rẻ.
Chức năng của từng chân LCD 1602:
- Chân số 1 - VSS : chân nối đất cho LCD được nối với GND của mạch điều khiển
- Chân số 2 - VDD : chân cấp nguồn cho LCD, được nối với VCC=5V của mạch điều khiển
- Chân số 3 - VE : điều chỉnh độ tương phản của LCD
- Chân số 4 - RS : chân chọn thanh ghi, được nối với logic "0" hoặc logic "1":
- + Logic “0”: Bus DB0 - DB7 sẽ nối với thanh ghi lệnh IR của LCD (ở chế độ
“ghi” - write) hoặc nối với bộ đếm địa chỉ của LCD (ở chế độ “đọc” - read)
- + Logic “1”: Bus DB0 - DB7 sẽ nối với thanh ghi dữ liệu DR bên trong LCD
- Chân số 5 - R/W : chân chọn chế độ đọc/ghi (Read/Write), được nối với logic “0” để ghi hoặc nối với logic “1” đọc
- Chân số 6 - E : chân cho phép (Enable) Sau khi các tín hiệu được đặt lên bus DB0-DB7, các lệnh chỉ được chấp nhận khi có 1 xung cho phép của chân này như sau:
- + Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào thanh ghi bên trong khi phát hiện một xung (high-to-low transition) của tín hiệu chân E
- + Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khi phát hiện cạnh lên (low-to-high transition) ở chân E và được LCD giữ ở bus đến khi nào
Tổng kết chương
Trong chương này, chúng ta đã khám phá công nghệ IoT và hiểu về lý thuyết cũng như nguyên tắc hoạt động của các linh kiện được sử dụng trong đề tài như:RFID, động cơ servo, cảm biến tiệm cận, màn hình hiển thị LCD, các Vi điều khiểnArduino UNO và ESP8266 Tìm hiểu về IDE lập trình trên thiết bị di động AndroidStudio, về Server Thingspeak Dựa trên cơ sở lý thuyết này, trong chương 3 tiếp theo, chúng ta sẽ tập trung vào việc thiết kế và triển khai hệ thống.
THIẾT KẾ, THI CÔNG HỆ THỐNG
Thiết kế hệ thống
3.1.1 Sơ đồ khối hệ thống:
- Khối trung tâm xử lý: Đây là khối điều khiển chính có nhiệm vụ điều khiển các khối và đọc tín hiệu và gửi tín hiệu lên Thingspeak và Android Studio.
- Khối nguồn: Nguồn 5V đến 12V sẽ cấp cho trung tâm xử lý, tất cả các linh kiện sẽ lấy nguồn từ trung tâm này.
- Khối hiển thị: sẽ hiện thị những thông tin của các thẻ RFID
- Khối điều khiển: khi người dùng quét thẻ RFID thì Servo sẽ quay 90 độ và mở cổng cho xe vào hoặc ra.
- Khối cảm biến: có tác dụng phát hiện xe ra vào, và các vị trí đậu xe và gửi tín hiệu lên vi điều khiển từ đó gửi lên Thingspeak Android Studio.
- Khối giám sát: Thingspeak sẽ giám sát các xe ở bãi đỗ xe khi các vị bãi đỗ trống hoặc đầy Dữ liệu này được cập nhật liên tục lên Thingspeak
Khối hiển thị Khối nguồn
Khối cảm biến Khối giám sát
Hình 3.1: Sơ đồ khối hệ thống
Lưu đồ quy trình hoạt động của hệ thống
Hình 3.2: Lưu đồ quy trình hoạt động của hệ thống
3.2.1 Giải thích quy trình hoạt động:
Ban đầu khi xe bắt đầu vào ở cổng số 1, cảm biến sẽ phát hiện xe tiếp theo đèn led sẽ sáng lên báo có xe vào.
Sau đó người quét thẻ RFID nếu mã đúng mã thẻ thì hiển thị lên LCD và Servo sẽ quay 90 độ cổng sẽ mở ra và xe vào khi 10s sau cổng sẽ tự đóng lại.
Xe vào chỗ trống của bãi đỗ xe, cảm biến phát hiện xe và sẽ cập nhật dữ liệu, đồng thời gửi tín hiệu lên Thingspeak phát hiện xe đầy.
Thingspeak sẽ cập nhật dữ liệu 17s 1 lần và gửi dữ liệu về App trên thiết bị di động để người dùng theo dõi
Khi xe rời đi dữ liệu sẽ cập nhật lên Thingspeak vị trí còn trống.
Khi xe đi ra cảm biến sáng và Servo quay 90 độ cổng mở sau 10s sẽ tự động đóng lại.
Kết thúc quá trình bãi đỗ xe.
Cảm biến phát hiện xe đi vào
Xe đi vào (Cổng1) Bắt đầu
Hiển thị LCD, Cập nhật cơ sở dữ liệu
Kết Thúc Cảm biến phát hiện xe đi ra
Xe đậu vào chuồn đỗ xe
Sơ đồ mạch
Sơ đồ mạch gồm có các khối:
5 Khối truyền thông Arduino và ESP 8266
Sau đây chúng ta sẽ đi tìm hiểu các khối trên
Chi tiết các khối trong sơ đồ mạch
Cảm biến tiệm cận gồm có 3 chân:
- Chân số 1 là chân đất kết nối với chân GND của arduino
- Chân số 2 sẽ kết nối với chân Vin
- Chân cuối cùng sẽ kết nối với A0
- Vì trong mô hình có 6 cảm biến nên chúng ta sẽ mặc định chân số 1 và số 2, chân số 3 của cảm biến sẽ kết nối từ A0 đến A5.
- Chân số 1 sẽ kết nối với GND
- Chân số 2 sẽ kết nối với chân 5V
- Chân số 3 sẽ kết nối SDA
- Chân số 4 sẽ kết nối với SCL
Hình 3.5: Khối hiển thị (LCD)
Hình 3 6: Khối điều khiển Servo
- Chân số 1: sẽ kết nối với số 6
- Chân số 2: sẽ kết nối với chân đất GND
- Chân số 3: sẽ kết nối với chân 5V
- Vì trong mô hình có 2 Servo nên chân số 1 sẽ kết nối với chân 6 và 7
Hình 3.7: Khối RFID Quét thẻ
- Chân 1 kết nối với số10
- Chân 2 kết nối với số 13
- Chân 3 kết nối với số 11
- Chân 4 kết nối với số 12
- Chân 6 kết nối với GND
- Chân 7 kết nối với số 9
3.4.5 Khối truyền thông Arduino và ESP 8266
Hình 3.8: Khối truyền thông Arduino và ESP 8266
Truyền thông sẽ có 2 chân:
- Chân TX của Arduino sẽ kết nối với chân số 9 của ESP8266
- Chân RX của Arduino sẽ kết nối với chân số 10 của ESP 8266
3.5.3 Mô hình bãi đỗ xe
Hình 3.11: Mô hình thực tế
Lưu đồ thuật toán
Bắt đầu Cảm biến phát hiện xe gửi tín hiệu lên Thingspeak Chổ đầy sai
Khi xe đi ra, cảm biến phát hiện xe Servo mở cảm biến phát hiện xe đi ra gửi tín hiệu lên Thingspeak, chổ xe trống đúng
Xe rời khỏi bãi đậu
Cảm biến phát hiện xe, Led sáng
Thiết kế CSDL trên ThingSpeak
3.6.1 Tạo tài khoản Thingspeak Để bắt đầu sử dụng ThingSpeak, ta làm theo các bước sau:
Bước 1 Truy cập vào trang web của Thingspeak tại địa chỉ https://thingspeak.com và nhấp vào nút "Sign Up" để đăng ký một tài khoản miễn phí.
Bước 2 Điền đầy đủ các thông tin yêu cầu trong biểu mẫu đăng ký tài khoản Bao gồm tên, địa chỉ email và mật khẩu.
Bước 3 Sau khi điền đầy đủ thông tin, nhấp vào nút "Sign Up" để hoàn tất quá trình đăng ký Bạn sẽ nhận được một email xác thực tài khoản Vui lòng kiểm tra hộp thư đến của bạn và làm theo hướng dẫn để xác thực tài khoản.
Sau khi đăng nhập vào tài khoản ThingSpeak, bạn có thể tạo một data channel để lưu trữ dữ liệu từ các cảm biến.
1 Trong giao diện ThingSpeak, trên thanh menu, chọn "Channels" sau đó chọn
2 Trang "My Channels" sẽ hiển thị danh sách các channel của bạn Chọn "New Channel" để tạo một channel mới.
3 Trong trang "New Channel", bạn cần điền các thông tin cần thiết để tạo channel:
- Trong các Field chúng ta điền thông tin phù hợp với báo cáo của mình,ở đây chúng ta điền từ Field 1 đến Field 5 như hình.
- Đặt tên cho "New Channel".
4 Sau điền đầy đủ ta lưu thông tin "New Channel" lại.
3.6.3 Lấy URL cần thiết để upload dữ liệu
Trong phần Channels ở API Keys ta sẽ thấy các các mã Key và URL để get hay upload data.
Hình 3.15: Địa chỉ Key Thingspeak
3.7.4 Chế độ xem dữ liệu Ở chế độ này các cảm biến sẽ cập nhật dữ liệu 17s 1 lần lên Thingspeak và hiển thị lên các biểu đồ hình và ảnh cho chúng ta xem, dữ liệu này có thể công khai hoặc riêng tư tùy chúng ta chọn
Xây dựng ứng dụng trên Android Studio
Bước 1 Copy các file Image sau vào thư mục Drawable:
Hình 3.17: Cấu trúc thư mục Drawable trong ProjectBước 2 Xây dựng Layout cho activity_main.xml, cấu trúc file XML và đặt Id cho
Hình 3.18: Thiết kế cửa sổ chính Bước 3 Trong thư mục layout: Ta tạo thêm layout_Item.xml dùng để Custom lại
GridView, dưới đây là cấu trúc XML của nó:
Hình 3.19: Thiết thế cửa sổ CustomGridview
Ta sẽ dựa vào các id trong này để xử lý trong hàm getView của class mà ta kế thừa từ ArrayAdapter
Bước 4 Dưới đây là các class hỗ trợ xử lý nghiệp vụ:
Hình 3.20: Các lớp trong Project Android
- Class Car tạo ra đối tượng với các thuộc tính Tên chủ xe, Thứ tự chuồn, và hình ảnh xe dùng quản lý dữ liệu trong mảng.
- Class MyArrayAdapter kế thừa từ ArrayAdapter, mục đích của nó là giúp chúng ta Custom lại layout cho GridView.
- Cuối cùng MainActivity.java có nhiệm vụ truy cập server, lấy dữ liệu trên Thingspeak, hiển thị các thông tin trạng thái ra vào, bãi đỗ xe.
Bước 5 Thiết lập máy ảo và chạy ứng dụng, chúng ta có kết quả như sau:
Hình 3.21: Các lớp trong Project
Phạm vi bãi đỗ xe
- Có 4 chổ vị trí đậu xe
Vì mô hình bãi đỗ xe thông minh nên không gian bãi đỗ xe nhỏ và các chổ đậu xe giới hạn là 4 chổ
Nếu chúng ta áp dụng vào thực tế thì bãi đỗ xe của chúng ta sẽ lớn hơn.
KIỂM THỬ VÀ ĐÁNH GIÁ
Kết quả kiểm thử
4.1.1 Khảo sát các giá trị đo từ các cảm biến tiệm cận Để đánh giá độ chính xác của cảm biến tiệm cận em tiến hành đặt cảm biến ở những khoảng cách khác nhau từ nhỏ đến lớn so với mô hình xe Ô tô Ở mỗi khoảng cách, chúng ta em kiểm tra xem cảm biến có phát hiện được xe hay không. Kết quả thu được như sau:
Bảng 4.1: Bảng đo giá trị cảm biến
9 Có phát Có phát Có phát Không phát Không phát hiện xe hiện xe hiện xe hiện hiện
Không phát hiện Điều chỉnh biến trở cho phép chúng ta tăng hoặc giảm khoảng cách của cảm biến tiệm cận tùy theo nhu cầu Bằng cách thay đổi giá trị của biến trở, nếu chúng ta muốn phát hiện các vật thể từ xa, ta có thể điều chỉnh cảm biến để có khoảng cách lớn hơn Ngược lại, nếu chúng ta chỉ quan tâm đến những vật thể gần, ta có thể điều chỉnh cảm biến để có khoảng cách nhỏ hơn.
Số lần phát hiện Khoảng cách
Hình 4.1: Biểu đồ đo cảm biến Ở đồ thị hình 4.2, khoảng cách 1, tương ứng với 2cm, khoảng cách 2 tương ứng với 15 cm, khoảng cách 3 tương ứng với 35 cm, khoảng cách 4 tương ứng với
50 cm, khoảng cách 5 tương ứng với 70cm.
Hình 4.2: Kết quả kiếm thử cảm biến tiệm cận
- Khoảng độ đọc được của cảm biến còn bị ảnh hưởng vào môi trường xung quanh Với kết quả trên thì chúng ta thấy rằng khoảng cách 2 cm đến 35 cm thì chúng ta có thể nhìn thấy xe, khoảng cách 55 cm thì 2 lần chúng ta không nhìn thấy, còn khoảng cách 70 cm thì chúng ta không nhìn thấy Vậy nên chúng ta đặt ở khoảng cách dưới 50 cm để đảm bảo cảm biến luôn đọc chính xác.
4.1.2 Khảo sát các giá trị đo từ RFID
Thời gian trễ trong hệ thống RFID có thể phụ thuộc vào nhiều yếu tố, khoảng cách giữa thẻ RFID và đầu đọc, mức độ nhiễu trong môi trường và tốc độ xử lý của hệ thống.Tín hiệu của thẻ nhiễu hoặc xung đột do tín hiệu, thời gian trễ có thể tăng lên do quá trình xử lý và truyền dữ liệu.
STT Mã số xe Thời gian nhận được(s)
Thời gian trễ có thể ảnh hưởng đến khoảng cách xa và gần mà chúng ta đặt thẻ khi để xa đầu lọc thì sự phản hồi của hệ thống RFID không nhận được Để sự phản hồi của thẻ RFID truyền dữ liệu nhanh và chính xác chúng ta cần để thẻ sát với đầu lọc.
Bảng 4.3: Biểu đồ đánh giá thời gian trễ RFID Kết quả:
Hình 4.4: Kết quả kiểm thử thời gian trễ RFID
4.1.3 Khảo sát độ trễ của mô hình cập nhật lên Thingspeak
Thời gian trễ của Thingspeak trong việc cập nhật dữ liệu có thể thay đổi tùy thuộc vào một số yếu tố: Tốc độ mạng của internet, yêu cập nhật lên Thingspeak là18s 1 lần và tốc độ xử lý của vi điều khiển.
STT Mã số xe Thingspeak(s)
Bảng 4.3: Khảo sát độ trễ Thingspeak
Qua 8 lần khảo sát ta thấy độ trễ của Thingspeak trung bình là 18s, những lần chênh lệch mà chúng ta thấy khoảng từ 2 đến 3s , nếu như có nhiều chỗ đậu xe thì tốc độ xử lý cập nhật dữ liệu chậm hơn.
Bảng 4.5: Biểu đồ đánh giá thời gian trễ truyền dữ liệu lên Thingspeak
Hình 4.6: Kết quả kiếm thử độ trễ Thingspeak
4.1.4 Kết quả thu được từ Thingspeak Ở chế độ này các cảm biến sẽ cập nhật dữ liệu 17s 1 lần lên Thingspeak và hiển thị lên các biểu đồ hình và ảnh cho chúng ta xem, dữ liệu này có thể công khai hoặc riêng tư tùy chúng ta chọn
Dữ liệu của chúng ta gồm có 2 màu xanh đậm và xanh nhạt Xanh nhạt là trống còn xanh đậm là đầy.
Dưới đây 1 số dữ liệu mà ta thu thập từ Thingspeak.
Hình 4.7 Kết quả bãi đỗ xe khi đầy
Hình 4.8: Kết quả bãi đỗ khi trống
Hình 4.9: Kết quả biểu đồ
Đánh giá hệ thống
Sau quá trình thực hiện, dự án đã đạt được những kết quả sau:
- Nghiên cứu lý thuyết về Arduino, ESP8266, cách cài đặt và sử dụng phần mềm Arduino Nghiên cứu, thiết kế kết nối các cảm biến khoản cách cảm biên để nhận được tín hiệu.
- Thiết kế và thi công phần cứng, lập trình điều khiển trên vi điều khiển, xây dựng được cơ sở dữ liệu trên ThingSpeak để lưu trữ dữ liệu của thiết bị, thiết kế phần mềm ứng dụng trên thiết bị di động chạy hệ điều hành Android để giám sát từ xa
- Tiến hành đo đạc và kiểm thử chất lượng hoạt động và độ chính xác của cảm biến.
- Thiết kế, xây dựng được một hệ thống điều khiển thiết bị qua internet
- Dễ dàng sử dụng và có thể dùng cho mọi lứa tuổi
- Giao tiếp và điều khiển được nhiều thiết bị thông qua arduino.
- Giám sát được xe của mình từ xa
- Độ truyền dữ liệu phụ thuộc nhiều vào điều kiện mạng INTERNET.
- Dữ liệu truyền lên đôi khi vẫn còn bị gián đoạn, độ trễ lệch thời gian cập nhật
- Dữ liệu từ board lên webserver khá lâu phải mất ít nhất 18 giây mới có thể truyền đi được 1 mẫu.
- Ứng dụng chỉ mới sử dụng được trên các loại điện thoại thông minh chạy nền tảng Android.
Hướng phát triển đề tài
Do thời gian thực hiện còn hạn chế so với lượng kiến thức mà em phải tìm hiểu vì vậy không tránh khỏi việc có sai sót trong quá trình hoạt động của thiết bị. Để sản phẩm hoàn thiện hơn, trong thời gian tới em sẽ phát triển đề tài hơn bằng cách đầu tư nhiều hơn vào các loại cảm biến tốt hơn và có nhiều chức năng ứng dụng cao hơn Có áp dụng bãi đỗ theo tầng, kết hợp trả phí tự động khi sử dụng bãi đỗ xe và có đặt chỗ trước khi tới bãi đỗ xe.
Với những hướng phát triển nêu trên cùng với những ý tưởng và nhận xét khác của các thầy cô giáo, em sẽ cố gắng để phát triển dự án này hơn nữa, khắc phục những hạn chế còn tồn tại của dự án, để thiết bị có thể được đưa vào sử dụng như là một thiết bị phổ biến.