Tải bản đầy đủ (.docx) (124 trang)

Nghiên cứu thiết kế chế tạo bộ điều khiển led ma trận bằng smartphone chạy hệ điều hành android

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.65 MB, 124 trang )

Đồ án tốt nghiệp

1

Khoa Điện – Điện Tử

LỜI CẢM ƠN
Trong quá trình thực hiện đề tài: “Nghiên cứu thiết kế chế tạo bộ điều khiển
Led ma trận bằng Smartphone chạy hệ điều hành Android” em xin chân thành
cảm ơn đến quý Thầy, Cô giáo trong bộ môn, khoa Điện – Điện tử đã tận tình giảng
dạy, cung cấp cho em nhiều kiến thức trong suốt quá trình học tập tại trường đại học
Nha Trang.
Xin gửi lời cảm ơn sâu sắc đến Thầy giáo Nhữ Khải Hoàn đã trực tiếp hướng
dẫn đồ án cho em. Cảm ơn Thầy đã tận tình chỉ bảo, hướng dẫn, cung cấp những tài
liệu, kinh nghiệm, bài học quý giá và tạo điều kiện thuận lợi cho em hoàn thành đồ
án này.
Em cũng xin chân thành cảm ơn gia đình và bạn bè đã giúp đỡ về mặt tinh
thần cũng như vật chất để em có thể hoàn thành tốt đồ án này.
Một lần nữa em xin kính chúc quý Thầy, Cô và mọi người luôn mạnh khỏe,
hạnh phúc và ngày càng thành công trong cuộc sống.
Xin chân thành cảm ơn!
Nha Trang, tháng 06 năm 2015.
Sinh viên
Nguyễn Khắc Huy

GVHD: Th.s Nhữ Khải Hoàn

SVTH: Nguyễn Khắc Huy


Đồ án tốt nghiệp



2

Khoa Điện – Điện Tử

LỜI MỞ ĐẦU
 Lý do chọn đề tài

Ngày nay với sự phát triển mạnh của khoa học – công nghệ, đời sống con
người ngày càng được nâng cao rõ rệt nhờ ứng dụng các thành tựu của khoa học –
công nghệ. Nó cũng thúc đẩy sự phát triển mạnh mẽ nhiều lĩnh vực trong đó có lĩnh
vực Điện – Điện tử.
Những chiếc điện thoại thông minh Smartphone ngày càng được cải tiến
không chỉ phục vụ nhu cầu nghe, gọi, xem phim… mà nó còn thay thế được các
chức năng của một chiếc máy tính (PC). Ưu điểm của những chiếc điện thoại này là
nhỏ gọn, bộ vi xử lý tốc độ ngày càng cao, bộ nhớ trong lớn, tích hợp đầy đủ các
ứng dụng cơ bản, kết nối không dây Bluetooth, Wifi, 3G, sử dụng được nhiều giờ
liên tục… Chính vì vậy, Smartphone rất được ưa chuộng và dần dần được thay thế
cho máy tính phục vụ các ứng dụng cơ bản. Hầu hết các thiết bị di động đều tích
hợp chuẩn truyền thông Bluetooth. Nếu như USB giúp chuẩn hóa các kết nối giữa
các thiết bị ngoại vi với máy tính (PC), thì Bluetooth có thể coi như chuẩn không
dây tiêu chuẩn giúp kết nối hầu hết các thiết bị phụ trợ thông qua giao tiếp không
dây như tai nghe, chuột, bàn phím, máy in, loa ... Sử dụng Bluetooth trong các thiết
bị nhúng có thể giúp chúng ta kết nối không dây dễ dàng với máy tính, điện thoại di
động, máy tính bảng, laptop... Từ đó mở ra rất nhiều ứng dụng điều khiển, giao tiếp,
kết nối giữa các hệ thống nhúng và thiết bị di động.
Trong đề tài này em sử dụng Smartphone chạy hệ điều hành Android để điều
khiển Led ma trận thông qua vi điều khiển AVR bằng Bluetooth. Điều khiển Led ma
trận bằng Smartphone rất thuận tiện trong việc cập nhật dữ liệu, tiết kiệm được thời
gian, tính thẩm mỹ cao, không cần sử dụng máy tính.

 Mục tiêu của đề tài




Thiết kế được bảng quang báo Led ma trận qua Bluetooth.
Phải hiển thị được các thông tin cần thiết,...
Bảng quang báo Led ma trận cập nhật được nội dung mỗi khi truyền dữ liệu từ

Smartphone chạy hệ điều hành Android qua Bluetooth.
• Xây dựng giao diện điều khiển Led ma trận trên Smartphone Android truyền dữ liệu
cho vi điều khiển thông qua mô đun Bluetooth HC-06.
GVHD: Th.s Nhữ Khải Hoàn

SVTH: Nguyễn Khắc Huy


Đồ án tốt nghiệp

3

Khoa Điện – Điện Tử

 Đối tượng và phạm vi nghiên cứu
– Đối tượng nghiên cứu.

Nghiên cứu mô đun Led ma trận P10 màu đỏ, mô đun Bluetooth HC-06, vi
điều khiển AVR, hệ điều hành Android.



Phạm vi nghiên cứu
Tìm hiểu, thiết kế bo mạch điều khiển Led ma trận, ứng dụng mô đun
Bluetooth HC-06, mô đun Led ma trận P10 để thiết kế bảng quang báo ma trận 32 x
128 màu đỏ, hiển thị được số và chữ cái tiếng việt có dấu truyền thông qua
Bluetooth.

 Phương pháp nghiên cứu
– Phương pháp lý thuyết: Cách cấp nguồn và nguyên lý hoạt động của mô đun Led


ma trận, kỹ thuật điều khển Led ma trận, kỹ thuật lập trình Android.
Phương pháp thực nghiệm: Thiết kế, chế tạo mạch điều khiển, bảng quang báo
Led ma trận, xây dựng giao diện trên Android cho Smartphone. Kết nối, chạy thử,
kiểm tra, sửa chữa hoàn thiện.

 Nội dung nghiên cứu
