Download as pdf or txt
Download as pdf or txt
You are on page 1of 117

BỘ GIÁO DỤC & ĐÀO TẠO

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH


KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
---------------------------------

ĐỒ ÁN TỐT NGHIỆP
NGÀNH KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG
ĐỀ TÀI:

HỆ THỐNG ỨNG DỤNG WEAR OS

TRONG VIỆC HỖ TRỢ NGƯỜI GIÀ

GVHD: ThS. Nguyễn Văn Hiệp


SVTH 1: Trần Văn Ba
MSSV: 14141013
SVTH 2: Nguyễn Lê Trung Hiếu
MSSV: 14141100

Tp. Hồ Chí Minh – 06/2018


i
TRƯỜNG ĐH SPKT TP. HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
KHOA ĐIỆN-ĐIỆN TỬ ĐỘC LẬP - TỰ DO - HẠNH PHÚC
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ----o0o----

Tp. HCM, ngày 29 tháng 6 năm 2018

NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP


Họ tên sinh viên: Trần Văn Ba MSSV: 14141013
Nguyễn Lê Trung Hiếu MSSV: 14141100
Chuyên ngành: Điện tử công nghiệp Mã ngành: 141
Hệ đào tạo: Đại học chính quy Mã hệ: 1
Khóa: 2014 Lớp: 14141DT3B

I. TÊN ĐỀ TÀI: HỆ THỐNG ỨNG DỤNG WEAR OS TRONG VIỆC HỖ TRỢ


NGƯỜI GIÀ

II. NHIỆM VỤ

1. Các số liệu ban đầu:


- Sử dụng một Asus ZenWatch 2.
- Sử dụng một điện thoại hệ điều hành Android.
- Sử dụng một Module wifi ESP8266 NodeMCU Mini D1.
- Sử dụng một Module Relay.
2. Nội dung thực hiện:
- Tìm hiểu về firebase để cập nhật dữ liệu điều khiển, cũng như chia sẻ quyền điều khiển
cho các thiết bị.
- Tìm hiểu thiết kế giao diện cho ứng dụng chạy trên các thiết bị android.
- Tìm hiểu cách điều khiển module ESP8266 NodeMCU Mini D1 thông qua firebase.
- Thi công được mô hình.
- Cân chỉnh, hoàn thiện được mô hình.
- Đánh giá kết quả thực hiện.
III. NGÀY GIAO NHIỆM VỤ: 20/03/2018
IV. NGÀY HOÀN THÀNH NHIỆM VỤ: 27/06/2018
V. HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: ThS. Nguyễn Văn Hiệp

CÁN BỘ HƯỚNG DẪN BM. ĐIỆN TỬ CÔNG NGHIỆP – Y SINH

ii
TRƯỜNG ĐH SPKT TP. HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
KHOA ĐIỆN-ĐIỆN TỬ ĐỘC LẬP - TỰ DO - HẠNH PHÚC
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ----o0o----
Tp. HCM, ngày 27 tháng 03 năm 2018

LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP

Họ tên sinh viên 1: Trần Văn Ba


Lớp:14141DT3B MSSV:14141013
Họ tên sinh viên 2: Nguyễn Lê Trung Hiếu
Lớp:14141DT3B MSSV:14141100
Tên đề tài: HỆ THỐNG ỨNG DỤNG WEAR OS TRONG VIỆC HỖ TRỢ NGƯỜI GIÀ

Xác nhận
Tuần/ngày Nội dung
GVHD
1-2/ 20-03 đến Gặp GVHD trao đổi và xác nhận đề tài
27-03
2-3/ 27-03 đến Hoàn thành đề cương
03-04
3-4/ 03-04 đến Liên kết firebase để điều khiển qua điện thoại
17-04 thông minh và đồng hồ thông minh.

4-6/ 17-04 đến Kết nối module esp và module relay, để điều
02-05 khiển đèn và chuông, thông qua điện thoại và
đồng hồ thông minh.

6-10/ 02-05 Viết ứng dụng khẩn cấp.


đến 30-05
10-12/ 30-05 Hoàn thành và chạy thử nghiệm hệ thống.
đến 13-06
12-14/ 13-06 Hoàn thiện hệ thống và báo cáo đồ án tốt
đến 27-06 nghiệp.

GV HƯỚNG DẪN
(Ký và ghi rõ họ và tên)

iii
LỜI CAM ĐOAN

Đề tài này là do nhóm tôi tự thực hiện dựa vào một số tài liệu trước đó và không sao
chép từ tài liệu hay công trình đã có trước đó.

Những người thực hiện đề tài


Trần Văn Ba Nguyễn Lê Trung Hiếu

iv
LỜI CẢM ƠN

Em xin gởi lời cảm ơn sâu sắc đến Thầy Nguyễn Văn Hiệp _ Giảng viên bộ môn
Điện tử công nghiệp – y sinh đã trực tiếp hướng dẫn và tận tình giúp đỡ tạo điều kiện để
hoàn thành tốt đề tài.
Chúng em xin gởi lời chân thành cảm ơn các thầy cô trong Khoa Điện-Điện Tử đã
tạo những điều kiện tốt nhất cho chúng em hoàn thành đề tài.
Chúng mình cũng gửi lời đồng cảm ơn đến các bạn lớp 14141DT3B đã chia sẻ
trao đổi kiến thức cũng như những kinh nghiệm quý báu trong thời gian thực hiện đề tài.
Cảm ơn đến cha mẹ, là chỗ dựa tinh thần vững chắc cho chúng con, luôn an ủi và
động viên những lúc chúng con khó khăn nhất trong suốt những năm tháng học hành.
Xin chân thành cảm ơn!

Những người thực hiện đề tài


Trần Văn Ba Nguyễn Lê Trung Hiếu

v
MỤC LỤC

Trang bìa ........................................................................................................................ i


Nhiệm vụ đồ án ............................................................................................................. ii
Lịch trình ..................................................................................................................... iii
Cam đoan .................................................................................................................... iv
Lời cảm ơn .................................................................................................................... v
Mục lục ........................................................................................................................ vi
Liệt kê hình vẽ ........................................................................................................... viii
Liệt kê bảng ................................................................................................................. xi
Tóm tắt ....................................................................................................................... xii

CHƯƠNG 1. TỔNG QUAN ............................................................................ 1


1.1. Đặt vấn đề .......................................................................................................... 1
1.2. Mục tiêu ............................................................................................................. 2
1.3. Nội dung nghiên cứu .......................................................................................... 2
1.4. Giới hạn .............................................................................................................. 2
1.5. Bố cục ................................................................................................................ 3

CHƯƠNG 2. CƠ SỞ LÝ THUYẾT ................................................................ 4


2.1 Người cao tuổi .................................................................................................... 4
2.2 Lịch sử hệ điều hành Android ............................................................................ 4
2.3 Giới thiệu về Wear OS ....................................................................................... 6
2.4 Giới thiệu về Wifi ............................................................................................... 8
2.5 Giới thiệu về Bluetooth .................................................................................... 11
2.6 Giới thiệu về Google Firebase .......................................................................... 13

CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ. ................................................ 18

3.1 Giới thiệu .......................................................................................................... 18


3.1.1 Thực trạng nhu cầu ........................................................................................ 18
3.1.2 Bài toán đặt ra ................................................................................................ 18
3.2 Tính toán thiết kế mạch..................................................................................... 18
3.2.1 Thiết kế trên đồng hồ ..................................................................................... 19
3.2.2 Thiết kế trên điện thoại .................................................................................. 20

vi
3.2.3 Thiết kế mạch điều khiển đèn, chuông .......................................................... 22
a/ Vi điều khiển ....................................................................................................... 22
b/ Module 4 Relay 5V ............................................................................................. 24
c/ Nguồn nuôi mạch điều khiển .............................................................................. 25
d/ Các thiết bị khác.................................................................................................. 26

CHƯƠNG 4. THI CÔNG HỆ THỐNG ...................................................... 28


4.1 Giới thiệu. .......................................................................................................... 28
4.2 Xây dựng ứng dụng điều khiển đèn, chuông trên smartwatch ........................... 28
4.2.1 Giới thiệu phần mềm Android Studio ............................................................. 28
4.2.2 Lưu đồ và lập trình ứng dụng .......................................................................... 42
4.3 Xây dựng ứng dụng khẩn cấp SOS trên điện thoại ............................................ 48
4.4 Thi công mạch điều khiển đèn, chuông .............................................................. 59
4.5 Hướng dẫn sử dụng thao tác ............................................................................... 74

CHƯƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ ................................. 80


5.1 Kết quả. .............................................................................................................. 80
5.2 Nhận xét và đánh giá .......................................................................................... 85

CHƯƠNG 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN. ........................... 87


6.1 Kết luận . ............................................................................................................. 87
6.2 Hướng phát triển ................................................................................................. 87

TÀI LIỆU THAM KHẢO .................................................................................. xiii

PHU LỤC .......................................................................................................... xv

vii
LIỆT KÊ HÌNH VẼ
Hình Trang

Hình 2.1: Các phiên bản của hệ điều hành Android ..................................................... 6

Hình 2.2: Thiết bị sử dụng Wear OS............................................................................. 7

Hình 2.3: Hệ thống các thiết bị kết nối wifi .................................................................. 8

Hình 2.4: Hình ảnh ký hiệu của Bluetooth .................................................................... 11

Hình 2.5: Thông số của các loại Bluetooth ................................................................... 12

Hình 2.6: Các ứng dụng của Google Firebase .............................................................. 14

Hình 3.1: Sơ đồ khối tổng quát hệ thống ...................................................................... 19

Hình 3.2: Thiết kế ứng dụng trên đồng hồ .................................................................... 20

Hình 3.3: Giao diện bắt đầu ứng dụng điện thoại ......................................................... 21

Hình 3.4: Giao diện ứng dụng điện thoại khởi chạy thành công .................................. 21

Hình 3.5: Module ESP8266 .......................................................................................... 23

Hình 3.6: Module 4 Relay ............................................................................................. 24

Hình 3.7: Adapter 5V/2A .............................................................................................. 25

Hình 3.8: Đèn led 5W/220VAC - Đèn led 9W/220VAC ............................................. 26

Hình 3.9: Chuông điện 220VAC ................................................................................... 27

Hình 3.10: Sơ đồ kết nối các khối ................................................................................. 27


Hình 4.1: Phần mềm Android Studio. .......................................................................... 28

Hình 4.2: Tải phần mềm Android Studio. .................................................................... 30

Hình 4.3: Tiến hành quá trình cài đặt phần mềm Android Studio. .............................. 30

Hình 4.4: Kết thúc quá trình cài đặt phần mềm Android Studio. ................................ 31

Hình 4.5: Cửa sổ “Welcome to Android Studio”. ........................................................ 32

Hình 4.6: Màn hình Create Android Project. ............................................................... 33

Hình 4.7: Màn hình Target Android Devices. ............................................................. 33

viii
Hình 4.8: Màn hình Add an Activity to Wear. ............................................................. 34

Hình 4.9: Màn hình Configure Activity. ...................................................................... 35

Hình 4.10: Màn hình thẻ MainActivity.java. ............................................................... 35

Hình 4.11: Màn hình thẻ AndroidManifest.xml. ....................................................... 36

Hình 4.12: Màn hình thẻ app........................................................................................ 36

Hình 4.13: Màn hình thẻ con Design. .......................................................................... 37

Hình 4.14: Màn hình thẻ con Text. .............................................................................. 37

Hình 4.15: Giao diện hiển thị của Firebase. ................................................................. 38

Hình 4.16: Cửa sổ Add a project. ................................................................................. 39

Hình 4.17: Điền thông tin package của ứng dụng. ....................................................... 39

Hình 4.18: Tải tập tin google-services.json. ................................................................ 40

Hình 4.19: Các dòng lệnh cần thiết. ............................................................................. 41

Hình 4.20: Cửa sổ Security rules for Realtime Database. ........................................... 41

Hình 4.21: Giao diện làm việc Database. ..................................................................... 42

Hình 4.22: Lưu đồ ứng dụng khi được khởi động. ...................................................... 43

Hình 4.23: Giao diện của ứng dụng. ............................................................................ 47

Hình 4.24: Giao diện nhập số điện thoại khẩn cấp. ..................................................... 49

Hình 4.25: Giao diện xác nhận số điện thoại khẩn cấp. ............................................... 50

Hình 4.26: Giao diện thông báo SOS đang hoạt động. ................................................ 51

Hình 4.27: Lưu đồ startActivity.java. .......................................................................... 52

Hình 4.28: Lưu đồ MainActivity.java. ......................................................................... 53

Hình 4.29: Lưu đồ xử lý trong handler. ....................................................................... 54

Hình 4.30: Lưu đồ hoạt động của chương trình gửi tin nhắn....................................... 55

Hình 4.31: Lưu đồ khởi tạo số điện thoại khẩn cấp. .................................................... 56

Hình 4.32: Lưu đồ hoạt động của chương trình vị trí .................................................. 57

Hình 4.33: Thiết kế bản vẽ PCB và sau khi thi công. .................................................. 58

ix
Hình 4.34: Mạch điều khiển hoàn chỉnh. ..................................................................... 60

Hình 4.35: Cửa sổ lập trình của Arduino. .................................................................... 62

Hình 4.36: Cửa sổ tính hành cài đặt Driver Arduino. .................................................. 63

Hình 4.37: Cửa sổ hoàn thành quá trình cài đặt Driver Arduino. ................................ 64

Hình 4.38: Thêm thư viện cho Arduino. ...................................................................... 64

Hình 4.39: Cửa sổ Library Manager. ........................................................................... 65

Hình 4.40: Lưu đồ điều khiển của vi điều khiển. ......................................................... 65

Hình 4.41: Lưu đồ xử lý hàm void setup()................................................................... 67

Hình 4.42: Giao diện Database. ................................................................................... 69

Hình 4.43: Lấy authCode của Firebase. ....................................................................... 69

Hình 4.44: Lưu đồ hàm voidloop(). ............................................................................. 71

Hình 4.45: Giao diện firebase thực tế ........................................................................... 74


Hình 4.46: Màn hình đầu tiên của ứng dụng. ............................................................... 75

Hình 4.47: Màn hình thứ hai của ứng dụng. ................................................................ 75

Hình 4.48: Màn hình của ứng dụng trên đồng hồ. ....................................................... 76

Hình 4.49: Giao diện Firebase. .................................................................................... 77

Hình 4.50: Cửa sổ đăng nhập tài khoản Google. ......................................................... 78

Hình 4.51: Giao diện của project trên Firebase. .......................................................... 78

Hình 4.52: Giao diện làm việc của Database. .............................................................. 79

Hình 5.1: Hình ảnh thực tế đồng hồ .............................................................................. 81

Hình 5.2: Giao diện khi gửi tin nhắn, nội dung tin nhắn .............................................. 81

Hình 5.3: Cuộc gọi tự tạo .............................................................................................. 82

Hình 5.4: Điều khiển khi chưa cấp nguồn phần cứng ................................................... 82

Hình 5.5: Điều khiển khi đã cấp nguồn phần cứng ....................................................... 83

Hình 5.6: Thiết bị khi tắt ............................................................................................... 84

Hình 5.7: Thiết bị khi bật .............................................................................................. 84

x
LIỆT KÊ BẢNG

Bảng Trang
Bảng 2.1: Phạm vi truyền của các loại Bluetooth ........................................................... 12
Bảng 3.1: Dòng tiêu thụ các thiết bị ................................................................................ 25
Bảng 4.1: Danh sách các linh kiện được sử dụng ........................................................... 59

xi
TÓM TẮT

Hiện nay, việc quan tâm sức khỏe cũng như hỗ trợ người cao tuổi đang là một
vấn đề đang được quan tâm rất nhiều trong cuộc sống. Việc sử dụng những công cụ
hỗ trợ người già cũng là một khía cạnh đang được phát triển mạnh, nắm bắt được
những công cụ hỗ trợ sẵn, nhóm chúng tôi sử dụng đồng hồ thông minh và thiết bị
di động cá nhân để hỗ trợ tối ưu nhất cho những vấn đề thiết yếu cho người già. Đề
tài mang tên: HỆ THỐNG ỨNG DỤNG WEAR OS TRONG VIỆC HỖ
TRỢ NGƯỜI GIÀ.

