Một menu thường được sử dụng khác là menu Tools. Khi mới kết nối bo Arduino với máy tính ta click vào Tools => board để chọn loại board sử dụng. Phần mềm chọn sẵn kiểu bo là bo Arduino Uno, nếu người dùng dùng kiểu bo khác thì chọn kiểu bo đang dùng.
Bên cạnh việc chọn bo thì một phần quan trọng nữa là chọn cổng COM. Hình bên dưới minh họa cho việc chọn cổng COM. Khi lần đầu gắn mạch Arduino vào máy tính, người sử dụng cần nhấn chọn cổng COM bằng cách vào Tools => Serial Port (một số phiên bản dùng từ Port) sau đó nhấn chọn cổng COM, ví dụ như COM1.
Hình 2.11: Cách chọn cổng COM trên IDE
Sau khi thực hiện các bước trên xong, người dùng sẽ bắt tay vào việc lập trình. Phần kế tiếp sẽ trình bày cấu trúc của một chương trình trong phần mềm IDE [1].
2.3.2 Giới thiệu về phần mềm PLX-DAQ a) Giới thiệu chung
PLX DAQ v2 là một chương trình được sử dụng để thiết lập giao tiếp dễ dàng giữa Microsoft Excel trên Máy tính Windows và bất kỳ thiết bị nào hỗ trợ giao thức cổng nối tiếp. Nó đã được viết có chủ đích để cho phép giao tiếp giữa Arduino và Excel.
b) Giao diện phần mềm
- Port: Đặt thành cổng Arduino (giống như trong Arduino IDE => Cơng cụ => Cổng, ví dụ: 3 cho COM3.
- Baud: Đặt thành tốc độ truyền mà bạn chạy Arduino của mình (ví dụ: 9600 nếu bạn đang sử dụng Serial.begin (9600); trong mã Arduino của bạn)
- Connect: Kết nối với Arduino của bạn và bắt đầu ghi nhật ký - Pause logging/resume logging: Khi kết nối sẽ tạm dừng ghi nhật ký dữ liệu
- Reset Timer: Sẽ đặt Timer thành 0. Timer có thể được sử dụng để đo thời gian Excel đã ghi nhật ký
- Clear Columns: Sẽ xóa tất cả dữ liệu đã ghi ra khỏi trang tính. Khơng xóa nhãn của các cột
- Display/Hide direct debug: Sẽ hiển thị hoặc ẩn trường văn bản ở bên phải. Cửa sổ gỡ lỗi trực tiếp có thể được sử dụng để theo dõi thủ công các lệnh mà PLX DAQ v2 nhận được trong Excel
- Sheet name to post to: Đều này sẽ liệt kê tất cả các trang tính trong sổ làm việc Excel. Bất kỳ trang tính nào bạn chọn trong menu thả xuống, dữ liệu đã ghi sẽ được đăng lên trang tính đó. Trang tính này sẽ được gọi là “ActiveSheet” trong toàn bộ tài liệu này.
- Note: Sau khi thêm / xóa trang tính, vui lịng nhấn nút “Tải” nhỏ ở bên trái của hộp thả xuống để danh sách trang tính được cập nhật.
- Controller Messages: Trong trường bên dưới các lệnh gần đây nhất và thông tin trạng thái sẽ được hiển thị. Nhiều khả năng thông tin thay đổi q nhanh khiến bạn khơng thể đọc được, do đó hãy sử dụng Cửa sổ gỡ lỗi trực tiếp.
- Reset on Connect: Hộp kiểm nên được đánh dấu vào mọi lúc. Nếu thẻ lệnh đầu tiên từ Excel tới Arduino sẽ là khởi động lại, do đó mã của bạn cũng bắt đầu từ đầu. Bằng cách này, bạn có thể có một phiên làm việc mới. Nếu bạn muốn kết nối với Arduino của mình mà khơng cần khởi động lại nó, chỉ cần bỏ chọn hộp.
- “Custom Checkbox 1/2/3”: Chúng có thể được sử dụng để điều khiển Arduino của bạn trong quá trình chạy theo bất kỳ cách nào bạn muốn. Có các lệnh để gắn nhãn Hộp kiểm bằng Arduino của bạn và để truy vấn trạng thái của các hộp. Ví dụ, bạn có thể dán nhãn cho một hộp “Cũng đo độ ẩm?” và kiểm tra theo yêu cầu trong Excel nếu bạn muốn Arduino của mình đo độ ẩm bằng cảm biến thứ hai bên cạnh chỉ đo, ví dụ: nhiệt độ. Có những lệnh đặc biệt Arduino có thể sử dụng để truy vấn trạng thái của các hộp kiểm.
2.4 Giới thiệu công nghệ
2.4.1 Giới thiệu chung về RFID a) Định nghĩa
Công nghệ nhận dạng tần số vô tuyến điện (RFID) đã được phát minh bởi Charlie Walton [2]. RFID về cơ bản các thẻ là một bộ phát (tag) và có một dữ liệu bên trong có thể xác định từng mục thơng qua việc truyền sóng vơ tuyến sóng. Việc truy xuất thơng tin và dữ liệu trong RFID hệ thống có thể được thực hiện bằng cách sử dụng dữ liệu có thể đọc được bằng máy tại thời gian và địa điểm cụ thể để đáp ứng các ứng dụng cụ thể [3]. Hiện tại, các hệ thống dựa trên RFID có thể được sử dụng như một hệ thống theo dõi ngồi bảo mật. Nó tích hợp bảo mật với theo dõi tài liệu có thẩm quyền cho thư viện bao gồm sạc và xả một cách dễ dàng và nhanh chóng, kiểm kê và xử lý vật liệu.
b) Cấu tạo
Một thiết bị bay một hệ thống RFID được cấu tạo bởi hai thành phần chính là thiết bị đọc (reader) và thiết bị phát mã RFID có gắn chip hay cịn gọi là tag. Một đầu đọc thường chứa một mô-đun tần số vô tuyến (máy phát và máy thu), một đơn vị điều khiển và một phần tử ghép nối với bộ phát. Bộ phát(tag), đại diện cho thiết bị mang dữ liệu thực tế của hệ thống RFID, thông thường bao gồm một phần tử ghép nối và một vi mạch điện tử [4].
c) Nguyên lý hoạt động
Giống như hệ thống thẻ thông minh, dữ liệu được lưu trữ trên một thiết bị mang dữ liệu điện tử - bộ phát. Tuy nhiên, không giống như những thẻ, nguồn điện cho thiết bị mang dữ liệu và trao đổi dữ liệu giữa thiết bị mang dữ liệu
thiết bị và đầu đọc đạt được mà không cần sử dụng các tiếp điểm điện, thay vào đó sử dụng từ tính hoặc điện trường [4].
Hình 2.13; Nguyên lý hoạt động của RFID d) Ứng dụng
- Ứng dụng quản lý lưu thơng hàng hố. - Ứng dụng quản lý kho hàng.
- Ứng dụng quan lý thu phí đăng ký tự động.
Hình 2.14: Ứng dụng của RFID 2.4.2 Giới thiệu chung về chuẩn giao tiếp USB
a) Định nghĩa
USB (Universal Serial Bus) là một giao diện kết nối thiết bị với máy tính. Với kết nối này, máy tính gửi hoặc truy xuất dữ liệu từ thiết bị. USB cung cấp cho các nhà phát triển một giao diện tiêu chuẩn để sử dụng trong nhiều loại ứng dụng khác nhau. USB thiết bị dễ dàng kết nối và sử dụng do quy trình thiết kế có hệ thống. Ghi chú ứng dụng này nhằm giúp đỡ làm cho q trình đó đơn giản hơn [7].
Hình 2.15: Đầu đọc USB tiêu chuẩn b) Cấu tạo b) Cấu tạo
Hệ thống USB bao gồm một máy chủ, thường là một máy tính cá nhân (PC) và nhiều thiết bị ngoại vi được kết nối thông qua cấu trúc liên kết tầng sao. Cấu trúc liên kết này cũng có thể bao gồm các trung tâm cho phép các điểm kết nối bổ sung vào hệ thống USB.
Thiết bị USB bao gồm một hoặc nhiều chức năng của thiết bị, chẳng hạn như chuột, bàn phím hoặc thiết bị âm thanh. Mỗi thiết bị được máy chủ cung cấp một địa chỉ, được sử dụng trong giao tiếp dữ liệu giữa thiết bị đó và máy chủ.
Hình 2.16: Thông số cấu tạo của 1 giao tiếp USB tiêu chuẩn 2.4.3 Giới thiệu chung về ngơn ngữ lập trình C
a) Khái niệm
C là một ngơn ngữ lập trình dùng để viết chương trình. Các chương trình là tập hợp của hướng dẫn của một lập trình viên cho máy tính bằng ngơn ngữ cấp cao.
b) Lưu đờ thuật tốn
Lưu đồ thuật tốn là một biểu đồ thế hiện trình tự và các bước để tạo ra một chương trình cụ thể, bảng 2.2 đưa ra các hình dạng và ý nghĩa của các thành phần trong lưu đồ thuật toán.
Bảng 2.6: Giới thiệu ký hiệu
Hình dạng Ý nghĩa
Dữ liệu vào (Input)
Xử lý (Process)
Quyết định, điều kiện
Luồng xử lý
Gọi chương trình con, hàm
Bắt đầu, kết thúc (Begin, end)
Điểm kết nối
Cấu trúc điều khiển là các cấu trúc dùng để điều khiển chương trình theo các hướng khác nhau, vì thế các cấu trúc này còn được gọi là cấu trúc điều khiển rẽ nhánh.
- Cấu trúc if:
Là một cấu trúc điều khiển rẽ nhánh, được sử dụng với một tốn tử so sánh. Nó sẽ kiểm tra xem điều kiện có đạt được khơng.
Cấu trúc:
if ( < điều kiện> ) {
Khối lệnh; }
Hình 2.17: Lưu đờ thuật tốn của cấu trúc if
Ví dụ:
if(A > 50) {
Thực hiện một nhiệm vụ nào đó; }
Chương trình sẽ kiểm tra xem giá trị A nào đó có lớn hơn 50 khơng, nếu có thì nhiệm vụ bên trong cấu trúc if sẽ được thực hiện, nói cách khác, nếu biểu thức điều kiện đúng thì khối lệnh bên trong hai dấu ngoặc nhọn sẽ được thực hiện, cịn nếu khơng thì chương trình sẽ bỏ qua các câu lệnh này.
Trong một số trường hợp thì hai dấu ngoặc nhọn có thể bỏ đi, nếu biểu thức điểu kiện đúng thì câu lệnh ngay sau if sẽ được thực hiện, câu lệnh này định nghĩa bằng dấu chấm phẩy, và nó chỉ thực hiện một câu lệnh duy nhất này. Ví dụ:
Một số toán tử so sánh thường được dùng trong cấu trúc if: x == y (giá trị của x bằng giá trị của y)
x!= y (giá trị của x khác giá trị của y) x < y (giá trị của x nhỏ hơn giá trị của y) x > y (giá trị của x lớn hơn giá trị của y)
x<=y (giá trị của x nhỏ hơn hoặc bằng giá trị của y) x>=y (giá trị của x lớn hơn hoặc bằng giá trị của y)
Lưu ý khi sử dụng if với toán tử so sánh bằng ( = = ), nếu bạn chỉ sử dụng một dấu bằng cho cấu trúc if, ví dụ if (x = 10) thì khi đó dấu bằng đơn này sẽ được hiểu là phép gán giá trị chứ không phải là tốn tử so sánh nữa, khi đó giá trị 10 sẽ được gán cho biến x, có nghĩa là khi cấu trúc if hoạt động thì sẽ ln ra kết quá là TRUE, và khi đó cấu trúc if của chúng ta sẽ bị hoạt động sai.
- Cấu trúc if/else:
Cấu trúc if/else là một cấu trúc điều khiển rẽ nhánh cao cấp hơn là cấu trúc if, nếu như cấu trúc if được gọi là cấu trúc if dạng thiếu thì cấu trúc if/else còn được gọi là cấu trúc if dạng đủ. Cấu trúc if / else giải quyết bài toán linh hoạt hơn là cấu trúc if. Cấu trúc if/else cho phép ta kiểm tra nhiều toán từ so sánh hơn. Cấu trúc: if(<điều kiện ) { Khối lệnh 1; { else { Khối lệnh 2; }
Hình 2.18: Lưu đờ thuật toán của cấu trúc if else Ví dụ: if(A> 500) { Thực hiện nhiệm vụ 1; } else { Thực hiện nhiệm vụ 2; }
Trong ví dụ này, giá trị A sẽ được kiểm tra, và nhiệm vụ số 1 sẽ được thực hiện nếu như giá trị A này lớn hơn 500, và nhiệm vụ còn lại, tức nhiệm vụ 2 sẽ được thực hiện nếu như A có giá trị bằng 500 hoặc nhỏ hơn 500.
Việc kiểm tra tính đúng sai của biểu thức trong cấu trúc if else được thực hiện liên tục cho đến khi nó tìm được một tốn tử so sánh đúng, khi đó câu lệnh tương ứng sẽ được thực hiện, và chương trình sẽ thốt khỏi cấu trúc if else này. Ngoài việc sử dụng cấu trúc if else như bình thường, ta cịn có thế sử dụng cấu trúc này theo một cách khác, ví dụ:
if ( A <500) { Thực hiện nhiệm vụ 1; } else if ( A >1000) { Thực hiện nhiệm vụ 2; } else { Thực hiện nhiệm vụ 3; }
Với cách này, ta có thế kiểm tra nhiều toán tử so sánh khác nhau, ứng với mỗi tốn tử đó sẽ là một nhiệm vụ khác nhau, như vậy cấu trúc này sẽ điều khiển linh hoạt hơn rất nhiều so với cấu trúc if bình thường.
- Cấu trúc for:
Cấu trúc for là cấu trúc sử dụng để lặp lại một khối lệnh nào đó dựa theo một điều kiện cụ thể, cấu trúc này thường được sử dụng cho các câu lệnh với tính chật lặp lại nhiều lần.
Vòng lặp for được định nghĩa bởi từ khóa for và được chia làm 3 phần chính, mỗi phần được ngăn cách bởi dấu chấm phẩy:
for (khởi tạo; điều kiện ; biến gia tăng ) {
Khối lệnh; }
Phần khởi tạo sẽ được thực hiện đầu tiên và chỉ xẩy ra một lần duy nhất, mỗi lần chạy vòng lặp, điều kiện sẽ được kiểm tra, nếu điều kiện đúng thì khối lệnh và biến gia tăng sẽ được thực hiện, cho đến khi điều kiện sai thì vịng lặp sẽ kết thúc.
Lưu đồ thuật tốn:
Hình 2.19: Lưu đờ thuật tốn của cấu trúc for
Ví dụ về một vịng lặp for trong arduino: for (int i = 0; i <255; i ++ )
{
analogWrite (PWMpin,i); delay (10);
}
Đây là một ví dụ về việc xuất tín hiệu analog trong arudino, đầu tiên trong vòng lặp for biến I sẽ được khai báo và gán bằng giá trị 0, sau đó chương trình sẽ kiếm tra điều kiện, nếu i < 255 thì i sẽ được tăng lên, sau đó sẽ thực hiện q trình xuất tín hiệu analog ra, vịng lặp sẽ kết thúc khi nào biến i đạt giá trị 255.
CHƯƠNG 3: XÂY DỰNG QUY TRÌNH THIẾT KẾ HỆ THỐNG CỦA HỆ THỐNG BÃI ĐỖ XE THÔNG MINH
3.1 Xây dựng quy trình
Với ứng dụng bãi đỗ xe quy mô ở các cơng viên, quảng trường khi tổ chức sự kiện, …Thì khơng cần thiết phải lắp camera giám sát ở nhiều nơi gây tốn kém kinh phí. Vì vậy ở đồ án này hệ thống bãi đỗ xe sẽ dùng hệ thống RFID và giám sát sự vào ra của xe bằng PLX-DAQ hiển thị qua Excel là chính.
3.1.1 Sơ đờ mạch
Hình 3.1: Sơ đờ mạch của hệ thống
Hệ thống gồm:
- 1 LCD kết nối I2C: Hiện thị trang thái của bãi đỗ xe.
Bảng 3.1: Chân kết nối của LCDxI2C
Module LCDxI2C Arduino Uno
GND GND
VCC 5V
SDA ANALOG A4
SCL ANALOG A5
Bảng 3.2: Chân kết nối của module thu phát hồng ngoại
Module thu phát hồng ngoại Arduino Uno
GND GND
VCC 5V
OUT1 DIGITAL 7
OUT2 DIGITAL 8
- 2 động cơ servo: Có tác dụng là thanh chắn barrier.
Bảng 3.3: Chân kết nối của động cơ Servo
Động cơ servo Arduino Uno
GND GND
VCC 5V
OUT1 DIGITAL 4
OUT2 DIGITAL 5
- 1 module RFID: Nhận tín hiệu từ thẻ.
Bảng 3.4: Chân kết nối của module RFID
Module RFID Arduino Uno
GND GND VCC 3.3V RESET DIGITAL 9 SS DIGITAL 10 MOSI DIGITAL 11 MISO DIGITAL 12 SCK DIGITAL 13
- 2 thẻ quẹt: Truyền tín hiệu cho module.
Chú ý: Với sơ đồ trên do khơng tìm được thư viện của module RFID nên em đã thay thế thao tác quẹt thẻ bằng 2 nút nhấn.
3.1.2 Lưu đờ
Hình 3.2: Lưu đờ 3.1.3 Cấu trúc mơ hình điều khiển
Hình 3.3: Kiến trúc mơ hình điều khiển thiết bị
- Kiến trúc mơ hình điều khiển gồm 2 phần chính là: phần cứng và phần mềm.
+ Phần cứng là Arduino còn phần mềm là PLX-DAQ, EXCEL.
+ Phần cứng là các linh kiện được kết nối vào Arduino qua các cổng Digital và Analog để điều khiển và nhận tín hiệu từ các linh kiện.
+ Phần mềm là PLX-DAQ nhận tín hiệu từ Arduino qua giao tiếp USB và hiển thị ra Excel.
3.2 Phân tích ca sử dụng
3.2.1 Biểu đờ ca ở mức tổng qt
Hình 3.4: Biểu đồ ca tổng quát 3.2.2 Biểu đồ ca chi tiết
a) Biểu đồ ca hệ thống
b) Biểu đờ ca quản lý dữ liệu
Hình 3.6: Biểu đồ ca quản lý hệ thống c) Biểu đồ ca sử dụng Arduino Uno
Hình 3.7: Biểu đờ ca sử dụng Arduino Uno 3.2.3 Giải thích các ca sử dụng của hệ thống
Bảng 3.5: Giải thích lưu đờ
Thuộc tính. Mơ tả.
Tác nhân Nhân viên, Người gửi xe
Mô tả Hành động đi vào bãi đỗ xe thì phải qua các bước như thế nào.
Điều kiện Không.
Luồng sự kiện Người gửi xe đi vào bãi
1. Bảng LED hiển thị tình trạng của bãi đỗ xe. Nhân viên
- Khi người gửi vào bãi:
1. Nếu còn chỗ trống thì quẹt thẻ RFID để mở cổng cho người gửi vào bãi. Hết chỗ trống thì kết thúc. - Khi người gửi ra khỏi bãi:
1. Quẹt thẻ RFID
2. Nếu đúng thẻ thì mở cổng. Sai thì kết thúc. 3. Kiểm tra thời gian ra vào của xe qua PLX-DAQ