Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 14

Quy trình thiết kế đề tài

1. Cơ sở lý thuyết

1.1. Giới thiệu phần cứng

a. Vi điều khiển

Arduino Uno R3: là một bảng mạch vi điều khiển nguồn mở dựa trên vi điều
khiển Microchip ATmega328 được phát triển bởi Arduino.cc. Bảng mạch được
trang bị các bộ chân đầu vào/ đầu ra Digital và Analog có thể giao tiếp với các
bảng mạch mở rộng khác nhau. Mạch Arduino Uno thích hợp cho những bạn
mới tiếp cận và đam mê về điện tử, lập trình…Dựa trên nền tảng mở do
Arduino.cc cung cấp các bạn dễ dàng xây dựng cho mình một dự án nhanh nhất
( lập trình Robot, xe tự hành, điều khiển bật tắt led…).

Arduino Uno R3

Arduino Uno R3 (Dip) có 14 chân digital dùng để đọc hoặc xuất tín hiệu. Chúng
chỉ có 2 mức điện áp là 0V và 5V với dòng vào/ra tối đa trên mỗi chân là 40mA.
Ở mỗi chân đều có các điện trở pull-up từ được cài đặt ngay trong vi điều khiển
ATmega328 (mặc định thì các điện trở này không được kết nối).

Vi xử lý có rất nhiều loại bắt đầu từ 4 bit cho đến 32 bit, vi xử lý 4 bit hiện nay
không còn nhưng vi xử lý 8 bit vẫn còn mặc dù đã có vi xử lý 64 bit. Lý do sự
tồn tại của vi xử lý 8 bit là phù hợp với một số yêu cầu điều khiển trong công
nghiệp. Các vi xử lý 32 bit, 64 bit thường sử dụng cho các máy tính vì khối
lượng dữ liệu của máy tính rất lớn nên cần các vi xử lý càng mạnh càng tốt. Các
hệ thống điều khiển trong công nghiệp sử dụng các vi xử lý 8 bit hay 16 bit như
hệ thống điện của xe hơi, hệ thống điều hòa, hệ thống điều khiển các dây
chuyền sản xuất, …
Thông số kỹ thuật:

Vi điều khiển ATmega328 họ 8bit


Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB)
Tần số hoạt động 16 MHz
Dòng tiêu thụ khoảng 30mA
Điện áp vào khuyên dùng 7-12V DC
Điện áp vào giới hạn 6-20V DC
Số chân Digital I/O 14 (6 chân hardware PWM)
Số chân Analog 6 (độ phân giải 10bit)
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

Arduino UNO có thể sử dụng 3 vi điều khiển họ 8 bit AVR là ATmega8,


ATmega168, ATmega328. Bộ não này có thể xử lí những tác vụ đơn giản như
điều khiển đèn LED nhấp nháy, xử lí tín hiệu cho xe điều khiển từ xa, làm một
trạm đo nhiệt độ - độ ẩm và hiển thị lên màn hình LCD,… hay những ứng dụng
khác.

Chức năng các chân:

- GND (Ground): 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.

- 5V: cấp điện áp 5V đầu ra. Dòng tối đa cho phép ở chân này là 500mA.
- 3.3V: cấp điện áp 3.3V đầu ra. Dòng tối đa cho phép ở chân này là
50mA.

- Vin (Voltage Input): để cấp nguồn ngoài cho Arduino UNO, 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.

- IOREF: điện áp hoạt động của vi điều khiển trên Arduino UNO có thể
được đo ở chân này. Và dĩ nhiên nó luôn là 5V. Mặc dù vậy bạn không
được lấy nguồn 5V từ chân này để sử dụng bởi chức năng của nó không
phải là cấp nguồn.

- RESET: việc nhấn nút Reset trên board để reset vi điều khiển tương
đương với việc chân RESET được nối với GND qua 1 điện trở 10KΩ.

Sơ đồ chân Arduino Uno R3

Bộ nhớ:

- 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.

- 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. 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.

Các cổng vào/ra:


- 2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận
(receive – RX) dữ liệu TTL Serial. Arduino Uno có thể giao tiếp với thiết
bị khác thông qua 2 chân này. Kết nối bluetooth thường thấy nói nôm na
chính là kết nối Serial không dây. Nếu không cần giao tiếp Serial, bạn
không nên sử dụng 2 chân này nếu không cần thiết.