– Nghiên cứu các mô đun Led ma trận, mô đun Bluetooth HC-06.
– Tìm hiểu Smartphone, nghiên cứu ứng dụng hệ điều hành Android và viết giao diện

điều khiển Led ma trận dựa trên Android.
– Thiết kế bảng quang báo bằng mô đun Led ma trận.
– Thiết kế bộ điều khiển Led ma trận.
– Đánh giá kết quả đạt được và phương hướng phát triển của đề tài.
Sản phẩm này không chỉ phục vụ cho đào tạo mà còn được ứng dụng vào thực
tiễn xã hội. Vì hiện nay quang báo bằng Led rất phổ biến, nó đáp ứng được các nhu
cầu phát triển xã hội, bởi tính thẩm mỹ, độ bắt mắt cao, dễ dàng cập nhật nội dung,
tiện ích mà Led mang lại.
 Bố cục đồ án
- Chương 1: Tổng quan về hệ điều hành Android và Led trong quang báo.
- Chương 2: Thiết kế phần cứng hệ thống.

- Chương 3: Phần mềm lập trình hệ thống.
- Kết luận và phương hướng phát triển đề tài.
Mặc dù đã hết sức nỗ lực, cố gắng trong quá trình thực hiện đồ án nhưng với
trình độ, kiến thức, kinh nghiệm thực tế còn hạn chế và thời gian có hạn nên không
thể tránh khỏi những sai sót nhất định. Do đó, em rất mong muốn nhận được sự góp
GVHD: Th.s Nhữ Khải Hoàn

SVTH: Nguyễn Khắc Huy


Đồ án tốt nghiệp

4

Khoa Điện – Điện Tử

ý, chỉ bảo của quý Thầy, Cô và ý kiến đóng góp của bạn bè để đồ án được hoàn
thiện hơn.
Em xin chân thành cảm ơn!

GVHD: Th.s Nhữ Khải Hoàn

SVTH: Nguyễn Khắc Huy


Đồ án tốt nghiệp

5

Khoa Điện – Điện Tử


MỤC LỤC
Hình 1.1: Mô hình kiến trúc nền tảng Android........................................................5
Hình 1.2: Vòng đời của một Activity.....................................................................12
Hình 1.3: Sơ đồ chuyển đổi trạng thái của Service................................................14
Hình 1.4: Chức năng của Intent.............................................................................15
Hình 1.5: Ví dụ về Notification..............................................................................18
Hình 1.6: Cấu trúc hình cây của Project Android...................................................19
Hình 1.7: Hình ảnh Led thực tế..............................................................................26
Hình 1.8: Cấu tạo và nguyên lý hoạt động của Led...............................................27
Hình 1.9: Ứng dụng của đèn Led trong thực tế......................................................29
Hình 2.1: Sơ đồ khối tổng quát hệ thống phần cứng..............................................31
Hình 2.2: Atmega 32 loại chân cắm...................................................................33
Hình 2.3: Atmega 32 loại chân dán........................................................................33
Hình 2.4: Cấu trúc bên trong của vi điều khiển AVR.............................................35
Hình 2.5: Cấu trúc bộ nhớ vi điều khiển Atmega 32..............................................36
Hình 2.6: Thanh ghi 8 bit của vi điều khiển Atmega 32.........................................37
Hình 2.7: Cấu trúc thanh ghi trạng thái của AVR...................................................38
Hình 2.8: Hình ảnh thực tế IC 74HC595................................................................41
Hình 2.9: Sơ đồ chân IC 74HC595........................................................................41
Hình 2.10: Ghép nối tiếp các IC 74HC595............................................................43
Hình 2.11: Hình ảnh thực tế IC 74HC138............................................................43
Hình 2.12: Sơ đồ chân IC 74HC138......................................................................43
Hình 2.13: Nguyên tắc tạo ảnh cho Led ma trận....................................................45
Hình 2.14: Mô đun Led ma trận P10......................................................................47
Hình 2.15: Sơ đồ chân mô đun Led P10................................................................47
Hình 2.16: Sơ đồ nguyên lý kết nối mô đun Led P10 với vi điều khiển Atmega32. . .
............................................................................................................................... 48
Hình 2.17: Sơ đồ mạch in kết nối mô đun Led P10 với vi điều khiển Atmega32...48


GVHD: Th.s Nhữ Khải Hoàn

SVTH: Nguyễn Khắc Huy


Đồ án tốt nghiệp

6

Khoa Điện – Điện Tử

Hình 2.18: Nguyên lý đưa dữ liệu vào IC 74HC595 của Led ma trận P10............48
Hình 2.19: Nguyên lý quét mô đun Led ma trận P10.............................................49
Hình 2.20: Hình ảnh thực tế IC 74HC254.................................................49
Hình 2.21: Sơ đồ chân IC 74HC254......................................................................49
Hình 2.22: Sơ đồ nguyên lý mạch điều khiển trung tâm Atmega 32......................50
Hình 2.23: Sơ đồ mạch in khối điều khiển trung tâm Atmega 32...........................50
Hình 2.24: Mô đun Bluetooth HC06......................................................................51
Hình 2.25: Cấu trúc của một khung truyền phổ biến..............................................52
Hình 2.26: Mô hình sản phẩm thực tế....................................................................53
Hình 3.1: Giao diện chính của phần mềm Proteus 8.0...........................................54
Hình 3.2: Giao diện của phần mềm Codevision AVR V2.05.0...............................55
Hình 3.3: Lựa chọn Java Platform.........................................................................57
Hình 3.4: Chọn phiên bản JDK phù hợp với Windowns........................................57
Hình 3.5: Chọn Workspace cho việc phát triển ứng dụng trên Android.................58
Hình 3.6: Giao diện Eclipse.....................................................................................59
Hình 3.7: Tham chiếu đến Android SDK...............................................................60
Hình 3.8: Lựa chọn các gói Android SDK (API)...................................................60
Hình 3.9: Cài đặt Android SDK Manager..............................................................61
Hình 3.10: Chọn cài đặt Android Virtual Device...................................................61

