You are on page 1of 31

BÁO CÁO TIẾN ĐỘ ĐỒ ÁN.

1. Các cơ sở lý thuyết liên quan đến đề tài bãi đỗ xe tự động.

a) Giới thiệu công nghệ RFID.

Là một công nghệ nhận dạng qua tần số vô tuyến, dùng kết nối sóng vô tuyến để tự
động xác định và theo dõi các thẻ nhận dạng gắn vào vật thể. Trong đề tài thì đối tượng
cần theo dõi là các thẻ từ chứa thông tin được lưu trữ bằng chip điện tử. Các thẻ từ này sẽ
nhận năng lượng phát ra từ thiết bị đọc RFID (reader) và dùng năng lượng này để gửi ra
lại mã thông tin của thẻ qua sóng mang. Từ đó thiết bị RFID reader sẽ nhận biết được mã
thông tin của thẻ từ đó. Mỗi loại thiết bị RFID reader sẽ chỉ phát ra một sóng điện từ với
tần số nhất định để kiểm tra được thẻ nào phù hợp với dải tần số hoạt động. Quá trình
phát ra năng lượng và thu lại tín hiệu sóng điện từ được diễn ra nhờ các antenna. Mỗi thẻ
từ chứa một mã thẻ nhất định và không trùng lặp nhau, hay còn được nhắc đến với tên
gọi là UID (Unique Identifier). Với module RFID RC522 được sử dụng trong hệ thống
thì tầm hoạt động cỡ vài centimet. Ngoài ra ở ngoài thị trường có những loại thẻ từ mà
module đọc thẻ từ với tần số khác nhau có thể truyền nhận lên đến vài trăm mét. Ưu điểm
của công nghệ này là không sử dụng tia sáng như công nghệ mã vạch và có thể đọc và
nhận dạng thông tin được truyền qua những khoảng cách nhỏ mà không cần tiếp xúc vật
lý. Hơn nữa, các bộ phận đọc thẻ từ RFID có thể đọc được thông tin từ các thẻ thậm chí
xuyên qua các môi trường, vật liệu như: bê tông, tuyết, sương mù, sơn và các môi trường
thách thức khác mà công nghệ mã vạch và các công nghệ khác không thể phát huy hiệu
quả.

Hình 2.6: Công nghệ RFID


b) Ngôn ngữ lập trình C# và .NET Framework
C# là một ngôn ngữ lập trình hướng đối tượng được phát triển bởi Microsoft, dựa
trên C++ và Java. Được giới chuyên môn nhận định là một ngôn ngữ lập trình đơn giản,
hiện đại, hướng đến nhiều mục đích sử dụng. Ngoài ra, tính mạnh mẽ, sự bền bỉ và năng
suất của việc lập trình cũng là một điểm mạnh của ngôn ngữ này.
.NET Framework là một nền tảng có thể sử dụng với ngôn ngữ .NET như C# để
phát triển các trang web động (ASP.NET), các ứng dụng cho Windows, Windows Phone.
Nó dược tổ chức thành tập hợp các namespace, nhóm các class có cùng chức năng lại với
nhau, ví dụ như System.Drawing cho đồ họa, System.Collections cho cấu trúc dữ liệu và
System.Windows.Forms cho hệ thống Windows Forms.
c) Thư việt S7.NET

Là một thư viện mà trong đề tài này nhóm em dùng để kết nối phần mềm lập trình
Visual Studio với PLC thông qua cổng Ethernet. Thư viện này tương thích với đa số các
dòng PLC Siemen và được viết hoàn toàn bằng C#. Trước khi thao tác thì ta phải mở kết
nối và sau đó là ngắt kết nối nó đi, ta có thể sử dụng hàm Open() và hàm Close() cho hai
thao tác này. Nhóm em thường thao tác với việc Set hoặc Reset 1 biến trong PLC và đọc
trạng thái tín hiệu biến nào đó trong PLC về lại Visual Studio.
d) Thư viện xử lý ảnh Emgu CV.

Emgu CV là một thư viện xử lý hình ảnh, thị giác máy tính dành riêng cho ngôn
ngữ C#. Cho phép gọi các hàm chức năng của thư viện xử lý ảnh OpenCV. Nó tương
thích với các ngôn ngữ như C#, VB, VC++ và Python.
Có thể được Visual Studio, Xamarin Studio và Unity biên dịch, nó có thể chạy
trên Windows, Linux, Mac OS X, iOS, Điện thoại Android và Windows.

e) Chuẩn giao tiếp SPI (Serial Peripheral Interface)

