Tải bản đầy đủ (.doc) (80 trang)

ĐỒ ÁN TỐT NGHIỆP : NGHIÊN CỨU VÀ THIẾT KẾ ĐỒNG HỒ VẠN NIÊN ĐIỀU KHIỂN QUA BLUETOOTH

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.64 MB, 80 trang )

BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA ĐIỆN TỬ
***

ĐỒ ÁN TỐT NGHIỆP
NGÀNH CNKT ĐIỆN TỬ - TRUYỀN THÔNG
ĐỀ TÀI: NGHIÊN CỨU VÀ THIẾT KẾ ĐỒNG HỒ VẠN NIÊN
ĐIỀU KHIỂN QUA BLUETOOTH

Giáo viên hướng dẫn

: TH.S NGUYỄN NGỌC ANH

Sinh viên thực hiện

: BÙI THỊ YẾN

MSV

: 0741050265

Lớp

: ĐH CNKT Điện Tử 4 – K7

NĂM 2016


MỤC LỤC
LỜI CẢM ƠN.................................................................................................


LỜI MỞ ĐẦU ................................................................................................
CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN ...................................................1
1.1 Giới thiệu chung về vi điều khiển ..........................................................1
1.1.1 Vi điều khiển ATmega328 ...............................................................4
1.1.2 Các thông số chính của vi điều khiển ATmega328 ..........................5
1.1.3 Sơ đồ chân ........................................................................................5
1.2 Board Arduino.........................................................................................6
1.2.1 Giới thiệu chung về Arduino ............................................................6
1.2.2 Giới thiệu về board Arduino Uno .....................................................7
1.2.3 Lập trình Arduino .............................................................................10
1.3 IC DS1307 ..............................................................................................12
1.3.1 Cơ chế hoạt động của DS1307 .........................................................13
1.3.2 Hoạt động của các chân ....................................................................14
1.4 Điều khiển từ xa dùng Bluetooth ............................................................20
1.4.1 Giới thiệu về Bluetooth ....................................................................20
1.4.2 Module Bluetooth HC – 05 ..............................................................23
1.4.3 Hệ điều hành Android ......................................................................29
CHƯƠNG 2: THIẾT KẾ HỆ THỐNG VÀ THI CÔNG ................................33
2.1 Sơ đồ tổng quát .......................................................................................33


2.2 Sơ đồ thiết kế ..........................................................................................34
2.2.1 Khối nguồn .......................................................................................34
2.2.2 Khối Reset ........................................................................................35
2.2.3 Khối tạo xung dao động ...................................................................35
2.2.4 Khối hiển thị .....................................................................................36
2.2.5 Khối tạo thời gian thực .....................................................................36
2.2.6 Khối điều khiển trung tâm ................................................................37
2.2.7 Khối điều khiển ................................................................................37
2.3 Thiết kế đồng hồ vạn niên điều khiển qua Bluetooth .............................39

2.3.1 Mạch đồng hồ vạn niên và hiển thị led 7 thanh ................................39
2.3.2 Mạch điều khiển ...............................................................................39
2.4 Thiết kế giao diện trên điện thoại ...........................................................40
2.5 Mô hình mạch thực tế .............................................................................42
2.5.1 Các linh kiện sử dụng trong mạch ....................................................42
2.5.2 Mạch thực tế .....................................................................................42
2.6 Lưu đồ thuật toán ....................................................................................44
2.7 Code chương trình ..................................................................................45
KẾT LUẬN ....................................................................................................70
TÀI LIỆU THAM KHẢO ..............................................................................72


Trường Đại Học Công Nghiệp Hà Nội

Khoa Điện Tử

DANH MỤC HÌNH VẼ

Hình 1.1: Vi điều khiển ATmega328 .............................................................4
Hình 1.2: Sơ đồ chân ATmega328 .................................................................5
Hình 1.3: Board Arduino Uno ........................................................................7
Hình 1.4: Giao diện phần mềm Arduino IDE ................................................11
Hình 1.5: Lập trình điều khiển led .................................................................11
Hình 1.6: DS1307 ...........................................................................................12
Hình 1.7: Mạch ứng dụng đơn giản của DS1307 ...........................................13
Hình 1.8: Sơ đồ chân DS1307 ........................................................................14
Hình 1.9: Thanh ghi thời gian thực ................................................................16
Hình 1.10: Bluetooth.......................................................................................20
Hình 1.11: Module Bluetooth HC 05 .............................................................23
Hình 1.12: Sơ đồ chân HC05 .........................................................................24