Hình 3.11: Cài đặt thông số cho Android Virtual Device.......................................62
Hình 3.12: Khởi động Android Virtual Device......................................................62
Hình 3.13: Thiết lập kích thước màn hình cho Android Virtual Device.................63
Hình 3.14: Android Virtual Device được khởi tạo.................................................63
Hình 3.15: Giao diện trên Smartphone Android giao tiếp với vi điều khiển..........68

GVHD: Th.s Nhữ Khải Hoàn

SVTH: Nguyễn Khắc Huy


Đồ án tốt nghiệp

7

Khoa Điện – Điện Tử

DANH SÁCH CÁC BẢNG BIỂU
Bảng 1.1: So sánh giữa các hệ điều hành Smartphone.............................................4
Bảng 2.1: Chức năng hoạt động của 74HC595......................................................41
Bảng 2.2: Bảng giá trị logic của IC 74HC138........................................................44

GVHD: Th.s Nhữ Khải Hoàn

SVTH: Nguyễn Khắc Huy


Đồ án tốt nghiệp

8


Khoa Điện – Điện Tử

DANH SÁCH CÁC LƯU ĐỒ
Lưu đồ 3.1: Lưu đồ thuật toán tổng quát quét Led ma trận....................................65
Lưu đồ 3.2: Lưu đồ thuật toán quét hàng và cột của Led ma trận..........................66
Lưu đồ 3.3: Lưu đồ thuật toán dịch chữ từ trái sang phải.......................................67

GVHD: Th.s Nhữ Khải Hoàn

SVTH: Nguyễn Khắc Huy


Đồ án tốt nghiệp

9

Khoa Điện – Điện Tử

DANH SÁCH CÁC TỪ VIẾT TẮT
PC: Máy vi tính.
JDK: Java Development Kit.
OHA: Open Handset Alliance.

GVHD: Th.s Nhữ Khải Hoàn

SVTH: Nguyễn Khắc Huy


Đồ án tốt nghiệp


10

Khoa Điện – Điện Tử

CHƯƠNG 1: TỔNG QUAN VỀ HỆ ĐIỀU HÀNH ANDROID VÀ LED
TRONG QUANG BÁO
1.1 Tổng quan về hệ điều hành Android
1.1.1 Giới thiệu về hệ điều hành Android
Android là một hệ điều hành dành cho thiết bị di động như điện thoại, máy
tính bảng và netbooks. Android được phát triển bởi Google, dựa trên nền tảng Linux
kernel và các phần mềm nguồn mở khác. Ban đầu nó đuợc phát triển bởi Android
Inc sau đó được Google mua lại và gần đây nó trở thành một trong những phần
mềm đứng đầu của liên minh OHA (với khoảng 78 thành viên bao gồm cả nhà sản
xuất, nhà phát triển ứng dụng... cho thiết bị di động mà dẫn đầu là Google).[7]
Tháng 11 năm 2007, OHA – Liên minh thiết bị cầm tay mở rộng ra đời với các
thành viên Texas Instruments, Tập đoàn Broadcom, Google, HTC, Intel, LG, Tập
đoàn Marvell Technology, Motorola, Nvidia, Qualcomm, Samsung Electronics,
Sprint Nextel và T-Mobile.
Tháng 10 năm 2008, hệ điều hành Android đã chính thức trở thành phần mềm
mã nguồn mở.
Tháng 12 năm 2008, có thêm 14 thành viên mới gia nhập dự án Android được
công bố, gồm có ARM Holdings, Atheros Communications, Asustek Computer Inc,
Garmin Ltd, Softbank, Sony Ericsson, Toshiba Corp, và Vodafone Group Plc.
Andorid được phát triển nhằm cạnh tranh với các hệ điều hành di động khác
như iOS (Apple), BlackBerry OS, Windows Mobile (Microsoft), Symbian (Nokia),
Samsung (Bada), WebOS (Palm)... Android chiếm 75% thị phần điện thoại thông
minh trên toàn thế giới vào thời điểm quý 3 năm 2012, với tổng cộng 500 triệu thiết
bị đã được kích hoạt và 1,3 triệu lượt kích hoạt mỗi ngày. Sự thành công của hệ điều
hành cũng khiến nó trở thành mục tiêu trong các vụ kiện liên quan đến bằng phát

minh, góp mặt trong cái gọi là “cuộc chiến điện thoại thông minh” giữa các công ty
công nghệ.[8],[9]
Android có một cộng đồng phát triển ứng dụng rất lớn, hiện có khoảng hơn
70.000 ứng dụng có sẵn cho Android và đang liên tục đuợc cập nhật. Ứng dụng

GVHD: Th.s Nhữ Khải Hoàn

SVTH: Nguyễn Khắc Huy


Đồ án tốt nghiệp

11

Khoa Điện – Điện Tử

được phát triển bằng ngôn ngữ Java kết hợp với thư viện Java có sẵn của Google.
Các nhà phát triển ứng dụng có thể sử dụng máy tính chạy hệ điều hành Windows
hoặc MacOS hoặc Linux kết hợp với Android SDK để phát triển ứng dụng cho
Android. Hệ điều hành Android bao gồm 12.000.000 dòng mã trong đó có
3.000.000 dòng XML, 2.800.000 dòng C, 2.100.000 dòng Java, và 1.750.000 dòng
C++.
Ðể phát triển phần mềm trên Android, các lập trình viên có thể tải về bộ công
cụ phát triển (Android SDK). Bộ công cụ bao gồm các công cụ và các API cần thiết,
sử dụng ngôn ngữ Java dễ lập trình.
1.1.2 Đặc điểm của hệ điều hành Android
 Tính mở

Android được xây dựng từ dưới đi lên cho phép người phát triển tạo các ứng
dụng di động hấp dẫn với đầy đủ các điểm mạnh của các thiết bị cầm tay hiện có.