- Ngắt ngoài: Chân 2 và 3.


- Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép xuất ra xung PWM với độ
phân giải 8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm
analogWrite(). Nói một cách đơn giản, có thể điều chỉnh được điện áp ra
ở chân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V như
những chân khác.

- Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Ngoài


các chức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu
bằng giao thức SPI với các thiết bị khác.

- LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L). Khi
bấm nút Reset sẽ thấy đèn này nhấp nháy để báo hiệu. Nó được nối với
chân số 13. Khi chân này được người dùng sử dụng, LED sẽ sáng.

- TWI/I2C: A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI với các thiết
bị khác.

b. Module thẻ từ

Module RFID RC522 NFC 13.56mhz dùng để đọc và ghi dữ liệu cho thẻ NFC
tần số 13.56mhz. Với mức thiết kế nhỏ gọn, linh hoạt module này là sự lựa chọn
thích hợp cho các ứng dụng đọc – ghi thẻ NFC, đặc biệt khi sử dụng kết hợp với
ARDUINO. RFID – Radio Frequency Identification Detection là công nghệ
nhận dạng đối tượng bằng sóng vô tuyến. Là một phương pháp nhận dạng tự
động dựa trên việc lưu trữ dữ liệu từ xa, sử dụng thiết bị Thẻ RFID và một Đầu
đọc RFID.
RFID RC522

Thông số kỹ thuật:

- Nguồn: 3.3VDC, 13 – 26mA

- Dòng ở chế độ chờ: 10-13mA

- Dòng ở chế độ nghỉ: <80uA

- Tải tối đa: 30mA

- Tần số sóng mang: 13.56MHz

- Khoảng cách hoạt động: 0~60mm(mifare1 card)

- Giao tiếp: SPI

- Tốc độ truyền dữ liệu: tối đa 10Mbit/s

- Các loại card RFID hỗ trợ: mifare1 S50, mifare1 S70, mifare UltraLight,
mifare Pro, mifare Desfire

- Kích thước: 40mm × 60mm

- Nhiệt độ hoạt động: -20 đến 80 ° C

- Độ ẩm hoạt động: 5% -95%

- Phụ kiện: móc khóa và thẻ.

- Có khả năng đọc và ghi

- Hỗ trợ: ISO / IEC 14443A /MIFAR

Chức năng các chân:


- Chân cấp nguồn:

- VCC: chân nguồn VCC. Trong một số phiên bản của RC522, chân
này được ký hiệu là 3V3 thay vì VCC.

- RST: chân reset được sử dụng để đặt lại giá trị trong trường hợp
xảy ra lỗi khi thiết bị không bất kỳ phản hồi.

- Ground: chân nối đất giúp tạo mass chung với các thiết bị bên
ngoài (ví dụ bộ nguồn, bi điều khiển hoặc arduino).

- Chân giao tiếp SPI và UART:

- IRQ: linh kiện có thể chuyển sang chế độ ngủ để tiết kiệm điện
năng và chân IRQ sẽ khởi động lại nó.

- MISO - SCL - TX: chân này kết nối với Arduino / Vi điều khiển để
giao tiếp SPI. Truyền dữ liệu từ module sang Arduino. Chân MISO
cũng có thể sử dụng cho các chức năng khác thay vì SPI. Cũng có
thể giao tiếp I2C và UART Serial để giao tiếp dữ liệu với module.

- MOSI: chân đầu vào dữ liệu module RFID khi giao tiếp SPI.

- SCK: các chân SCK gửi xung clock khi giao tiếp SPI.

- SS - SDA - RX: hân SS là chân kích hoạt chip giao tiếp SPI. Nhận
tín hiệu khi Master (Arduino) giao tiếp SPI. Chân SS của RFID có
thể được sử dụng như một chân thứ hai (SDA) của giao tiếp I2C.
Cũng là chân nhận dữ liệu trong quá trình giao tiếp UART.

Sơ đồ chân RFID RC522

Tính năng của thẻ từ RFID:

- MF RC522 vận dụng cho việc tích hợp cao việc đọc và viết dữ liệu.
- Giao tiếp với thẻ tại tần số 13.56Mhz.
- Là sự chọn lọc thấp cho sự lớn mạnh của những trang bị sáng tạo và trang
bị di động cầm tay.
- MF RC552 dùng cho việc tăng điều chế và giải mã điều chế thông báo
giao du thụ động bằng những bí quyết hoàn toàn phù hợp trong tần số
13.56Mhz .
- tương thích sở hữu bộ phát dấu hiệu 14443A.
- ISO 14443A xử lý kỹ thuật để phát hiện lỗi và những sườn hình.
- CRYPTO1 mau chóng tương trợ mã hóa thuật toán để công nhận sản
phẩm là mafire.
- MF RC552 tương trợ mafire giao tiếp có các chuỗi bằng tốc độ cao,tốc độ
truyền dữ liệu hai chiều lên tới 424kbit/s.
- MF RC552 cũng như vậy như MF RC500,MF RC530 nhưng cũng có các
đặc điểm và sự khác biệt,giao tiếp giữa nó và máy chủ ở chế độ SPI giúp
giảm thiểu các kết nối hạn hẹp của PCB,giảm mức giá đáng nhắc.
- Những MF 552 là những module được ngoài mặt để dể dàng sử dụng
mang các đầu đọc thẻ mạch.
- Nâng cao sự tăng trưởng của các vận dụng ,đáp ứng nhu cầu về sử dụng
các trang bị đầu/cuối tiêu dùng thẻ nhớ RF.
- Module này với thể được nạp trược tiếp vào những khuôn reader khác
nhau,rất thuận tiện.
c. Động cơ Servo
Servo là một dạng động cơ điện đặc biệt. Không giống như động cơ thông
thường cứ cắm điện vào là quay liên tục, servo chỉ quay khi được điều khiển
(bằng xung PPM) với góc quay nằm trong khoảng bất kì từ 0 - 180 độ. Mỗi loại
servo có kích thước, khối lượng và cấu tạo khác nhau. Có loại thì nặng chỉ 9g
(chủ yếu dùng trên máy bay mô mình), có loại thì sở hữu một momen lực bá
đạo (vài chục Newton/m), hoặc có loại thì khỏe và nhông sắc chắc chắn,...
Động cơ servo được thiết kế những hệ thống hồi tiếp vòng kín. Tín hiệu ra của
động cơ được nối với một mạch điều khiển. Khi động cơ quay, vận tốc và vị trí
sẽ được hồi tiếp về mạch điều khiển này. Nếu có bầt kỳ lý do nào ngăn cản
chuyển động quay của động cơ, cơ cấu hồi tiếp sẽ nhận thấy tín hiệu ra chưa đạt
được vị trí mong muốn. Mạch điều khiển tiếp tục chỉnh sai lệch cho động cơ đạt
được điểm chính xác. Các động cơ servo điều khiển bằng liên lạc vô tuyến được
gọi là động cơ servo RC (radio-controlled). Trong thực tế, bản thân động cơ
servo không phải được điều khiển bằng vô tuyến, nó chỉ nối với máy thu vô
tuyến trên máy bay hay xe hơi. Động cơ servo nhận tín hiệu từ máy thu này.
Servo SG90 là một loại servo cực kỳ phổ biến trong cộng đồng Arduino vì độ
tin cậy cao, kích thước nhỏ gọn và giá thành rất rẻ. Servo này thường được sử
dụng trong các dự án robotica, máy in 3D, máy bay mô hình và các ứng dụng
điều khiển vị trí.

Servo SG90
Thông số kỹ thuật:
- Điện áp hoạt động: 4.8-5VDC
- Tốc độ: 0.12 sec/ 60 degrees (4.8VDC)
- Lực kéo: 1.6KG.CM
- Kích thước: 21x12x22mm
- Trọng lượng: 9g.
Kết nối với Arduino:
- Kết nối dây màu đỏ với 5V, dây màu nâu với mass, dây màu cam với
chân phát xung của vi điều khiển. Ở chân xung cấp một xung từ 1ms-2ms
theo để điều khiển góc quay theo ý muốn.

Kết nói Servo SG90 với Arduino


- Dạng sóng:

Dạng sóng Servo SG90


d. Màn hình LCD
LCD 1602 (Liquid Crystal Display) được sử dụng phổ biến trong các dự án điện
tử và lập trình. 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ẻ,…