Là một chuẩn truyền thông đồng bộ nối tiếp để truyền dữ liệu ở chế độ song công
toàn phần (full-duplex), nghĩa là trong cùng một thời điểm có thể xảy ra đồng thời quá
trình truyền và nhận, nhằm đảm bảo sự liên hợp giữa các vi điều khiển và thiết bị ngoại vi
một cách đơn giản. Giao thức truyền thông này theo kiểu Master – Slave. Trong luận văn
này thì chuẩn giao tiếp SPI được thể hiện qua kết nối giữa module RFID RC522 với vi
điều khiển Arduino, trong đó Arduino đóng vai trò là master và module RFID RC522
đóng vai trò là Slave. SPI đôi khi được gọi là truyền thông “4 dây” vì có 4 đường giao
tiếp trong chuẩn này, đó là SCK (Serial Clock), MISO (Master Input Slave Output),
MOSI (Master Output Slave input) và SS (Slave Select). Trong đó:
- SCK hay SCLK: Xung đồng hồ có tác dụng giữ nhịp cho giao tiếp SPI. Xung này
được tạo ra từ Arduino. Vai trò của nó là rất quan trọng vì nó giúp cho quá trình
truyền ít bị lỗi và tốc độ truyền có thể đạt rất cao.
- MOSI hay SI: Cổng ra của bên Master, cổng vào của bên Slave. Chân này có tác
dụng truyền dữ liệu từ Master đến Slave.
- MISO hay SO: Cổng vào của bên Master, cổng ra của bên Slave. Chân này có tác
dụng truyền dữ liệu từ Slave đến Master.
- SS hay CS: Dùng để chọn Slave cần giao tiếp. Khi không hoạt động thì chân SS
này ở mức cao. Nếu Master kéo chân SS của Slave nào xuống mức thấp thì Slave
đó sẽ được giao tiếp với Master.

Về cách thức hoạt động thì cứ mỗi xung nhịp do Master tạo ra trên SCK thì một bit
trong thanh ghi dữ liệu của Master được truyền qua Slave trên đường MOSI, đồng thời
môt bit trong thanh ghi của Slave được truyền qua Master trên đường MISO. Do quá
trình gửi qua lại đồng thời nên nó được gọi là truyền dữ liệu “song công”.
f) Chuẩn giao tiếp Ethernet.

Ethernet là một công nghệ mạng cục bộ nhằm giao tiếp truyền thông tin giữa các
máy tính. Trong luận văn này thì cáp Ethernet được dùng để kết nối giữa máy tính và
PLC S7-1200 nhằm truyền nhận thông tin giữa hai thiết bị này. Ethernet sử dụng cáp
xoắn đôi và các liên kết sợi quang học giúp tăng tốc độ truyền dữ liệu hơn so với phiên
bản trước đó của nó là sử dụng cáp đồng trục.
g) Mosbus RTU

Giao thức Modbus RTU là một giao thức mở, sử dụng đường truyền vật lý RS-232 hoặc
RS485 và mô hình dạng Master-Slave. Đây là một giao thức được sử dụng rộng rãi trong
nhiều lĩnh vực như BMS (Building Management Systems), tự động hóa, công nghiệp,
điện lực,.... Chắc hẳn sẽ có bạn tự hỏi, tại sao giao thức Modbus này lại thông dụng như
thế, đi đến đâu, đụng vào thiết bị gì thì hầu như cũng có giao thức này? Vâng, câu trả lời
cho câu hỏi trên chắc chỉ cần gói gọn trong vài từ: Ổn định - Đơn giản - dễ dùng.
Modbus được coi là giao thức truyền thông hoạt động ở tầng "Application", cung cấp khả
năng truyền thông Master/Slave giữa các thiết bị được kết nối thông qua các bus hoặc
network. Trên mô hình OSI, Modbus được đặt ở lớp 7. Modbus được xác định là một
giao thức hoạt động theo "hỏi/đáp" và sử dụng các "function codes" tương ứng để hỏi
đáp.
Cấu trúc bản tin Modbus RTU
Một bản tin Modbus RTU bao gồm: 1 byte địa chỉ  -  1 byte mã hàm - n byte dữ liệu - 2
byte CRC như hình ở dưới:
Chức năng và vai trò cụ thể như sau:

 Byte địa chỉ: xác định thiết bị mang địa chỉ được nhận dữ liệu (đối với Slave)
hoặc dữ liệu nhận được từ địa chỉ nào (đối với Master). Địa chỉ này được quy định
từ 0 - 254
 Byte mã hàm: được quy định từ Master, xác định yêu cầu dữ liệu từ thiết bị Slave.
Ví dụ mã 01: đọc dữ liệu lưu trữ dạng Bit, 03: đọc dữ liệu tức thời dạng Byte, 05:
ghi dữ liệu 1 bit vào Slave, 15: ghi dữ liệu nhiều bit vào Slave ...
 Byte dữ liệu: xác định dữ liệu trao đổi giữa Master và Slave.
o Đọc dữ liệu:  
 Master:  2 byte địa chỉ dữ liệu - 2 byte độ dài dữ liệu            
 Slave: 2 byte địa chỉ dữ liệu - 2 byte độ dài dữ liệu - n byte dữ liệu
đọc được
o Ghi dữ liệu:   
 Master: 2 byte địa chỉ dữ liệu  - 2 byte độ dài dữ liệu - n byte dữ liệu