Đề tài sử dụng thiết bị đồng hồ thông minh, điện thoại thông minh, website có
kết nối mạng để điều khiển những thiết bị thiết yếu như đèn, chuông báo thông qua
Esp8266 ở bất cứ đâu, bất cứ lúc nào. Điều khiển các thiết bị chiếu sáng như bật tắt
đèn nhà tắm, đèn phòng ngủ, đèn hành lang; bật tắt chuông báo động khi có vấn đề
quan trọng, thiết lập một cuộc gọi tới số khẩn cấp, gửi tin nhắn khẩn cấp và địa điểm
hiện tại tới số khẩn cấp.

xii
CHƯƠNG 1. TỔNG QUAN

Chương 1. TỔNG QUAN

1.1. ĐẶT VẤN ĐỀ


Cùng với sự phát triển của xã hội, cuộc sống ngày càng được nâng cao thì
việc áp dụng công nghệ khoa học kỹ thuật vào đời sống, công việc ngày càng cần
thiết. Với sự phát triển của các ngành khoa học kỹ thuật, công nghệ kỹ thuật điện tử
mà trong đó đặc biệt là kỹ thuật điều khiển tự động đóng vai trò quan trọng trong
mọi lĩnh vực khoa học kỹ thuật, quản lý, công nghiêp, nông nghiệp, đời sống, quản
lý thông tin,...
Đối với mỗi người, sức khỏe là một tài sản vô giá, không có sức khỏe chúng ta
không thể làm được bất kì thứ gì. Nếu bị bệnh tật, sức khỏe yếu ớt, thiếu sức khỏe
không thể tự chăm sóc cho bản thân, mà phải nhờ vả dựa dẫm vào người khác,…
Nước ta đang có tốc độ già hóa dân số rất nhanh, tỉ lệ người cao tuổi ở chiếm
khoảng 10,9% dân số cả nước(theo số liệu từ website danso.org) . Sức khỏe chính là
thứ mà người cao tuổi cần nhất, tâm lý ở người cao tuổi là họ muốn được mạnh
khỏe như mọi người khác, cuộc sống vui vẻ về già, tự bản thân có thể làm mọi việc
hằng ngày mà không cần đến sự hỗ trợ của người khác. Họ không muốn trở thành
gánh nặng đối với con cái, họ chỉ cần người khác giúp đỡ khi họ thật sự gặp vấn đề
về sức khỏe của bản thân, ngoài ra bản thân người cao tuổi và gia đình họ cũng
muốn quan sát, theo dõi sức khỏe hằng ngày, để có biện pháp duy trì và cải thiện
sức khỏe hoặc dự đoán, xử lý các vấn đề bất ngờ về sức khỏe xảy ra.
Trên cở sở và yêu cầu từ thực tế, những đòi hỏi ngày càng cao của việc hỗ trợ
và theo dõi sức khỏe người già, cộng với sự phát triển mạnh của khoa học công
nghệ, đặc biệt là công nghệ thông tin, kỹ thuật điện-điện tử. Phát triển kỹ thuật theo
dõi và hỗ trợ từ khoảng cách xa trong vấn đề về đời sống sức khỏe của người cao
tuổi ngày nay đang là xu thế phát triển. Chúng tôi đề xuất đề tài : “HỆ THỐNG
ỨNG DỤNG WEAR OS TRONG VIỆC HỖ TRỢ NGƯỜI GIÀ”.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 1


CHƯƠNG 1. TỔNG QUAN

1.2. MỤC TIÊU

Mục tiêu là thực hiện điều khiển các thiết bị điện từ xa thông qua mạng
không dây, cảnh báo cho người gần đó trong trường hợp cần người giúp đỡ, báo
động cho người thân ở xa qua tin nhắn, cuộc gọi tới điện thoại bằng cách sử dụng
các ứng dụng được viết cho đồng hồ thông minh Asus ZenWatch 2, điện thoại
thông minh sử dụng hệ điều hành Android hoặc máy tính có kết nối Internet, nhằm
hướng đến việc tiện lợi trong các nhu cầu sinh hoạt bình thường đơn giản cho người
già.

1.3. NỘI DUNG NGHIÊN CỨU

 NỘI DUNG 1: Tìm hiểu về firebase để cập nhật dữ liệu điều khiển, cũng như
chia sẻ quyền điều khiển cho các thiết bị.
 NỘI DUNG 2: Tìm hiểu thiết kế giao diện cho ứng dụng chạy trên các thiết bị
android.
 NỘI DUNG 3: Tìm hiểu cách điều khiển module ESP8266 NodeMCU Mini
D1 thông qua firebase.
 NỘI DUNG 4: Thi công được mô hình.
 NỘI DUNG 5: Cân chỉnh, hoàn thiện được mô hình.
 NỘI DUNG 6: Đánh giá kết quả thực hiện.

1.4. GIỚI HẠN

 Đối tượng nghiên cứu: Người cao tuổi.


 Sử dụng Asus Zenwatch 2 và một điện thoại thông minh sử dụng hệ điều hành
android.
 Sử dụng 3 bóng đèn 220VAC để chiếu sáng.
 Sử dụng 1 chuông điện 220VAC báo để báo khi có việc khẩn cấp.
 Đề tài chỉ xây dựng mô hình với ESP8266 NodeMCU Mini D1và Module
relay 5V để điều khiển các thiết bị.
 Điều khiển hệ thống ở bất cứ đâu.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 2


CHƯƠNG 1. TỔNG QUAN

1.5. BỐ CỤC

 Chương 1: Tổng quan.


Chương này trình bày đặt vấn đề dẫn nhập lý do chọn đề tài, mục tiêu, nội
dung nghiên cứu, các giới hạn thông số và bố cục đồ án.
 Chương 2: Cơ Sở Lý Thuyết.
Chương này trình bày những khái niệm cơ bản về những thiết bị được sử
dụng để làm mạch điều khiển.
 Chương 3: Tính Toán Thiết Kế.
Chương này trình bày việc thiết kế phần mềm, mạch điều khiển, tính toán
dòng điện tiêu thụ của mạch điều khiển.
 Chương 4: Thi Công Hệ Thống.
 Chương này trình bày việc thi công hệ thống bao gồm những phần: xây dựng
ứng dụng điều khiển, xây dựng ứng dụng trên điện thoại, thi công phần cứng.
 Chương 5: Kết Quả Và Nhận Xét.
Chương này trình bày những kết quả thực tế mà hệ thống thực hiện được, từ
đó có những nhận xét và đánh giá đúng đắn về hệ thống.
 Chương 6: Kết Luận Và Hướng Phát Triển.
Chương này kết luận tính thực tiễn của đề tài cũng như những hướng phát
triển trong tương lai.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 3


CHƯƠNG 2. CƠ SỞ LÝ THUYẾT

Chương 2. CƠ SỞ LÝ THUYẾT

2.1 NGƯỜI CAO TUỔI

Người cao tuổi thường là những người thuộc độ tuổi từ 60 tuổi trở lên, nhóm
người ở độ tuổi này bắt đầu xuất hiện những vấn đề về sức khỏe, tính nhạy cảm cao,
bị hạn chế trong một số công việc,… Đặc biệt là họ muốn tự chủ trong một số sinh
hoạt cá nhân, muốn chứng tỏ với những người xung quanh – nhất là con cái, rằng
mình vẫn còn sức khỏe, còn khả năng làm những việc cụ thể nào đó, không muốn trở
thành một thứ gánh nặng vô hình cho con cái, muốn con cái yên tâm về họ, như đã
nói ở trên người ở nhóm này rất nhạy cảm nên dễ dàng thấy họ rất muốn làm những
việc nhỏ nhặt nhất trong giới hạn sức khỏe của mình.

2.2 LỊCH SỬ HỆ ĐIỀU HÀNH ANDROID

Ban đầu, Android được phát triển bởi tổng công ty Android, với sự hỗ trợ tài
chính từ Google và sau này được chính Google mua lại vào năm 2005. Android ra
mắt vào năm 2007 cùng với tuyên bố thành lập liên minh thiết bị cầm tay mở: một
hiệp hội gồm các công ty phần cứng, phần mềm, và viễn thông với mục tiêu đẩy mạnh
các tiêu chuẩn mở cho các thiết bị di động. Chiếc điện thoại đầu tiên chạy Android
được bán vào năm 2008.

Những yếu tố này đã giúp Android trở thành nền tảng điện thoại thông minh
phổ biến nhất thế giới, vượt qua Symbian OS vào quý 4 năm 2010, và được các công
ty công nghệ lựa chọn khi họ cần một hệ điều hành không nặng nề, có khả năng tinh
chỉnh, và giá rẻ chạy trên các thiết bị công nghệ cao thay vì tạo dựng từ đầu. Kết quả
là mặc dù được thiết kế để chạy trên điện thoại và máy tính bảng, Android đã xuất
hiện trên TV, máy chơi game và các thiết bị điện tử khác. Bản chất mở của Android
cũng khích lệ một đội ngũ đông đảo lập trình viên và những người đam mê sử dụng
mã nguồn mở để tạo ra những dự án do cộng đồng quản lý. Những dự án này bổ sung
các tính năng cao cấp cho những người dùng thích tìm tòi hoặc đưa Android vào các
thiết bị ban đầu chạy hệ điều hành khác[8].

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 4


CHƯƠNG 2. CƠ SỞ LÝ THUYẾT

Android chiếm 87,7% thị phần điện thoại thông minh trên toàn thế giới vào
thời điểm quý 2 năm 2017, với tổng cộng 2 tỷ 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ệ.

Android là hệ điều hành điện thoại di động mở nguồn mở miễn phí do Google
phát triển dựa trên nền tảng của Linux. Bất kỳ một hãng sản xuất phần cứng nào cũng
đều có thể tự do sử dụng hệ điều hành Android cho thiết bị của mình, miễn là các
thiết bị ấy đáp ứng được các tiêu chuẩn cơ bản do Google đặt ra (có cảm ứng chạm,
GPS, 3G,...)

Các nhà sản xuất có thể tự do thay đổi phiên bản Android trên máy của mình
một cách tự do mà không cần phải xin phép hay trả bất kì khoản phí nào nhưng phải
đảm bảo tính tương thích ngược (backward compatibility) của phiên bản chế riêng
đó.

Android là nền tảng cho thiết bị di động bao gồm một hệ điều hành, midware
và một số ứng dụng chủ đạo. Bộ công cụ Android SDK cung cấp các công cụ và bộ
thư viên các hàm API cần thiết để phát triển ứng dụng cho nền tảng Android sử dụng
ngôn ngữ lập trình java.

Những tính năng mà nền tảng Android hỗ trợ:

 Application framework: Cho phép tái sử dụng và thay thế các thành phần sẳn
có của Android.
 Dalvik virtual machine: Máy ảo java được tối ưu hóa cho thiết bị di động.
 Intergrated browser: Trình duyệt web tích hợp được xây dựng dựa trên WebKit
engine.
 Optimized graphics: Hỗ trợ bộ thư viện 2D và 3D dự vào đặc tả OpenGL ES
1.0.
 SQLite: DBMS dùng để lưu trữ dữ liệu có cấu trúc.
 Hổ trở các định dạng media phổ biến như: MPEG4, H.264, MP3, AAC, ARM,
JPG, PNG, GIF.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 5


CHƯƠNG 2. CƠ SỞ LÝ THUYẾT

 Hổ trợ thoại trên nền tảng GSM (Phụ thuộc vài phần cứng thiết bị).
 Bluetooth, EDGE, 3G và WiFi (Phụ thuộc vài phần cứng thiết bị).
 Camera, GPS, la bàn và cảm biến (Phụ thuộc vài phần cứng thiết bị).
 Bộ công cụ phát triển ứng dụng mạnh mẽ.

Từ tháng 4 năm 2009, phiên bản Android được phát triển dưới tên mã là chủ đề
bánh kẹo và phát hành theo thứ tự bảng chữ cái: Cupcake (1.5), Donut (1.6), Eclair
(2.0–2.1), Froyo (2.2–2.2.3), Gingerbread (2.3–2.3.7), Honeycomb (3.0–3.2.6), Ice
Cream Sandwich (4.0–4.0.4), Jelly Bean (4.1–4.3), KitKat (4.4), Lollipop (5.0-5.1.1),
Marshmallow (6.0), Nougat(7.0), Oreo(8.0)[9] .

Hình 2.1: Các phiên bản của hệ điều hành Android.

2.3 KHÁI NIỆM VỀ WEAR OS


Google ra mắt hệ điều hành riêng cho các smartwatch là Android Wear vào
năm 2014. Android Wear cũng từng có mã nguồn mở như Android và chính vì vậy
đã thúc đẩy sự phát triển của những hãng sản xuất phụ kiện có thể đeo được. Tháng
3/2018, Android Wear đã được đổi lại thành tên đầy đủ là Wear OS by Google. Wear
OS là phiên bản hệ điều hành mở Android của Google thiết kế cho đồng hồ thông
minh và thiết bị đeo khác. Bằng cách kết nối với điện thoại thông minh chạy Android
phiên bản 4.3+, Android Wear sẽ tích hợp chức năng Google Now và thông báo di

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 6


CHƯƠNG 2. CƠ SỞ LÝ THUYẾT

động trên hình thức đồng hồ thông minh. Nền tảng đã được công bố vào ngày 18
tháng 3 năm 2014, cùng với việc phát hành một bản phát triển. Các công ty như
Motorola, Samsung, LG, HTC và Asus đã công bố là đối tác chính thức. Trong năm
2014, đã có 720.000 thiết bị Android Wear được bán ra của các hãng LG, Motorola
và Samsung[3].

Hình 2.2: Thiết bị sử dụng Wear OS.


Wear OS vẫn dựa trên core Linux của người anh em smartphone và các nhà
phát triển sẽ phải cần đến Android Studio và các bộ SDK để viết app cho nó hay sửa
lỗi cho những gì đang có sẵn. Nói cách khác, Wear giống như 1 phiên bản thu nhỏ
của hệ điều hành Android để chạy trên 1 thiết bị có màn hình nhỏ hơn. Nó cũng làm
việc hiệu quả và ít lỗi hơn so với Android trên smartphone, đi kèm những cải tiến
trong phiên bản mới Wear 2.0.
Điểm đáng nhắc đến nhất của hệ điều hành Wear OS có thể chính là sự đồng
nhất của nó. Không như người anh em Android trên smartphone được tùy biến giao
diện đa dạng, Wear OS hầu như có giao diện giống nhau trên hầu hết các chiếc smart-
watch cùng hệ điều hành. Điều này cũng giúp nó làm việc hiệu quả với hầu như tất
cả những chiếc smartphone Android đến từ nhiều hãng khác nhau trên thị trường. Tuy
vậy không có nghĩa là Wear OS không có điểm riêng, nó vẫn cho phép cá nhân hóa
giao diện khá tốt từ watch-face, app hay các tùy chỉnh điều khiển riêng biệt. Wear OS

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 7


CHƯƠNG 2. CƠ SỞ LÝ THUYẾT

được nâng cấp thêm nhiều tính nắng khác như: trợ lý ảo, theo dõi các hoạt động thể
dục, lời nhắc,…[4].
2.4 KHÁI NIỆM VỀ WIFI
Wi-Fi (WiFi hoặc Wifi) viết tắt từ Wireless Fidelity hay mạng 802.11 là hệ
thống mạng không dây sử dụng sóng vô tuyến, giống như điện thoại di động, truyền
hình và radio.

Hình 2.3: Hệ thống các thiết bị kết nối wifi.