Hình 1.13: Giao diện phần mềm giao tiếp với module HC-05 ......................27
Hình 1.14: Kiến trúc hệ điều hành Android ...................................................29
Hình 2.1: Sơ đồ hệ thống ................................................................................33
Hình 2.2: Sơ đồ nguyên lý ..............................................................................34
Hình 2.3: Mạch nguồn dùng LM7805 ............................................................34
Hình 2.4: Mạch reset ......................................................................................35


Trường Đại Học Công Nghiệp Hà Nội

Khoa Điện Tử

Hình 2.5: Mạch dao động ...............................................................................35
Hình 2.6: LED 7 thanh ...................................................................................36
Hình 2.7: Sơ đồ chân DS1307 ........................................................................36
Hình 2.8: Mô phỏng mạch vi điều khiển ATmega328 ..................................37
Hình 2.9: Điều khiển nút nhấn .......................................................................38
Hình 2.10: Kết nối các chân với vi điều khiển ...............................................38
Hình 2.11: Mạch mô phỏng đồng hồ vạn niên ...............................................39
Hình 2.12: Mạch in 2D mạch điều khiển .......................................................39
Hình 2.13: Mạch in mạch điều khiển .............................................................40
Hình 2.14 : Giao diện kết nối trên Android ....................................................40
Hình 2.15: Giao diện code lập trình qua thẻ block .........................................41
Hình 2.16: Ứng dụng Bluetooth đơn giản ......................................................41
Hình 2.17: Mạch hiển thị đồng hồ vạn niên ...................................................43
Hình 2.18: Mạch điều khiển ...........................................................................43


Trường Đại Học Công Nghiệp Hà Nội


Khoa Điện Tử

LỜI CẢM ƠN
Trong thời gian thực hiện báo cáo đồ án tốt nghiệp, em xin gửi lời cảm ơn
đến gia đình, thầy cô, bạn bè đã luôn ở bên giúp đỡ, đóng góp ý kiến chỉ bảo
tận tình cho em. Đặc biệt, em xin gửi lời cảm ơn chân thành đến thầy TH.S
NGUYỄN NGỌC ANH, giảng viên khoa công nghệ kĩ thuật điện tử truyền
thông, trường Đại học công nghiệp Hà Nội; người đã tận tình hướng dẫn chỉ
bảo em trong suốt quá trình thực hiện đồ án.
Em cũng xin chân thành cảm ơn đến các thầy cô giảng viên trường Đại học
công nghiệp Hà Nội nói chung, các thầy cô trong bộ môn khoa công nghệ kĩ
thuật điện tử nói riêng đã dạy dỗ em trong suốt 4 năm học đại học, giúp em
có được kiến thức vững vàng và tạo điều kiện giúp đỡ em trong suốt quá trình
học tập để em có thể vững bước trong tương lai.
Trong quá trình thực hiện đồ án tốt nghiệp là khoảng thời gian quý báu giúp
em học hỏi rất nhiều từ việc làm, nghiên cứu độc lập, tìm hiểu và học hỏi
những nguồn tư liệu đã có; qua đó biết tiếp thu kiến thức đồng thời vận dụng
những kiến thức mà bản thân đã học tập trên ghế nhà trường để thực hiện bản
báo cáo này. Do kiến thức và kinh nghiệm của bản thân còn nhiều hạn chế và
thời gian không cho phép nên bản báo cáo này vẫn còn nhiều thiếu sót, em rất
mong được sự góp ý của thầy NGUYỄN NGỌC ANH và thầy cô trong
khoa.
Cuối cùng em xin chúc thầy cô có sức khỏe, vui vẻ và đạt được nhiều thành
công trong cuộc sống và cũng như sự nghiệp của mình.
Em xin chân thành cảm ơn!
Sinh viên thực hiện
Bùi Thị Yến


Trường Đại Học Công Nghiệp Hà Nội


Khoa Điện Tử