cần ghi     
 Slave: 2 byte địa chỉ dữ liệu - 2 byte độ dài dữ liệu  
 Byte CRC: 2 byte kiểm tra lỗi của hàm truyền. cách tính giá trị của Byte CRC 16
Bit

1. Giới thiệu một số phần mềm lập trình

 Microsoft Visual Studio.

Đây là 1 môi trường phát triển tích hợp (IDE) từ Microsoft. Nó được sử dụng để
phát triển chương trình máy tính cho Microsoft Windows, cũng như các trang web, các
ứng dụng web và các dịch vụ web. Trong luận văn, Visual Studio được sử dụng để lập
trình để giao tiếp giữa Arduino, máy tính và PLC. Có rất nhiều ngôn ngữ để cho bạn có
thể lập trình trên môi trường này gồm có C, C++, C#, Visual Basic, Java và Python.
Ngoài ra cũng có rất nhiều ứng dụng mà bạn có thể xây dựng ở đây như Windows Forms
Designer, Web designer hoặc là Mapping designer. Microsoft cung cấp phiên bản
“Express” đối với phiên bản Visual Studio từ 2013 trở về trước và “Community” đối với
bản Visual Studio từ 2015 trở về sau. Đây là phiên bản miễn phí của Visual Studio và
cũng là phiên bản được sử dụng trong luận văn này.

Hình 2.7: Phần mềm Microsoft Visual Studio 2015


 SQL Server 2014 Management Studio.

Là một công cụ để ta có thể truy cập đến cơ sở dữ liệu SQL Server. Nó có một giao
diện được thiết kế trực quan, dễ sử dụng. Nhờ đó ta có thể thêm, xóa hoặc sửa đổi các
thông tin về mã thẻ, khách hàng, thời gian gửi xe và nhiều thông tin khác trong cơ sở dữ
liệu. SQL Server 2014 Management Studio đã được tích hợp sẵn trình soạn thảo trực
quan SQL, điều đó có nghĩa là ta có thể sử dụng ngôn ngữ SQL lập trình trực tiếp trên
SQL Server 2014 Management Studio để thực hiện các thao tác như truy vấn dữ liệu,
thêm, xóa dữ liệu hoặc sửa đổi các hàng, cột trong cơ sở dữ liệu của chúng ta.
Hình 2.8: Phần mềm SQL Server 2014 Management Studio
 Gxwork2.

GX Works2 là phần mềm lập trình PLC của hãng Mitsubishi là phiên bản nâng cấp và
thay thế cho GX Developer bị hạn chế một số tính năng . Những cải tiến trong phiên bản
phần mềm này gồm có:
 Giao diện được thiết kế lại một cách trực quan hơn để thuận tiện cho người sử
dụng
 Thư viện các modul được cập nhập đầy đủ hơn
 Hỗ trợ thêm những ngôn ngữ lập trình như FBD và SFC
 Thao tác tùy chỉnh các thông số dễ dàng
 Bộ cài đặt được tích hợp thêm các gói phần mềm hỗ trợ

 Các dòng PLC Mitsubishi sử dụng được trên phần mềm GX Works2:

 FX CPU : từ dòng FX3U trở xuống


 Q CPU : Q mode, A mode
 L CPU
 QS CPU
 QnA CPU
 A CPU
 S CPU
Arduino IDE
Đây là một phần mềm được dùng để lập trình cho vi điều khiển Arduino được viết
bằng Java mà ta có thể dễ dàng biên dịch (compile) và gửi chương trình (upload) lên
board mạch Arduino chỉ bằng 1 cú nhấp chuột. Một chương trình được viết cho Arduino
được gọi là một sketch. Ta có thể viết chương trình cho Arduino bằng ngôn ngữ C hoặc
C++. Khi lập trình thì ta cần lưu ý đến 2 hàm để tạo ra một chương trình hoàn chỉnh có
thể chạy được. Đó là:
- Setup(): Hàm này để thiết lập các cài đặt, chỉ chạy mỗi khi khởi động một chương
trình
- loop(): Hàm này được lặp đi lặp lại cho đến khi tắt nguồn board mạch. Nó giống
như while (true) trong C/C++ hoặc giống như khối hàm OB1 trong PLC Siemens
vậy.

Ưu điểm của Arduino là một nền tảng mã nguồn mở. Nó có một cộng đồng rất lớn
trên thế giới nên sự hỗ trợ từ cộng đồng Arduino là cực kỳ hữu ích. Ở Việt Nam cũng có
một cộng đồng Arduino rất lớn đó là arduino.vn.
Hình 2.10: Phần mềm Arduino IDE

2. Giới thiệu một số phần cứng được sử dụng trong đề tài.

a) PLC Mitsubishi FX3U.