Hệ thống này đã hoạt động ở một số sân bay, quán café, thư viện, khách sạn,...
Hệ thống cho phép truy cập Internet tại những khu vực có sóng của hệ thống này,
hoàn toàn không cần đến cáp nối. Ngoài các điểm kết nối công cộng (hotspots), WiFi
có thể được thiết lập ngay tại nhà riêng.
Tên gọi 802.11 bắt nguồn từ viện IEEE (Institute of Electrical and Electronics
Engineers). Viện này tạo ra nhiều chuẩn cho nhiều giao thức kỹ thuật khác nhau, và
nó sử dụng một hệ thống số nhằm phân loại chúng; 4 chuẩn thông dụng của WiFi
hiện nay là 802.11a/b/g/n.
Các sóng vô tuyến sử dụng cho WiFi gần giống với các sóng vô tuyến sử dụng
cho thiết bị cầm tay, điện thoại di động và các thiết bị khác. Nó có thể chuyển và nhận
sóng vô tuyến, chuyển đổi các mã nhị phân 1 và 0 sang sóng vô tuyến và ngược lại.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 8


CHƯƠNG 2. CƠ SỞ LÝ THUYẾT

Tuy nhiên, sóng WiFi có một số khác biệt so với các sóng vô tuyến khác ở
chỗ:

 Chúng truyền và phát tín hiệu ở tần số 2.4 GHz, 5 GHz hoặc 60Ghz. Tần số
này cao hơn so với các tần số sử dụng cho điện thoại di động, các thiết bị cầm
tay và truyền hình. Tần số cao hơn cho phép tín hiệu mang theo nhiều dữ liệu
hơn.
 Chúng dùng chuẩn 802.11:
o Chuẩn 802.11b là phiên bản đầu tiên trên thị trường. Đây là chuẩn chậm
nhất và rẻ tiền nhất, và nó trở nên ít phổ biến hơn so với các chuẩn khác.
802.11b phát tín hiệu ở tần số 2.4 GHz, nó có thể xử lý đến 11
megabit/giây, và nó sử dụng mã CCK (complimentary code keying).
o Chuẩn 802.11g cũng phát ở tần số 2.4 GHz, nhưng nhanh hơn so với
chuẩn 802.11b, tốc độ xử lý đạt 54 megabit/giây. Chuẩn 802.11g nhanh
hơn vì nó sử dụng mã OFDM (orthogonal frequency-division
multiplexing), một công nghệ mã hóa hiệu quả hơn.
o Chuẩn 802.11a phát ở tần số 5 GHz và có thể đạt đến 54 megabit/ giây.
Nó cũng sử dụng mã OFDM. Những chuẩn mới hơn sau này như
802.11n còn nhanh hơn chuẩn 802.11a, nhưng 802.11n vẫn chưa phải
là chuẩn cuối cùng.
o Chuẩn 802.11n cũng phát ở tần số 2.4 GHz, nhưng nhanh hơn so với
chuẩn 802.11a, tốc độ xử lý đạt 300 megabit/giây.
o Chuẩn 802.11ac phát ở tần số 5 GHz
o Chuẩn 802.11ad phát ở tần số 60 GHz.
 Wifi có thể hoạt động trên cả ba tần số và có thể nhảy qua lại giữa các tần số
khác nhau một cách nhanh chóng. Việc nhảy qua lại giữa các tần số giúp giảm
thiểu sự nhiễu sóng và cho phép nhiều thiết bị kết nối không dây cùng một lúc.

Thiết bị kết nối vào mạng WIFI được gọi là station (trạm). Việc kết nối vào
mạng Wifi được hỗ trợ bởi một access point (AP), một AP có chức năng như một
hub nhưng dùng cho nhiều station. Một access point thông thường được kết nối
vào một mạng dây để phát WIFI (tức là chuyển từ mạng dây sang WIFI). Do đó
access point luôn được tích hợp vào router. Mỗi access point được nhận biết bằng
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 9
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT

một SSID (Service Set IDentifier), SSID cũng là tên của mạng hiển thị khi ta kết
nối vào WIFI.

Một hotspot là một nơi mà các thiết bị có thể kết nối Internet, và thường là
bằng Wifi, thông qua mạng WLAN (wireless local area network: mạng nội bộ
không dây) nối với router.

Các máy tính nằm trong vùng phủ sóng WiFi cần có các bộ thu không dây,
adapter, để có thể kết nối vào mạng. Các bộ này có thể được tích hợp vào các máy
tính xách tay hay để bàn hiện đại. Hoặc được thiết kế ở dạng để cắm vào khe PC card
hoặc cổng USB, hay khe PCI. Khi đã được cài đặt adapter không dây và phần mềm
điều khiển (driver), máy tính có thể tự động nhận diện và hiển thị các mạng không
dây đang tồn tại trong khu vực.

Các chuẩn bảo mật Wifi [5]:


- WEP (Wired Equivalent Privacy) là một giải thuật bảo mật cho mạng
không dây chuẩn IEEE 802.11. Ban đầu, các nhà sản xuất chỉ sản xuất các
thiết bị Wifi với chuẩn bảo mật 64 bit. Sau này có các cải tiến hơn với các
chuẩn bảo mật 128 bit và 256 bit. Bảo mật WEP sau đó xuất hiện nhiều lổ
hổng. Các khóa WEP ngày nay có thể bị crack trong một vài phút các bằng
phần mềm hoàn toàn miễn phí trên mạng. Vào năm 2004, với sự phát triển
của các chuẩn bảo mật mới như WPA, WPÀ2, IEEE tuyên bố các chuẩn
WEP trong bảo mật Wifi sẽ không còn được hỗ trợ.
- WPA (Wi-Fi Protected Access) là giao thức và chuẩn bảo mật WiFi phát
triển bởi Liên hiệp Wifi (Wifi Alliance). WPA được phát triển để thay thế
cho chuẩn WEP trước đó có nhiều lỗ hổng bảo mật. Phiên bản phổ biến
nhất của WPA là WPA-PSK (Pre-Shared Key). Các kí tự được sử dụng bởi
WPA là loại 256 bit, nên tính bảo mật sẽ cao hơn rất nhiều so với mã hóa
64 bit và 128 bit có trong hệ thống WEP. Trong WPA có hỗ trợ TKIP
(Temporal Key Integrity Protocol). TKIP sử dụng các gỉai thuật để đảm
bảo an toàn cho các gói tin truyền trong WIFI để tránh bị đánh cắp. Tuy
nhiên TKIP sau này cũng bộc lộ một số lổ hổng bảo mật và bị thay thế bởi

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 10


CHƯƠNG 2. CƠ SỞ LÝ THUYẾT

AES (Advanced Encryption Standard). Giao thức AES được dùng trong cả
WPA và WPA 2.
- WPA 2 ( WiFi Protected Access II ) là giao thức và chuẩn bảo mật thay thế
cho WPA từ năm 2006 và được xem là chuẩn bảo mật an toàn nhất đến
thời điểm này. Ngoài việc sử dụng giao thức AES,thì WPA 2 còn sử dụng
thêm giao thức mã hóa CCMP (CTR mode with CBC-MAC Protocol).
Giao thức CCMP là một giao thức truyền dữ liệu và kiểm soát tính truyền
dữ liệu thống nhất để bảo đảm cả tính bảo mật và nguyên vẹn của dữ liệu
được truyền đi. Cho đến nay thì giao thức bảo mật WPA2 dùng AES là
giao thức bảo mật Wifi tốt nhất.

Nguồn phát sóng WiFi là máy tính với:

- Một cổng để nối cáp hoặc modem ADSL.


- Một router (bộ định tuyến).
- Một hub Ethernet.
- Một firewall.
- Một access point không dây.

Hầu hết các router có độ phủ sóng trong khoảng bán kính 30,5 m về mọi hướng.

2.5 KHÁI NIỆM VỀ BLUETOOTH

Bluetooth ra đời vào năm 1989 tại công ty Ericsson ở Lund, Thụy Điển. Tên
"bluetooth" là phiên bản ăng-lô hóa của vị vua Harald Bluetooth, người thống nhất
các bộ tộc Đan Mạch thành một vương quốc vùng Scandinavia. Ký hiệu bluetooth
mà các bạn thấy là tên viết tắt (Harald Bluetooth) của vị vua này theo cổ ngữ Rune:

Hình 2.4: Hình ảnh ký hiệu của Bluetooth.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 11


CHƯƠNG 2. CƠ SỞ LÝ THUYẾT

Bluetooth ra đời với mục đích "không dây hóa" chuẩn serial RS-232 thịnh
hành vào những năm 80-90 của thế kỷ trước và chuẩn hóa các giao tiếp serial.
Bluetooth được phát triển đầu tiên bởi Ericsson (hiện nay là Sony Ericsson và
Ericsson Mobile Platforms), và sau đó được chuẩn hoá bởi Bluetooth Special Interest
Group (SIG). Chuẩn được công bố vào ngày 20 tháng 5 năm 1999. Ngày nay được
công nhận bởi hơn 1800 công ty trên toàn thế giới. Được thành lập đầu tiên bởi Sony
Ericsson, IBM, Intel, Toshiba và Nokia, sau đó cùng có sự tham gia của nhiều công
ty khác với tư cách cộng tác hay hỗ trợ. Bluetooth có chuẩn là IEEE 802.15.1.

Theo Bluetooth SIG, hiện có hơn 90% điện thoại smartphone có tính năng
Bluetooth, bao gồm các hệ điều hành IOS, Android và Window. Bluetooth về cơ bản
là một giao tiếp bằng sóng radio ở băng tần 2.4 đến 2.480 GHz, rất gần với chuẩn
Wifi 2.4GHz hiện nay. Tuy nhiên, khác với Wifi hay các sóng radio khác hoạt động
ở 1 băng tầng cố định, Bluetooth triển khai theo khái niệm "nhảy tần trải phổ"
(Frequency Hopping Spread Spectrum), có nghĩa là băng tần hoạt động của Bluetooth
thay đổi liên tục với 79 kênh (từ 2.400 GHz đên 2.480 GHz). Điều này, về mặt lý
thuyết, đảm bảo bluetooth chống lại việc nghe lén rất hiệu quả vì hacker phải biết
chính xác được kênh nào để nghe, mà kênh này lại thay đổi liên tục (khoảng 800 lần
mỗi giây) tùy vào sự đồng ý giữa 2 thiết bị đang giao tiếp với nhau [6].

Bước sóng của bluetooth là khoảng 12cm. Bluetooth là giao tiếp tầm ngắn, khoảng
vài mét đổ lại.

Bảng 2.1: Phạm vi truyền của các loại Bluetooth.

Device Class Năng lượng truyền Phạm vi truyền


Class 3 1 mW < 10m
Class 2 2.5 mW ~ 10m
Class 1 100 mW ~100m

Bluetooth cho phép kết nối và trao đổi thông tin giữa các thiết bị như điện thoại
di động, điện thoại cố định, máy tính xách tay, PC, máy in, thiết bị định vị dùng GPS,
máy ảnh số, và video game console.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 12


CHƯƠNG 2. CƠ SỞ LÝ THUYẾT

Các ứng dụng nổi bật của Bluetooth gồm:

 Điều khiển và giao tiếp không dây giữa một điện thoại di động và tai nghe
không dây.
 Mạng không dây giữa các máy tính cá nhân trong một không gian hẹp đòi hỏi
ít băng thông.
 Giao tiếp không dây với các thiết bị vào ra của máy tính, chẳng hạn như chuột,
bàn phím và máy in.
 Truyền dữ liệu giữa các thiết bị dùng giao thức OBEX.
 Thay thế các giao tiếp nối tiếp dùng dây truyền thống giữa các thiết bị đo, thiết
bị định vị dùng GPS, thiết bị y tế, máy quét mã vạch, và các thiết bị điều khiển
giao thông.
 Thay thế các điều khiển dùng tia hồng ngoại.
 Gửi các mẫu quảng cáo nhỏ từ các pa-nô quảng cáo tới các thiết bị dùng
Bluetooth khác.
 Điều khiển từ xa cho các thiết bị trò chơi điện tử như Wii - Máy chơi trò chơi
điện tử thế hệ 7 của Nintendo[1] và PlayStation 3 của Sony.
 Kết nối Internet cho PC hoặc PDA bằng cách dùng điện thoại di động thay
modem.

2.6 GIỚI THIỆU VỀ GOOGLE FIREBASE

Về mặt lịch sử, Firebase (tiền thân là Evolve) trước đây là một start up được
thành lập vào năm 2011 bởi Andrew Lee và James Tamplin. Ban đầu, Evolve chỉ
cung cấp cơ sở dữ liệu để các lập trình viên thiết kế các ứng dụng chat (và hiện tại thì
để làm quen với realtime db thì bạn cũng làm ứng dụng chat đó thôi). Tuy nhiên, họ
nhanh chóng nhận ra tiềm năng sản phẩm của mình khi nhận thấy các khách hàng
không sử dụng CSDL để làm ứng dụng chat, mà thay vào đó, để lưu các thông tin
như game progress. Bộ đôi Lee và Tamplin quyết định tách mảng realtime ra để thành
lập một công ty độc lập – chính là Firebase – vào tháng 4 năm 2012. Sau nhiều lần
huy động vốn và gặt hái được những thành công nổi bật, Firebase đã được Google để
ý. Vào tháng 10 năm 2014, Firebase gia nhập gia đình Google. Firebase, theo hướng
đi của Google, chính thức hỗ trợ Android, iOS và Web.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 13


CHƯƠNG 2. CƠ SỞ LÝ THUYẾT

Về thư viện, Firebase hỗ trợ chính thức:

 GeoFire (Geo Location)


 GularFire (AngularJS)
 BerFire (Ember)
 ReactFire (ReactJS)
 Ionic (Ionic)

Google Firebase bao gồm:

 Cloud Firestore
 ML Kit
 Cloud Functions
 Authentication
 Hosting
 Cloud Storage
 Realtime Database

Hình 2.6: Các ứng dụng của Google Firebase.

Realtime Database (Dữ liệu thời gian thực) :

- Hỗ trợ: IOS, Android, Web, C++, Unity


- Lưu trữ và đồng bộ dữ liệu với cơ sở dữ liệu đám mây NoSQL của chúng
tôi. Dữ liệu được đồng bộ hóa trên tất cả các ứng dụng khách trong thời

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 14


CHƯƠNG 2. CƠ SỞ LÝ THUYẾT

gian thực và vẫn khả dụng khi ứng dụng của bạn ngoại tuyến. Cơ sở dữ
liệu thời gian thực Firebase là cơ sở dữ liệu được lưu trữ trên đám mây. Dữ
liệu được lưu trữ dưới dạng JSON và được đồng bộ hóa theo thời gian thực
cho mọi máy khách được kết nối. Khi bạn tạo các ứng dụng đa nền tảng
với SDK iOS, Android và JavaScript, tất cả máy khách của bạn sẽ chia sẻ
một phiên bản cơ sở dữ liệu thời gian thực và tự động nhận các bản cập
nhật với dữ liệu mới nhất.
- Các khả năng chính [2]:
o Thời gian thực: Thay vì các yêu cầu HTTP điển hình, cơ sở dữ liệu
thời gian thực Firebase sử dụng đồng bộ hóa dữ liệu — mỗi khi dữ
liệu thay đổi, mọi thiết bị được kết nối sẽ nhận được bản cập nhật
đó trong mili giây. Cung cấp trải nghiệm cộng tác và nhập vai mà
không cần suy nghĩ về mã mạng.
o Ngoại tuyến: Ứng dụng Firebase vẫn đáp ứng ngay cả khi ngoại
tuyến vì SDK cơ sở dữ liệu thời gian thực Firebase vẫn lưu dữ liệu
của bạn vào đĩa. Sau khi kết nối được thiết lập lại, thiết bị khách sẽ
nhận được bất kỳ thay đổi nào bị mất, đồng bộ hóa nó với trạng thái
máy chủ hiện tại.
o Có thể truy cập từ các thiết bị máy khách: Cơ sở dữ liệu thời gian
thực Firebase có thể được truy cập trực tiếp từ thiết bị di động hoặc
trình duyệt web; không cần máy chủ ứng dụng. Bảo mật và xác thực
dữ liệu có sẵn thông qua Quy tắc bảo mật cơ sở dữ liệu thời gian
thực Firebase, các quy tắc dựa trên biểu thức được thực thi khi dữ
liệu được đọc hoặc ghi.
o Quy mô trên nhiều cơ sở dữ liệu: Với cơ sở dữ liệu thời gian thực
Firebase trên kế hoạch định giá Blaze, bạn có thể hỗ trợ nhu cầu dữ
liệu của ứng dụng theo quy mô bằng cách chia nhỏ dữ liệu của bạn
trên nhiều phiên bản cơ sở dữ liệu trong cùng một dự án Firebase.
Hợp lý hóa xác thực với xác thực Firebase trên dự án của bạn và xác
thực người dùng trên các phiên bản cơ sở dữ liệu của bạn. Kiểm soát
quyền truy cập vào dữ liệu trong mỗi cơ sở dữ liệu với quy tắc cơ

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 15