LỜI MỞ ĐẦU
Trong xã hội hiện đại ngày nay, điện tử đóng một vai trò
cực kì quan trọng, chúng xuất hiện trong rất nhiều lĩnh
vực của đời sống. Do đó việc tìm hiểu và nghiên cứu về
chúng là rất cần thiết đối với sinh viên chuyên ngành điện
tử.
Với sự phát triển mạnh mẽ của khoa học, công nghệ chế tạo vi mạch và sự
phát minh ra các linh kiện điện tử thì việc ứng dụng vi điều khiển, vi xử lý
càng trở nên quan trọng. Người ta đã tạo những vi điều khiển có cấu trúc
mạnh hơn, đáp ứng thời gian thực tốt hơn, làm cho các hệ thống linh hoạt và
đa dạng hơn, giá thành thấp hơn và đặc biệt là độ chính xác cao hơn. Bên
cạnh đó là sự tiến bộ nhanh chóng của công nghệ thông tin và viễn thông; các
thiết bị di động công nghệ cao như máy tính bỏ túi, máy tính xách tay laptop,
điện thoại di động,...không còn xa lạ và ngày càng được sử dụng rộng rãi
trong những năm gần đây. Chính vì vậy, với

sự phân công của khoa

Điện Tử trường Đại Học Công Nghiệp Hà Nội và dưới sự
hướng dẫn trực tiếp của thầy Nguyễn Ngọc Anh đã giúp
em tìm hiểu và nghiên cứu thực hiện đề tài: “Nghiên cứu
và thiết kế đồng hồ vạn niên điều khiển qua Bluetooth”.
Trong quá trình thực hiện đồ án tốt nghiệp, mặc dù đã rất cố gắng để hoàn
thành một cách tốt nhất nhưng với thời gian và kinh nghiệm còn hạn chế nên
bản báo cáo không tránh khỏi những thiết sót. Rất mong được sự chỉ dẫn của
quý thầy cô và sự đóng góp ý kiến của các bạn.



Trường Đại Học Công Nghiệp Hà Nội

Khoa Điện Tử

Em xin chân thành cảm ơn !


Trường Đại Học Công Nghiệp Hà Nội

1

Khoa Điện Tử

CHƯƠNG 1
GIỚI THIỆU TỔNG QUAN
1.1 Giới thiệu chung về vi điều khiển
Vi điều khiển là một máy tính được tích hợp trên một chíp, chúng được sử
dụng để điều khiển các thiết bị điện tử. Vi điều khiển thực chất là một hệ
thống bao gồm một vi xử lý có hiệu suất đủ dùng và giá thành thấp (khác với
bộ vi xử lý đa năng dùng trong máy tính) kết hợp với các khối ngoại vi như
bộ nhớ, các mô đun vào/ra, các mô đun biến đổi số sang tương tự và tương tự
sang số… Ở máy tính thì các mô đun thường được xây dựng bởi các chíp và
mạch ngoài.
Vi điều khiển thường được dùng để xây dựng các hệ thống nhúng. Chúng
xuất hiện khá nhiều trong các dụng cụ điện tử, thiết bị điện, máy giặt, lò vi
sóng, điện thoại, đầu đọc DVD, thiết bị đa phương tiện, dây chuyền tự động,

Kiến trúc của một bộ vi điều khiển được thiết kế theo hai dạng cơ bản: Kiến
trúc Von Neumann và kiến trúc Harvard.

Von Neumann là một nhà toán học, vật lí người Mỹ, gốc Do Thái. Năm
1944, Von Neumann làm cố vấn cho dự án chế tạo máy tính ENIAC, để phục
vụ cho các mục đích quân sự của Mỹ. Năm 1945, Von Neumann đã viết một
bài báo có tính bước ngoặt với tựa: “ Bản thảo đầu tiên về máy tính EDVAC”
chứa đựng những ý tưởng về cấu trúc cơ bản của máy tính, gồm các thành
phần sau:
- Bộ xử lý số học và logic (ALU –Arithmetic Logic Unit).
- Bộ nhớ (Memory).
- Bộ điều khiển (Von Neumann Control Unit).


Trường Đại Học Công Nghiệp Hà Nội

2

Khoa Điện Tử