Dòng sản phẩm mới PLC FX3U là thế hệ thứ ba trong gia đình họ FX-PLC, là một PLC
dạng nhỏ gọn và thành công của hãng Mitsubishi Electric.Sản phẩm được thiết kế đáp
ứng cho thị trường quốc tế, tính năng đặc biệt mới là hệ thống “adapter bus” được bổ
xung cho hệ thống bus hữu ích cho việc mở rộng thêm những tính năng đặc biệt và khối
truyền thông mạng. Khả năng tối đa có thể mở rộng lên đến 10 khối trên bus mới này.
Với tốc độ xử lý cực mạnh mẽ, thời gian chỉ 0.065µs trên một lệnh đơn logic, cùng với
209 tập lệnh được tích hợp sẵn và cải tiến liên tục đặc biệt cho nghiệp vụ điều khiển vị
trí. Dòng PLC mới này còn cho phép mở rộng truyền thông qua cổng USB, hỗ trợ cổng
Ethernet và Cổng lập trình RS-422 mini DIN. Với tính năng mạng mở rộng làm cho PLC
này nâng cao được khả năng kết nối tối đa về I/O lên đến 384 I/O, bao gồm cả các khối
I/O qua mạng.
Thông số cơ bản :
- Điện áp hoạt động: 24VDC, 100-240VAC.
- Ngõ vào số: 8, 16, 24, 32, 40, 64.
- Đầu ra số: 8, 16, 24, 32, 40, 64, ngõ ra rơ le, Transitor(nguồn), transitor (chìm)
- Bộ nhớ chương trình: 64000 bước.
- Công suất tiêu thụ: 25, 30, 35, 40, 45, 50, 65.
- Cổng truyền thông: USB, RS-232C, RS-422, RS-485.
- Tiêu chuẩn: UL, CUL, CE.
b) Arduino UNO R3

Khi ai nhắc tới mạch Arduino dùng để lập trình, cái đầu tiên mà người ta luôn nghĩ tới là
dòng Arduino UNO. Hiện dòng mạch này đã phát triển tới thế hệ thứ 3 (R3). đây là mạch
mà ta sẽ tìm hiểu, khi bạn đã hiểu rõ về nó, bạn có thể dễ dàng tìm hiểu và lập trình các
dòng Arduino khác dễ dàng.

Tổng quan thông số của Arduino Uno R3

 Vi xử lý: ATmega328P
 Điện áp hoạt động: 5 Volts
 Điện áp vào giới hạn: 7 đến 20 Volts
 Dòng tiêu thụ: khoảng 30mA
 Số chân Digital I/O: 14 (với 6 chân là PWM)
 UART: 1
 I2C: 1
 SPPI: 1
 Số chân Analog: 6
 Dòng tối đa trên mỗi chân I/O: 30 mA
 Dòng ra tối đa (5V): 500 mA
 Dòng ra tối đa (3.3V): 50 mA
 Bộ nhớ flash: 32 KB với 0.5KB dùng bởi bootloader
 SRAM: 2 KB
 EEPROM: 1 KB
 Clock Speed: 16 MHz

Bộ nhớ:

Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng:

 32KB bộ nhớ Flash: những đoạn lệnh bạn lập trình sẽ được lưu trữ trong bộ nhớ
Flash của vi điều khiển. Thường thì sẽ có khoảng vài KB trong số này sẽ được
dùng cho bootloader nhưng đừng lo, bạn hiếm khi nào cần quá 20KB bộ nhớ này
đâu.
 2KB cho SRAM (Static Random Access Memory): giá trị các biến bạn khai báo
khi lập trình sẽ lưu ở đây. Bạn khai báo càng nhiều biến thì càng cần nhiều bộ nhớ
RAM. Tuy vậy, thực sự thì cũng hiếm khi nào bộ nhớ RAM lại trở thành thứ mà
bạn phải bận tâm. Khi mất điện, dữ liệu trên SRAM sẽ bị mất.
 1KB cho EEPROM (Electrically Eraseble Programmable Read Only Memory):
đây giống như một chiếc ổ cứng mini – nơi bạn có thể đọc và ghi dữ liệu của mình
vào đây mà không phải lo bị mất khi cúp điện giống như dữ liệu trên SRAM.

Sơ đồ chân của Arduino Uno R3

Chân cấp năng lượng

 5V: cấp điện áp 5V đầu ra, dùng để cấp nguồn cho các linh kiện điện tử kết nối với
Arduino
 3.3V: chức năng tương tự như cấp nguồn 5v nhưng đây là cấp điện áp 3.3V đầu ra.
 Ground: hay còn gọi là chân GND, là cực âm của nguồn điện cấp cho Arduino
UNO. Khi bạn dùng các thiết bị sử dụng những nguồn điện riêng biệt thì những
chân này phải được nối với nhau.
 Vin (Voltage Input): tương tự như chân 5V, nhưng thêm chức năng cấp nguồn
ngoài cho Arduino UNO thay vì cắm USB, bạn nối cực dương của nguồn với chân
này và cực âm của nguồn với chân GND.

Các cổng vào/ra (I/O)