LCD 1602
Thông số kĩ thuật của sản phẩm LCD 1602:
- Điện áp MAX : 7V
- Điện áp MIN : - 0,3V
- Hoạt động ổn định : 2.7-5.5V
- Điện áp ra mức cao : > 2.4
- Điện áp ra mức thấp : <0.4V
- Dòng điện cấp nguồn : 350uA - 600uA
- Nhiệt độ hoạt động : - 30 - 75 độ C
- Kích thước: 80 x 36 x 12.5 mm
- Chữ đen, nền xanh lá
- Khoảng cách giữa hai chân kết nối là 0.1 inch
- Có đèn led nền, có thể dùng biến trở hoặc PWM điều chình độ sáng để sử
dụng ít điện năng hơn
- Có thể được điều khiển với 6 dây tín hiệu

Sơ đồ chân:

Số chân Ký hiệu Chức năng


1 Vss Cấp điện 0v
2 Vcc Cấp điện 5v
3 V0 Chỉnh độ tương phản
4 RS Lựa chọn thanh ghi địa chỉ hay dữ liệu
5 RW Lựa chọn thanh ghi Đọc hay Viết
6 EN Cho phép xuất dữ liệu
7 D0 Đường truyền dữ liệu 0
8 D1 Đường truyền dữ liệu 1
9 D2 Đường truyền dữ liệu 2
10 D3 Đường truyền dữ liệu 3
11 D4 Đường truyền dữ liệu 4
12 D5 Đường truyền dữ liệu 5
13 D6 Đường truyền dữ liệu 6
14 D7 Đường truyền dữ liệu 7
15 A Chân dương đèn màn hình
16 K Chân âm đèn màn hình

Sơ đồ chân LCD 1602


Địa chỉ vùng nhớ:
- Bộ điều khiển LCD có ba vùng nhớ nội, mỗi vùng có chức năng riêng. Bộ
điều khiển phải khởi động trước khi truy cập bất kỳ vùng nhớ nào.
- Bộ nhớ chứa dữ liệu để hiển thị (Display Data RAM: DDRAM) lưu trữ
những mã ký tự để hiển thị lên màn hình. Mã ký tự lưu trữ trong vùng
DDRAM sẽ tham chiếu với từng bitmap kí tự được lưu trữ trong
CGROM đã được định nghĩa trước hoặc đặt trong vùng do người sử dụng
định nghĩa.
- Bộ phát kí tự ROM (Character Generator ROM: CGROM) chứa các kiểu
bitmap cho mỗi kí tự được định nghĩa trước mà LCD có thể hiển thị, như
được trình bày bảng mã ASCII. Mã kí tự lưu trong DDRAM cho mỗi
vùng kí tự sẽ được tham chiếu đến một vị trí trong CGROM. Ví dụ: mã kí
tự số hex 0x53 lưu trong DDRAM được chuyển sang dạng nhị phân 4 bit
cao là DB[7:4] = “0101” và 4 bit thấp là DB[3:0] = “0011” chính là kí tự
chữ ‘S’ sẽ hiển thị trên màn hình LCD.
- Bộ phát kí tự RAM (Character Generator RAM: CG RAM) cung cấp
vùng nhớ để tạo ra 8 kí tự tùy ý. Mỗi kí tự gồm 5 cột và 8 hàng.
Bảng mã ASCII sử dụng cho LCD

Bảng địa chỉ cho LCD 1602


1.2. Giới thiệu phần mềm
Arduino IDE là một phần mềm với một mã nguồn mở, được sử dụng chủ yếu để
viết và biên dịch mã vào module Arduino. Nó bao gồm phần cứng và phần
mềm. Phần cứng chứa đến 300,000 board mạch được thiết kế sẵn với các cảm
biến, linh kiện. Phần mềm giúp bạn có thể sử dụng các cảm biến, linh kiện ấy
của Arduino một cách linh hoạt phù hợp với mục đích sử dụng.
Khi người dùng viết mã và biên dịch, IDE sẽ tạo file Hex cho mã. File Hex là
các file thập phân Hexa được Arduino hiểu và gửi đến bo mạch bằng cáp USB.
Mỗi bo Arduino đều được tích hợp một bộ vi điều khiển, bộ vi điều khiển sẽ
nhận file Hex và chạy theo mã được viết.
Arduino IDE sử dụng ngôn ngữ lập trình C/C++ rất phổ biến trong giới lập
trình. Bất kỳ đoạn code nào của C/C++ thì Arduino IDE đều có thể nhận dạng,
giúp các lập trình viên thuận tiện trong việc thiết kế chương trình lập cho các bo
mạch Arduino.

You might also like