CHƯƠNG 2. CƠ SỞ LÝ THUYẾT

sở dữ liệu thời gian thực Firebase tùy chỉnh cho từng cá thể cơ sở
dữ liệu.
- Cơ sở dữ liệu thời gian thực Firebase cho phép bạn xây dựng các ứng dụng
phong phú, hợp tác bằng cách cho phép truy cập an toàn vào cơ sở dữ liệu
trực tiếp từ mã phía máy khách. Dữ liệu được duy trì cục bộ và ngay cả khi
ngoại tuyến, các sự kiện thời gian thực vẫn tiếp tục kích hoạt, mang lại cho
người dùng trải nghiệm đáp ứng. Khi thiết bị lấy lại kết nối, cơ sở dữ liệu
thời gian thực đồng bộ hóa các thay đổi dữ liệu cục bộ với các cập nhật từ
xa đã xảy ra trong khi máy khách ngoại tuyến, tự động hợp nhất bất kỳ
xung đột nào.
- Cơ sở dữ liệu thời gian thực cung cấp ngôn ngữ quy tắc dựa trên biểu thức
linh hoạt, được gọi là “Quy tắc bảo mật cơ sở dữ liệu thời gian thực
Firebase”, để xác định cách dữ liệu của bạn nên được cấu trúc và khi dữ
liệu có thể được đọc hoặc ghi vào. Khi được tích hợp với Xác thực
Firebase, nhà phát triển có thể xác định ai có quyền truy cập vào dữ liệu
nào và cách họ có thể truy cập dữ liệu đó.
- Cơ sở dữ liệu thời gian thực là một cơ sở dữ liệu NoSQL và như vậy có
các tối ưu hóa và chức năng khác nhau so với một cơ sở dữ liệu quan hệ.
API (Application Programming Interface) cơ sở dữ liệu thời gian thực được
thiết kế để chỉ cho phép các hoạt động có thể được thực hiện nhanh chóng.
Điều này cho phép bạn xây dựng trải nghiệm thời gian thực tuyệt vời có
thể phục vụ hàng triệu người dùng mà không ảnh hưởng đến phản hồi. Bởi
vì điều này, điều quan trọng là phải suy nghĩ về cách người dùng cần truy
cập dữ liệu của bạn và sau đó cấu trúc nó cho phù hợp.
- Các cách thực hiện:
o Tích hợp SDK cơ sở dữ liệu thời gian thực Firebase: Nhanh chóng
bao gồm các máy khách thông qua Gradle, CocoaPods, hoặc bao
hàm một tập lệnh.
o Tạo tài liệu tham khảo cơ sở dữ liệu thời gian thực: Tham khảo dữ
liệu JSON của bạn, chẳng hạn như "người dùng / người dùng:
1234/phone_number" để đặt dữ liệu hoặc đăng ký thay đổi dữ liệu.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 16


CHƯƠNG 2. CƠ SỞ LÝ THUYẾT

o Đặt các dữ liệu (Data) và sự kiện (Listen) khi có sự thay đổi: sử


dụng các tham chiếu này để ghi dữ liệu hoặc đăng ký thay đổi.
o Bật chế độ ngoại tuyến: Cho phép dữ liệu được ghi vào đĩa cục bộ
của thiết bị để có thể có sẵn khi ngoại tuyến.
o Bảo vệ dữ liệu của người dùng: Sử dụng quy tắc bảo mật cơ sở dữ
liệu thời gian thực Firebase để bảo mật dữ liệu của bạn.
- Cách lưu trữ với các loại dữ liệu khác nhau:
o Cấu hình từ xa Firebase: lưu trữ các cặp key-value do nhà phát triển
chỉ định để thay đổi hành vi và giao diện của ứng dụng mà không
yêu cầu người dùng tải xuống bản cập nhật.
o Lưu trữ Firebase: lưu trữ HTML, CSS và JavaScript cho trang web
của bạn cũng như các nội dung do nhà phát triển cung cấp khác như
đồ họa, phông chữ và biểu tượng.
o Lưu trữ đám mây: lưu trữ các tệp như hình ảnh, video và âm thanh
cũng như nội dung do người dùng tạo.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 17


CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

Chương 3. TÍNH TOÁN VÀ THIẾT KẾ

3.1 GIỚI THIỆU


3.1.1 Thực trạng nhu cầu

Cùng với sự phát triển của kinh tế, xã hội, y tế đồng thời tỉ lệ người cao tuổi
ngày càng tăng kèm theo nhu cầu được chăm sóc, sinh hoạt tiện nghi cho người cao
tuổi cũng tăng theo.

3.1.2 Bài toán đặt ra

Để giảm sự di chuyển của người già trong những lúc đêm tối tìm công tắc bật
đèn, tránh trường hợp gặp rủi ro về điện giật hoặc lúc cơ thể đau ốm sức khoẻ bị hạn
chế cho việc di chuyển nhiều. Hỗ trợ người già trong những tình huống khẩn cấp có
thể báo động cho người thân, bằng chuông báo khẩn tại nhà hoặc tin nhắn điện thoại,
và người thân có thể theo dõi vị trí để hỗ trợ trong những tình huống cần thiết.

Nhóm sinh viên thực hiện đề tài nhận thấy việc công nghệ ngày càng phát triển.
Đồng hồ thông minh hệ điều hành Wear OS ngày phổ biến và thiết bị đeo tay có thể
ở bên người già 24/24 hỗ trợ rất tốt. Vì vậy nhóm đã chủ động xây dựng ứng dụng hỗ
trợ người già trên nền tảng Wear OS.

3.2 TÍNH TOÁN VÀ THIẾT KẾ


Từ vấn đề bài toán đặt ra, nhóm quyết định sử dụng đồng hồ thông minh kết
hợp với cơ sở dữ liệu Firebase và hệ thống sẽ có sơ đồ tổng quát như hình dưới:

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 18


CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

Ghi trạng thái switch, nút nhấn


Đọc dữ liệu điều khiển

Đọc dữ liệu điều


khiển nhắn tin

Giao tiếp thiết bị điện

Hình 3.1: Sơ đồ khối tổng quát hệ thống.

Như sơ đồ trên ta thấy đồng hồ và điện thoại kết nối với nhau dùng để gửi thông
tin điều khiển đèn, chuông qua mạng không dây lên database của firebase. Điện thoại
đọc dữ liệu điều khiển từ firebase về để điều khiển chức năng nhắn tin khẩn cấp.
Esp8266 đọc dữ liệu từ firebase qua mạng wifi, từ dữ liệu đọc về sẽ điều khiển đèn,
chuông thông qua module relay. Ta cũng có thề điểu khiển trực tiếp trên máy tính
bằng cách truy cập firebase.com và đăng nhập vào tài khoản của mình.

3.2.1 Thiết kế trên đồng hồ

Đồng hồ sẽ là nơi hiển thị giao diện điều khiển chính. Thiết bị điều khiển ở
đây sẽ là đèn, chuông và nút nhấn SOS khẩn cấp, đồng thời vẫn xem được giờ khi
chạy ứng dụng. Yêu cầu thiết kế giao diện của ứng dụng sẽ ưu tiên việc đơn giản hóa
giao diện, các biểu tượng của ứng dụng sẽ thiên về việc dễ sử dụng và không cầu kì.
Ứng dụng của nhóm sẽ có giao diện thiết kế như sau:

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 19


CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

Hình 3.2: Thiết kế ứng dụng trên đồng hồ.

Giao diện gồm 3 công tắc nằm bên trái màn hình với chức năng điều khiển tắt
bật các bóng đèn. Bên phải gồm 3 nút nhấn, nút nhấn trên cùng dùng bật chuông báo
động khi cần sự trợ giúp của người chăm sóc hoặc người ở gần, nút thứ hai đùng để
tắt chuông báo động. Nút nhấn dưới cùng là nút SOS dùng để báo động trong trường
hợp khẩn cấp tới người thân, khi nhấn nút sẽ gửi tin nhắn khẩn cấp tới một số điện
thoại chọn trước, trong tin nhắn sẽ kèm theo vị trí hiện tại của người sử dụng và tạo
cuộc gọi tới số khẩn cấp này ngay sau đó.

3.2.2 Thiết kế trên điện thoại

Điện thoại sẽ được kết với đồng hồ, giúp thực hiện cuộc gọi, tin nhắn khẩn cấp
và cung cấp vị trí cho đồng hồ. Để hỗ trợ những chức năng trên ta thiết kế trên ứng
dụng trên điện thoại như sau:

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 20


CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

Hình 3.3: Giao diện bắt đầu ứng dụng điện thoại.

Giao diện điện thoại cho phép ta nhập số điện thoại khẩn cấp và sau đó sẽ bấm
nút nhấn để xác nhận số điện thoại đã nhập. Đây sẽ là số điện thoại nhận tin nhắn
khẩn cấp và đổ chuông khi ta nhấn nút SOS trên đồng hồ. Sau khi xác nhận sẽ hiện
ra một giao diện số điện thoại mà ta vừa nhập xác nhận ứng dụng khởi chạy thành
công.

Hình 3.4: Giao diện ứng dụng điện thoại khởi chạy thành công.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 21


CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

3.2.3 Thiết kế mạch điều khiển đèn, chuông


Yêu cầu chức năng:

- Điều khiển bật tắt đèn chiếu sáng.


- Điều khiển chuông báo động.

Mạch điều khiển giao tiếp với cơ sở dữ liệu firebase thông qua mạng không
dây. Giao tiếp giữa vi điều khiển và các thiết bị điện, phải đảm bảo tính an toàn khi
sử dụng.

a/ Vi điều khiển

Với yêu cầu như trên ta cần một vi điều khiển có khả năng kết nối và xử lý dữ
liệu qua mạng không dây. Để đáp ứng những yêu cầu trên, ngoài ra vì sự tiện lợi, dễ
thay thế khi hư hỏng, kích thước nhỏ gọn, giá thành hợp lý nên nhóm em quyết định
chọn Module wifi ESP8266 NodeMCU Mini D1 để làm khối điều khiển trung tâm.
Module wifi ESP8266 NodeMCU Mini D1 là kit phát triển dựa trên nền chip
Wifi SoC ESP8266EX, được thiết kế dễ dàng sử dụng và có thể dễ dàng nạp chương
trình khi kết nối với máy tính thông qua cáp USB ( Loại cáp dùng cho điện thoại
thông minh và Laptop). Hiện tại, có thể sử dụng trực tiếp phần mềm IDE của Arduino
để lập trình với bộ thư viện riêng hoặc sử dụng phần mềm node MCU.
Thông số kỹ thuật:

 Vi điều khiển: ESP8266EX


 Nhiệt độ làm việc: -40℃ ~ 125℃
 Điện áp hoạt động: 3.3V
 Số chân I/O: 11 (tất cả các chân I/O đều có Interrupt/PWM/I2C/One-wire, trừ
chân D0)
 Số chân Analog Input: 1 (điện áp vào tối đa 3.3V)
 Bộ nhớ Flash: 4MB
 Giao tiếp: Cable Micro USB
 Nguồn áp: 5V được cung cấp qua cổng Micro USB
 Wifi: 2.4 GHz
 Hỗ trợ bảo mật: WPA/WPA2
 Tích hợp giao thức TCP/IP

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 22


CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

 Kích thước: 34.2mmx25.6mm


 Lập trình trên các ngôn ngữ: C/C++, Micropython, NodeMCU – Lua

Hình 3.5: Module ESP8266.

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

 TX, chức năng: Ngõ ra phát dữ liệu trong chế độ truyền bất đồng bộ
 RX, chức năng: Ngõ vào nhận dữ liệu trong chế độ truyền bất đồng bộ
 Chân A0, chức năng: Ngõ vào tương tự, giá trị điện áp vào cực đại là 3,3v
 Chân D0, chức năng: Ngõ vào ra số.
 Chân D1, chức năng: Ngõ vào ra số, ngõ vào xung clock(SCL).
 Chân D2, chức năng: Ngõ vào ra số, xuất, nhập dữ liệu(SDA)
 Chân D3, chức năng: Ngõ vào ra số, có điện trở kéo lên 10k.
 Chân D4, chức năng: Ngõ vào ra số, có điện trở kéo lên 10k, kết nối với led.
 Chân D5, chức năng: Ngõ vào ra số, ngõ vào xung clock(SCK).
 Chân D6, chức năng: Ngõ vào ra số, MISO
 Chân D7, chức năng: Ngõ vào ra số, MOSI
 Chân D8, chức năng: Ngõ vào ra số, có điện trở kéo xuống 10k
 Chân G, 5v, 3,3v: Các chân cấp nguồn cho module.
 Chân RST, chức năng: Reset

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 23


CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

b/ Giao tiếp giữa vi xử lý và đèn, chuông.

Với yêu cầu bài toán đặt ra phải đảm bảo tính an toàn khi sử dụng các thiết bị
điện, phải cách ly với mạch điều khiển có các giải pháp như: sử dụng Triac và opto,
relay,… đồng thời mạch giao tiếp điều khiển bốn thiết bị, nhóm em quyết định chọn
Module 4 relay 5V với giá thành hợp lý, tiện dụng, dễ thay thế khi hư hỏng.

Module 4 relay 5V với Opto cách ly gồm 4 rơ le hoạt động tại điện áp 5VDC,
chịu được hiệu điện thế lên đến 250VAC 10A. Module 4 relay 5V với Opto cách
ly được thiết kế chắc chắn, khả năng cách điện tốt. Trên module đã có sẵn mạch kích
relay sử dụng transistor và IC cách ly quang giúp cách ly hoàn toàn mạch điều khiển
(vi điều khiển) với rơ le bảo đảm vi điều khiển hoạt động ổn định. Có sẵn header rất
tiện dụng khi kết nối với vi điều khiển.

Module 4 relay 5V với Opto cách ly sử dụng chân kích mức thấp (0V), khi
có tín hiệu 0V vào chân IN thì relay sẽ đổi trạng thái. ứng dụng với relay module
khá nhiều bao gồm cả điện DC hay AC.

Hình 3.6: Module relay.

Thông số kỹ thuật:

- Điện áp hoạt động: 5VDC.

- Dòng tiêu thụ: 200mA/1Relay

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 24


CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

- Tín hiệu kích: High (5V) hoặc Low (0V) chọn bằng Jumper.

- Relay trên mạch:

+ Nguồn nuôi: 5VDC.

+ Tiếp điểm đóng ngắt max: 250VAC-10A hoặc 30VDC-10A

- Kích thước: 72mm * 55mm * 19mm.

c/ Nguồn nuôi mạch điều khiển


Bảng 3.1: Dòng tiêu thụ các thiết bị
STT Thiết bị Dòng tiêu thụ
1 Module 4 relay 5v 800mA
2 Esp8826 170mA

ESP8266 tiêu thụ 170mA và module 4 Relay 5V tiêu thụ 200mA/1 Relay, nên
nhóm quyết định sử dụng Adapter 5V/2A làm nguồn cung cấp chính cho toàn mạch.

Hình 3.7: Adapter 5V/2A.


Adapter có chức năng biến đổi điện áp xoay chiều thành điện áp một chiều. Và
có ưu điểm về tính ổn định giá thành rẻ, gọn nhẹ và an toàn hơn.
Thông số kĩ thuật:
+ Điện áp vào: 100-240VAC 50/60Hz
+Ngõ ra: 5V, 2A

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 25


CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

d/ Các thiết bị khác

Lựa chọn, bố trí thiết bị:

- Đèn chiếu sáng:


 Đèn led chiếu sáng 5W/220VAC
 Công suất: 5W.
 Nguồn điện: 220V/50Hz.
 Ánh sáng: 6000K.
 Quang thông: 550lm.
 CRI: >80.
 Cấp độ bảo vệ: IP44.
 Ứng dụng: chiếu sáng trong nhà, ban công,…

Hình 3.8: Đèn led 5W/220VAC - Đèn led 9W/220VAC.


 Đèn led chiếu sáng 9W/220VAC
 Công suất: 9W.
 Nguồn điện: 220V/50Hz.
 Ánh sáng: 6000K.
 Quang thông: 900lm.
 CRI: >80.
 Cấp độ bảo vệ: IP44.
 Ứng dụng: chiếu sáng trong nhà, hành lang,…
- Chuông:
 Sử dụng chuông điện 220VAC
 Điện áp hoạt động 220VAC/50Hz
 Làm chuông báo động.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 26


CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ

Hình 3.9: Chuông điện 220VAC.


- Ta bố trí như đèn tại 3 vị trí là trong phòng ngủ, khu vực nhà vệ sinh và khu
vực hành lang. Chuông báo sẽ được đặt ở hành lang.

220V
AC

Đèn 1 Đèn 2 Đèn 3

3.3V 5V

D8 GND GND NO1


COM
D7 D4 IN1 NC1
IN2 NO2
D6 D3 COM
ESP 8266 IN3 NC2
MODUN RELAY
D5 D2
IN4 NO3
COM
D0 D1 NC3
VCC Chuông
NO4
A0 RX COM
NC4
RST TX

5v DC từ nguồn adapter

Hình 3.10: Sơ đồ kết nối các khối

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 27


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Chương 4. THI CÔNG HỆ THỐNG

4.1 GIỚI THIỆU


Sau khi đã thực hiện xong quá trình tính toán và thiết kế các thiết bị phần cứng
cũng như phần mềm, nhóm đã tiến hành lập trình bằng các phần mềm cần thiết, xây
dựng và thi công mô hình hệ thống.

Yêu cầu điều khiển:

Khi cấp điện và khởi chạy ứng dụng trên đồng hồ thì tất cả trạng thái hiện tại
được cập nhật lên cơ sở dữ liệu firebase, trạng thái thiết bị được thiết đặt theo cơ sở dữ
liệu hiện tại.

Vi điều khiển được sử dụng là ESP8266 NodeMCU có chức năng đọc dữ liệu
từ cơ sở dữ liệu Firebase và điều khiển các thiết bị thông qua mạch giao tiếp relay.

4.2 Xây dựng ứng dụng điều khiển đèn, chuông trên smartwatch
Theo như mô hình đã thiết kế, ta sẽ sử dụng phần Android Studio tạo một ứng
dụng trên đồng hồ giải quyết yêu cầu đặt ra.
4.2.1 Giới thiệu phần mềm Android Studio

Hình 4.1: Phần mềm Android Studio.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 28


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Được ra mắt vào ngày 16 tháng 5 năm 2013 tại hội nghị Google I/O. Android
Studio được phát hành miễn phí theo giấy phép Apache Licence 2.0. Android Studio ở
giai đoạn truy cập xem trước sớm bắt đầu từ phiên bản 0.1 vào tháng 5 năm 2013, sau
đó bước vào giai đoạn beta từ phiên bản 0.8 được phát hành vào tháng 6 năm 2014.
Phiên bản ổn định đầu tiên được ra mắt vào tháng 12 năm 2014, bắt đầu từ phiên bản
1.0.

Android Studio là môi trường lập trình dành cho các lập trình viên phát triển
ứng dụng cho các thiết bị chạy trên nền tảng Android. Ứng dụng sẽ được viết chủ yếu
bằng ngôn ngữ lập trình Java. Android studio sẽ sử dụng Android SDK (Android
software development kit) và Gradle tooling để convert những file này thành ứng
dụng Android. Nó cho phép biên dịch, đóng gói và deploy và khởi chạy ứng dụng sau
khi đã build xong.

Android SDK bao gồm cả ADB (Android Debug bridge) là 1 công cụ cho phép
ta kết nối tới các thiết bị máy ảo và máy thật để build ứng dụng. Nó cho phép ta quản
lý các thiết bị và hỗ trợ ta debug ứng dụng.

Hầu hết các file cấu hình trong Android đều dưới dạng XML. Android Studio
cung cấp các trình sửa file cho từng file riêng biệt.

Cấu hình lưu ý trước khi cài đặt:

■ Microsoft® Windows® 8/7/Vista/2003 (32 or 64-bit).


■ Tối thiểu 2GB RAM, đề nghị: 4GB RAM. (Tốt nhất là 8GB).
■ Ổ cứng trống ít nhất 400MB, nên trống từ 2GB trở lên.
■ Độ phân giải tối thiểu 1280 x 800.
■ Java Development Kit ().
■ Lựa chọn thêm cho accelerated emulator: Intel® processor with support for
Intel® VT-x, Intel® EM64T (Intel® 64), and Execute Disable (XD) Bit
functionality.
Cách cài đặt: Truy cập vào websites: https://developer.android.com/studio/ để
download phần mềm.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 29


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Hình 4.2: Tải phần mềm Android Studio.

Sau khi tải tệp tin cài đặt về, mở file .exe để tiến hành cài đặt. Nhấn Next →
Next → Next → Install để tiến hành cài đặt, quá trình cài đặt diễn ra từ 5 đến 10
phút:

Hình 4.3: Tiến hành quá trình cài đặt phần mềm Android Studio.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 30


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Tiếp theo nhấn Next và cuối cùng nhấn Finish. Tới đây quá trình cài đặt phần
mềm đã xong.

Hình 4.4: Kết thúc quá trình cài đặt phần mềm Android Studio.

Tạo một project mới:

- Nhấp đúp chuột vào biểu tượng để mở chương trình.

- Chọn Start a new Android Studio project để tạo một project mới.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 31


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Hình 4.5: Cửa sổ “Welcome to Android Studio”.

Màn hình Create Android Project xuất hiện gồm có:

+ Application name: Phần đặt tên cho ứng dụng.


+ Company domain: Tên miền của người lập trình. Hệ thống sẽ sử dụng
Application name và Company domain để tạo một package đưa ứng
dụng lên Google Play.
+ Project location: Địa chỉ lưu trữ project
+ Package name: Tên gói.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 32


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Hình 4.6: Màn hình Create Android Project.

Màn hình Target Android Devices: Chọn thiết bị và phiên bản cho thiết bị.

+ Phone and Tablet: Ứng dụng cho điện thoại thông minh và máy tính bảng.
+ Wear: Ứng dụng cho đồng hồ thông minh.

Hình 4.7: Màn hình Target Android Devices.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 33


CHƯƠNG 4. THI CÔNG HỆ THỐNG

+ Lưu ý:
Chúng ta sẽ phải chọn phiên bản API phù hợp với thiết bị sử dụng.

Add an Activity : Lựa chọn màn hình hiển thị cho ứng dụng. Ở đây, chúng ta
cần một màn hình trắng để thêm các button, switch, textview,...

Hình 4.8: Màn hình Add an Activity to Wear.

Configure Activity: Cấu hình cho màn hình Activity mà mình mới lựa chọn:

+ Activity Name: tên của giao diện Activity.


+ Layout Name: tên của Layout mình muốn đặt.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 34


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Hình 4.9: Màn hình Configure Activity.

Sau khi nhấn Finish, phần mềm sẽ tiến hành tạo project, tiến trình sẽ diễn ra từ
30 giây đến 1 phút.

Khi project đã được tạo, cửa sổ lập trình sẽ xuất hiện, thẻ MainActivity.java
sẽ hiện ra đầu tiên.

Thẻ MainActivity.java là nơi để viết chương trình chính cho phần mềm.

Hình 4.10: Màn hình thẻ MainActivity.java.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 35


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Thẻ AndroidManifest.xml nơi hiện các quyền và cấp quyền cho ứng dụng
truy cập phần cứng trên điện thoại.

Hình 4.11: Màn hình thẻ AndroidManifest.xml.

- Thẻ app nơi khai báo các gói dịch vụ sẽ sử dụng trong ứng dụng :

Hình 4.12: Màn hình thẻ app.

Màn hình thẻ activity_main.xml:

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 36


CHƯƠNG 4. THI CÔNG HỆ THỐNG

+ Thẻ con Design cho phép chỉnh sửa trực tiếp ứng dụng bằng cách kéo
thả các biểu tượng, chỉnh sửa thông số của các biểu tượng:

Hình 4.13: Màn hình thẻ con Design.

+ Thẻ con Text sẽ cho phép thiết kế giao diện bằng các tập lệnh.

Hình 4.14: Màn hình thẻ con Text.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 37


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Cơ sở dữ liệu firebase, các bước để thêm firebase vào ứng dụng Android:

Firebase là nền tảng phát triển ứng dụng dành cho thiết bị di động và web
được phát triển bởi Firebase, Inc. Firebase cung cấp cơ sở dữ liệu thời gian thực và
chương trình phụ trợ. Cơ sở dữ liệu thời gian thực Firebase là cơ sở dữ liệu được lưu
trữ trên đám mây. Dữ liệu được lưu trữ dưới dạng JSON và được đồng bộ hóa theo
thời gian thực cho mọi thiết bị được kết nối.

Cách bước để tạo một project firebase:

- Trước tiên truy cập vào địa chỉ https://firebase.google.com/ giao diện hiển thị
như hình dưới:

Hình 4.15: Giao diện hiển thị của Firebase.

- Tiếp theo ta nhấn vào nút LOG IN bên phải màn hình và đăng bằng tài khoản
Gmail bất kì, sau đó Chọn “GET STARTED” → “Add project” và đặt tên
cho Project trên Firebase, chọn quốc gia “Vietnam” → Chọn “CREATE
PROJECT”.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 38


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Hình 4.16: Cửa sổ Add a project.

Add Firebase to your Android application

Hình 4.17: Điền thông tin package của ứng dụng.

Android package name ta sẽ lấy tên package trong ứng dụng android qua, nhấn Save
app.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 39


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Hình 4.18: Tải tập tin google-services.json.

Bạn download file google-services.json và thêm vào chương trình android như hướng
dẫn hình trên.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 40


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Hình 4.19: Các dòng lệnh cần thiết.

Thêm các dòng lệnh như hình vào chương trình android của bạn. Nhấn following tới
đây việc add firebase coi như xong.

Hình 4.20: Cửa sổ Security rules for Realtime Database.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 41


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Vào Database chọn First steps ở Realtime Database → tích chọn Start in test mode để
cho phép đọc ghi → Activate.

Hình 4.21: Giao diện làm việc Database.

Như vậy là database đã sẵn sàng ghi đọc dữ liệu từ ứng dụng android mà ta xây dựng.

4.2.2 Lưu đồ và lập trình ứng dụng trên đồng hồ

Lưu đồ điều khiển:

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 42


CHƯƠNG 4. THI CÔNG HỆ THỐNG

BẮT ĐẦU

SAI
SW L1 ĐÓNG

ĐÚNG

ĐẶT GIÁ TRỊ ĐẶT GIÁ TRỊ


FIREBASE tat FIREBASE sang

SAI
SW L2 ĐÓNG

ĐÚNG
ĐẶT GIÁ TRỊ ĐẶT GIÁ TRỊ
FIREBASE tat FIREBASE sang

SAI
SW L3 ĐÓNG

ĐÚNG

ĐẶT GIÁ TRỊ ĐẶT GIÁ TRỊ


FIREBASE tat FIREBASE sang

B A

Hình 4.22: Lưu đồ ứng dụng khi được khởi động.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 43


CHƯƠNG 4. THI CÔNG HỆ THỐNG

SAI
NHẤN NÚT BELL

ĐÚNG

NHẤN NÚT OFF ĐẶT GIÁ TRỊ


FIREBASE on
ĐÚNG

ĐẶT GIÁ TRỊ


FIREBASE off

SAI NHẤN NÚT SOS

B ĐÚNG

ĐẶT GIÁ TRỊ FIREBASE


yes

KẾT THÚC

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 44


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Lập trình cho ứng dụng:

- Sau khi đã tạo một project như các bước phía trên đã hướng dẫn, ta tiến hành
lập trình cho ứng dụng theo như lưu đồ đã viết và giao diện đã thiết kế:
+ Đầu tiên, ta chuyển tới thẻ activity_main.xml để tiến hành tạo giao diện cho
ứng dụng như đã thiết kế:
Tại thẻ con Text ta tiến hành tạo các switch và button cần thiết:

<Switch
android:id="@+id/switch1"
android:layout_width="wrap_content"
android:layout_height="20dp"
android:layout_marginTop="30dp"
android:text="L1" />

<Switch
android:id="@+id/switch2"
android:layout_width="wrap_content"
android:layout_height="20dp"
android:layout_marginTop="70dp"
android:text="L2" />

<Switch
android:id="@+id/switch3"
android:layout_width="wrap_content"
android:layout_height="20dp"
android:layout_marginTop="110dp"
android:text="L3" />

<ImageButton
android:id="@+id/bell"
android:layout_width="87dp"
android:layout_height="58dp"
android:layout_gravity="right"

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 45


CHƯƠNG 4. THI CÔNG HỆ THỐNG

android:background="@drawable/button_img"
android:scaleType="fitCenter"
android:src="@drawable/chuong_on"

android:text="Bell" />

<ImageButton
android:id="@+id/off"
android:layout_width="87dp"
android:layout_height="58dp"
android:layout_gravity="right"
android:layout_marginTop="60dp"

android:background="@drawable/button_img"
android:src="@drawable/chuong_off"
android:scaleType="fitCenter"
android:text="OFF" />

<Button
android:id="@+id/sent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_marginTop="125dp"
android:background="@drawable/sos_img"
android:text="SOS" />

Theo như thiết kế ta sẽ hiện thị thời gian trên ứng dụng bằng các dòng lệnh.

<DigitalClock
android:id="@+id/digitalClock1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="150dp"
android:text="DigitalClock" />
Ta chọn Digitalclock là hiển thi giao diện đồng hồ số giúp dễ dàng quan sát hơn, giao
diện ứng dụng sẽ như sau:

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 46


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Hình 4.23: Giao diện của ứng dụng.

+ Sau khi đã tạo giao diện ứng dụng, ta sẽ chuyển sang thẻ Activity_Main.java
để tiến hành lập trình cho các nút nhấn và switch đã được tạo ở thẻ
activity_main.xml.

myswitch1.setOnCheckedChangeListener(new
CompoundButton.OnCheckedChangeListener(){

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean
isChecked) {
if(isChecked)
{myfirebase.child("den11").child("trangthai").setValue("sang");}
else {myfirebase.child("den11").child("trangthai").setValue("tat");}
}
});

Do các switch có chức năng tương tự nhau nên nhóm em chỉ trình bày chương
trình của một 1 switch.

Khi các switch được kích hoạt bằng cách gạt qua phải thì hàm isChecked được
gọi, tín hiệu sẽ được gửi lên firebase thông qua mạng wifi, sau đó firebase sẽ tiến hành
thay đổi trạng thái của các “child” tương ứng với các switch đã cài đặt lần lượt là:
den11, den12, den13 từ “tat” sang “sang” và ngược lại.

mysent.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 47


CHƯƠNG 4. THI CÔNG HỆ THỐNG

myfirebase.child("SENT").setValue("yes");
}
});

mybell.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myfirebase.child("bell").child("trangthai").setValue("sang");

}
});

offbell.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myfirebase.child("bell").child("trangthai").setValue("tat");

}
});

Tương tự như các switch, khi các nút nhấn được kích hoạt bằng cách chạm vào
biểu tượng thì hàm onClick được gọi, tín hiệu sẽ được gửi lên firebase, sau đó
firebase sẽ tiến hành thay đổi trạng thái của các “child” tương ứng với các nút nhấn đã
được cài đặt lần lượt là: bell từ “tat” sang “bat”, SENT từ “no” sang “yes”.