Arduino cung cấp nhiều các chân I/O ( hay còn gọi là Pin ) để ta giao tiếp hay gửi lệnh
điều khiển các thiết bị, dưới đây là sẽ nói về các chân sử dụng nhiều nhất và phân chúng
làm các loại như sau:
Các chân Digital
Phiên bản Arduino UNO R3 được sở hữu 14 chân digital từ 0 đến 13 dùng để đọc hoặc
xuất tín hiệu. Chúng chỉ có 2 mức điện áp có thể điều khiển là 0V và 5V với dòng vào/ra
tối đa trên mỗi chân là 40mA. Ngoài ra một số chân digital có chức năng đặc biệt là chân
PWM.

 Chân PWM: là các chân có dấu '~' đằng trước, các chân này cho phép bạn xuất ra
xung PWM với độ phân giải 8bit (giá trị từ 0 đến 255) tương ứng với mức giao
động điện áp của chân từ 0V đến 5V, khác với các chân không phải PWM, chỉ có
thể chọn giá trị 0V hoặc 5V.
Các chân Analog
Arduino UNO có 6 chân analog (A0 đến A5) cung cấp độ phân giải tín hiệu 10bit (0 đến
1023) để đọc giá trị điện áp trong khoảng 0V đến 5V.

 Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp
I2C/TWI với các thiết bị khác.
Chân TXD và RXD
Đây là các chân Serial dùng để gửi (transmit – TX) và nhận (receive – RX) dữ liệu TTL
Serial. Arduino Uno có thể giao tiếp dữ liệu với các thiết bị cần sử dụng thông qua 2 chân
này, ngoài ra có thể sử dụng 2 chân này để nạp code cho mạch mà không cần thông qua
USB của mạch.
c) Module đọc thẻ RFID-RC522.
Module đọc thẻ RC522 có thể đọc được các loại thẻ có kết nối không dây như NFC, thẻ
từ (loại dùng làm thẻ giảm giá, thẻ xe bus, tàu điện ngầm...). Module có các thông số
chính như:

 Điện áp nuôi: 3.3V;


 Dòng điện nuôi :13-26mA
 Tần số hoạt động: 13.56MHz
 Khoảng cách hoạt động: 0 ~ 60 мм
 Cổng giao tiếp: SPI, tốc độ tối đa 10Мbps
 Kích thước: 40мм х 60мм
 Có khả năng đọc và ghi.
d) Cảm biến hồng ngoại.

Hiện nay trên thị trường có bán rất nhiều loại cảm biến quang, cảm biến hồng ngoại
phát hiện vật cản từ 5V-24V, giá thành cũng tương tự nhau, có ứng dụng giống nhau là
để phát hiện cản. Trong đề tài này nhóm em sử dụng cảm biến hồng ngoại phát hiện vật
cản E3F-DS10C4. Có thể sử dụng loại cảm biến quang khác cũng được.
Thông số kỹ thuật:
- Điện áp: 6-36VDC
- Dòng 300mA
- Đầu ra NPN
- Kết nối:
+ Dây màu nâu: nối nguồn 24VDC
+ Dây màu xanh: nối GND
+ Dây màu đen là dây tín hiệu thường mở NPN, nối vào ngõ vào của PLC.
- Khoảng cách: 3-30cm, có thể điều chỉnh được qua biến trở gắn trên cảm biến.
- Có led hiển thị ngõ ra màu đỏ.

Hình 3.17: Cảm biến hồng ngoại phát hiện vật cản E3F-DS10C4
e) Webcam Logitech C270 720p.
Trên thị trường hiện nay có rất nhiều loại webcam với sự đa dạng về giá cả cũng
như là chất lượng. Tuy nhiên để có thể chọn ra một loại webcam tầm trung có giá cả vừa
phải với độ phân giải cao và chất lượng tốt thì nhóm em lựa chọn webcam Logitech C270
720p. Webcam này được sử dụng để chụp ảnh biển số xe và gửi hình ảnh qua qua máy
tính thông qua cổng USB.
Thông số kỹ thuật:
- Tốc độ khung hình: 30fps
- Độ phân giải 720p.
- Tiêu cự: Lấy nét cố định.
- Cổng kết nối với máy tính: Cổng USB.
- Hỗ trợ hệ điều hành: Windows® 10, Windows 8, Windows 7, macOS 10.10,
Chrome OS, Android™ v 5.0.
- Tính năng: Hoạt động với Skype™ - Google Hangouts™ - FaceTime dành cho
Mac.

Hình 3.18: Webcam Logitech C270 720p.