- Các bộ phận vào/ ra.
Một điểm đáng chú ý nhất trong kiến trúc Von Neumann là dữ liệu (data)
cùng với lệnh (instruction) được dùng để xử lý dữ liệu và có thể được lưu giữ
trên cùng một vùng nhớ của máy tính. Do dữ liệu và các lệnh được lưu trong
cùng một bộ nhớ (RAM) nên cần phải phân biệt chúng; khối điều khiển Von
Neumann sẽ thực hiện nhiệm vụ này. Khi khối điều khiển Von Neumann bắt
đầu gọi một lệnh để xử lý, chúng gọi tới bộ đếm chương trình (PC- Program
Counter) để trở tới địa chỉ của lệnh trong bộ nhớ, rồi lệnh này sẽ được nạp và
thực thi bởi CPU (Central Processing Unit). Địa chỉ của dữ liệu cần xử lý
được chứa trong chính lệnh cần thực thi. Khi thực thi các lệnh, bộ đếm
chương trình sẽ tăng lên để lệnh tiếp theo cần thực thi. Quá trình này là tuần
tự, nghĩa là các lệnh được thực thi một cách tuần tự, tại mỗi thời điểm chỉ có
một lệnh được thực thi. Đây là đặc điểm tiêu biểu của kiến trúc Von

Neumann.
Ngày nay, nhiều kỹ thuật tiên tiến như: tăng độ rộng bus dữ liệu, kỹ thuật
dừng bộ nhớ,... Tuy nhiên, kiến trúc dựa trên kiến trúc Von Neumann vẫn là
kiến trúc máy tính phổ biến nhất hiện nay.
Kiến trúc Harvard được nghiên cứu tại Trường Đại Học Harvard (Mỹ), dưới
sự lãnh đạo của Haward Aiken. Nhóm nghiên cứu đã tác các bộ nhớ dữ liệu
và bộ nhớ chương trình với các bus riêng rẻ cho từng bộ nhớ, các bus này
cũng được điều hành độc lập. Bởi thế, tại một CPU có thể vừa đọc mã lệnh,
vừa đọc dữ liệu; điều này làm tăng đáng kể tốc độ xử lý của toàn hệ thống.
Tập lệnh trong kiến trúc Harvard có thể tối ưu tùy theo yêu cầu kiến trúc của
vi điều khiển mà không phụ thuộc vào cấu trúc dữ liệu.
Vi điều khiển được tổ chức theo kiến trúc Harvard còn được gọi là vi điều
khiển RISC (Reduced Instruction Set Computer). Vi điều khiển được thiết kế
theo kiến trúc Von Neumann còn được gọi là vi điều khiển CISC (Complex


Trường Đại Học Công Nghiệp Hà Nội

3

Khoa Điện Tử

Instruction Set Computer), mã lệnh của các bộ vi điều khiển này không phải
là một số cố định mà là bội số của 8 bít.
Ngoài hai kiểu kiến trúc cơ bản, Analog Devices còn đưa ra một kiểu kiến
trúc dựa trên kiến trúc Harvard, đó là SHARC. Kiến trúc này được áp dụng
cho các bộ xử lý số. Ngoài các đặc điểm như kiến trúc Harvard, SHARC được
bổ sung thêm bộ nhớ đệm chỉ lệnh và điều khiển vào/ra nhằm cải thiện thông
lượng dữ liệu.
Một số loại vi điều khiển có trên thị trường:

- Vi điều khiển MCS-51: 8031, 8032, 8051, 8052, ...
- Vi điều khiển ATMEL: 89Cxx, AT89Cxx51..
- Vi điều khiển AVR AT90Sxxxx
- Vi điều khiển PIC 16C5x, 17C43...
AVR là dòng được sử dụng rộng rãi trong các hệ thống nhúng. Vi điều
khiển AVR do hãng Atmel sản xuất được giới thiệu lần đầu năm 1996. AVR
có rất nhiều dòng khác nhau bao gồm dòng Tiny AVR (như ATtiny13,
ATtiny22…) có kích thước bộ nhớ nhỏ, ít bộ phận ngoại vi, rồi đến dòng
AVR (chẳng hạn AT90S8535, AT90S8515,…) có kích thước bộ nhớ vào loại
trung bình và mạnh hơn là dòng Mega (như ATmega32, ATmega128,…) với
bộ nhớ có kích thước vài Kb đến vài trăm Kb cùng với các bộ ngoại vi đa
dạng được tích hợp trên chip. Tốc độ của dòng Mega cũng cao hơn so với các
dòng khác. Năm 2008, Atmel lại tiếp tục cho ra đời dòng AVR mới là
megaAVR, với những tính năng mạnh mẽ chưa từng có ở các dòng AVR
trước đó. Có thể nói XmegaAVR là dòng 8 bit mạnh mẽ nhất hiện nay.
AVR so với nhiều dòng vi điều khiển 8 bit khác thì có nhiều đặc tính hơn
hẳn, lập trình đơn giản với cấu trúc tập lệnh đơn giản hóa-RISC, tất cả các