4.3 XÂY DỰNG ỨNG DỤNG KHẨN CẤP SOS TRÊN ĐIỆN THOẠI
Với các yêu cầu đã đặt ra trong thiết kế ta sẽ tiến hành tạo một ứng dụng trên
điện thoại bằng phần mềm Android Studio đã trình bày ở phần thi công trên điện
thoại.
Tạo project Android cho điện thoại tương tự như các bước tạo project trên
đồng hồ, sau đó ta tạo Layout Resource File với tên start_activity.xml:
Ta sẽ sử dụng LinearLayout để cho phép bố trí các view theo chiều dọc và chiều
ngang. Xếp các view theo chiều dọc và căn giữa với lệnh:

android:orientation="vertical"
android:gravity="center"

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 48


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Và giờ ta sẽ thêm thêm một EditText để nhập số điện thoại khẩn cấp:

<EditText
android:id="@+id/edt_nhap"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="Enter the emergency number"/>

Hình 4.24: Giao diện nhập số điện thoại khẩn cấp.


Nút nhấn xác nhận số điện thoại sẽ được tạo như sau:

<Button
android:id="@+id/btnstart"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="confirm"
android:layout_gravity="center"
/>

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 49


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Hình 4.25: Giao diện xác nhận số điện thoại khẩn cấp.
Thẻ activity_main.xml sẽ gồm một TextView hiển thị số điện thoại đã nhập và
một TextView hiển thị báo hiệu ứng dụng đang chạy được tạo bằng code như sau:

<TextView
android:gravity="center"
android:text="SDT:"
android:textSize="20sp"
android:textStyle="bold"
android:id="@+id/tvsdt"
android:layout_width="match_parent"
android:layout_height="50dp"
/>

<TextView
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SOS is running...."
/>

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 50


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Hình 4.26: Giao diện thông báo SOS đang hoạt động.
Tới đây thì phần giao diện và hiển thị coi như xong, và vì ứng dụng sẽ gửi tin
nhắn, gọi điện và sử dụng định vị nên ta cần phải cấp các quyền này cho ứng dụng
bằng cách mở thẻ Androidmanifest.xml và thêm các dòng sau vào phần khai báo:

<uses-permission android:name="android.permission.SEND_SMS" />


<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission
android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission
android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>

Tương ứng với hai giao giao diện start_activity.xml và activity_main.xml sẽ


là thẻ chương trình xử lý là startActivity.java và MainActivity.java

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 51


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Lưu đồ startActivity.java

Hình 4.27: Lưu đồ startActivity.java.


Khi nhấn nút xác nhận chuỗi số điện thoại ta nhâp sẽ được ghi nhận lại bằng
phương thức:

String sdt = edt_sdt.getText().toString();

Tiếp theo ta sẽ chuyển qua MainActivity và truyền chuỗi số điện thoại qua:

Intent intent = new Intent(startActivity.this, MainActivity.class);


intent.putExtra(SDT, sdt);
startActivity(intent);

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 52


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Lưu đồ MainActivity.java

Hình 4.28: Lưu đồ MainActivity.java.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 53


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Xử lý trong handler:

Hình 4.29: Lưu đồ xử lý trong handler.


Chương trình handler:

Handler j = new Handler();


j.postDelayed(new Runnable() {
@Override
public void run() {
myfirebase.child("SENT").setValue("no");
call(sdt);
}
}, 5000);

Khởi tạo một trình xếp lịch chạy mới thời gian delay là 5000 mili giây.
Khi hết thời gian delay thì chạy hai dòng lệnh bên trong là
myfirebase.child(“SENT”).setValue(“no”); có chức năng đặt giá trị nhánh
“SENT” của Firebase thành chuỗi “no”. call(sdt) có chức năng gọi chương
trình gọi điện call và truyền vào chương trình này chuỗi sdt.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 54


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Lưu đồ xử lý các chương trình con:

Hình 4.30: Lưu đồ hoạt động của chương trình gửi tin nhắn.
Chương trình gửi tin nhắn với phoneNo được gán bằng chuỗi sdt.

String phoneNo = sdt;