Android hoàn toàn mở, một ứng dụng có thể gọi tới bất kể một chức năng lõi của
điện thoại như tạo cuộc gọi, gửi tin nhắn hay sử dụng máy ảnh, cho phép người phát
triển tạo phong phú hơn, liên kết hơn các tính năng cho người dùng. Android được
xây dựng trên nhân Linux mở. Thêm nữa, nó sử dụng một máy ảo mà đã được tối
ưu hóa bộ nhớ và phần cứng với môi trường di động. Android là một mã nguồn mở,
nó có thể được mở rộng để kết hợp tự do giữa các công nghệ nổi trội. Nền tảng này
sẽ tiếp tục phát triển bởi cộng đồng phát triển để tạo ra các ứng dụng di động hoàn
hảo.
 Tính ngang hàng của các ứng dụng

Với Android, không có sự khác nhau giữa các ứng dụng điện thoại cơ bản với
ứng dụng của bên thứ ba. Chúng được xây dựng để truy cập như nhau tới một loạt
các ứng dụng và dịch vụ của điện thoại. Với các thiết bị được xây dựng trên nền
tảng Android, người dùng có thể đáp ứng đầy đủ các nhu cầu mà họ thích. Chúng ta
có thể đổi màn hình nền, kiểu gọi điện thoại, hay bất kể ứng dụng nào, thậm chí có
thể cài đặt điện thoại chỉ xem những hình ảnh mình thích.
 Phá vỡ rào cản phát triển ứng dụng

GVHD: Th.s Nhữ Khải Hoàn

SVTH: Nguyễn Khắc Huy


Đồ án tốt nghiệp

12

Khoa Điện – Điện Tử

Android phá vỡ rào cản để tạo ứng dụng mới và cải tiến. Một người phát triển

có thể kết hợp thông tin từ trang Web với dữ liệu trên điện thoại cá nhân. Ví dụ như
danh bạ, lịch hay vị trí trên bản đồ để cung cấp chính xác hơn cho người khác. Với
Android, người phát triển có thể xây dựng một ứng dụng mà cho phép người dùng
xem vị trí của những người bạn và thông báo khi họ đang ở vị trí lân cận. Tất cả
được lập trình dễ dàng thông qua sự hỗ trợ của MapView và dịch vụ định vị toàn
cầu GPS.
 Tất cả các ứng dụng có thể được tạo ra cho Android
Android không phân biệt giữa các ứng dụng lõi của điện thoại và các ứng
dụng của bên thứ ba. Họ tất cả có thể được xây dựng để có thể truy cập bằng khả
năng của một người cung cấp cho người sử dụng điện thoại với một dải rộng các
ứng dụng và dịch vụ. Với các thiết bị xây dựng trên hệ điều hành Android, người
dùng có thể hoàn toàn thích ứng với điện thoại đến lợi ích của họ. Họ có thể trao đổi
trên màn hình của điện thoại, những phong cách của dialog hoặc bất kỳ ứng dụng
nào. Họ thậm chí có thể hướng dẫn điện thoại của họ để sử dụng hình ảnh ưa thích
của họ xem các ứng dụng để xử lý xem tất cả các hình ảnh.
 Dễ dàng và nhanh chóng xây dựng ứng dụng
Android cung cấp bộ thư viện giao diện lập trình ứng dụng đồ sộ và các công
cụ để viết các ứng dụng phức tạp. Ví dụ Android có thể cho phép người phát triển
biết được vị trí của thiết bị và cho phép các thiết bị giao tiếp với nhau để có thể tạo
nên mạng xã hội chia sẻ ngang hàng rộng khắp thế giới. Thêm nữa, Android còn
bao gồm một bộ công cụ đầy đủ giúp cho việc phát triển trở nên dễ dàng.
 Dễ dàng và nhanh chóng xây dựng ứng dụng
Rất nhiều nhà phát triển hệ điều hành Android đã vào cuộc và các Rom cho
Android độc đáo được ra đời với nhiều tích năng nổi trội được tích hợp và đầy sáng
tạo. Danh sách các nhà phát triển Rom nổi bật:
-

Ahmgsk.
Amon_RA.
Benbuchacher.

BH_MAN.

GVHD: Th.s Nhữ Khải Hoàn

-

HTCClay.
eViL_D.
Domenukk.
OpenTeam.
SVTH: Nguyễn Khắc Huy


Đồ án tốt nghiệp

13

Khoa Điện – Điện Tử

Ngoài ra có hàng trăm nhà phát triển Rom đang ngày đêm làm việc cật lực để đưa ra
sản phẩm của chính mình.

1.1.3 So sánh giữa các hệ điều hành Smartphone
Bảng 1.1: So sánh giữa các hệ điều hành Smartphone.
Đặc điểm

ANDROID
- Tùy biến màn hình

IOS

- Tích hợp liền

và cập nhật thời
gian thực (real
-

time).
Hệ thống thông

mạch phần mềm

-

của nhiều ứng

tốt.
- Hỗ trợ tìm kiếm

safari.
Thống nhất về

doanh phổ biến có
trên Microsoft.
- Phù hợp với giao

dùng ngay cả

diện đồ họa người

khi nâng cấp lên


dùng (GUI) và

nhiều tài khoản.
Tích hợp với

nhiều API trên tất
cả các nền tảng di
động.
- Hiệu suất điện
năng tốt thông qua

mạng xã hội.
- Thích hợp với

bằng giọng nói.
- Chia sẻ nội dụng
-

ứng dụng kinh

email thông qua
-

time).
Tích hợp với các

qua trình duyệt

iOS 6.

- Hỗ trợ truy cập

dụng điều hướng.
- Tích hợp một vài
mạng xã hội rất

-

giao diện người

Google Maps là
tiêu chuẩn vàng