Trường Đại Học Công Nghiệp Hà Nội

4

Khoa Điện Tử

chip đều có bộ dao động nội lên đến 8Mhz và không cần phải mắc thêm bất kì
linh kiện nào khác vào mạch.
1.1.1 Vi điều khiển ATmega328
ATmega328 là vi điều khiển trong board mạch Arduino. ATmega328 có tên
đầy đủ là ATmega328P-PU. 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. ATmega328 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).

Hình 1.1: Vi điều khiển ATmega328


Trường Đại Học Công Nghiệp Hà Nội

5

1.1.2 Các thông số chính của vi điều khiển ATmega328
+ Kiến trúc: AVR 8bit
+ Xung nhịp lớn nhất: 20Mhz
+ Bộ nhớ chương trình (FLASH): 32KB
+ Bộ nhớ EEPROM: 1KB
+ Bộ nhớ RAM: 2KB
+ Đ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)
1.1.3 Sơ đồ chân

Hình 1.2: Sơ đồ chân ATmega328

Khoa Điện Tử


Trường Đại Học Công Nghiệp Hà Nội


6

Khoa Điện Tử

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 ngắ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 bộ giám sát thời gian 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ợ nạp khởi
động. ATmega328 có khả năng hoạt động trong một dải điện áp rộng (1.8V –
5.5V), tốc độ thực thi (thông lượng) 1MIPS trên 1MHz. ATmega328 là linh
hồn của board mạch Arduino.
1.2 Board Arduino
1.2.1 Giới thiệu chung về Arduino
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 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.
Một mạch Arduino bao gồm một vi điều khiển AVR với nhiều linh kiện bổ
sung giúp dễ dàng lập trình và có thể mở rộng với các mạch khác. Một khía
cạnh quan trọng của Arduino là các kết nối tiêu chuẩn của chúng cho phép
người dùng kết nối CPU của bo mạch với các module; thêm vào có thể dễ
dàng chuyển đổi, được gọi là cái khiên. Vài cái khiên truyền thông với board
Arduino trực tiếp thông qua các chân khác nhau, nhưng nhiều khiên được
định địa chỉ thông qua giao thức nối tiếp I2C, nhiều cái khiên có thể được xếp
chồng và sử dụng dưới dạng song song. Arduino chính thức thường sử dụng
các dòng chip megaAVR, đặc biệt là ATmega8, ATmega168, ATmega328,

ATmega1280 và ATmega2560. Một vài các bộ vi xử lý khác cũng được sử


Trường Đại Học Công Nghiệp Hà Nội

7

Khoa Điện Tử

dụng bởi các mạch Arduino tương thích. Hầu hết các mạch gồm một bộ điều
chỉnh tuyến tính 5V và một thạch anh dao động 16 MHz (hoặc bộ cộng hưởng
gốm trong một vài biến thể). Một vi điều khiển Arduino cũng có thể được lập
trình sẵn với một mạch nạp khởi động cho phép đơn giản là đăng tải chương
trình vào bộ nhớ, so với các thiết bị khác thường phải cần một bộ nạp bên
ngoài. Điều này giúp cho việc sử dụng Arduino được trực tiếp hơn bằng cách
cho phép sử dụng một máy tính gốc như là một bộ nạp chương trình.
1.2.2 Giới thiệu về board Arduino Uno
Arduino Uno là một bo mạch 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 gồm các phần
sau:

Hình 1.3: Board Arduino Uno
- Cổng USB (Universal Serial Bus): đây là loại cổng giao tiếp để đăng tải
code từ PC lên vi điều khiển. Đồng thời, chúng cũng là giao tiếp nối tiếp để
truyền dữ liệu giữa vi điều khiển và máy tính.


Trường Đại Học Công Nghiệp Hà Nội

8


Khoa Điện Tử