f) Động cơ bước.
Các động cơ này quay ở các góc cố định bằng các xung điện tử được điều khiển kỹ thuật
số. Động cơ bước kiểu lai kết hợp một cánh quạt với nam châm vĩnh cửu và thân từ sử
dụng vòng bi. Vòng bi là rất quan trọng đối với độ chính xác của động cơ. Động cơ bước
kiểu lai của Minebea sử dụng vòng bi có độ chính xác cao được sản xuất trong nhà góp
phần rất lớn vào độ chính xác và độ tin cậy của các sản phẩm này.
Động cơ bước lai MineBea có thiết kế tương tự như động cơ Nema 17 làm cho nó trở nên
lý tưởng để sử dụng trong các ứng dụng robot và máy in 3D.
Đặc điểm kỹ thuật:
Mô hình: 17 PM-K049U
Bước góc: 1,8 độ
Dòng điện định mức: ~ 0,8A Điện trở :
3,1 ~ 8,3 ohm
g) Stepper driver
A4988 Step Driver có thể dùng cho Reprap trong máy in 3D kèm với board RAMPS 1.4.
Dùng với board CNC Shield v3 cho CNC mini. Hoặc dùng điều khiển động cơ bước.
- Giao thức điều khiển số bước và chiều quay rất đơn giản.
- 5 cấp điều chỉnh bước: 1; 1/2; 1/4; 1/8 và 1/16 bước.
- Điều chỉnh dòng định mức cấp cho động cơ bằng triết áp.
- Có chức năng bảo vệ ngắn mạch, bảo vệ quá nhiệt, bảo vệ tụt áp và chống dòng ngược.
Thông số kĩ thuật:
- Điện áp cấp tối thiểu: 8 V
- Điện áp cấp cực đại: 35 V
- Dòng cấp liên tục cho mỗi pha: 1 A (không cần tản nhiệt, làm mát)
- Dòng cấp liên tục cho mỗi pha: 2 A (khi có làm mát, tản nhiệt)
- Điện áp logic 1 tối thiểu: 3 V
- Điện áp logic 1 tối đa: 5.5 V
- Độ phân giải: full, 1/2, 1/4, 1/8, và 1/16
Sơ đồ kết nối giữa stepper driver và động cơ bước.
h) Module RS485 Arduino.

MAX485 là một mạch chuyển đổi TTL To RS485 chuyển đổi tín hiệu TTL sang RS485
cho phạm vi xa, tốc độ dữ liệu cao, dễ xảy ra lỗi giao tiếp. Các mạng truyền thông kỹ
thuật số thực hiện tiêu chuẩn EIA-485 có thể được sử dụng hiệu quả trong khoảng cách
xa và trong môi trường nhiễu điện.
Bộ chuyển đổi này cho phép bạn gửi và nhận dữ liệu bằng mạng RS485 từ Arduino / vi
điều khiển của bạn. Tương tự như giao diện Serial TTL và RS232, RS485 cho phép bạn
truyền dữ liệu giữa các bộ vi điều khiển và thiết bị nhưng với các tính năng bổ sung.
RS485 là một giao thức tiêu chuẩn công nghiệp để truyền dữ liệu và cung cấp nhiều ưu
điểm.

Nó cho phép bạn truyền dữ liệu giữa tối đa 32 thiết bị, thông qua cùng một đường truyền
dữ liệu qua chiều dài cáp lên đến 1.2km (4000ft) với tốc độ dữ liệu tối đa là 10Mbit / s.
Bộ chuyển đổi này được thiết kế cho các ứng dụng văn phòng và công nghiệp (không bị
cô lập) và cung cấp các đặc điểm / tính năng ưu việt thường chỉ có trên các thiết bị đắt
tiền hơn.

Thông số kỹ thuật:

 Mạch giao tiếp TTL – RS485 được dùng để chuyển đổi tín hiệu nối tiếp (Serial)
UART sang giao tiếp RS485 sử dụng IC MAX485.
 Điện áp hoạt động: 5 VDC.
 Kích thước: 44 X 14mm.
 Tiêu thụ điện năng thấp cho giao tiếp RS-485
 Trên bo mạch có thiết bị đầu cuối 2P cao 5,08 (mm) để tạo thuận lợi cho việc đấu dây
giao tiếp RS-485.
Các chân của module gồm có:

– DI- DATA IN (Dữ liệu vào) PIN 1

– RO – RECEIVE OUT (Tín hiệu nhận đầu ra) PIN 0

– DE- DATA ENABLE; RE RECEIVE ENABLE (Cho phép dữ liệu vào và cho phép
được nhận) 2 chân này thường để nối liền với nhau và kết nối với Pin 2

– VCC nối với +5V

– GND nối với GND, GND của 2 arduino có thể dùng cáp để nối hoặc cần được nối đất
tại chỗ

– A nối với A; B nối với B thông qua cặp cáp xoắn


3. Thiết kế phần điều khiển.

a) Sơ đồ kết nối module RFID với Arduino.

Vì giao thức truyền thông của module RFID MFRC522 NFC 13.56MHz là SPI nên
ta sẽ kết nối với Arduino theo sơ đồ sau:

Hình 3.31: Sơ đồ kết nối module RFID với Arduino


Trong đó các chân kết nối cụ thể được trình bày ở bảng 3.3.
Bảng 3.3: Kết nối Arduino với module RFID MFRC522.
Arduino Module RFID MFRC522
Chân 10 SDA
Chân 13 SCK
Chân 11 MOSI
Chân 12 MISO
Chân GND GND
Chân 3.3V 3.3V
Chân 9 RST (Reset)

