Đồ á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
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.
–
- 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ử
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
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
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ó.
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.
- 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
- 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
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
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.
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
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
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
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
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).
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ữ
Đồ á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).
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ử