- Jack nguồn: Arduino 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.
- 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) và một chân điện áp tham chiếu (AREF).
- Vi đ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. Ở Arduino Uno này thì sử
dụng ATmega328.
* Chức năng:
1. USB
Arduino sử dụng cáp USB để giao tiếp với máy tính. Thông qua cáp
USB ta có thể đăng tải chương trình cho Arduino hoạt động. Ngoài ra
USB là nguồn cho Arduino.
2. Nguồn
Khi không sử dụng USB làm nguồn thì ta có thể sử dụng nguồn ngoài
qua zác cắm 2,1mm (cực dương ở giữa) hoặc có thể sử dụng 2 chân
Vin và GND để cấp nguồn cho Arduino. Bo mạch hoạt động với
nguồn ngoài ở điện áp từ 5-20V. Chúng có thể cấp một điện áp lớn
hơn, tuy nhiên chân 5V sẽ có mức điện áp lớn hơn 5V. Nếu sử dụng
nguồn lớn hơn 12V thì sẽ có hiện tượng nóng và hỏng bo mạch.
Chân 5V và chân 3,3V (output voltage): các chân này dùng để lấy
nguồn ra từ nguồn mà ta đã cung cấp cho Arduino.
GND: chân mass.


Trường Đại Học Công Nghiệp Hà Nội


9

Khoa Điện Tử

3. Chip ATmega328
Chip ATmega328 có 32K bộ nhớ flash trong đó 0,5K sử dụng cho
nạp chương trình. Ngoài ra còn có 2K SRAM, 1K EPPROM.
4. Input và Output
Arduino Uno có 14 chân digital (tín hiệu số) với chức năng vào và ra
sử dụng các hàm pinMode(), digitalWrite() và digitalRead().
- Serial: Chân 0(Rx), chân 1(Tx). Hai chân này dùng để truyền
(Tx), nhận (Rx) dữ liệu nối tiếp TTL. Ta có thể sử dụng chúng để
giao tiếp với cổng COM của một số thiết bị hoặc các linh kiện có
chuẩn giao tiếp nối tiếp.
- PWM (pulse width modulation): các chân 3 5 6 9 10 11 trên bo
mạch có dấu “~” là các chân PWM ta có thể sử dụng chúng để
điều khiển tốc độ động cơ, độ sáng của đèn,…
- SPI: 10(SS), 11(MOSI), 12(MISO), 13(SCK) các chân này hỗ trợ
giao tiếp SPI.
- I2C: Arduino hỗ trợ giao tiếp theo chuẩn I2C. Các chân A4 (SDA)
và A5 (SCL) cho phép ta giao tiếp Arduino với các linh kiện có
chuẩn giao tiếp là I2C.
5. Reset
Dùng để reset Arduino.
* Các thông số chi tiết của Arduino Uno:
Vi xử lý:

ATmega328

Điện áp hoạt động:


5V

Điện áp đầu vào:

7-12V


10

Trường Đại Học Công Nghiệp Hà Nội

Khoa Điện Tử

Điện áp đầu vào (Giới hạn):

6-20V

Chân vào/ra (I/O) số:

14 ( 6 chân có thể cho đầu ra PWM)

Chân vào tương tự:

6

Dòng điện trong mỗi chân I/O:

40mA


Dòng điện chân nguồn 3.3V:

50mA

Bộ nhớ trong:

32KB (ATmega328)

SRAM:

2KB (ATmega328)

EEPROM:

1KB (ATmega328)

Xung nhịp:

16MHz

1.2.3 Lập trình Arduino
Các thiết bị dựa trên nền tảng Arduino được lập trình bằng ngôn ngữ riêng.
Ngôn ngữ này dựa trên ngôn ngữ Wiring được viết cho phần cứng và Wiring
lại là một biến thể của C/C++. Một số người gọi chúng là Wiring, một số khác
thì gọi là C hay C/C++. 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. Đặc biệt là số lượng thư viện code được viết
sẵn và chia sẻ bởi cộng đồng nguồn mở là cực kì lớn.
Để lập trình cũng như gửi lệnh và nhận tín hiệu từ mạch Arduino ta dùng
một môi trường lập trình Arduino được gọi là Arduino IDE (Intergated
Development Environment). Giao diện phần mềm Arduino IDE hình 1.4



Trường Đại Học Công Nghiệp Hà Nội

11

Khoa Điện Tử

Hình 1.4: Giao diện phần mềm Arduino IDE
Ví dụ: Lập trình điều khiển nhấp nháy đèn

Hình 1.5: Lập trình điều khiển led


Trường Đại Học Công Nghiệp Hà Nội

12

Khoa Điện Tử

1.3 IC DS1307