gian thực (real

trang web thông

thích khác.
- Chức năng xem

Ưu điểm

và cập nhật thời

và phần cứng.
- Hỗ trợ nhiều

báo nhanh.
- Chia sẻ mạng với
các thiết bị tương


WINDOWS PHONE
- Tùy biến màn hình

hệ điều hành đa
nền tảng.

nhiều API trên
nhiều nền tảng

bằng NFC.
Phù hợp với nhiều

khác.

API trên nhiều nền
Nhược

tảng.
- Tách rời hệ điều

điểm

hành và phần

khá lạc hậu,

cứng.

không sinh


GVHD: Th.s Nhữ Khải Hoàn

-

Màn hình chủ

-

Phần cứng phân
mảnh.

-

Cảm ứng màn hình

SVTH: Nguyễn Khắc Huy


Đồ án tốt nghiệp

-

-

14

Khoa Điện – Điện Tử

Tốn chi phí phát


động, lỗi tương

có trực quan kém

triển.

tác thời gian

hơn so với iOS và

Dễ phát sinh các

thực (khi nâng

Android.

vấn đề an ninh do

cấp lên iOS 6).

nguồn mở.
-

-

-

-


Không hỗ trợ

Tích hợp mạng xã
hội không tốt.

Đồng bộ hóa với

Flash, có một

PC kém.

vài trang web

lớn so với trước

Yêu cầu tài khoản

không xem

đó.

Google.
1.2 Kiến trúc hệ điều hành Android

-

Giao diện thay đổi

được.


Kiến trúc của hệ điều hành Android gồm 4 thành phần:
-

Lớp ứng dụng (Applications).
Lớp khung tổ chức ứng dụng (Applications Framework).
Lớp thư viện (Librabries – Runtime).
Lớp nhân Linux phiên bản 2.6 (Linux kernel).

Hình 1.1: Mô hình kiến trúc nền tảng Android.
1.2.1 Lớp ứng dụng
Đây là lớp ứng dụng giao tiếp với người dùng, bao gồm các ứng dụng như:
Các ứng dụng cơ bản được cài đặt đi liền với hệ điều hành như là gọi điện, quản lý
danh bạ, duyệt web, nhắn tin, lịch làm việc, Email, bản đồ, quay phim chụp ảnh

GVHD: Th.s Nhữ Khải Hoàn

SVTH: Nguyễn Khắc Huy


Đồ án tốt nghiệp

15

Khoa Điện – Điện Tử

(Camera)... Các ứng dụng được cài thêm như các phần mềm chứng khoán (Stock),
các trò chơi, từ điển, các ứng dụng của bên thứ ba…Các ứng dụng viết sẽ có những
đặc tính sau:
-


Viết bằng Java, phần mở rộng là .apk.
Khi mỗi ứng dụng được chạy, nó có một phiên bản Virtual Machine (máy ảo) được
dựng lên để phục vụ cho nó. Nó có thể là một Active Program chương trình có giao
diện với người sử dụng hoặc là một Background chương trình chạy nền hay là dịch

-

vụ.
Android là hệ điều hành đa nhiệm, điều đó có nghĩa là trong cùng một thời điểm, có
thể có nhiều chương trình cùng chạy một lúc, tuy nhiên với mỗi ứng dụng thì có
duy nhất một thực thể (instance) được phép chạy mà thôi. Điều đó có tác dụng hạn
chế sự lạm dụng tài nguyên, giúp hệ thống hoạt động tốt hơn. Các ứng dụng được

-

phân quyền và tự hệ thống sẽ hủy nếu mức ưu tiên thấp.
Các ứng dụng được gán số ID của người sử dụng nhằm phân định quyền hạn khi sử
dụng tài nguyên, cấu hình phần cứng và hệ thống.
Android là một hệ điều hành có tính mở, khác với nhiều hệ điều hành di động
khác, Android cho phép một ứng dụng của bên thứ ba được phép chạy nền. Các ứng
dụng đó chỉ có một hạn chế nhỏ đó là nó không được phép sử dụng quá 5 ÷ 10%
công suất CPU, điều đó nhằm để tránh độc quyền trong việc sử dụng CPU.
1.2.2 Lớp khung tổ chức ứng dụng
Ở lớp này các nhà phát triển ứng dụng có thể truy cập vào phần cứng thiết bị,
thông tin định vị vị trí, chạy các dịch vụ nền, đặt các cảnh báo, thông báo vào thanh
trạng thái,... và quan trọng nhất đó là các API của framework.
Phía duới tất cả các ứng dụng là một tập các dịch vụ của hệ thống bao gồm:
-

View Manage: Một tập hợp rất nhiều các View có khả năng kế thừa

lẫn nhau dùng để thiết kế phần giao diện ứng dụng như: Gridview,

-

tableview, linearlayout, relative layout, table layout,...
Activity Manager: Quản lý các chu kỳ sống của một ứng dụng cũng

-

như cung cấp công cụ điều khiển các Activity.
Telephony Manager: Cung cấp công cụ để thực hiện việc liên lạc
như gọi điện thoại.

GVHD: Th.s Nhữ Khải Hoàn

SVTH: Nguyễn Khắc Huy


Đồ án tốt nghiệp

16

Khoa Điện – Điện Tử

-

Location Manager: Cho phép xác định vị trí của điện thoại thoại dựa

-


vào hệ thống định vị toàn cầu GPS và Google Maps.
Window Manager: Quản lý việc xây dựng và hiển thị các giao diện
người dùng cũng như tổ chức quản lý các giao diện giữa các ứng

-

dụng.
Notication Manager: Quản lý việc hiển thị các thông báo (như báo

-

có tin nhắn, có Email mới,…).
Resource Manager: Quản lý tài nguyên tĩnh của các ứng dụng bao
gồm các tập tin hình ảnh, âm thanh, layout, string (những thành phần

-

không được viết bởi ngôn ngữ lập trình).
Content Provider: Cho phép các ứng dụng có thể truy xuất dữ liệu từ
các ứng dụng khác (chẳng hạn như Contacts) hoặc là chia sẻ dữ liệu
giữa các ứng dụng đó.

1.2.3 Lớp thư viện
1.2.3.1 Library
Thành phần này có nhiều thư viện được viết bằng C/C++ để các phần mềm có
thể sử dụng, các thư viện đó được tập hợp thành một số nhóm như:
-

Thư viện hệ thống (System c Library)(Libc): Thư viện dựa trên chuẩn C, được


sử dụng chỉ bởi hệ điều hành.
-

Thư viện Media (Media Librarles): Có nhiều code C để hỗ trợ việc phát và ghi

các loại định dạng âm thanh, hình ảnh, video thông dụng.
-

Thư viện Web (LibWebCore): Đây là thành phần để xem nội dung trên Web,

được sử dụng để xây dựng phần mềm duyệt Web (Android Browse) cũng như để
các ứng dụng khác có thể nhúng vào. Nó cực kỳ mạnh, hỗ trợ được nhiều công nghệ
mạnh mẽ như HTML5, JavaScript, CSS, DOM, AJAX.
-

Surface Manage: Quản lý hiển thị 2D và 3D.

-

SGL: Công nghệ 2D.

-

SQLite: Quản lý database của ứng dụng.

-

Free Type: Dùng cho hiển thị hình ảnh, font.

-


SSL(Secure Socket Layer): Tầng thiết lập giao dịch an toàn trên 2 ứng dụng

trên một cổng (socket).
GVHD: Th.s Nhữ Khải Hoàn

SVTH: Nguyễn Khắc Huy


Đồ án tốt nghiệp

-

17

Khoa Điện – Điện Tử

Open GL/EL: Hỗ trợ thư viện tùy chọn 3D tĩnh và động.

1.2.3.2 Android runtime
Phần này chứa các thư viện mà một chương trình viết bằng ngôn ngữ Java có
thể hoạt động. Phần này gồm có 2 bộ phận tương tự như mô hình chạy Java trên
máy tính thông thường. Thứ nhất là các thư viện lõi (Core Library), chứa các lớp
như JAVA 10, Collections, File Access. Thứ hai là một máy ảo Java (Dalvik Virtual
Machine).
Mặc dù cũng được viết từ ngôn ngữ Java nhưng một ứng dụng Java của hệ
điều hành Android không được chạy bằng JRE (Java Runtime Environment) của
Sun (nay là Oracle) (JVM) mà chạy bằng máy ảo Dalvik (máy ảo Dalvik được đặt
tên sau khi một nhà phát triển phần mềm của Google tạo ra nó sau chuyến đi thăm
một ngôi làng ở nơi tổ tiên ông sinh sống), do Google phát triển. Máy ảo Davik

thực thi các tập tin davik (dex), khác với java là chuyển sang dạng bytecode. Định
dạng này được tối ưu hóa cho bộ nhớ tối thiểu.
1.2.4 Lớp nhân Linux phiên bản 2.6
Android sử dụng nhân Linux 2.6 làm nhân cho các dịch vụ hệ thống như bảo
mật, quản lý bộ nhớ, quản lý tiến trình (xử lý tiến trình, đa luồng,..), ngăn xếp mạng
và trình điều khiển thiết bị (giao tiếp USB, giao tiếp hồng ngoại, không dây,…).
Nhân Linux này cũng có vai trò như một lớp trừu tượng giữa phần cứng và phần
mềm.
Tất cả mọi hoạt động của điện thoại muốn thi hành được thì đều được thực
hiện ở mức cấp thấp ở lớp này bao gồm quản lý bộ nhớ (Memory management), giao
tiếp với phần cứng (Driver model), thực hiện bảo mật (Security), quản lý tiến trình
(Process).
Tuy được phát triển dựa vào nhân Linux nhưng thực ra nhân Linux đã được
nâng cấp và sửa đổi rất nhiều để phù hợp với tính chất của những thiết bị cầm tay
như hạn chế về bộ vi xử lý, dung lượng bộ nhớ, kích thước màn hình, nhu cầu kết
nối mạng không dây,…


Các thành phần của nhân Linux:

GVHD: Th.s Nhữ Khải Hoàn

SVTH: Nguyễn Khắc Huy


Đồ án tốt nghiệp

-

18


Khoa Điện – Điện Tử

Display Driver: Điều khiển việc hiển thị lên màn hình cũng như thu nhận những
điều khiển của người dùng lên màn hình (di chuyển, cảm ứng, ...).

-

Camera Driver: Điều khiển hoạt động của camera, nhận luồng dữ liệu từ camera
trả về.

-

Bluetooth Driver: Điều khiển thiết bị phát và thu sóng Bluetooth.

-

USB driver: Quản lý hoạt động của các cổng giao tiếp USB.

-

Keypad driver: Điều khiển bàn phím.

-

Wifi Driver: Chịu trách nhiệm về việc thu phát sóng Wifi.

-

Audio Driver: Điều khiển các bộ thu phát âm thanh, giải mã các tính hiệu dạng

audio thành tín hiệu số và ngược lại.

-

Power Madagement: Giám sát việc tiêu thụ điện năng.

-

M-System Driver: Quản lý việc đọc ghi lên các thiết bị nhớ như thẻ SD, Flash.

-

Binder IPC Driver: Chịu trách nhiệm về việc kết nối và liên lạc với mạng vô tuyến
như CDMA, GSM, 3G, 4G, E để đảm bảo những chức năng truyền thông được thực
hiện.
1.3 Các thành phần của ứng dụng Android
Một ứng dụng trên Android được cấu thành từ các thành phần cơ bản sau:
 Activities (hoạt động).
 Services (dịch vụ).
 Broadcast Receivers (nhận quảng bá).
 Intent.
 Content Provider.
 Notification.
Các thành phần này không nhất thiết phải có mặt đầy đủ trong ứng dụng.
Chúng ta có thể xem các thành phần nào được sử dụng trong ứng dụng bằng việc
xem khai báo trong file AndroidManifest.xml.
1.3.1 Activity
1.3.1.1 Khái niệm Activity

GVHD: Th.s Nhữ Khải Hoàn


SVTH: Nguyễn Khắc Huy


Đồ án tốt nghiệp

19

Khoa Điện – Điện Tử

Một Activity là một giao diện đồ họa trực quan mà người dùng có thể thực
hiện trên đó mỗi khi được kích hoạt. Một ứng dụng có thể có nhiều Activity và
chúng có thể gọi qua lại lẫn nhau. Mỗi Activity là một dẫn xuất của lớp
Android.app.activity.
Một ứng dụng gọi điện thoại có thể gồm các hoạt động như hiển thị một danh
sách các liên hệ để gọi tới, hoạt động thứ hai là gọi tới số điện thoại liên hệ được
chọn, ngoài ra còn có các hoạt động khác nữa như xem nhật ký cuộc gọi hay thay
đổi cài đặt. Mặc dù, chúng làm việc cùng nhau để tạo thành một giao diện người
dùng nhưng mỗi Activity độc lập với những cái khác. Mỗi Activity là một lớp con
của lớp cơ sở Activity.
Một ứng dụng có thể gồm chỉ một Activity hay nhiều Activity tùy theo yêu
cầu của mỗi ứng dụng. Thông thường, một trong số các Activity được đánh dấu là
Activity đầu tiên phải được chạy đầu tiên khi ứng dụng được khởi động. Để chuyển
từ một Activity hiện tại sang Activity khác bằng cách cho Activity hiện tại khởi
động Activity kế tiếp.
Mỗi Activity được đưa ra một cửa sổ mặc định để vẽ vào. Thông thường, cửa
sổ này sẽ lấp đầy màn hình, nhưng ta có thể tùy chọn để nó nhỏ hơn màn hình và
nằm trên các cửa sổ khác. Ngoài ra nó cũng có thể có thêm các cửa sổ con khác như
là hộp thoại,… Nội dung của cửa sổ của hoạt động được cung cấp bởi một hệ thống
cấp bậc các View (là đối tượng của lớp Views).

Android có một số View đã xây dựng sẵn mà người dùng có thể sử dụng. Gồm
có các: Buttons, text fields, scroll bars, menu items, check box, image view, image
view button, video view,... Một cây phân cấp View được đặt trong một cửa sổ của
Activity bằng phương thức Activity.setContentView(). ContentView là đối tượng
View ở gốc của cây phân cấp.
1.3.1.2 Vòng đời của Activity
Các Activity trong hệ thống được quản lý bởi một cấu trúc dữ liệu ngăn xếp.
Khi có một hoạt động được khởi tạo nó được đẩy vào trong ngăn xếp, chuyển sang
trạng thái thực thi và hoạt trộng trước đó sẽ chuyển sang trạng thái chờ. Hoạt động

GVHD: Th.s Nhữ Khải Hoàn

SVTH: Nguyễn Khắc Huy


Đồ án tốt nghiệp

20

Khoa Điện – Điện Tử

này chỉ trở lại trạng thái kích hoạt khi mà hoạt động vừa khởi tạo kết thúc việc thực
thi.
 Một Activity có 3 trạng thái chính:
-

Active hoặc running: Khi nó ở trên nhất màn hình và nhận tương tác với người
dùng.

-


Paused: Khi Activity không còn là trọng tâm trên màn hình nhưng vẫn hiện thị
trước người dùng.

-

Stopped: Khi một Activity hoàn toàn bị che khuất, nó sẽ rơi vào trạng thái Stopped.
Tuy nhiên, nó vẫn còn lưu trữ toàn bộ thông tin trạng thái và nó thường bị hệ thống
đóng lại khi có tình trạng thiếu bộ nhớ.
Khi chuyển giữa các trạng thái, ứng dụng sẽ gọi các hàm callback ứng với các
bước chuyển:

-

OnCreate(): Được gọi khi hoạt động được tạo ra lần đầu tiên.
OnStart(): Được gọi khi hoạt động trở nên hữu hình so với người dùng.
OnResume(): Được gọi khi hoạt động bắt đầu tương tác với người sử dụng.
OnPause(): Được gọi để dừng các hoạt động hiện tại và nối lại các hoạt động trước

-

đó.
OnStop(): Được gọi khi hoạt động không còn hiển thị với người dùng.
OnDestroy(): Được gọi trước khi hoạt động bị phá hủy bởi hệ thống (bằng tay hoặc

-

bằng hệ thống để bảo tồn bộ nhớ).
OnRestart(): Được gọi khi hệ thống đã được dừng lại và khởi động lại một lần nữa.
Lưu đồ hình 1.2 mô tả trạng thái trong vòng đời của một Activity. Hình chữ

nhật thể hiện các phương thức Callback mà chúng ta có thể khai báo để gọi thực thi
một số thao tác khi hoạt động chuyển sang trạng thái khác (phương thức Callback là
phương thức được gọi lại bởi một phương thức khác khi có một sự kiện xảy ra). Các
trạng thái chính của một hoạt động được thể hiện bởi các hình viên thuốc.
Vòng đời của một Activity có thể được thể hiện trong những quá trình sau:

GVHD: Th.s Nhữ Khải Hoàn

SVTH: Nguyễn Khắc Huy


Đồ án tốt nghiệp

21

Khoa Điện – Điện Tử

Hình 1.2: Vòng đời của một Activity.
Toàn bộ thời gian sống của một Activity bắt đầu từ lời gọi đầu tiên tới phương
thức onCreate() cho tới lời gọi phương thức onDestroy(). Trong quá trình này, một
Activity sẽ khởi tạo lại tất cả các tài nguyên cần sử dụng trong phương thức
onCreate() và giải phóng chúng khi phương thức onDestroy() được thực thi.
Thời gian sống có thể nhìn thấy của một Activity bắt đầu từ lời gọi tới phương
thức onStart() cho tới khi phương thức onStop() của nó được thực thi. Toàn bộ các
tài nguyên đang được sử dụng bởi Activity vẫn tiếp tục được lưu giữ, người dùng có

GVHD: Th.s Nhữ Khải Hoàn

SVTH: Nguyễn Khắc Huy



Đồ án tốt nghiệp

22

Khoa Điện – Điện Tử

thể thấy giao diện nhưng không tương tác được với hoạt động do trong qua trình
này Activity không ở trạng thái chạy tiền cảnh.
Thời gian sống tiền cảnh của một Activity là quá trình bắt đầu từ khi có lời gọi
tới phương thức onResume() và kết thúc bằng lời gọi tới phương thức onPause().
Trong thời gian này, hoạt động chạy ở tiền cảnh và có thể tương tác với người dùng.
1.3.2 Service
1.3.2.1 Khái niệm Service
Một Service (dịch vụ) là các đoạn mã được thực thi ngầm bởi hệ thống mà
người sử dụng không thấy được. Service sử dụng để cập nhật dữ liệu, đưa ra các
cảnh báo. Mỗi Service đều được mở rộng từ lớp cơ sở là Service trong gói
Android.app.service. Có thể kết nối tới hoặc kích hoạt một Service thông qua
Interface mà Service đưa ra.
Ví dụ như một chương trình phát nhạc trên điện thoại, sẽ có vài hoạt động cho
phép người dùng duyệt danh sách các bài hát và lựa chọn bài hát nào để phát. Tuy
nhiên, chức năng phát nhạc không được thiết kế như một Activity bởi chúng ta sẽ
muốn chuyển qua cửa sổ khác, như khi soạn tin nhắn thì bài hát vẫn tiếp tục được
phát. Trong trường hợp này, ứng dụng phát nhạc sẽ khởi tạo một dịch vụ bằng cách
sử dụng phương thức Context.startservice().
Một ứng dụng có thể dễ dàng thực hiện liên kết tới một Service đang chạy
(thậm chí khởi động nếu nó chưa thực thi) bằng phương thức Context.bindservice().
Khi đó Service này sẽ cung cấp cho ứng dụng cơ chế để giao tiếp với chúng thông
qua giao diện gọi là IBinder (đối với dịch vụ phát nhạc có thể cho phép dừng hoặc
chuyển qua bài nhạc kế tiếp).

1.3.2.2 Vòng đời của một Service
Vòng đời của một Service được hiểu là quá trình hoạt động từ khi nó được tạo
ra cho tới khi bị loại khỏi hệ thống.
 Có hai cách thức để một dịch vụ có thể được chạy trong hệ thống:


Khi hệ thống có lời gọi tới phương thức Context.startService(). Trong trường hợp
này, dịch vụ sẽ được thực hiện liên tục cho tới khi hệ thống gọi phương thức

GVHD: Th.s Nhữ Khải Hoàn

SVTH: Nguyễn Khắc Huy


Đồ án tốt nghiệp

23

Khoa Điện – Điện Tử

Context.stopService().
– Khi các ứng dụng gọi phương thức Context.bindService() để tạo kết nối với dịch vụ
(dịch vụ sẽ được khởi tạo nếu tại thời điểm đó nó đang không hoạt động). Ứng dụng
sẽ nhận được một đối tượng IBinder do dịch vụ trả lại để có thể gọi các phương
thức Callback phù hợp để truy cập tới các trạng thái của dịch vụ. Nếu do lời gọi
Context.bindService() mà dịch vụ được khởi tạo thì nó sẽ được thực thi cho tới khi
nào kết nối trên (tức là đối tượng IBinder) vẫn còn tồn tại.
Hình 1.3 cho ta thấy được hai phương thức để một dịch vụ có thể được khởi
chạy trong hệ thống.…………………………………………………... …………….


GVHD: Th.s Nhữ Khải Hoàn

SVTH: Nguyễn Khắc Huy


Đồ án tốt nghiệp

24

Khoa Điện – Điện Tử

Hình 1.3: Sơ đồ chuyển đổi trạng thái của Service.
1.3.3 Inten
Intent là nền tảng để truyền tải các thông báo. Intent được sử dụng để gửi các
thông báo đi nhằm khởi tạo một Activity hay Service để thực hiện công việc bạn
mong muốn. Ví dụ, khi mở một trang Web bạn gửi một Intent đi để tạo một Activity
mới hiển thị trang Web đó.
Intent là một cấu trúc dữ liệu mô tả cách thức, đối tượng thực hiện của một
Activity, là cầu nối giữa các Activity với nhau. Ứng dụng Android thường bao gồm
nhiều Activity, mỗi Activity hoạt động độc lập với nhau và thực hiện những công
GVHD: Th.s Nhữ Khải Hoàn

SVTH: Nguyễn Khắc Huy


Đồ án tốt nghiệp

25

Khoa Điện – Điện Tử


việc khác nhau. Intent chính là người đưa thư, giúp các Activity có thể triệu gọi
cũng như truyền các dữ liệu cần thiết tới một Activity khác. Điều này cũng giống
như việc di chuyển qua lại giữa các Forms trong lập trình Windows Form.

Hình 1.4: Chức năng của Intent.
Content provider được kích hoạt khi chúng được gọi từ một ContentResolver.
Ba thành phần khác (Activity, service và Broadcast Rreceiver) được kích hoạt bởi
thông điệp không đồng bộ từ các Intent. Một Intent là một đối tượng có kiểu Intent
chứa nội dung của thông điệp. Với các hoạt động và dịch vụ, nó gọi tên hành động
được yêu cầu và xác định URI của dữ liệu tác động tới ở giữa. Ví dụ, nó có thể
truyền tải một yêu cầu cho một hoạt động hiển thị một hình ảnh cho người dùng hay
cho phép người dùng sửa văn bản. Với bộ nhận quảng bá, đối tượng Intent gọi tên
của hành động được thông báo. Ví dụ, bộ nhận quảng bá có thể thông báo các phần
nó quan tâm là nút chụp ảnh đã được bấm hay chưa.
 Có vài phương thức cho việc kích hoạt mỗi thành phần:
Một hoạt động được khởi động thông qua một đối tượng Intent
Context.startActivity() hay Activity.startActivityForResult(). Hoạt động đáp lại có
thể theo dõi Intent được tạo ra đó bằng phương thức getIntent() và cập nhật thông
qua phương thức setIntent(Intent). Android gọi phương thức onNewIntent() để bỏ
qua các Intent đến trước nó.
Một Activity (hoạt động) thường bắt đầu bằng một Activity khác. Nếu nó
muốn trả lại kết quả của một Activity (hoạt động) nó đã khởi chạy, nó sẽ gọi
phương thức startActivityForResult() thay cho phương thức startActivity(). Ví dụ,
GVHD: Th.s Nhữ Khải Hoàn

SVTH: Nguyễn Khắc Huy



×