Sử dụng arduino uno R3 để đọc thẻ RFID


Sử dụng thư viện SoftwareSerial của Arduino để cho phép các chân kỹ thuật số được sử
dụng trong giao tiếp nối tiếp. Chân 9 sẽ có chức nănglà chân Rx của Arduino.
#include
SoftwareSerial mySerial(9, 10);
void setup()
{
  mySerial.begin(9600); // Setting the baud rate of Software Serial Library  
  Serial.begin(9600);  //Setting the baud rate of Serial Monitor
 }void loop()
{
    
 if(mySerial.available()>0)
 {
  Serial.write(mySerial.read());
 }
}
Trong đó:

mySerial.available() - kiểm tra mọi dữ liệu đến từ mô đun đầu đọc RFID thông qua chân
SoftwareSerial 9. Trả về số byte có sẵn để đọc từ cổng nối tiếp phần mềm. Trả về -1 nếu
không có dữ liệu để đọc.
mySerial.read() - Đọc dữ liệu được gửi đến thông qua cổng nối tiếp phần mềm.
Serial.write() - In dữ liệu lên cửa sổ serial monitor của arduino. Vì vậy, hàm Serial.write
(mySerial.read ()) - in dữ liệu được nhận được từ cổng nối tiếp phần mềm sang cửa sổ
serial monitor của arduino.
Code kết nối arduino uno R3 và module RFID- RC522
#include <SPI.h>
#include <MFRC522.h> // thu vien RFID
/*const int led1 = 2;// led do
* const int led2 = 3;// led xanh
ket noi voi arduino uno
*/
/*
PINOUT:
RC522 MODULE Uno/Nano MEGA
SDA D10 D9
SCK D13 D52
MOSI D11 D51
MISO D12 D50
IRQ N/A N/A
GND GND GND
RST D9 D8
3.3V 3.3V 3.3V
*/
/* Include the RFID library */

/* Define the DIO used for the SDA (SS) and RST (reset) pins. */
#define SS_PIN 10
#define RST_PIN 9
/* Create an instance of the RFID library */
MFRC522 mfrc522(SS_PIN,RST_PIN);
unsigned long uidDEC,uidDECTemp; // hien thi so uid duoi dang thap phan
int val;

void setup()
{
Serial.begin(9600);
/* Enable the SPI interface */
SPI.begin();
/* Initialise the RFID reader */
mfrc522.PCD_Init();
}

void loop()
{
//doc gia tri working ve
while (Serial.available())
{
val = Serial.read();
delay(200);
}
if (val=='2')
{
//tim the moi
if(!mfrc522.PICC_IsNewCardPresent())
{
return;
}
//doc the
if (!mfrc522.PICC_ReadCardSerial())
{
return;
}
uidDEC = 0;
//hien thi so uid cua the
for (byte i = 0; i< mfrc522.uid.size;i++){
uidDECTemp = mfrc522.uid.uidByte[i];
uidDEC = uidDEC*256+uidDECTemp;
}
Serial.println(String(uidDEC));
//Serial.println("/n");
//Halt PICC
mfrc522.PICC_HaltA();//dung lai
return;
delay(1);
}
else if (val == '2') }
b) Mạch đấu dây driver và động cơ bước.

Mạch đấu dây cho driver và động cơ bước.


c) Mạch đấu nối giữa Plc mitsubishi FX3U với stepper driver.

Chân Y0 quy định là chân phát xung điều khiển vị trí


Chân Y1 quy định là chân phát xung điều khiển chiều quay.
d) Mạch kết nối giữa Arduino uno R3 và Plc mitsubishi FX3U qua module
RS485.
 Cấu hình PLC FX3U.
 Cấu hình cho Arduino uno R3.
Cài đặt thêm thư viện Modbusslavelib và thêm vào thư mục library của Arduino.
#include <modbus.h>
#include <modbusDevice.h>
#include <modbusRegBank.h>
#include <modbusSlave.h>
modbusDevice regBank;
modbusSlave slave;
#define RS485TxEnablePin 2 // Chân Control
#define RS485Baud 9600
#define RS485Format SERIAL_8E1
#define LED1 11
#define LED2 12