Hình 1.6: DS1307
DS1307 là IC (Integrated-Circuit) thời gian thực, họ vi điều khiển của hãng
Dalat. DS1307 có một số đặc trưng cơ bản sau:
+ DS1307 là IC thời gian thực với nguồn cung cấp nhỏ dùng để cập nhật
thời gian và ngày tháng.
+ SRAM: 56bytes.
+ Địa chỉ và dữ liệu được truyền nối tiếp qua 2 đường bus 2 chiều.
+ DS1307 có một mạch cảm biến điện áp dùng để dò các điện áp lỗi và tự

động đóng ngắt với nguồn pin cung cấp 3V.
+ DS1307 có 7 byte dữ liệu nằm từ địa chỉ 0x00 tới 0x06, 1 byte điều khiển
và 56 byte lưu trữ (dành cho người sử dụng).
+ Khi xử lý dữ liệu từ DS1307, họ đã tự chuyển cho ta về dạng số BCD, ví
dụ như ta đọc được dữ liệu từ địa chỉ 0x04 (tương ứng với ngày trong tháng)
và tại 0x05 (tháng) là 0x15, 0x11.


Trường Đại Học Công Nghiệp Hà Nội

13

Khoa Điện Tử

+ SQW/OUT: là chân cho xung ra của DS1307 có 4 chế độ 1Hz, 4.096HZ,
8.192Hz, 32.768Hz…các chế độ này được quy định bởi các bit của thanh ghi
địa chỉ (địa chỉ 0x07).
+ Địa chỉ của DS1307 là 0xD0.
1.3.1 Cơ chế hoạt động của DS1307

Hình 1.7: Mạch ứng dụng đơn giản của DS1307
VCC: nối với nguồn
X1, X2: nối với thạch anh 32,768 KHz
Vbat: đầu vào chân 3V
GND: đất
SDA: chuỗi data
SCL: dãy xung clock
SQW/OUT: xung vuông/đầu ra driver



Trường Đại Học Công Nghiệp Hà Nội

14

Khoa Điện Tử

• DS1307 là một IC thời gian thực với nguồn cung cấp nhỏ, dùng để cập
nhật thời gian và ngày tháng với 56 bytes SRAM. Địa chỉ và dữ liệu được
truyền nối tiếp qua 2 đường bus 2 chiều. Chúng cung cấp thông tin về giờ,
phút, giây, thứ, ngày, tháng, năm. Ngày cuối tháng sẽ tự động được điều
chỉnh với các tháng nhỏ hơn 31 ngày, bao gồm cả việc tự động nhảy năm.
Đồng hồ có thể hoạt động ở dạng 24h hoặc 12h với chỉ thị AM/PM. DS1307
có một mạch cảm biến điện áp dùng để dò các điện áp lỗi và tự động đóng
ngắt với nguồn pin cung cấp.
• DS1307 hoạt động với vai trò slave trên đường bus nối tiếp. Việc truy cập
được thi hành với chỉ thị START và một mã thiết bị nhất định được cung cấp
bởi địa chỉ các thanh ghi. Tiếp theo đó, các thanh ghi sẽ được truy cập liên tục
đến khi chỉ thị STOP được thực thi.
1.3.2 Hoạt động của các chân

Hình 1.8: Sơ đồ chân DS1307
• Vcc: nguồn một chiều, đầu vào 5V. Khi 5V được cung cấp thì thiết bị có
thể truy cập hoàn chỉnh và dữ liệu có thể đọc và viết. Khi chân 3V được nối
tới thiết bị này và Vcc nhỏ hơn 1,25Vbat thì quá trình đọc và viết không được
thực thi, tuy nhiên chức năng giữ thời gian không bị ảnh hưởng bởi điện áp


Trường Đại Học Công Nghiệp Hà Nội

15


Khoa Điện Tử

