cùng với những hiểu biết về các thiết bị điện tử, chúng em đã quyết định thực hiện đề tài : Tìm hiểu board mạch Arduino Uno R3 với mục đích để tìm hiểu thêm về các vi xử lý, làm quen với
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Ngành KT Điều khiển & Tự động hóa
Trang 2Trên cơ sở kiến thức đã học trong môn học : Tin học đại cương , Điện tử
tương tự,Điện tử số cùng với những hiểu biết về các thiết bị điện tử, chúng em
đã quyết định thực hiện đề tài : Tìm hiểu board mạch Arduino Uno R3 với mục
đích để tìm hiểu thêm về các vi xử lý, làm quen với các thiết bị điện tử và nâng cao hiểu biết cho bản thân Do kiến thức còn hạn hẹp, thêm vào đó đây là lần đầu em
thực hiện đồ án nên chắc chăn không tránh khỏi những thiếu sót , hạn chế vì thế
em rat mong có được sự góp ý và nhắc nhờ từ thầy giáo để có thể hoàn thiện đề tài của mình
Em xin chân thành cảm ơn thầy giáo TS.Nguyễn Hoàng Nam đã giúp đỡ chúng em rất nhiều trong quá trình tìm hiểu thiết kế và hoàn thành đề tài đồ án 1 này
Tóm tắt nội dung tìm hiểu đồ án Trong báo cáo này ,em xin tìm hiểu chỉ tiết về board mạch Arduino Uno
R3,chi tiét phan cứng,cách câp và hoạt động của bộ nguôn,bộ nạp code,các chân tín hiệu vào ra
Sinh viên thực hiện
Ký ,ghi rõ họ tên
Trang 3MỤC LỤC
Mục lục
Danh sách hình vẽ
Danh mục bảng số liệu
CHUONG 1 TONG QUAN
1.1 — Giới thiệu chung
12 Tổng quan về board mach Arduino Uno R3 5
Trang 4Danh sách hình vẽ
Hình 2.0:Arduino Uno R3 Schematic
Hinh 2.1.1:Nguén vao 7-12V
Hinh 2.1.2:Jack USB
Hinh 2.1.3
Hinh 2.1.4: Opamp LM358
Hinh 2.1.5: P mosfet FDN340P
Hinh 2.1.6:Diéu ap 5V dung IC NCP1117
Hinh 2.1.7 :Diéu 4p 3.3 V 3.3V dung IC LP2985
Hinh 2.1.8: Mach bao vé
Hình 2.1.9:Đèn báo nguôn
Hình 2.2:Sơ đồ chân ATEMEGA 328
Hình 2.3:Mạch dao động
Hình 2.4:Mạch reset
Hình 2.5.1: Giao tiếp máy tính
Hình 3.1:Giao diện IDE
Trang 5Danh sách bảng số liệu
Trang 6Chương I: Tổng quan 1.1 Giới thiệu chung về Arduino
Arduino đã và đang được sử dụng rất rộng rãi trên thế giới, và ngày càng chứng
tỏ được sức mạnh của chúng thông qua vô số ứng dụng độc đáo của người dùng trong cộng đồng nguồn mở (open-source)„được thiết kế trên nền tảng vỉ xử lý core
AVR Atmel hoặc ARM Tuy nhiên tại Việt Nam Arduino vẫn còn chưa được biết
đên nhiêu
Arduino là một bo mạch vi xử lý được dùng để lập trình tương tác với các thiết
bị phần cứng như cảm biến, động cơ, đèn hoặc các thiết bị khác Đặc điểm nỗi bật
của Arduino là môi trường phát triển ứng dụng cực kỳ dễ sử dụng, với một ngôn ngữ lập trình có thể học một cách nhanh chóng ngay cả với người ít am hiểu về
điện tử và lập trình Và điều làm nên hiện tượng Arduino chính là mức giá rất thấp
và tính chất nguồn mở từ phần cứng tới phần mềm Chỉ với khoảng $30, người dùng đã có thê sở hữu một bo Arduino có 20 ngõ IL/O có thể tương tác và điều khiển chừng ấy thiết bị
Một số ứng dụng của Arduino: lập trình robot,máy bay không người lái,điều
khiển thiết bị ánh sáng cảm biến,máy in 3D,
1.2 Tổng quan về board mạch Arduino Uno R3
Arduino Uno R3 là thế hệ thứ 3 của dòng Arduino Uno thiết kế với bộ xử lý
trung tâm là vi điều khiến AVR Atmega328 Cấu tạo chính của Arduino Uno bao gdm các phân sau:
- Công USB: đây là loại cổng giao tiếp để ta upload code từ PC lên vi điều khiển Đông thời nó cũng là giao tiếp serial dé truyền dữ liệu giữa vi điều khiển và máy tính
- Jack nguôn: để chạy Arduino thỉ có thê lây nguồn từ công USB ở trên, nhưng không phải lúc nào cũng có thể cắm với máy tính được Lúc đó ta cần một nguồn
từ 9V đến 12V.
Trang 7- Có 14 chân vào/ra số đánh số thứ tự từ 0 đến 13, ngoài ra có một chân nối đất
(GND) va một chân điện áp tham chiếu (AREF)
- Vị điều khiển AVR: đây là bộ xử lí trung tâm của toàn bo mạch Với mỗi mẫu Arduino khác nhau thì con chip là khác nhau Ở con Arduino Uno này thì sử dụng
ATMega328
- Thông số chỉ tiết của Arduino Uno R3
+VI xử lý
+Điện áp hoạt động
+Điện áp đầu vào
+Điện áp đầu vào (Giới hạn)
+Chan vao/ra (I/O) sé
+Chan vao tuong tu
+Dòng điện trong mdi chan I/O
+Dong dién chan ngu6én 3.3V
14 (6 chân có thể cho đâu ra PWM)
6 40mA
Trang 8Chương II: Phần cứng và chi tiét
Ta chia board mạch Arduino Uno R3 thành các phân sau:
> Khối nguôn
> Vị xử lý trung tâm atmega 328
> Khối tạo dao động
eo ea
LMU3S81D6KQ
1 Sử dụng bộ chuyển doi AC sang DC cắm vào đầu nỗi thùng
Nguồn vào sử dụng Jack DC (7-12V),đường kính 2.1mm, Chốt trung tâm là cực
dương và ông bọc bên ngoài được nối dat
Trang 9
Nguồn vào sử dụng công USB B,dòng điện cung cấp cho board mạch là 500mA ở
điện áp 5V nếu kết nối được liệt kê và 100mA ở điện áp 5V nếu kết nối không
được liệt kê
Hinh 2.1.2:Jack USB
Trong trường hợp chỉ có 1 trong 2 nguồn cung cap thi Board Arduino sé str dung nguôn cung cấp đó
Trong trường hợp có cả 2 nguôn cung cấp thì Arduino sẽ ưu tiên lựa chọn nguồn cung cấp từ Jack DC thay vì từ cổng USB
Việc ưu tiên này được thực hiện bởi Opamp LMYV358 và Mosfet FDN340P
Trang 10Điện áp từ Jack DC sau khi qua Diode bảo vệ DI thì được gọi là điện áp VIN
Điện áp VIN qua cầu phân áp để tạo thành VIN/2 để so sánh với điện áp 3.3V
Vì VIN/2 >3.3V nên điện áp đầu ra của OpAmp là 5V, điều này làm cho MOSFET không được kích, nguồn cung cấp cho Board Arduino là từ Jack DC sau khi qua 6n
ap
> Khối điều áp
Trang 11Tạo ra các điện áp 5v và 3.3v để cung cấp cho vi điều khiển và cũng là điểm cấp nguồn cho các thiết bị bên ngoài sử dụng Mạch Arduino str dung IC 6n
áp NCP1117 để tạo điện áp 5V từ nguồn cung cấp lớn và IC ốn áp LP2985 dé tao điện áp 3.3V Đây đều là những IC ổn áp tuyến tính, tuy hiệu suất không cao nhưng ít gợn nhiễu và mach đơn giản
10
Trang 12
1 F—M
+5U
Hình 2.1.9:Đèn báo nguôn
2.2: Vixu ly ATMEGA 328
Atmega328 là một chíp vi điều khiến được sản xuất bời hãng Atmel thuộc
họ MegaA VR có sức mạnh hơn han Atmega8 Atmega 328 la mot bo vi dieu
khiên § bít dựa trên kiên trúc RISC bộ nhớ chương trình 32KB ISP flash có
II
Trang 13thể ghi xóa hàng nghìn lần, IKB EEPROM một bộ nhớ RAM vô cùng lớn trong thé gidi vi xu ly 8 bit (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é str dụng tới 6 kênh điều chế độ rong xung (PWM), hé tro bootloader
Atemega328 co kha nang hoạt dong trong mot dai dign ap rong (1.8V — 5.5V), toc dé thuc thi (thong lugng) IMIPS trén IMHz
PC5 PC4 PC3 PC2 PC1 PCO GND AREF AVCC PBS (SCK/PCINTS) PB4 (MISO/PCINT4) PB3 (MOSI/OC2A/PCINT3)
( (
ADC4/SDA/PCINT 12) ADC3/PCINT11) ADC2/PCINT10) ADC1/PCINT9) ADC0/PCINT8)
(PCINT18/INT0) PD2 (PCINT19/OC2B/INT1) PD3
(PCINT20/XCK/T0) PD4
VCC GND (PCINT6/XTAL1/TOSC1) PB6
(PCINT7/XTAL2/TOSC2) PB7
(PCINT21/OCOB/T1) PDS
(PCINT22/OCOA/AINO) PD6
) )
PB2 (SS/OC1B/PCINT2) PB1 (OC1A/PCINT1)
12
Trang 14CSTCE16M@V53-RB
REF
Đề vi điều khiển thực hiện khởi động lại thì chân RESET phai 6 mirc logic LOW
(~0V) trong 1 khoảng thời gian đủ yêu cầu Mạch reset của board Arduino UnoR3
phải đảm bảo được 02 việc:
— Reset bằng tay: Khi nhẫn nút, chân RESET nối với GND, lam cho MCU RESET Khi không nhắn nút chân Reset được kéo 5V
— Reset tự động: Reset tự động được thực hiện ngay khi cấp nguồn cho vi điều khiển nhờ sự phối hợp giữa điện trở nỗi lên nguồn và tụ điện nối đất Thời gian tụ điện nạp giúp cho chân RESET ở mức LOW trong 1 khoản thời gian đủ để vi điều
khiến thực hiện reset
13
Trang 15— Khởi động vi điều khiến trước khi nạp chương trình mới
20
+5U 22
RESET
XTAL2 XTAL1 AREF AVCC AGND VCC GND
(SCK)PBS (MISO)PB4 (MOSI)PB3 (SS)PB2 (OC1)PB1 (ICP)PBO (ADCS)PCS (ADC4)PC4 (ADC3)PC3 (ADC2)PC2 (ADC1)PC1 (ADCO)PCO)
(AIN1)PD7 (AINO)PD6 (T1)PD5 (T0)PD4 (INT1)PD3 (INTO)PD2 (TXD)PD1 (RXD)PDO
ATMEGAS2Z8P-PU
Hinh 2.4:Mach reset
2.5: Thiét ké mach nap va giao tiép may tinh
— Vị điều khién Atmega328P trén Board Arduino UnoR3 da duoc nap san 1
bootloader, cho phép nhận chương trình mới thông qua chuân giao tiêp UART
(chân 0 và 1) ở những giây đầu sau khi vi điều khiển Reset
— Máy tính giao tiếp với Board mach Arduino qua chuan giao tiép USB (D+/D-), thong qua mot vi diéu khién trung gian la ATMEGA 16U2 hoac mot IC trung gian
là CH340 (thường thấy trong các mạch sử dụng chip dán) Vi điều khiển hoặc IC này có nhiệm vụ chuyên đổi chuẩn giao tiếp USB thành chuẩn giao tiếp UART dé nạp chương trình hoặc giao tiếp truyền nhận dữ liệu với máy tính (Serial)
— Phân thiết kế mạch nạp có tích hợp Hhem 02 đèn LED,nên khi nạp chương trình
sé thay 2LED nay nhấp nháy Còn khi giao tiếp, nếu có dữ liệu từ máy tính gửi xuống vi điều khiến thì đèn LED Rx sẽ nháy Còn nếu có đữ liệu từ vi điều khiển gửi lên máy tính thì đèn Tx sẽ nháy
14
Trang 16
(PCINT7/OCOA/OC1C)PB7 (PCINT6)PB6
(CTS/HWB/AIN6/TO/INT7)PD7
RESET(PC1/DW) (PCINTS)PB5
(T1/PCINT4)PB4 (PDO/MISO/PCINT3)PB3 XTAL2(PC0) (PDIMOSUPCINT2)PB2
(SCLK/PCINT1)PB1 XTAL1 (SS/PCINT0)PB0
(AINO/INT1)PD1 PAD (OC0B/INT0)PDO
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)
Một sô chân digital có các chức năng đặc biệt như sau:
> 2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit — TX) va nhận
(receive — RX) đữ 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 chính là kết nói Serial không dây
15
Trang 17> Chan 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 — 2”-1 tương ứng với 0V —> 5V) bằng hàm
analog Write()
> Chan giao tiép SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) Ngoai cdc 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 dén led màu cam (kí hiệu chữ L) Khi bắm
nut Reset, sé thay dén nay nhap nhay để 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
> Arduino ƯNO có 6 chân analog (A0 —> A5) cung cấp độ phân giải tín hiệu
10bit (0 — 2'°-1) dé doc gia tri điện áp trong khoảng 0V — 5V
Đặc biệt, Arduino ƯNO 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
16
Trang 18Chương III: Lập trình trên arduino
Các thiết bị dựa trên nên tảng Arduino được lập trình băng ngôn riêng Ngôn ngữ này dựa trên ngôn ngữ Wiring được việt cho phân cứng nói chung
Ngôn ngữ Arduino bắt nguồn từ C/C++ phổ biến hiện nay do đó rất dễ học, dễ
hiểu
Đề lập trình cũng như gửi lệnh và nhận tín hiệu từ mạch Arduino, nhém phat trién
dự án này đã cũng cấp đến cho người dùng một môi trường lập trình Arduino được gol la Arduino IDE (Intergrated Development Environment)
3.1:Giao dién IDE
Gồm 3 phân chính : Vùng lệnh,vùng viết chương trình và vùng thông báo
Một chương trình Arduino cơ bản có các phân sau:
Phân khai báo: Nơi khai báo các biến,định nghĩa các chân trên board.Phần này
được đặt ở đầu chương trình
Trang 19Phan setup() goi là phan “cai dat” ding để chuẩn bị cho một chương trình Arduino
Các câu lệnh của phần này được đặt trong cặp dau ngoac nhon ngay sau void
setup()
Phân loop() là nơi chứa mã thực thi chính Những lệnh trong phần này sẽ chạy liên
tục Các câu lệnh của phần này được đặt trong cặp dau ngoac nhon ngay sau void loop()
pinMode (2, INPUT _PULLUP) ;
attachIinterrupt (digitalPinToInterrupt(2), blink, FALLING);
Trang 20Nên tảng Arduino thật sự rât hữu ích cho những ai đang và muôn tìm hiệu về
điện tử, lập trình, điêu khiên, đặc biệt là robot Với nên tảng này, mọi người có thê
dê dàng tạo ra được những dự án vô cùng thú vị
Sau khi tìm hiểu về Arduino.ta có thê thiết kế được các mạch điện tử từ đơn
giản như điều khiến led.động cơ DC cho đến những thiết bị IOT như robot,máy
bay không người lái,điều khiên thiết bị ánh sáng cảm biến,máy in 3D
19
Trang 21Tài liệu tham khảo
[1] Pham Quang Huy, Nguyễn Trọng Hiếu: ”Vi điều khiển và ứng dụng Arduino
dành cho người tự học” Nhà xuất bản Bách Khoa.2015
20