void setup()
{

//Assign the modbus device ID.


regBank.setId(1); // địa chỉ trạm là 1

/*
modbus registers follow the following format
00001-09999 Digital Outputs, A master device can read and write to these
registers
10001-19999 Digital Inputs, A master device can only read the values from these
registers
30001-39999 Analog Inputs, A master device can only read the values from these
registers
40001-49999 Analog Outputs, A master device can read and write to these
registers
Analog values are 16 bit unsigned words stored with a range of 0-32767
Digital values are stored as bytes, a zero value is OFF and any nonzer value is ON
*/

//Add Analog Input registers to the register bank


regBank.add(30001);
regBank.add(30002);
//Add Analog Output registers to the register bank
regBank.add(40001);
regBank.add(40002);
slave._device = &regBank;
slave.setBaud(&Serial,RS485Baud,RS485Format,RS485TxEnablePin);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
}
void loop()
{
digitalWrite(LED1, regBank.get(40001));
digitalWrite(LED2, regBank.get(40002));
//regBank.set(30001, (word) analogRead(A0)); //from 0 – 1023
regBank.set(30001, (word) 111); // ghi giá trị 111 vào thanh ghi MODBUS 30001
regBank.set(30002, (word) analogRead(A1)); //from 0 – 1023
regBank.set(40001, (word) 112); // ghi giá trị 112 vào thanh ghi MODBUS 40001
slave.run();
}
2. Phần mềm.
a) Chương trình Arduino đọc thẻ RFID.
Chương trình đọc thẻ RFID
Trong hệ thống này, ta có 2 chế độ điều khiển là Hand và Auto. Ở chế độ Hand thì
không cho phép quẹt thẻ, ngược lại với chế độ Auto. Do đó trong code đọc thẻ
RFID thì ta có 2 trường hợp. Trường hợp thứ nhất nếu giá trị của biến “val” = 1 thì
cho phép đọc thẻ. Trường hợp thứ hai nếu giá trị của biến “val” = 2 thì không cho
phép đọc thẻ. Trong trường thứ nhất, ta sẽ đọc mã thẻ về dưới dạng ký tự ở hệ thập
lục phân, sau đó sẽ chuyển mã thẻ đó về dạng ký tự ở hệ cơ số 10 và gửi qua cổng
Serial Port.
b) Chương trình tối ưu vị trí gửi xe.
Chương trình khởi tạo cơ sở dữ liệu của bãi đỗ trong SQL server 2014.
Khởi tạo bảng RFID để ghi lại thông tin được ghi trong thẻ RFID bao gồm : mã
thẻ, tên xe, tên chủ xe, biển số xe, thời gian vào,thời gian ra, vị trí trong bãi đỗ.

CREATE DATABASE baidoxe


GO
USE baidoxe
GO
IF OBJECT_ID('RFID') IS NOT NULL
DROP TABLE RFID
ELSE CREATE TABLE RFID
(
MATHE INT PRIMARY KEY,
TENXE VARCHAR(30),
SDT VARCHAR(20) ,
NAME NVARCHAR(30),
BSX NVARCHAR(10),
TIMEIN DATETIME,
TIMEOUT DATETIME,
VITRI NVARCHAR(10),
)
GO

Chương trình tối ưu vị trí :


Chương trình này sẽ được truyền vào 2 tham số là a và b tương ứng với mã thẻ vừa
quẹt và biển số xe đã được xử lý. Ở đây C# có hỗ trợ cho ta các hàm để có thể truy cập cơ
sở dữ liệu (CSDL) SQL Server và ta có thể chọn, xóa, thêm và cập nhật lại dữ liệu theo ý
muốn. Để thực hiện bất kỳ thao tác nào với dữ liệu trong CSDL ta phải các bước sau theo
thứ tự: Tạo kết nối, mở kết nối, thực hiện thao tác với dữ liệu và đóng kết nối. Nếu muốn
truy xuất dữ liệu ta có thể dùng lệnh ExecuteScalar() để trả về giá trị đầu tiên, nếu muốn
thêm, xóa hoặc chỉnh sửa dữ liệu thì ta có thể sử dụng hàm ExecuteNonQuery để thao tác
mà không cần trả về giá trị gì cả. Đầu tiên, ta sẽ gọi vị trí của mã thẻ trong bảng RFID
nếu trước đó mã thẻ đã được lưu trong CSDL rồi và lưu vào biến “ID”. Nếu ID khác
NULL nghĩa là mã thẻ đã có trong CSDL rồi, ta tiến hành cập nhật vị trí mã thẻ đó thành
NULL xem như là xóa mã thẻ đó khỏi CSDL, tương tự xóa biển số xe ở vị trí đó khỏi
CSDL đồng thời trả về giá trị ID để C# có thể điều khiển PLC lấy hoặc trả xe với đúng vị
trí đó. Ngược lại nếu ID trả về giá trị NULL, nghĩa là không tìm thấy mã thẻ đó trong
CSDL. Khi đó ta sẽ chọn vị trí có giá trị NULL đầu tiên trong CSDL bằng lệnh
ExecuteScalar, cập nhật giá trị mã thẻ và biển số xe vào đúng vị trí đó đồng thời gửi vị trí
đó qua PLC để xử lý.
c) Thiết kế giao diện giám sát bai đỗ xe.
Trong giao diện sẽ có những phần sau:
 Kết nối camera ngoại vi chụp ảnh xe vào bãi đỗ.
 Nhận diện biển số xe
 Đọc thông tin được ghi vào thẻ Ntag và đẩy thông tin vào bảng cơ sở dữ
liệu được kết nối với SQL server.

You might also like