vào thấp. Khi Vcc nhỏ hơn Vbat thì RAM và bộ giữ thời gian sẽ được ngắt tới
nguồn cung cấp trong (thường là nguồn 1 chiều 3V).
• GND: nối đất.
• Vbat: Đầu vào pin cho bất kỳ một chuẩn pin 3V. Điện áp pin phải được
giữ trong khoảng từ 2,5 - 3V để đảm bảo cho sự hoạt động của thiết bị.
• SCL (serial clock input): SCL được sử dụng để đồng bộ sự chuyển dữ liệu
trên đường dây nối tiếp.
• SDA (serial data input/out): Là chân vào ra cho 2 đường dây nối tiếp.
Chân SDA thiết kế theo kiểu cực máng hở, đòi hỏi phải có một điện trở kéo
trong khi hoạt động.
• SQW/OUT (square wave/output driver): khi được kích hoạt thì chân
SQW/OUT được thiết lập phát đi 1 trong 4 tần số (1Hz,4KHz,8KHz,32KHz).
Chân này cũng được thiết kế theo kiểu cực máng hở vì vậy chúng cũng cần có
một điện trở kéo trong. Chân này sẽ hoạt động khi cả Vcc và Vbat được cấp.
• X1, X2: được nối với một thạch anh tần số 32,768KHz, một mạch tạo dao
động ngoài, để hoạt động ổn định thì phải nối thêm 2 tụ 33pF. DS1307 với bộ
tạo dao động trong tần số 32,768KHz, với cấu hình này thì chân X1 sẽ được
nối vào tín hiệu dao động trong còn chân X2 thì để hở.
a, Sơ đồ địa chỉ RAM và RTC


Trường Đại Học Công Nghiệp Hà Nội

16

Khoa Điện Tử


• Thông tin về thời gian và ngày tháng được lấy ra bằng cách đọc các byte
thanh ghi thích hợp. Thời gian và ngày tháng được thiết lập cũng thông qua
các byte thanh ghi này bằng cách viết vào đó những giá trị thích hợp. Nội
dung của các thanh ghi dưới dạng mã BCD (binary coded decreaseimal). Bit 7
của thanh ghi seconds là bit clock halt (CH), khi bit này được thiết lập 1 thì
dao động vô hiệu hóa, khi chúng được xóa về 0 thì dao động được cho phép.
Thanh ghi thời gian thực được mô tả như sau:

Hình 1.9: Thanh ghi thời gian thực

• DS1307 có thể chạy ở chế độ 24h cũng như 12h. Bit thứ 6 của thanh ghi
hours là bit chọn chế độ 24h hoặc 12h. Khi bit này ở mức cao thì chế độ 12h
được chọn, ở chế độ 12h thì bit 5 là bit AM/PM với mức cao là PM; ở chế độ
24h thì bit 5 là bit chỉ 20h (từ 20h đến 23h).
• Trong quá trình truy cập dữ liệu, khi chỉ thị START được thực thi thì
dòng thời gian được truyền tới một thanh ghi thứ hai, thông tin thời gian sẽ
được đọc từ thanh ghi thứ cấp này, trong khi đó đồng hồ vẫn tiếp tục chạy.


Trường Đại Học Công Nghiệp Hà Nội

17

Khoa Điện Tử

Trong DS1307 có một thanh ghi điều khiển để điều khiển hoạt động của chân
SQW/OUT :
Bit 7

Bit6


Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

OUT

X

X

SQWE

X

X

RS1

RS0

• OUT (output control): bit này điều khiển mức ra của chân SQW/OUT khi

đầu ra xung vuông là vô hiệu hóa. Nếu SQWE = 0 thì mức logic ở chân
SQW/OUT sẽ là 1 nếu OUT=1 và OUT = 0 nếu OUT = 0 .
• SQWE (square wave enable): bit này được thiết lập 1 sẽ cho phép đầu ra
của bộ tạo dao động. Tần số của đầu ra sóng vuông phụ thuộc vào giá trị của
RS1 và RS0.
RS1

RS0

Tần số đầu ra SQW

0

0

1 Hz

0

1

4.096 kHz

1

0

8.192kHz

1


1

32.768 kHz

DS1307 hỗ trợ bus 2 dây 2 chiều và giao thức truyền dữ liệu. Thiết bị gửi
dữ liệu lên bus được gọi là bộ phát và thiết bị nhận gọi là bộ thu. Thiết bị điều
khiển quá trình này gọi là master. Thiết bị nhận sự điều khiển của master gọi
là slave. Các bus nhận sự điều khiển của master là thiết bị phát ra chuỗi xung
clock (SCL), master sẽ điều khiển sự truy cập bus, tạo ra các chỉ thị START
và STOP.
b, Sự truyền nhận dữ liệu trên chuỗi bus 2 dây
Tuỳ thuộc vào bit R/W mà 2 loại truyền dữ liệu sẽ được thực thi:


×