try {
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNo, null, message, null, null);
Toast.makeText(getApplicationContext(), "SMS sent.",
Toast.LENGTH_LONG).show();
} catch (Exception e) {
Toast.makeText(getApplicationContext(), "SMS faild, please try again.",
Toast.LENGTH_LONG).
show();
e.printStackTrace();

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 55


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Hình 4.31: Lưu đồ khởi tạo số điện thoại khẩn cấp.


Hành động gọi điện được thực thi bằng lệnh sau:

Intent it = new Intent(Intent.ACTION_CALL);


it.setData(Uri.parse("tel:" + phoneNumber));
startActivity(it);
Với phoneNumber được gán bằng chuỗi sdt.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 56


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Hình 4.32: Lưu đồ hoạt động của chương trình vị trí.


Chương trình con location:

private void location() {


locationManager = (LocationManager)
getSystemService(LOCATION_SERVICE);
locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 57


CHƯƠNG 4. THI CÔNG HỆ THỐNG

myfirebase.child("toa do").setValue((+location.getLatitude() + " ," +


location.getLongitude()));
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {

@Override
public void onProviderEnabled(String provider) {

@Override
public void onProviderDisabled(String provider) {
Intent intent = new
Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent);
}
};

if (ActivityCompat.checkSelfPermission(this,
android.Manifest.permission.ACCESS_FINE_LOCATION) !=
PackageManager.PERMISSION_GRANTED &&
ActivityCompat.checkSelfPermission(this,
android.Manifest.permission.ACCESS_COARSE_LOCATION) !=
PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[]
permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the
documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
locationManager.requestLocationUpdates("gps", 60000, 0, locationListener);
}

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 58


CHƯƠNG 4. THI CÔNG HỆ THỐNG

4.4 THI CÔNG MẠCH ĐIỀU KHIỂN ĐÈN, CHUÔNG


Bảng 4.1. Danh sách các linh kiện được sử dụng.

STT Số lượng Tên linh kiện Giá trị

1 1 Module 4 relay 5V 800mA

2 1 Module Wifi ESP8266 NodeMCU Mini D1 170mA

3 2 Bóng đèn led 5W 5W, 550lm

4 1 Bóng đèn led 9W 9W, 900lm

5 1 Chuông điện 220VAC/50Hz

Với yêu cầu thiết kế mô hình nhỏ gọn và tiện dụng, nhóm em quyết định thiết
kế và thi công mô hình trên cùng một bảng mạch như sau:

Hình 4.33: Thiết kế bản vẽ PCB và sau khi thi công.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 59


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Hình 4.34: Mạch điều khiển hoàn chỉnh.

Phần mềm lập trình cho vi điều khiển Arduino IDE:

Môi trường phát triển tích hợp (IDE) của Arduino là một ứng dụng đa nền tảng
được viết bằng Java, và từ IDE này sẽ được sử dụng cho Ngôn ngữ lập trình xử lý
(Processing programming language) và project Wiring. Nó được thiết kế để dành cho
những người mới tập làm quen với lĩnh vực phát triển phần mềm. Nó bao gồm một
chương trình code editor với các chức năng như đánh dấu cú pháp, tự động brace
matching, và tự động canh lề, cũng như compile(biên dịch) và upload chương trình lên
board chỉ với 1 cú nhấp chuột. Một chương trình hoặc code viết cho Arduino được gọi
là một sketch.

Các chương trình Arduino được viết bằng C hoặc C++. Arduino IDE đi kèm với một
thư viện phần mềm được gọi là "Wiring", từ project Wiring gốc, có thể giúp các thao
tác input/output được dễ dàng hơn. Người dùng chỉ cần định nghĩa 2 hàm để tạo ra
một chương trình vòng thực thi (cyclic executive) có thể chạy được:

● setup(): hàm này chạy mỗi khi khởi động một chương trình, dùng để thiết
lập các cài đặt
● loop(): hàm này được gọi lặp lại cho đến khi tắt nguồn board mạch

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 60


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Ví dụ: Chương trình điều khiển led nhấp nháy:

// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage
level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage
LOW
delay(1000); // wait for a second
}

- Cách cài đặt và tạo project arduino IDE: Truy cập vào trang web:
https://www.arduino.cc/en/Main/Software tải về chương trình arduino IDE phù hợp
với hệ điều hành của máy tính đang dùng. Giải nén file .rar vừa tải về ta được thư mục
như hình.

Sau đó nhấn vào biểu tượng arduino (Application) để khởi chạy phần
mềm.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 61


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Hình 4.35: Cửa sổ lập trình của Arduino.

● Arduino Toolbar: có một số button và chức năng của chúng như sau :

○ Verify : kiểm tra code có lỗi hay không .

○ Upload: nạp code đang soạn thảo vào Arduino .

○ New, Open, Save : Tạo mới, mở và Save sketch .


○ Serial Monitor : Đây là màn hình hiển thị dữ liệu từ Arduino gửi lên

máy tính hoặc tổ hợp phím CTRL + SHIFT + M


● Arduino Menu :
○ File menu : Trong file menu chúng ta quan tâm tới mục Examples đây là
nơi chứa code mẫu ví dụ như: cách sử dụng các chân digital, analog,
sensor.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 62


CHƯƠNG 4. THI CÔNG HỆ THỐNG

○ Sketch menu :
■ Verify/ Compile : chức năng kiểm tra lỗi code.
■ Show Sketch Folder : hiển thị nơi code được lưu.
■ Add File : thêm vào một Tab code mới.
■ Include Library : thêm thư viện cho IDE.
- Cài đặt driver:
Để máy tính và boad arduino giao tiếp được với nhau ta phải cài driver, đầu tiên ta
chạy file arduino-1.8.5-windows\arduino-1.8.5\drivers\dpinst-amd64 từ thư mục giải
nén. Cửa sổ “Device Driver Installation Wizard” hiện ra, ta chọn Next để tiếp tục.

Hình 4.36: Cửa sổ tính hành cài đặt Driver Arduino.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 63


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Quá trình cài đặt mất khoảng 10s sau đó ta bấm “Finish” để hoàn tất.

Hình 4.37: Cửa sổ hoàn thành quá trình cài đặt Driver Arduino.

- Thêm thư viện cho Arduino:

Hình 4.38: Thêm thư viện cho Arduino.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 64


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Vào Sketch → Include Library → Manage Libraries.. sau đó gõ vào thanh tìm
kiếm thư viện cần cài đặt và nhấn Install ở góc phải.

Hình 4.39: Cửa sổ Library Manager.

Sau khi cài thành công thư viện ta sẽ thấy chữ INSTALLED như trên hình.

Với yêu cầu điều khiển đã nêu như ở trên ta thiết lập được lưu đồ hệ thống như sau:

Hình 4.40: Lưu đồ điều khiển của vi điều khiển.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 65


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Ta sử dụng vi điều khiển để đọc dữ liệu từ firebase thông qua mạng wifi nên
cần phải khai báo hai thư viện liên quan.

#include <ESP8266WiFi.h>
#include <FirebaseArduino.h>
Các ngõ ra được sử dụng của của vi điều khiển và các biến sẽ được định nghĩa
và khai báo như sau:

#define DEN1 D4
#define DEN2 D3
#define DEN3 D2
#define BELL D1
String IDden1 = "den11";
String IDden2 = "den12";
String IDden3 = "den13";
String IDbell = "bell";
int onlyt1=1,onlys1=1;
int onlyt2=1,onlys2=1;
int onlyt3=1,onlys3=1;
int onlyt4=1,onlys4=1;
Các ngõ vào ra D4, D3, D2, D1 lần được định nghĩa trong trương trình là
DEN1, DEN2, DEN3 và BELL. Và khai báo các chuỗi các biến sử dụng..

Tiếp theo đó hàm void setup() sẽ được gọi một lần duy nhất để thiết lập các giá
trị ban đầu, rồi đến hàm void loop() sẽ được lặp đi lặp lại cho đến khi ngừng cấp điện
hoặc reset.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 66


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Lưu đồ xử lý hàm void setup().

Hình 4.41: Lưu đồ xử lý hàm void setup().

Chương trình hàm void setup():

void setup() {
pinMode(DEN1, OUTPUT);
pinMode(DEN2, OUTPUT);
pinMode(DEN3, OUTPUT);
pinMode(BELL, OUTPUT);

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 67


CHƯƠNG 4. THI CÔNG HỆ THỐNG

WiFi.mode(WIFI_OFF);
delay(50);
Serial.begin(115200);
delay(10);
setupWifi();
setupFirebase();
}
DEN1, DEN2, DEN3, BELL là các thiết bị mà ta sẽ điều khiển nên phải khai
báo là ngõ ra. Sử dụng Serial với tốc độ baud bằng 115200 để kết nối hiển thị lên máy
tính các thông tin tiến trình mà ta muốn giúp tiện theo dõi trong quá trình build
chương trình.

Kết nối wifi cho ESP: Phải đảm bảo đã khai báo thư viện wifi như bên trên đã
nêu. Trong hàm setupWifi thêm vào dòng lệnh sau :

WiFi.begin(wifiName, wifiPass);
Serial.println("Hey i 'm connecting...");
while (WiFi.status() != WL_CONNECTED) {
Serial.println(".");
delay(500);
Khởi động wifi với wifiName và wifiPass lần lượt là địa chỉ SSID và mật khẩu
wifi mà ta muốn kết nối. Sau đó in ra màn hình thông báo kết nối, in kí tự dấu chấm
cho đến khi kết nối thành công.

Kết nối esp8266 với firebase:

Trước tiên ta đảm bảo rằng thư viện đã được thêm.

#include <ESP8266WiFi.h>
Tiếp theo ta thiết đặt kết nối Firebase trong chương trình Arduino bằng các lệnh:

#define firebaseURl "android-vanba.firebaseio.com"


#define authCode "0a4VRqqXeo7r9BaWJ3beDMbJy1w00gwVYcQrf8hf"

void setupFirebase() {
Firebase.begin(firebaseURl, authCode);
}
Trong hàm setupFirebas(): Ta có lệnh Firebase.begin(firebaseURl, authCode)
để khởi tạo esp với dữ liệu thông tin trong tài khoản firebase đã tạo.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 68


CHƯƠNG 4. THI CÔNG HỆ THỐNG

firebaseURl: Máy chủ lưu trữ database firebase của bạn, trong ứng dụng này là:
android-vanba.firebaseio.com. Bạn lấy địa trên tại giao diện Firebase như hình dưới.

Hình 4.42: Giao diện Database.

authCode: Đây là mã riêng của bạn, các bước lấy mã như hình dưới:

Hình 4.43: Lấy authCode của Firebase.

Hàm void loop() sẽ lặp đi lặp lại với hàm getData() bên trong. Hàm getData
chính là nơi đọc dữ liệu firebase về để điều khiển ngõ ra. Dữ liệu đọc về lần lượt tại
các nhánh đích là IDden1, IDden2, IDden3, IDbell. Quy trình đọc dữ liệu và xử lý tại
các nhánh là như nhau, nhóm sẽ trình bày chi tiết lưu đồ xử lý tại nhánh đích là
IDden1.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 69


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Hình 4.44: Lưu đồ hàm voidloop().

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 70


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Chương trình đọc dữ liệu về từ IDden1 xử lý điều khiển ngõ ra:

FirebaseObject object = Firebase.get(IDden1);


String trangthai = object.getString("trangthai");
Serial.println("TRANG THAI DEN: ");
Serial.println(trangthai);

if(trangthai!="\0")
{
if(trangthai=="sang")

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 71


CHƯƠNG 4. THI CÔNG HỆ THỐNG

{ if(onlys1==1)
{
Firebase.setString(IDden1+"/TT","sang");
onlys1=0;
onlyt1=1;
};
digitalWrite(DEN1,LOW);
}else
{
if(onlyt1==1)
{
Firebase.setString(IDden1+"/TT","tat");
onlyt1=0;
onlys1=1;
};
digitalWrite(DEN1,HIGH);
}
}

Bắt đầu ta chọn nhánh đích làm việc từ firebase ở đây là IDden1 mà trong phần
định nghĩa ta đã định nghĩa nó là “den11”. Sau đó ta sẽ giá trị nhánh “trang thai”
thuộc IDden1. Giao diện thực tế firebase như sau:

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 72


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Hình 4.45: Giao diện firebase thực tế.

Ta chỉ xử lý tiếp khi giá trị trạng thái khác rỗng. Ta sẽ có hai biến onlys1 và
onlyt1 là hai biến tương đồng với trạng thái ngõ ra quy định onlys1 bằng 1 đèn sáng,
onlyt1 bằng 1 đèn tắt, hai biến này giúp phản hồi là thiết bị ở trạng thái bật hay tắt. Cụ
thể như sau: Ban đầu ta đã gán onlys1 và onlyt1 bằng 1.

Nếu đọc được trạng thái là “sang” thì sẽ đặt nhánh phản hồi “TT” với giá trị là
“sang” và gán onlys1 bằng 0, onlyt1 bằng 1, để nếu vòng lặp quay lại mà không thay
đổi giá trị đọc về thì ta sẽ không cần phản hồi lại. Sau đó xuất mức thấp ra chân DEN1
cho phép đèn 1 sáng.

Ngược lại nếu đọc được trạng thái khác “sang” thì phương thức xử lý cũng
tương tự như trên, phản hổi “TT” sẽ là “tat”, onlyt1 bằng 0, onlys1 bằng 1. Sau đó
xuất mức cao ra chân DEN1 điề khiển đèn 1 tắt.

4.5 HƯỚNG DẪN SỬ DỤNG, THAO TÁC

Bước 1: Đảm bảo đồng hồ và điện thoại được kết nối với nhau, kết nối wifi,
cấp nguồn cho mạch điều khiển và thiết bị điện. Nếu là lần đầu sử dụng đồng hồ, truy
cập https://www.asus.com/vn/support/FAQ/1009103/ và làm theo hướng dẫn để tiến
hành kết nối 2 thiết bị.

Bước 2: Khởi động các ứng dụng trên điện thoại và đồng hồ từ biểu tượng ứng
dụng.

- Trên giao diện điện thoại, ta mở ứng dụng SOS_FIREBASE .

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 73


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Hình 4.46: Màn hình đầu tiên của ứng dụng.

Sau khi mở ứng dụng ta sẽ thấy giao như trên. Bạn nhập số điện thoại cần gửi
tin nhắn khẩn cấp vào vị trí “Enter the emergency number” sau đó nhấn CONFIRM để
tiếp tục.

Hình 4.47: Màn hình thứ hai của ứng dụng.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 74


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Bây giờ số điện thoại bạn vừa nhập sẽ hiện trên màn hình, bạn chỉ cần nhập
một lần đầu khi khởi động ứng dụng và để ứng dụng luôn chạy. Những thao tác tiếp sẽ
thực hiện trên đồng hồ, nên đến đây thao tác ứng dụng điện thoại coi như xong.

- Mở ứng dụng DONGHO3 trên đồng hồ:

Hình 4.48: Màn hình của ứng dụng trên đồng hồ.

+ Chức năng các button, switch:


L1: Bật tắt đèn 1.

L2: Bật tắt đèn 2.

L3: Bật tắt đèn 3.

: Bật chuông báo khẩn cấp, khi cần sự trợ giúp của người xung
quanh.

: Tắt chuông báo khẩn cấp.

: Gửi tin nhắn với nội dung “ Tôi cần sự giúp đỡ”, thực hiện
cuộc gọi và gửi tọa độ hiện tại tới số điện thoại mặc định đã chọn trước.

Bước 3: Ta có thể truy cập trực tiếp vào địa chỉ https://firebase.google.com/

làm theo hướng dẫn bên dưới để theo dõi trạng thái các thiết bị và điều khiển trực tiếp
tại đây.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 75


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Hình 4.49: Giao diện Firebase.

Tiếp theo ta bấm nút GET STARTED sẽ hiện ra màn hình đăng nhập như sau:

Hình 4.50: Cửa sổ đăng nhập tài khoản Google.

Ta sử dụng tài khoản Gmail đăng ký trước đó để đăng nhập, mở dự án ra và chọn mục
database trong develop.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 76


CHƯƠNG 4. THI CÔNG HỆ THỐNG

Hình 4.51: Giao diện của project trên Firebase.

Khi này giao diện hiện ra như hình dưới, bạn tương tác điều khiển trực tiếp tại đây.

Hình 4.52: Giao diện làm việc của Database.

Trạng thái chuông được hiển thị tại bell--trangthai: “tat”, chữ tat ở đây có
nghĩa là chuông đang tắt. Để bật chuông bạn thay chữ tat bằng chữ bat nhập từ bàn
phím. Tương tự cho trạng thái den11, den12 và den13. Trạng thái tin nhắn và cuộc

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 77


CHƯƠNG 4. THI CÔNG HỆ THỐNG

gọi khẩn cấp được hiển thị tại SENT: “no”, chữ no có nghĩa là chưa cho phép kích
hoạt tin nhắn và cuộc gọi khẩn cấp, để kích hoạt ta thay chữ no bằng chữ yes. TT là
trạng thái phản hồi của phần cứng.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 78


CHƯƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ

Chương 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ

5.1 KẾT QUẢ


Sau một thời gian một tìm hiểu, nghiên cứu các tài liệu chuyên ngành, tìm hiểu thêm
qua mạng Internet, tổng hợp lại các kiến thức đã được học trong suốt 4 năm cũng như
được sự hướng dẫn của thầy GVHD Th.S Nguyễn Văn Hiệp. Nhóm chúng em cũng cơ
bản hoàn thành được đồ án tốt nghiệp với đề tài “HỆ THỐNG ỨNG DỤNG WEAR OS
TRONG VIỆC HỖ TRỢ NGƯỜI GIÀ”.
Sau đề tài đồ án này, nhóm em cũng đã nghiên cứu và tích lũy được thêm nhiều
hiểu biết, kiến thức mới như:
- Biết cách cài đặt, sử dụng phần mềm Android Studio xây dựng các ứng dụng
trên đồng hồ và điện thoại thông minh. Sử dụng được các hàm cơ bản, các
dịch vụ của Google trong lập trình ứng dụng android.
- Tìm hiểu và sử dụng được Firebase, theo dõi cũng như kiểm soát được cơ sở
dữ liệu database. Kết nối Firebase với ứng dụng android cho phép gửi và nhận
dữ liệu dữ liệu.
- Biết cách cài đặt, thêm thư viện, tạo được một chương trình điều khiển cơ bản
với phần mềm Arduino IDE, liên kết được chương trình điều khiển và
firebase.
- Hiểu được cấu tạo, chức năng, chuẩn kết nối, giao tiếp của Moudle ESP8266
NodeMCU Mini D1 để qua đó hiểu được hơn về lĩnh vực IoTs đang rất có
tiềm năng phát triển.
- Hiểu được cách hoạt động của Relay, tính toán được dòng cần thiết để kích
hoạt relay.
Sau quá trình nghiên cứu, thi công đề tài “HỆ THỐNG ỨNG DỤNG WEAR OS
TRONG VIỆC HỖ TRỢ NGƯỜI GIÀ” của nhóm đã hoàn thành và thực hiện được tính
năng sau:

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 79


CHƯƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ

Giao điện điều khiển chính từ mặt đồng hồ:

Hình 5.1: Hình ảnh thực tế đồng hồ.


Khi ta nhấn nút SOS kích hoạt dịch vụ khẩn cấp:

Hình 5.2: Giao diện khi gửi tin nhắn, nội dung tin nhắn.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 80


CHƯƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ

Sau đó khoảng 5s sễ tự động tạo cuộc gọi.

Hình 5.3: Cuộc gọi tự tạo.


Khi chưa cấp nguồn cho mạch điều khiển, mạch điều khiển sẽ không hoạt động,
khi điều khiển nhánh phản hồi “TT” sẽ không thay đổi.

Hình 5.4: Điều khiển khi chưa cấp nguồn mạch điều khiển đèn, chuông.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 81


CHƯƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ

Khi mạch điều khiển được cấp nguồn nhánh phản hồi sẽ thay đổi theo trạng thái
phần cứng.

Hình 5.5: Điều khiển khi đã cấp nguồn mạch điều khiển đèn, chuông.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 82


CHƯƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ

Hình ảnh thiết bị khi tắt:

Hình 5.6: Thiết bị khi tắt.

Hình ảnh thiết bị khi bật:

Hình 5.7: Thiết bị khi bật.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 83


CHƯƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ

5.2 NHẬN XÉT VÀ ĐÁNH GIÁ:


Hệ thống hỗ trợ và theo dõi sức khỏe người già đáp ứng được các nội dung đặt
đã được đặt ra ở chương 1:
 Hệ thống có tính thực tế và độ an toàn cao, chi phí xây dựng hệ thống ở mức
trung bình, chi phí vận hành hệ thống tương đối rẻ, có thể áp dụng được trong
nhiều môi trường khác nhau ngoài môi trường nhà ở.
 Hệ thống cập nhật các trạng thái thiết bị lên firebase với thời gian thực, với độ
chính xác cao, ở bất cứ đâu và bất cứ khi nào, khi người dùng cần sử dụng thiết
bị chiếu sáng ở khu vực nào có thể dùng đồng hồ thông minh để điều khiển, gọi
trợ giúp khi có người ở nhà bằng chuông cảnh báo hoặc gửi tin nhắn cầu cứu,
thực hiện cuộc gọi cầu cứu ngay lập tức trong những trường hợp nguy hiểm;
ngoài ra những người thân trong gia đình có thể cập nhật được tình hình các
thiết bị đang được sử dụng, biết được chính xác vị trí của người sử dụng trong
trường hợp khẩn cấp, tăng khả năng trợ giúp kịp thời khi người sử dụng gặp
nạn.
 Do mạch điều khiển được thiết kế đơn giản, nhỏ gọn tiện lợi cho việc di
chuyển, có thể dễ dàng thay thế linh kiện.
 Thiết bị đồng hồ thông minh có thể tự kết nối vào những nguồn phát wifi đã
được kết nối trước đó mà không cần thông qua thiết bị di động.
 Bên cạnh đó hệ thống còn những hạn chế như:
o Thời gian trễ của hệ thống phụ thuộc vào tốc độ và sự ổn định của đường
truyền internet.
o Mạch điều khiển phải đặt càng gần nguồn phát wifi càng tốt, tối đa là 5m
để đảm bảo việc kết nối và tốc độ đường truyền được ổn định.
o Đối với đồng hồ thông minh, khi kết nối vào những nơi có nguồn phát
wifi chưa từng được kết nối trước đó, bắt buộc phải có thiết bị điện thoại
thông minh đi kèm để tiến hành việc kết nối wifi cho đồng hồ thông
minh.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 84


CHƯƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ

o Bắt buộc phải kết nối Bluetooth với điện thoại để thực hiện việc chia sẻ
dịch vụ GPS. Bán kính kết nối của Bluetooth giữa điện thoại và đồng hồ
thông minh là khoảng 10m.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 85


CHƯƠNG 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

Chương 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

6.1 KẾT LUẬN


Dựa trên những kết quả thực tế thu được, nhóm em đưa đến kết luận rằng “HỆ
THỐNG ỨNG DỤNG WEAR OS TRONG VIỆC HỖ TRỢ NGƯỜI GIÀ” đã đạt
được những mục tiêu ban đầu đề ra như: sử dụng đồng hồ hệ điều hành Wear OS điều
khiển các thiết bị đèn, chuông báo động, gửi tin nhắn và thực hiện cuộc gọi khẩn cấp,
đồng thời gửi vị trí hiện tại đến số điện thoại được chỉ định thông qua firebase với
thời gian thực; sử dụng các thiết bị có kết nối mạng như: máy tính bàn, laptop, điện
thoại thông minh để điều khiển các thiết bị đèn, chuông bằng cách truy cập trực tiếp
vào websites https://firebase.google.com/ . Hệ thống có tính an toàn cao, nhỏ gọn, có
thể ứng dụng hệ thống trong nhiều không gian khác nhau với nhiều mục đích khác
nhau.
Bên cạnh đó, hệ thống cũng có những mặt hạn chế riêng, vì việc điều khiển hệ
thống phụ thuộc vào kết nối mạng không dây, nên còn những vấn đề về đường truyền
tín hiệu không thể tránh khỏi như: kết nối mạng wifi yếu dẫn đến việc thiết bị nhận
tín hiệu điều khiển xuất hiện thời gian trễ, đường truyền mạng bị ngắt đột ngột và các
vấn đề khác liên quan đến đường truyền mạng; ngoài ra mạch điều khiểu cần phải
càng gần nguồn phát wifi càng tốt để đảm bảo tính ổn định của hệ thống.

6.2 HƯỚNG PHÁT TRIỂN


Hệ thống hỗ trợ người già có thể đọc được những cảm biến có sẵn trong đồng
hồ thông minh như cảm biến gia tốc, do đó có thể hướng tới mục đích dự báo được
tình trạng sức khỏe của người dùng thông qua cách đọc nhịp tim; hoặc có thể đưa ra
những cảnh báo về việc té ngã, gặp vấn đề về việc di chuyển của người dùng; hay
việc thống kê số bước chân đã đi được qua các ngày để đưa ra những đánh giá về tình
trạng sức khỏe hiện tại cũng như trong tương lai của người dùng với thời gian thực.
Phát triển thêm tính năng nhắc nhở người già các công việc cần làm, giờ
uống thuốc, tập luyện thông qua micro, hệ thống âm màn hình hiển thị của đồng hồ.
Các lời nhắc này có thề do người già tự tạo hoặc người thân, bác sĩ tạo.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 86
TÀI LIỆU THAM KHẢO

TÀI LIỆU THAM KHẢO

Tài liệu tham khảo

[1] Nguyễn Văn Hiệp, “LẬP-TRÌNH-ANDROID.docx”, 2018.

[2] Google Developers, “Firebase Realtime Database”,


https://firebase.google.com/docs/database/#key_capabilities, 2018.

[3] Wikipedia, “Wear OS”, https://vi.wikipedia.org/wiki/Wear_OS, 2018

[4] TechWorm, “Wear OS: Những hướng dẫn cần thiết”,


http://monospace.vn/threads/wear-os-nhung-huong-dan-can-thiet.9658/, 2018.

[5] Wikipedia, “Wi-Fi”, https://vi.wikipedia.org/wiki/Wi-Fi, 2018.

[6] Wikipedia, “Bluetooth”, https://vi.wikipedia.org/wiki/Bluetooth, 2018.

[7] Vũ An, “Lịch sử hệ điều hành Android qua các phiên bản”,
https://quantrimang.com/lich-su-he-dieu-hanh-android-qua-cac-phien-ban-147772 ,
2018.

[8] Wikipedia, “Android (hệ điều hành)”,


https://vi.wikipedia.org/wiki/Android_(hệ_điều_hành), 2018.

[9] Wikipedia, “Lịch sử các phiên bản Android”,


https://vi.wikipedia.org/wiki/Lịch_sử_các_phiên_bản_Android, 2018.

[10] FabioC, “Step Counter in Android: always on?”,


https://stackoverflow.com/questions/30390148/step-counter-in-android-always-on,
2015.

[11] mengpq, “How to access Call Log in Android Watch?”,


https://stackoverflow.com/questions/34549606/how-to-access-call-log-in-android-
watch, 2016.

[12] Sagar Khan, “Update Location data using android app in firebase database”,
https://stackoverflow.com/questions/42588084/update-location-data-using-android-
app-in-firebase-database, 2017.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP xiii


TÀI LIỆU THAM KHẢO
[13] Google Developers, “Send and receive messages on Wear”,
https://developer.android.com/training/wearables/data-layer/messages, 2018.

[14] Google Developers, “Location”,


https://developer.android.com/reference/android/location/Location, 2018.

[15] Pritom Mazumdar, “Getting GPS location in Android”,


https://stackoverflow.com/questions/44616579/getting-gps-location-in-android, 2017.

[16] Wikipedia, “Arduino”, https://vi.wikipedia.org/wiki/Arduino, 2018.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP xiv


PHỤ LỤC

PHỤ LỤC
Code đồng hồ:
MainActivity.java

package com.example.s46c.dongho3;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.wearable.activity.WearableActivity;
import android.view.View;
import android.widget.CompoundButton;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Button;
import android.widget.Switch;

import com.firebase.client.Firebase;

public class MainActivity extends WearableActivity {

private TextView mTextView;


Switch myswitch1, myswitch2, myswitch3;
ImageButton mybell,offbell;
Button mysent;
Firebase myfirebase;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mTextView = (TextView) findViewById(R.id.text);


mybell = (ImageButton) findViewById(R.id.bell);
mysent = (Button) findViewById(R.id.sent);
offbell = (ImageButton) findViewById(R.id.off);
myswitch1 = (Switch) findViewById(R.id.switch1);
myswitch2 = (Switch) findViewById(R.id.switch2);
myswitch3 = (Switch) findViewById(R.id.switch3);
Firebase.setAndroidContext(this);
myfirebase = new Firebase("https://android-vanba.firebaseio.com");

mysent.setOnClickListener(new View.OnClickListener() {

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP


xv
PHỤ LỤC
@Override
public void onClick(View v) {
myfirebase.child("SENT").setValue("yes");

}
});

mybell.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myfirebase.child("bell").child("trangthai").setValue("sang");

}
});

offbell.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myfirebase.child("bell").child("trangthai").setValue("tat");

}
});

myswitch1.setOnCheckedChangeListener(new
CompoundButton.OnCheckedChangeListener(){

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean
isChecked) {
if(isChecked)
{myfirebase.child("den11").child("trangthai").setValue("sang");}
else {myfirebase.child("den11").child("trangthai").setValue("tat");}
}
});

myswitch2.setOnCheckedChangeListener(new
CompoundButton.OnCheckedChangeListener(){

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean
isChecked) {
if(isChecked)
{myfirebase.child("den12").child("trangthai").setValue("sang");}
else {myfirebase.child("den12").child("trangthai").setValue("tat");}

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP


xvi
PHỤ LỤC
}
});

myswitch3.setOnCheckedChangeListener(new
CompoundButton.OnCheckedChangeListener(){

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean
isChecked) {
if(isChecked)
{myfirebase.child("den13").child("trangthai").setValue("sang");}
else {myfirebase.child("den13").child("trangthai").setValue("tat");}
}
});

setAmbientEnabled();
}

Activity_main.xml

<?xml version="1.0" encoding="utf-8"?>


<android.support.wear.widget.BoxInsetLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/dark_grey"
android:padding="@dimen/box_inset_layout_padding"
tools:context=".MainActivity"
tools:deviceIds="wear">

<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@dimen/inner_frame_layout_padding"
app:boxedEdges="all">

<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name" />

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP


xvii
PHỤ LỤC

<Switch
android:id="@+id/switch1"
android:layout_width="wrap_content"
android:layout_height="20dp"
android:layout_marginTop="30dp"
android:text="L1" />

<Switch
android:id="@+id/switch2"
android:layout_width="wrap_content"
android:layout_height="20dp"
android:layout_marginTop="70dp"
android:text="L2" />
<Switch
android:id="@+id/switch3"
android:layout_width="wrap_content"
android:layout_height="20dp"
android:layout_marginTop="110dp"
android:text="L3" />

<ImageButton
android:id="@+id/bell"
android:layout_width="87dp"
android:layout_height="58dp"
android:layout_gravity="right"

android:background="@drawable/button_img"
android:scaleType="fitCenter"
android:src="@drawable/chuong_on"

android:text="Bell" />

<ImageButton
android:id="@+id/off"
android:layout_width="87dp"
android:layout_height="58dp"
android:layout_gravity="right"
android:layout_marginTop="60dp"

android:background="@drawable/button_img"
android:src="@drawable/chuong_off"
android:scaleType="fitCenter"
android:text="OFF" />

<Button
android:id="@+id/sent"

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP


xviii
PHỤ LỤC
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_marginTop="125dp"
android:background="@drawable/sos_img"
android:text="SOS" />

<DigitalClock
android:id="@+id/digitalClock1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="150dp"
android:text="DigitalClock" />

</FrameLayout>
</android.support.wear.widget.BoxInsetLayout>

androidManifest.xml

<?xml version="1.0" encoding="utf-8"?>


<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.s46c.dongho3">

<uses-feature android:name="android.hardware.type.watch" />

<uses-permission android:name="android.permission.WAKE_LOCK" />

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@android:style/Theme.DeviceDefault">
<uses-library
android:name="com.google.android.wearable"
android:required="true" />

<meta-data
android:name="com.google.android.wearable.standalone"
android:value="true" />

<activity
android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP


xix
PHỤ LỤC

<category android:name="android.intent.category.LAUNCHER" />


</intent-filter>
</activity>
</application>

</manifest>

Build.gradle(App)

apply plugin: 'com.android.application'

android {
compileSdkVersion 27
defaultConfig {
applicationId "com.example.s46c.dongho3"
minSdkVersion 25
targetSdkVersion 27
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-
rules.pro'
}
}
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.google.android.support:wearable:2.3.0'
implementation 'com.google.android.gms:play-services-wearable:12.0.1'
implementation 'com.android.support:percent:27.1.0'
implementation 'com.android.support:support-v4:27.1.0'
implementation 'com.android.support:recyclerview-v7:27.1.0'
implementation 'com.android.support:wear:27.1.0'
compileOnly 'com.google.android.wearable:wearable:2.3.0'
compile 'com.google.firebase:firebase-database:12.0.1'
compile 'com.google.firebase:firebase-core:12.0.1'
compile 'com.firebase:firebase-client-android:2.5.2'

}
apply plugin: 'com.google.gms.google-services'

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP


xx
PHỤ LỤC

Code điện thoại:


startActivity:
package com.example.s46c.sos_firebase;

import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class startActivity extends AppCompatActivity {


Button btn;
private EditText edt_sdt;
public static final String SDT = "SDT";

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
btn = findViewById(R.id.btnstart);
edt_sdt = findViewById(R.id.edt_nhap);

btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String sdt = edt_sdt.getText().toString();

byExtras(sdt);
}
});
}

public void byExtras(String sdt) {


Intent intent = new Intent(startActivity.this, MainActivity.class);
intent.putExtra(SDT, sdt);
startActivity(intent);
finish();
}
}

MainActivity:
package com.example.s46c.sos_firebase;

import android.content.ActivityNotFoundException;

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP


xxi
PHỤ LỤC
import android.content.Intent;
import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.net.Uri;
import android.os.Handler;
import android.provider.Settings;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import com.firebase.client.DataSnapshot;
import com.firebase.client.Firebase;
import com.firebase.client.FirebaseError;
import com.firebase.client.ValueEventListener;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

public class MainActivity extends AppCompatActivity {

Firebase myfirebase;
private LocationManager locationManager;
private LocationListener locationListener;
private TextView TVSDT;
private DatabaseReference mData;

private String message ;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

TVSDT = (TextView) findViewById(R.id.tvsdt);

Intent intent = getIntent(); //lay du lieu tu startActivity qua

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP


xxii
PHỤ LỤC
final String sdt = intent.getStringExtra(startActivity.SDT);
TVSDT.setText(sdt);

Firebase.setAndroidContext(this);
myfirebase = new Firebase("https://android-vanba.firebaseio.com");
mData = FirebaseDatabase.getInstance().getReference();

location();

myfirebase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {

if(((String)dataSnapshot.child("toa do").getValue()) != null){


String toado = dataSnapshot.child("toa do").getValue().toString();

message = "Tôi cần sự giúp đỡ! Tôi đang ở vị trí"+toado;


}

if (((String) dataSnapshot.child("SENT").getValue()).equals("yes")) {
sendSMSMessage(sdt);
Handler j = new Handler();
j.postDelayed(new Runnable() {
@Override
public void run() {
myfirebase.child("SENT").setValue("no");
call(sdt);
}
}, 5000);

}
}

@Override
public void onCancelled(FirebaseError firebaseError) {
Toast.makeText(getApplicationContext(), "Error",
Toast.LENGTH_LONG).show();
}
});
}

private void sendSMSMessage(String sdt) {


Log.i("Send SMS", "");
String phoneNo = sdt;

try {
SmsManager smsManager = SmsManager.getDefault();

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP


xxiii
PHỤ LỤC
smsManager.sendTextMessage(phoneNo, null, message, null, null);
Toast.makeText(getApplicationContext(), "SMS sent.",
Toast.LENGTH_LONG).show();
} catch (Exception e) {
Toast.makeText(getApplicationContext(), "SMS faild, please try again.",
Toast.LENGTH_LONG).
show();
e.printStackTrace();
}
}

private void call(String sdt) {


try {
String phoneNumber = sdt;

Intent it = new Intent(Intent.ACTION_CALL);


it.setData(Uri.parse("tel:" + phoneNumber));
startActivity(it);
} catch (ActivityNotFoundException e) {
// Exceptions
}
}

private void location() {


locationManager = (LocationManager)
getSystemService(LOCATION_SERVICE);
locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {

myfirebase.child("toa do").setValue((+location.getLatitude() + " ," +


location.getLongitude()));
}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {

@Override
public void onProviderEnabled(String provider) {

@Override
public void onProviderDisabled(String provider) {
Intent intent = new

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP


xxiv
PHỤ LỤC
Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent);
}
};

if (ActivityCompat.checkSelfPermission(this,
android.Manifest.permission.ACCESS_FINE_LOCATION) !=
PackageManager.PERMISSION_GRANTED &&
ActivityCompat.checkSelfPermission(this,
android.Manifest.permission.ACCESS_COARSE_LOCATION) !=
PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[]
permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the
documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
locationManager.requestLocationUpdates("gps", 60000, 0, locationListener);
}

Activity_start.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_margin="16dp"
android:orientation="vertical"
android:gravity="center"
android:id="@+id/activity_mian"
android:layout_width="match_parent"
android:layout_height="match_parent">

<EditText
android:id="@+id/edt_nhap"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="Enter the emergency number"/>
<Button

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP


xxv
PHỤ LỤC
android:id="@+id/btnstart"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="confirm"
android:layout_gravity="center"
/>
</LinearLayout>

Activity_main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"

android:layout_margin="16dp"
android:orientation="vertical"
android:id="@+id/activity_mian"
android:layout_width="match_parent"
android:layout_height="match_parent"

>

<TextView
android:gravity="center"
android:text="SDT:"
android:textSize="20sp"
android:textStyle="bold"
android:id="@+id/tvsdt"
android:layout_width="match_parent"
android:layout_height="50dp"

/>

<TextView
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SOS is running...."

/>

</LinearLayout>

Androidmanifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.s46c.sos_firebase">

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP


xxvi
PHỤ LỤC
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission
android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission
android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".startActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />


</intent-filter>
</activity>
<activity android:name=".MainActivity"/>
</application>

</manifest>

Build.gradle(App):
apply plugin: 'com.android.application'

android {
compileSdkVersion 27
defaultConfig {
applicationId "com.example.s46c.sos_firebase"
minSdkVersion 22
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner
"android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-
rules.pro'
}

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP


xxvii
PHỤ LỤC
}
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
implementation 'com.google.firebase:firebase-database:11.8.0'
compile 'com.google.firebase:firebase-core:11.8.0'
compile 'com.firebase:firebase-client-android:2.5.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-
core:3.0.2'
}

apply plugin: 'com.google.gms.google-services'

Code vi điều khiển:


#include <ESP8266WiFi.h>
#include <FirebaseArduino.h>
#define wifiName "KTX SV" //Đây là SSID của mạng wifi bạn muốn ESP kết nối tới
#define wifiPass "67896789" //Đây là password
#define DEN1 D4
#define DEN2 D3
#define DEN3 D2
#define BELL D1
String IDden1 = "den11";
String IDden2 = "den12";
String IDden3 = "den13";
String IDbell = "bell";
#define firebaseURl "android-vanba.firebaseio.com" //https://android-
vanba.firebaseio.com/
#define authCode "0a4VRqqXeo7r9BaWJ3beDMbJy1w00gwVYcQrf8hf"

int onlyt1=1,onlys1=1;
int onlyt2=1,onlys2=1;
int onlyt3=1,onlys3=1;
int onlyt4=1,onlys4=1;

void setupFirebase() {
Firebase.begin(firebaseURl, authCode);
}
void setupWifi() {
//kết nối wifi với tên và mật khẩu từ hai mảng đã lưu

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP


xxviii
PHỤ LỤC
WiFi.begin(wifiName, wifiPass);
Serial.println("Hey i 'm connecting...");
while (WiFi.status() != WL_CONNECTED) {
Serial.println(".");
delay(500);
}
Serial.println();
Serial.println("I 'm connected and my IP address: ");
Serial.println(WiFi.localIP());
}
void setup() {
pinMode(DEN1, OUTPUT);
pinMode(DEN2, OUTPUT);
pinMode(DEN3, OUTPUT);
pinMode(BELL, OUTPUT);

WiFi.mode(WIFI_OFF);
delay(50);
Serial.begin(115200);
delay(10);
setupWifi();
setupFirebase();
}
void getData() {

FirebaseObject object = Firebase.get(IDden1);


String trangthai = object.getString("trangthai");
Serial.println("TRANG THAI DEN: ");
Serial.println(trangthai);

if(trangthai!="\0")
{
if(trangthai=="sang")
{ if(onlys1==1)
{
Firebase.setString(IDden1+"/TT","sang");
onlys1=0;
onlyt1=1;
};
digitalWrite(DEN1,LOW);
}else
{
if(onlyt1==1)
{
Firebase.setString(IDden1+"/TT","tat");
onlyt1=0;

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP


xxix
PHỤ LỤC
onlys1=1;
};
digitalWrite(DEN1,HIGH);
}
}

FirebaseObject object2 = Firebase.get(IDden2);


String trangthai2 = object2.getString("trangthai");
Serial.println("TRANG THAI DEN 2: ");
Serial.println(trangthai2);

if(trangthai2!="\0")
{
if(trangthai2=="sang")
{ if(onlys2==1)
{
Firebase.setString(IDden2+"/TT","sang");
onlys2=0;
onlyt2=1;
};
digitalWrite(DEN2,LOW);
}else
{
if(onlyt2==1)
{
Firebase.setString(IDden2+"/TT","tat");
onlyt2=0;
onlys2=1;
};
digitalWrite(DEN2,HIGH);
}
}

FirebaseObject object3 = Firebase.get(IDden3);


String trangthai3 = object3.getString("trangthai");
Serial.println("TRANG THAI DEN 3: ");
Serial.println(trangthai3);

if(trangthai3!="\0")
{
if(trangthai3=="sang")
{ if(onlys3==1)
{
Firebase.setString(IDden3+"/TT","sang");
onlys3=0;

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP


xxx
PHỤ LỤC
onlyt3=1;
};
digitalWrite(DEN3,LOW);
}else
{
if(onlyt3==1)
{
Firebase.setString(IDden3+"/TT","tat");
onlyt3=0;
onlys3=1;
};
digitalWrite(DEN3,HIGH);
}
}

FirebaseObject object4 = Firebase.get(IDbell);


String trangthai4 = object4.getString("trangthai");
Serial.println("TRANG THAI BELL :");
Serial.println(trangthai4);

if(trangthai4!="\0")
{
if(trangthai4=="sang")
{ if(onlys4==1)
{
Firebase.setString(IDbell+"/TT","sang");
onlys4=0;
onlyt4=1;
};
digitalWrite(BELL,LOW);
}else
{
if(onlyt4==1)
{
Firebase.setString(IDbell+"/TT","tat");
onlyt4=0;
onlys4=1;
};
digitalWrite(BELL,HIGH);
}
}
}
void loop() {
getData();
}

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP


xxxi

You might also like