Professional Documents
Culture Documents
BC To-08 Do Thu Ha-B20dccn212
BC To-08 Do Thu Ha-B20dccn212
Hà Nội, 2023
1
MỤC LỤC
I. Lập trình và giải thuật .................................................................................................. 4
1.1. Số bài đã làm được: 53 ......................................................................................................................4
1.2. Các dạng bài đã làm ..........................................................................................................................4
1.2.1. Trước đó ......................................................................................................................................4
1.2.2. Tuần này .....................................................................................................................................4
1.2.3. Thuật toán thầy giao ..................................................................................................................4
1.3. Cách làm từng nhóm bài ..................................................................................................................6
1.3.1. Tìm kiếm .....................................................................................................................................6
1.3.2. Sắp xếp ........................................................................................................................................7
1.3.3. Danh sách liên kết đơn .............................................................................................................15
1.3.4. Sinh/Quay lui ............................................................................................................................16
1.3.5. Ngăn xếp ....................................................................................................................................17
1.3.6. Hàng đợi ....................................................................................................................................18
1.3.7. Quy hoạch động ........................................................................................................................19
II. Cơ sở dữ liệu quản lý sân bóng ................................................................................. 20
2.1. Giới thiệu bài toán ...........................................................................................................................20
2.2. Mục đích thiết kế cơ sở dữ liệu ......................................................................................................21
2.3. Đối tượng sử dụng ...........................................................................................................................21
2.4. Phân tích thiết kế cơ sở dữ liệu ......................................................................................................21
2.4.1. Mô tả ứng dụng của hệ CSDL .................................................................................................21
2.4.2. Các yêu cầu về dữ liệu cần lưu trữ .........................................................................................22
2.4.3. Các chức năng của CSDL ........................................................................................................22
2.5. Mô hình quan hệ..............................................................................................................................27
2.5.1. Mô hình quan hệ.......................................................................................................................27
2.5.2. Mô tả các quan hệ.....................................................................................................................28
2.5.3. Mô tả thuộc tính .......................................................................................................................30
2.5.4. Mô hình ER ...............................................................................................................................33
III. Máy tính và điều khiển ............................................................................................. 34
3.1 Tìm hiểu về máy chủ và tủ đĩa ........................................................................................................34
3.2 Tìm hiểu và nghiên cứu cấu trúc của máy chủ HP ProLiant DL380 Gen 10 .............................36
3.2.1. Tổng quan về máy chủ HP ProLiant DL380 Gen 10 ............................................................36
3.2.2. Cấu trúc HP ProLiant DL380 Gen10 .....................................................................................38
1
3.3 Tìm hiểu về tủ đĩa HP MSA 2050 ...................................................................................................42
3.3.1. Giới thiệu về tủ đĩa HP MSA 2050..........................................................................................42
Tủ đĩa HP MSA 2050 là một thiết bị lưu trữ dữ liệu hiệu suất cao được thiết kế để đáp ứng nhu cầu
lưu trữ và quản lý dữ liệu của doanh nghiệp. Thiết bị này có thể được sử dụng cho các mục đích lưu
trữ khác nhau, từ lưu trữ dữ liệu cho doanh nghiệp, backup dữ liệu, lưu trữ video, và nhiều hơn nữa.
Tủ đĩa HP MSA 2050 cung cấp tính năng lưu trữ hiệu quả, bảo mật dữ liệu, khả năng mở rộng và độ
tin cậy cao ............................................................................................................................................42
3.3.2. Cấu trúc và thành phần của tủ đĩa HP MSA 2050 ............................................................42
3.3.3. Tính năng của tủ đĩa HP MSA 2050 .......................................................................................42
3.4 Kết nối máy chủ HP ProLiant DL380 Gen10 với tủ đĩa HP MSA 2050......................................43
a. Giới thiệu..........................................................................................................................................43
b. Các bước kết nối...............................................................................................................................43
c. Kết luận ............................................................................................................................................44
3.5 Tìm hiểu về ảo hóa ...........................................................................................................................45
a. Khái niệm .........................................................................................................................................45
b.Các loại ảo hóa .................................................................................................................................45
c. Các công nghệ ảo hóa phổ biến hiện nay .........................................................................................46
d. Lợi ích của việc sử dụng ảo hóa.......................................................................................................47
e. Khó khăn và giải pháp khi triển khai ảo hóa ...................................................................................48
3.6 Giới thiệu chung về hệ thống lưu trữ, microservice và monolithic..............................................49
3.7 Tìm hiểu về ESP8266 NodeMCU và lập trình đơn giản với Arduino IDE .................................52
3.7.1 Giới thiệu về ESP8266 NodeMCU. ............................................................................................52
3.7.2 Cài đặt Arduino IDE. ..................................................................................................................52
3.7.3 Cài đặt thư viện ESP8266 trong Arduino IDE. ...........................................................................53
3.7.4 Lập trình đơn giản với ESP8266 NodeMCU...............................................................................53
3.8 Tìm hiểu về các cơ chế chấp hành ..................................................................................................55
3.8.1 Các cơ cấu chấp hành. .................................................................................................................55
3.8.2 Lập trình và thực hành.................................................................................................................56
3.9 Tìm hiểu về Timer và lập trình ngắt Timer với ESP8266 NodeMCU. ........................................57
3.9.1 Giới thiệu.....................................................................................................................................57
3.9.2 Timer ...........................................................................................................................................57
3.9.3 Lập trình timer trong ESP8266 NODEMCU ..............................................................................57
3.9.4 Lập trình ngắt timer ....................................................................................................................58
3.9.5 Ứng dụng của Timer và lập trình ngắt Timer với ESP8266 NodeMCU .....................................59
3.10 Thiết kế hệ thống giám sát nhiệt độ và ẩm bằng ESP8266 NODEMCU + BLYNK + DHT1160
3.10.1.Cơ sở lý thuyết về module wifi ESP8266.......................................................................................60
2
3.10.1.1.Giới thiệu về ESP8266 ...........................................................................................................60
3.10.1.2.Cấu tạo của NODEMCU ESP8266 ........................................................................................60
3.10.1.3.Tính năng của NODEMCU ESP8266 ....................................................................................61
3.10.1.4. Đặc điểm cảm biến DHT11 ...................................................................................................62
3.10.1.5. Cơ sở lý thuyết về APP Blynk ................................................................................................64
3.10.2. Phân tích thiết kế hệ thống ...........................................................................................................66
3.10.3 Mô phỏng và xây dựng hệ thống thực nghiệm ..............................................................................67
3
I. Lập trình và giải thuật
1.1. Số bài đã làm được: 53
1.2. Các dạng bài đã làm
1.2.1. Trước đó
- Tìm kiếm
- Thuật toán sắp xếp
- Danh sách liên kết đơn
- Sinh/quay lui
1.2.2. Tuần này
- Các dạng bài ngăn xếp, hàng đợi, quy hoạch động
1.2.3. Thuật toán thầy giao
Có một bài toán về chuỗi nhị phân như sau: Hãy viết chương trình tạo ra bộ mã nhị
phân Gray N bít.
Bài làm:
4
#include <iostream>
#include <vector>
using namespace std;
vector<string> gray_code(int n) {
vector<string> res;
if (n == 1) {
res.push_back("0");
res.push_back("1");
} else {
vector<string> prev_gray = gray_code(n-1);
for (int i = 0; i < prev_gray.size(); i++) {
res.push_back("0" + prev_gray[i]);
}
for (int i = prev_gray.size()-1; i >= 0; i--) {
res.push_back("1" + prev_gray[i]);
}
}
return res;
}
int main() {
int n = 4;
vector<string> gray_list = gray_code(n);
for (int i = 0; i < gray_list.size(); i++) {
cout << gray_list[i] << endl;
}
return 0;
5
}
Trong chương trình này, hàm gray_code trả về một vector chứa tất cả các mã
Gray có độ dài n bit. Nếu n = 1, hàm sẽ trả về vector chứa hai phần tử là "0" và
"1". Nếu n lớn hơn 1, hàm sẽ sử dụng đệ quy để tạo ra vector cho n-1 bit, sau đó
sử dụng các phép toán để tạo ra vector cho n bit. Bạn có thể thay đổi giá trị của n
để tạo ra các mã Gray với số bit khác nhau.
6
1.3.2. Sắp xếp
7
Xuất phát từ cuối danh sách, đổi chỗ các cặp phần tử kế cận để đưa phần
tử nhỏ hơn trong cặp phần tử đó về đúng vị trí theo thứ tự tăng dần. Cuối
cùng, phần tử đầu tiên trong danh sách sẽ là phần tử nhỏ nhất.
Sau đó, sẽ không xét đến phần tử đầu tiên đó nữa ở bước tiếp theo. Do
vậy, ở lần xử lý thứ i, phần tử đầu được xét sẽ có vị trí là i.
Lặp lại các bước xử lý trên cho đến khi không còn cặp phần tử nào để xét.
1.3.2.5. DSA06027: Sắp xếp đổi chỗ trực tiếp – Liệt kê ngược
- Cách làm:
Xuất phát từ đầu dãy, tìm tất cả các cặp A[i] và A[j] thỏa mãn điều kiện i
< j và A[i] > A[j].
Đổi chỗ 2 phần tử này cho nhau
Lặp lại xử lý trên với phần tử kế trong dãy
8
1.3.2.8. DSA06044: Sắp xếp chẵn lẻ
- Cách làm:
Khởi tạo 2 mảng lưu các phần tử vị trí chẵn (mảng c) và vị trí lẻ (mảng l)
Mảng lưu phần tử vị trí lẻ dùng hàm sort sắp xếp tăng dần, mảng lưu phần
tử vị trí chẵn thì dùng hàm sort sắp xếp giảm dần
Chạy vòng for từ 0 -> n/2: mỗi bước in ra phần tử l[i] và c[i]
Nếu số lượng phần tử trong mảng ban đầu là lẻ thì in thêm phần tử cuối
cùng của mảng l (mảng lẻ)
9
Mảng giao: kiểm tra xem 2 phần tử cạnh nhau của vector có giống nhau
hay không?
12
1.3.2.26. DSA06035: Dãy tam giác dài nhất
- Cách làm:
Dùng mảng l (lưu số lượng phần tử liên tiếp ở phía bên trái nhỏ hơn nó)
và mảng r (lưu số lượng phần tử liên tiếp ở phía bên phải nhỏ hơn nó)
Tìm max của l[i]+r[i]-1
13
1.3.2.31. DSA06040: Giao của ba dãy số
- Cách làm:
Tạo 3 mảng A,B,C, nếu tìm thấy phần tử trong mảng A trùng với phần tử
trong mảng B và C thì insert phần tử đó vào trong mảng kết quả, đồng
thời tăng vị trí index của cả 3 mảng lên một đơn vị.
Trong vòng lặp đó, tìm max của 3 giá trị tại vị trí index tiếp theo của 3
mảng, nếu giá trị nào nhỏ hơn giá trị max thì tăng index lên một đơn vị.
Lần lượt như thế, ta sẽ tìm ra được các phần tử chung của 3 dãy số.
1.3.3.1. CTDL_005: Xóa dữ liệu trong danh sách liên kết đơn
- Cách làm:
Duyệt 1 vòng lặp từ đầu đến cuối mảng
Nếu phần tử trong mảng bằng với số cần xóa thì không làm gì, còn lại thì
in ra
1.3.3.2. CTDL_006: Lọc dữ liệu trùng trong danh sách liên kết đơn
- Cách làm:
Duyệt mảng từ 1 đến n, tại mỗi bước kiểm tra value của phần tử đó trong
mảng có =0 không? Nếu có thì in ra và tăng value lên 1 đơn vị (cú pháp:
m[a[i]]++ ), còn lại thì bỏ qua, đến phần tử tiếp theo của mảng
15
1.3.4. Sinh/Quay lui
18
Kiểm tra xem k đã lớn hơn n chữ số chưa. Nếu lớn hơn thì break luôn
vòng lặp, chuyển sang B8
Lưu k vào mảng a (do bài này yêu cầu sắp xếp ngược)
Pop phần tử đầu hàng đợi ra khỏi mảng
Thêm vào hàng đợi phần tử k*10+6 và k*10+8 (VD: 6 -> 66, 6->68,…),
tiếp tục quay lại B3
In phần tử trong mảng a theo thứ tự ngược (cuối -> đầu mảng)
19
- Sử dụng quy hoạch động với mảng 2 chiều
- Công thức: C[i][j] = (C[i-1][j-1] + C[i-1][j]) % MOD; (chia mod do số lớn)
- VD: C(2,1) có giá trị là 2 chính bằng tổng của C(1,0)=1 và C(1,1)=1
Khi tổ chức các giải đấu một nhu cầu đặt ra là giúp tổ chức và quản lý một
cách nhanh chóng và tiện lợi. Do quy mô của giải đấu ngày càng lớn nên việc tổ
chức và quản lý là không hề đơn giản và dễ dàng. Bởi thế, việc ra đời của các phần
mềm trợ giúp là cần thiết.
20
Vì vậy, nhóm chúng em chọn đề tài: “Thiết kế cơ sở dữ liệu quản lý sân
bóng” với mục đích giúp công việc tổ chức và quản lý trở nên hiệu quả và dễ dàng
hơn.
Giúp cho người quản lý sân bóng có thể kiểm soát được toàn bộ hệ thống sân
bóng,người tham gia chỉ bằng việc thao tác trên một chiếc máy tính hoặc laptop dễ
dàng
Đối với những khách hàng thân thiết lâu năm thì sân bóng sẽ có những chế
độ ưu tiên đặc biệt cho họ,chỉ cần lên website và đăng nhập vào tài khoản cá nhân
riêng của mình đã đăng kí trước đó thì hệ thống sẽ tự động cung cấp các chương
trình ưu đãi đang có.
- Thông tin sân: Lưu trữ thông tin của sân gồm mã sân, mã địa điểm, loại
sân, ngày mở, tình trạng, ghi chú, giá sân quy định.
- Thông tin trận đấu:Lưu thông tin của trận đấu gồm mã trận,mã sân,mã địa
điểm,ID,ngày diễn ra trận đấu,giờ bắt đấu,giờ kết thúc của trận đấu,tiền sân diễn ra
22
trên trận,tình trạng trận đấu là chưa bắt đầu,đang diễn ra hay đã kết thúc của trận
đấu.
- Thông tin địa điểm:Lưu trữ thông tin địa chỉ của sân đấu bao gồm
số,đường,phường,quận,ghi chú.
-Thông tin hàng:Lưu trữ thông tin hàng hóa(thức ăn nước uống) bao gồm mã
hàng,mã địa điểm,tên hàng,tồn,đơn giá
-Thông tin chứng từ hóa đơn:Lưu thông tin chứng từ hóa đơn bao gồm số
hóa đơn,mã hàng,mã địa điểm,số lượng
-Thông tin dịch vụ:Lưu trữ thông tin dịch vụ bao gồm mã dịch vụ,mã địa
điểm
-Thông tin chứng từ dịch vụ:Lưu thông tin chứng từ dịch vụ gồm mã trận,mã
địa điểm,mã dịch vụ,số lượng.
- Thông tin trận đấu:Lưu thông tin của trận đấu gồm mã trận,mã sân,mã địa
điểm,ID,ngày diễn ra trận đấu,giờ bắt đấu,giờ kết thúc của trận đấu,tiền sân diễn ra
trên trận,tình trạng trận đấu là chưa bắt đầu,đang diễn ra hay đã kết thúc của trận
đấu
- Thông tin địa điểm:Lưu trữ thông tin địa chỉ của sân đấu bao gồm
số,đường,phường,quận,ghi chú.
- Thông tin hàng:Lưu trữ thông tin hàng hóa(thức ăn nước uống) bao gồm
mã hàng,mã địa điểm,tên hàng,tồn,đơn giá
- Thông tin chứng từ hóa đơn:Lưu thông tin chứng từ hóa đơn bao gồm số
hóa đơn,mã hàng,mã địa điểm,số lượng
23
- Thông tin dịch vụ:Lưu trữ thông tin dịch vụ bao gồm mã dịch vụ,mã địa
điểm
- Thông tin chứng từ dịch vụ:Lưu thông tin chứng từ dịch vụ gồm mã
trận,mã địa điểm,mã dịch vụ,số lượng.
24
- Ngay khi truy cập vào link đăng ký tài khoản,người dùng sẽ tự cấp cho
mình 1 tên đăng nhập(ID- đảm bảo là không trùng với ID của các thành viên khác;
cũng như về số điện thoại khi đăng ký tài khoản) .Sau đó người dùng tạo mật khẩu
tài khoản đúng theo quy định khi đăng ký tài khoản
- Người dùng sau khi nhập mật khẩu sẽ được chuyển sang giao diện nhập
thông tin.Các thông tin được hệ thống yêu cầu cung cấp bao gồm
họ(HO),tên(TEN),địa chỉ(DIACHI-không bắt buộc),số điện thoại(PHONE), và
được hệ thống cấp quyền(QUYEN) là 1 tương ứng với quyền người dùng.
- Người dùng khi xác thực muốn hủy tài khoản đăng ký thì sẽ được hệ thống
xử lý hủy toàn bộ dữ liệu đã đăng ký bao gồm họ(HO),tên(TEN),địa chỉ(DC),số
điện thoại(PHONE) và ID
- Khi người dùng hủy đăng ký xong thì ID đã đăng ký cũng không tồn tại dữ
liệu,nghĩa là ở trạng thái trống,người dùng tiếp theo đăng ký sẽ sử dụng ID này.
- Sau khi đã đăng nhập. Người dùng có thể chọn hoặc tìm kiếm sân (SAN)
theo mong muốn của chính mình. Sau khi chọn được sân, người dùng sẽ chọn ngày
và giờ của trận đấu mình sẽ đặt. Nếu thoã mãn được các yêu cầu của hệ thống thì
một dòng dữ liệu sẽ được insert vào bảng TRANDAU của CSDL
25
2.4.3.8.Hủy đăng ký sân
- Khách hàng có yêu cầu hủy sân đã đăng ký phải thực hiện yêu cầu ngay
trong ngày (Và trước giờ bắt đầu trận đấu ít nhất 60 phút).Sau một ngày tính từ thời
điểm đăng ký,hệ thống sẽ cập nhật các thông tin về sân như mã trận(MATRAN),mã
sân(MASAN),mã địa điểm(MADD),…và sao lưu trên hệ thống để tránh tình trạng
có khách hàng đăng ký sau đặt trùng
- Khi có yêu cầu hủy sân từ người dùng,hệ thống sẽ delete tất cả các thông
tin như mã trận(MATRAN),mã sân(MASAN),mã địa điểm(MADD),…ngay thời
điểm hủy để khách hàng đăng ký sau có thể thực hiện thao tác. Đồng thời, những
thông tin về việc đăng ký dịch vụ của trận đấu đó trong bảng CTDV(nếu có) cũng
sẽ được xoá bỏ.
- Tổng tiền ở mỗi trận đấu sẽ được tính dựa trên: thời gian đấu được đăng ký
trong bảng, đơn giá của sân đấu mà trận đấu đăng ký. Và tổng tiền được tính từ các
chi tiết dịch vụ mà thành viên đã đăng ký cho trận đấu đó (nếu có)
26
2.5. Mô hình quan hệ
2.5.1. Mô hình quan hệ
27
2.5.2. Mô tả các quan hệ
THANHVIEN: ID, MK, GIOITINH, HO , TEN, DC, PHONE, QUYEN,
NGAYDK
SAN: MASAN, MADD, LOAISAN, NGAYMO, TINHTRANG,
GHICHU, GIASAN
TRANDAU: MATRAN, MASAN, MADD, ID, NGAYDAT, GIOBD,
GIOKT, TINHTRANG, TONGTIEN
DIADIEM: MADD, TENDD, SO, DUONG, PHUONG, QUAN,
GHICHU
HANG: MAHANG, MADD, TON, DONGIA
DICHVU: MADV, MADD, TENDV, DONGIA, TON
HOADON: SOHD, NGAYHD, ID, TONGTIEN, TINHTRANG
CTHD: SOHD, MAHANG, MADD, SOLUONG
CTDV: MATRAN, MADV, MADD, SOLUONG
28
- Bảng trận đấu bao gồm mã trận(MATRAN-hệ thống cung cấp),mã
sân(MASAN) ,mã địa điểm(MADD) được người dùng cung cấp khi tiến
hành đặt sân.Ngày thi đấu(NGTRAN) được quy định là phải sau hoặc bằng
ngày hiện tại hệ thống .Giờ bắt đầu(GIOBD) và giờ kết thức(GIOKT) được
cung cấp sao cho hiệu GIOKT-GIOBD >=30p và phải là bội số của 5.Tình
trạng(TINHTRANG) sân gồm 3 thông số (0: trận đấu chưa bắt đầu, 1: trận
đấu đã kết thúc, 2: trận đấu bị huỷ hợp lệ), Tổng tiền (được tính bằng tổng
tiền hoá đơn (nếu có) và tiền thuê sân)
- Bảng địa điểm bao gồm mã địa điểm(MADD) được đánh số thứ tự mà hệ
thống tự cung cấp với các thông tin mà địa điễm đó toạ lạc
- Bảng sân gồm mã sân(MASAN),mã địa điểm(MADD) tương ứng với mỗi
địa điễm (MADD) sẽ có nhiều sân (MASAN). (LOAISAN) chỉ số lượng
người của mỗi đội trên sân. TINHTRANG chỉ tình trạng hoạt động của
sân(Y: sân có thể thuê, N: sân kkhông thể thuê)
- Bảng (HOADON) là thể hiện hoá đơn mua hàng (đồ ăn, thức uống) của
thành viên yêu cầu hệ thống. Tình trạng (TINHTRANG) của hoá đơn sẽ thể
hiện (hoá đơn chưa thanh toán, đã thanh toán, hay bị bỏ) . Ngày hoá đơn
(NGAYHD) sẽ là ngày tình trạng hoá đơn được quyết định.
29
- Bảng Chi tiết dịch vụ (CTDV). Tương ứng với mỗi TRANDAU, thành
viên có thể đăng ký thêm các DICHVU của hệ thống như thuê các dụng cụ
hỗ trợ bóng đá, thuê trọng tài…
- Bảng dịch vụ (DICHVU). Với thuộc tính (MADV, MADD) sẽ thể hiện
những thông tin về dịch vụ hiện có ở những địa điểm cụ thể.
Table SÂN
STT Tên Thuộc Kiểu Ràng Buộc Giá Trị Ý Nghĩa/Ghi
Tính Khởi Chú
Động
1 MASAN INT Khác null Mã Sân
2 MADD INT Mã Địa Điểm
3 LOAISAN INT Loại Sân
4 NGAYMO DATE Ngày Mở
5 TINHTRANG VARCHAR(1) Tình Trạng
6 GHICHU VARCHAR(50) Ghi Chú
7 GIASAN MONEY Giá Sân
30
Table TRẬN ĐẤU
STT Tên Thuộc Kiểu Ràng Buộc Giá Trị Ý Nghĩa/Ghi Chú
Tính Khởi Động
1 MATRAN INT Khác null Mã Trận
2 MASAN INT Mã Sân
3 MADD INT Mã Địa Điểm
4 ID VARCHAR(20) ID
5 NGAYDAT DATE Ngày Đặt
6 GIOBD TIME Giờ Bắt Đầu
7 GIOKT TIME Giờ Kết Thúc
8 TINHTRANG INT Tình Trạng
9 TONGTIEN MONEY Tổng Tiền
Table HÀNG
ST Tên Thuộc Kiểu Ràng Buộc Giá Trị Ý Nghĩa/ Ghi Chú
T Tính Khởi Động
1 MAHANG INT Khác null Mã Hàng
2 MADD INT Mã Địa Điểm
3 TENHANG NVARCHAR(4 Tên Hàng
0)
4 TON INT Tồn
5 DONGIA MONEY Đơn Giá
31
Table DỊCH VỤ
STT Tên Thuộc Kiểu Ràng Buộc Giá Trị Ý Nghĩa/ Ghi Chú
Tính Khởi Động
1 MADV INT Khác null Mã Dịch Vụ
2 MADD INT Mã Điạ Điểm
3 TENDV NVARCHAR(30) Tên Dịch Vụ
4 DONGIA MONEY Đơn Giá
5 TON INT Tồn
Table CTHD
STT Tên Thuộc Kiểu Ràng Buộc Giá Trị Khởi Ý Nghĩa/ Ghi Chú
Tính Động
1 SOHD INT Khác null Số Hóa Đơn
2 MAHANG INT Khác null Mã Hàng
3 MADD INT Khác null Mã Địa Điểm
4 SOLUONG INT Số Lượng
Table CTDV
STT Tên Thuộc Kiểu Ràng Buộc Giá Trị Khởi Ý Nghĩa/ Ghi Chú
Tính Động
32
1 MATRAN INT Khác null
2 MADV INT Khác null
3 MADD INT Khác null
4 SOLUONG INT
2.5.4. Mô hình ER
33
III. Máy tính và điều khiển
Để chọn được loại máy chủ và tủ đĩa phù hợp cho nghiên cứu của mình, bạn cần xác định
mục đích sử dụng của hệ thống, khả năng tài chính, và yêu cầu về hiệu suất, độ tin cậy và
khả năng mở rộng của hệ thống.
Máy chủ:
Nếu bạn cần một máy chủ có khả năng hoạt động 24/24 và hiệu suất cao, bạn có thể
chọn các máy chủ dòng server của các nhà sản xuất như Dell, HP, IBM hay các nhà
sản xuất máy chủ dành cho các mục đích đặc biệt như Supermicro.
Nếu bạn đang muốn nghiên cứu ảo hóa, bạn có thể chọn máy chủ có khả năng hỗ trợ
công nghệ ảo hóa như Intel VT-x hoặc AMD-V.
Một số lựa chọn phổ biến hiện nay cho máy chủ bao gồm:
Tủ đĩa:
Nếu bạn cần một tủ đĩa có khả năng hoạt động 24/24 và hiệu suất cao, bạn có thể
chọn các loại tủ đĩa của các nhà sản xuất như Dell, HP, EMC hay các nhà sản xuất tủ
đĩa dành cho các mục đích đặc biệt như NetApp.
Nếu bạn đang muốn nghiên cứu các hệ thống lưu trữ hiện đại, bạn có thể chọn tủ đĩa
có khả năng hỗ trợ các công nghệ lưu trữ như RAID, SAN, NAS, iSCSI.
Một số lựa chọn phổ biến hiện nay cho tủ đĩa bao gồm:
34
Dell EMC Unity XT 480
HP MSA 2050
NetApp FAS9000
EMC Isilon X210
Lưu ý rằng, việc chọn loại máy chủ và tủ đĩa phù hợp không chỉ phụ thuộc vào các
yếu tố kỹ thuật mà còn phải đáp ứng các yêu cầu về chi phí, kích thước và khả năng
mở rộng của hệ thống.
Hiệu suất và khả năng hoạt động liên tục của máy chủ và tủ đĩa phụ thuộc vào nhiều yếu
tố như thương hiệu, cấu hình, công nghệ sử dụng, môi trường điều kiện vận hành, ... Tuy
nhiên, ở đây tôi sẽ đưa ra vài lựa chọn thường được sử dụng để đảm bảo hiệu suất cao và
khả năng hoạt động 24/24:
Máy chủ:
Server HP ProLiant DL380 Gen10: Đây là một trong những dòng máy chủ phổ biến
và được ưa chuộng nhất hiện nay với nhiều tính năng ưu việt như hiệu năng mạnh mẽ,
tính linh hoạt và mở rộng cao, hỗ trợ ứng dụng ảo hóa, ... Với thiết kế hệ thống cải
tiến, ProLiant DL380 Gen10 có khả năng hoạt động 24/24 với hiệu suất vượt trội.
Server Dell PowerEdge R740: Đây là một lựa chọn khác được đánh giá cao với khả
năng xử lý tốt các tác vụ nặng, hỗ trợ ứng dụng ảo hóa, độ tin cậy cao, ... R740 cũng
được thiết kế để có khả năng hoạt động liên tục và đảm bảo hiệu suất cao.
Tủ đĩa:
Tủ đĩa HP MSA 2050: Là một trong những lựa chọn phổ biến với thiết kế modul và
mở rộng, hỗ trợ các giao thức kết nối chuẩn như iSCSI, SAS và FC, cho phép nâng
cấp dễ dàng khi nhu cầu tăng cao. MSA 2050 cũng được đánh giá cao về khả năng
hoạt động liên tục và hiệu suất.
Tủ đĩa Dell EMC Unity 300: Đây là một trong những tủ đĩa được ưa chuộng với khả
năng mở rộng và tính linh hoạt cao. Unity 300 có thể hỗ trợ nhiều giao thức kết nối và
35
khả năng quản lý dữ liệu đơn giản, đảm bảo khả năng hoạt động liên tục và hiệu suất
ổn định.
3.2 Tìm hiểu và nghiên cứu cấu trúc của máy chủ HP ProLiant DL380 Gen 10
3.2.1. Tổng quan về máy chủ HP ProLiant DL380 Gen 10
3.2.1.1. Giới thiệu
Máy chủ HP ProLiant DL380 Gen10 là một trong những máy chủ phổ biến nhất
của hãng HP (hiện nay là HPE) với thiết kế 2U, khả năng mở rộng cao và khả năng quản
lý đơn giản. Đây là một trong những máy chủ chủ đạo được sử dụng cho các trung tâm dữ
liệu, các doanh nghiệp và tổ chức với các yêu cầu cao về hiệu suất, tính linh hoạt và khả
năng mở rộng.
3.2.1.2. Tính năng vượt trội của máy chủ HP ProLiant DL380 Gen 10
Máy chủ HP ProLiant DL380 Gen10 có nhiều tính năng hỗ trợ như cài đặt nhanh
chóng với công cụ Intelligent Provisioning, khả năng điều khiển từ xa thông qua iLO
(Integrated Lights Out), hỗ trợ chuẩn mã hóa và xác thực dữ liệu với HPE Secure
Encryption và HPE Smart Array. Ngoài ra, máy chủ này còn được tích hợp sẵn các công
nghệ tiên tiến như VMware, Docker, Kubernetes để hỗ trợ việc ảo hóa và triển khai các
ứng dụng trên nền tảng đám mây.
RAID: Máy chủ này có hỗ trợ cho cả RAID 0, 1, 5, 6, 10, 50, 60. RAID (Redundant
Array of Independent Disks) là một phương pháp kết hợp nhiều ổ đĩa để tăng tốc độ
truy xuất và cung cấp tính dự phòng trong trường hợp ổ đĩa bị hỏng.
Hệ điều hành: Máy chủ này có thể chạy các hệ điều hành sau đây: Windows Server
2016, Windows Server 2019, VMware ESXi 6.5 và 6.7, Red Hat Enterprise Linux
(RHEL) 7.6 và 8.0, SUSE Linux Enterprise Server (SLES) 12 SP4 và 15, Ubuntu
Server 18.04 LTS.
36
Máy chủ ảo: Máy chủ này có khả năng chạy các máy chủ ảo thông qua tính năng
Virtualization Technology của Intel. Nó hỗ trợ các công nghệ ảo hóa như VMware,
Microsoft Hyper-V và Xen.
Dựa trên các yêu cầu trên, ta có thể so sánh và lựa chọn máy chủ phù hợp với nhu cầu sử
dụng. Ví dụ, máy chủ HP ProLiant DL380 Gen10 có thể là lựa chọn tốt cho mục đích sử
dụng doanh nghiệp với tính năng hỗ trợ RAID đa dạng, khả năng chạy các hệ điều hành
và máy chủ ảo phổ biến,
3.2.1.6. Sự an toàn dành cho doanh nghiệp mà máy chủ HP ProLiant DL380 Gen 10
có thể mang lại
HPE ProLiant DL380 Gen10 với những ưu điểm tuyệt vời:
Không chỉ dừng lại ở Gen10, HP ProLiant DL380 Gen10 không ngừng cập nhật và phát
triển tốt hơn trong tương lai gần. Tại thời điểm hiện tại, HP ProLiant DL380 Gen10 đã
đáp ứng đầy đủ các tính năng cơ bản cũng như cập nhật thêm nhiều tính năng mới và
phong phú. Một máy chủ rack 2U mạnh mẽ và an toàn là sự lựa chọn lý tưởng của mọi
doanh nghiệp.
39
Hình 3 : Bên trong của hệ thống
40
Bộ nhớ 16 GB DDR4 6
Sự kiểm soát mạng lưới Bộ điều hợp Ethernet HPE 1 Gb 331i 4 cổng cho mỗi bộ
điều khiển và / hoặc FlexibleLOM tùy chọn, tùy thuộc
vào kiểu máy
Bộ điều khiển lưu trữ 1 Sảnh thông minh HPE S100i và / hoặc 1 Mảng thông
minh HPE P408i-a và / hoặc 1 Mảng thông minh HPE
P816i-a và / hoặc 1 Mảng thông minh HPE E208i-a, tùy
thuộc vào kiểu máy
Các tính năng của quạt Quạt cắm dự phòng nóng, tiêu chuẩn
hệ thống
Loại cung cấp điện 2 nguồn cung cấp năng lượng khe cắm linh hoạt, tối đa
tùy thuộc vào mô hình
41
3.3 Tìm hiểu về tủ đĩa HP MSA 2050
RAID: Tủ đĩa HP MSA 2050 hỗ trợ RAID 0, 1, 5, 6, 10, 50, 60. RAID (Redundant
Array of Independent Disks) là một công nghệ lưu trữ dữ liệu trên nhiều ổ đĩa để tăng
tính an toàn và tốc độ truy xuất dữ liệu. Với tùy chọn RAID 5 hoặc RAID 6, tủ đĩa có
khả năng chịu được sự cố hỏng hóc của một hay nhiều ổ đĩa mà không mất dữ liệu.
SAN/NAS: HP MSA 2050 hỗ trợ cả SAN (Storage Area Network) và NAS (Network
Attached Storage). SAN cho phép tạo một hệ thống lưu trữ riêng biệt, truy xuất dữ
42
liệu nhanh và cung cấp tính khả dụng cao. NAS cho phép chia sẻ dữ liệu trên mạng và
làm giảm chi phí cho doanh nghiệp.
Hiệu suất cao: Tủ đĩa HP MSA 2050 có thể đạt tốc độ truy xuất dữ liệu lên tới
200.000 IOPS (Input/Output Operations Per Second) và có thể kết nối với 64 host.
3.4 Kết nối máy chủ HP ProLiant DL380 Gen10 với tủ đĩa HP MSA 2050
a. Giới thiệu
Máy chủ HP ProLiant DL380 Gen10 và tủ đĩa HP MSA 2050 là hai thiết bị quan trọng
trong hạ tầng máy chủ của doanh nghiệp. Để đạt được hiệu suất tốt nhất và đảm bảo hoạt
động liên tục 24/24, cần kết nối hai thiết bị này với nhau một cách chính xác và đúng
cách. Bài báo cáo này sẽ trình bày về cách kết nối máy chủ HP ProLiant DL380 Gen10
với tủ đĩa HP MSA 2050 để đạt hiệu suất cao và hoạt động liên tục 24/24.
43
Sau khi xác định cổng kết nối iSCSI trên máy chủ HP ProLiant DL380 Gen10, cần
cấu hình máy chủ để kết nối với tủ đĩa HP MSA 2050. Bước đầu tiên là cài đặt phần
mềm iSCSI Initiator trên máy chủ. Sau khi cài đặt xong, cần cấu hình các thông số
như địa chỉ IP của tủ đĩa HP MSA 2050 và thông số kết nối iSCSI.
c. Kết luận
Kết nối máy chủ HP ProLiant DL380 Gen10 với tủ đĩa HP MSA 2050 là một quá trình
quan trọng và cần được thực hiện chính xác để đảm bảo hiệu suất cao và hoạt động liên
tục 24/24 của hệ thống. Quá trình này đòi hỏi các thông số kết nối được cấu hình chính
xác và kiểm tra kết nối để đảm bảo tính ổn định và hiệu quả của hệ thống. Nếu thực hiện
đúng cách, kết nối máy chủ HP ProLiant DL380 Gen10 với tủ đĩa HP MSA 2050 sẽ giúp
nâng cao hiệu suất và tính khả dụng của hệ thống máy chủ.
44
3.5 Tìm hiểu về ảo hóa
a. Khái niệm
Ảo hóa là một công nghệ giúp tạo ra các môi trường ảo (virtual environments) trên một hệ
thống vật lý, cho phép nhiều hệ điều hành hoặc ứng dụng chạy trên cùng một hệ thống vật
lý, tạo ra sự phân chia và tách biệt giữa các tài nguyên phần cứng và phần mềm. Các môi
trường ảo này cung cấp cho người dùng một trải nghiệm như đang sử dụng một hệ thống
riêng biệt, mặc dù thực tế chúng đang chạy trên cùng một máy chủ.
Đây là loại ảo hóa phổ biến nhất, được sử dụng để tạo ra các máy chủ ảo trên một
máy chủ vật lý. Các máy chủ ảo này có thể được quản lý, cấu hình và điều khiển như
các máy chủ vật lý thông thường. Ảo hóa máy chủ giúp tối ưu hóa sử dụng tài nguyên
của máy chủ, giảm chi phí đầu tư và tăng tính linh hoạt.
Ảo hóa máy tính để bàn cho phép tạo ra các môi trường máy tính ảo trên một máy
tính vật lý, cho phép người dùng truy cập vào các ứng dụng và tài nguyên máy tính từ
xa, trên nhiều thiết bị khác nhau. Điều này giúp cho việc quản lý và bảo trì máy tính
trở nên đơn giản hơn và tăng tính linh hoạt trong việc truy cập tài nguyên.
Ảo hóa ứng dụng cho phép tạo ra các môi trường ảo để chạy ứng dụng mà không cần
phải cài đặt chúng trên máy tính vật lý. Điều này giúp cho việc quản lý và triển khai
ứng dụng trở nên dễ dàng hơn, đồng thời tăng tính linh hoạt và đảm bảo an toàn cho
hệ thống.
45
-Ảo hóa mạng (Network virtualization):
Ảo hóa mạng cho phép tạo ra các môi trường ảo để tạo ra các mạng ảo trên một mạng
vật lý. Các mạng ảo này có thể được quản lý và cấu hình riêng biệt, giúp cho việc
quản lý và triển khai mạng trở nên dễ dàng và linh hoạt hơn. Ngoài ra, ảo hóa mạng
cũng giúp tăng tính an toàn và bảo mật cho hệ thống.
VMware: là một công ty hàng đầu trong lĩnh vực ảo hóa. Công nghệ ảo hóa của
VMware được phát triển để giúp người dùng chạy nhiều hệ điều hành trên một máy
tính. VMware có nhiều sản phẩm như VMware Workstation, VMware Fusion,
VMware ESXi, VMware vSphere, VMware Horizon View, VMware NSX, VMware
Cloud Foundation,...
Hyper-V: là một công nghệ ảo hóa được phát triển bởi Microsoft và là một phần của
Windows Server và Windows 10. Hyper-V cho phép người dùng tạo các máy ảo trên
máy chủ của họ và chạy các hệ điều hành khác nhau trên cùng một máy tính.
KVM (Kernel-based Virtual Machine): là một công nghệ ảo hóa mã nguồn mở được
tích hợp vào nhân Linux. KVM cho phép người dùng tạo các máy ảo trên hệ thống
của họ và chạy các hệ điều hành khác nhau trên cùng một máy tính.
46
Xen: là một công nghệ ảo hóa mã nguồn mở được phát triển bởi Xen Project. Xen
được tích hợp vào hệ thống của người dùng và cho phép tạo các máy ảo trên cùng một
máy tính. Xen hỗ trợ nhiều loại hệ điều hành như Linux, Windows và các phiên bản
khác của Unix.
47
e. Khó khăn và giải pháp khi triển khai ảo hóa
Khó khăn khi triển khai ảo hóa:
-Độ tin cậy của hệ thống:
Khả năng một máy chủ ảo bị lỗi có thể ảnh hưởng đến toàn bộ hệ thống ảo hóa.
Sự cố phần cứng như đĩa cứng, bộ nhớ RAM, nguồn điện hoặc mạng có thể gây ra sự
cố cho máy chủ ảo và toàn bộ hệ thống.
Sự cố phần mềm như lỗi phần mềm, lỗi hệ điều hành và lỗi ứng dụng có thể gây ra sự
cố cho máy chủ ảo và toàn bộ hệ thống.
Khi sử dụng ảo hóa, máy chủ vật lý phải chia sẻ tài nguyên với nhiều máy chủ ảo
khác nhau, dẫn đến hiệu suất và tốc độ của hệ thống giảm.
Sự cạnh tranh tài nguyên giữa các máy chủ ảo có thể dẫn đến tình trạng một số máy
chủ ảo chậm hơn hoặc bị gián đoạn khi các máy chủ ảo khác sử dụng tài nguyên
nhiều hơn.
Sự ảo hóa có thể dẫn đến nhiều điểm mục tiêu cho các tấn công mạng như tấn công từ
bên trong máy chủ ảo, tấn công từ bên ngoài máy chủ ảo và tấn công từ một máy chủ
ảo sang một máy chủ ảo khác.
Các máy chủ ảo chia sẻ tài nguyên phần cứng và phần mềm với nhau, do đó, việc
kiểm soát quyền truy cập và quản lý an ninh trở nên phức tạp.
Giải pháp cho các khó khăn khi triển khai ảo hóa:
48
Sử dụng phần mềm ảo hóa có tính năng redundancy (dự phòng) để đảm bảo nếu một
máy chủ bị lỗi thì các máy chủ khác sẽ tự động đảm nhiệm các tác vụ của máy chủ bị
lỗi.
Sử dụng các phần mềm giám sát hệ thống để theo dõi tình trạng hoạt động của hệ
thống và phát hiện sớm các sự cố để có biện pháp xử lý kịp thời.
Tối ưu hóa cấu hình phần cứng cho phù hợp với nhu cầu sử dụng của hệ thống ảo
hóa.
Thực hiện phân vùng tài nguyên (Resource Pooling) để đảm bảo các máy ảo không
ảnh hưởng đến nhau và sử dụng tài nguyên một cách hiệu quả.
Cân bằng tải giữa các máy chủ ảo để đảm bảo sự ổn định và hiệu quả của hệ thống.
Sử dụng các phần mềm bảo mật và cập nhật các bản vá an ninh thường xuyên để đảm
bảo an toàn cho hệ thống ảo hóa.
Sử dụng các giải pháp bảo mật mạng để ngăn chặn các cuộc tấn công từ bên ngoài và
giám sát các hoạt động trong mạng ảo.
Thực hiện sao lưu và khôi phục dữ liệu thường xuyên để đảm bảo tính toàn vẹn của
dữ liệu khi có sự cố xảy ra.
Trong thời đại công nghệ số hiện nay, hệ thống lưu trữ và mô hình Microservice và
Monolithic đang trở thành những khái niệm quan trọng và được sử dụng rộng rãi trong
lĩnh vực Công nghệ thông tin. Trong báo cáo này, tôi sẽ giới thiệu chung về những khái
niệm này để đưa ra cái nhìn tổng quan và giúp độc giả hiểu rõ hơn về chúng.
49
a) Hệ thống lưu trữ
Hệ thống lưu trữ là một phần quan trọng của hệ thống máy tính, chịu trách nhiệm lưu trữ
và quản lý các dữ liệu của hệ thống. Có nhiều loại hệ thống lưu trữ như: hệ thống tập tin,
hệ thống cơ sở dữ liệu quan hệ, hệ thống lưu trữ đối tượng, hệ thống lưu trữ dữ liệu đám
mây. Mỗi loại hệ thống lưu trữ có ưu điểm và hạn chế riêng, do đó phải dựa trên yêu cầu
cụ thể của hệ thống mà lựa chọn hệ thống lưu trữ phù hợp.
Hệ thống lưu trữ đóng vai trò quan trọng trong việc quản lý dữ liệu của một tổ chức. Để
đáp ứng nhu cầu lưu trữ ngày càng lớn, các hệ thống lưu trữ hiện đại thường sử dụng các
công nghệ ảo hóa như SAN (Storage Area Network), NAS (Network Attached Storage) và
Object Storage.
SAN là một mạng lưu trữ chung được sử dụng để kết nối các thiết bị lưu trữ vật lý như ổ
đĩa và băng từ với các máy chủ và thiết bị khác trong một mạng. SAN cung cấp khả năng
lưu trữ tập trung cho tất cả các thiết bị trong hệ thống và quản lý dữ liệu với hiệu suất
cao.
NAS là một giải pháp lưu trữ mạng thường được sử dụng cho các ứng dụng lưu trữ tệp.
NAS được kết nối với mạng LAN hoặc WAN và cung cấp dịch vụ lưu trữ đơn giản và dễ
sử dụng cho người dùng cuối.
Object Storage là một dạng lưu trữ đám mây được sử dụng để lưu trữ và quản lý các đối
tượng như hình ảnh, video và tệp văn bản. Object Storage cho phép lưu trữ dữ liệu theo
cách phi cấu trúc, cung cấp hiệu quả cao hơn và khả năng mở rộng tốt hơn so với các hệ
thống lưu trữ truyền thống.
Kiến trúc monolithic là một kiểu thiết kế phần mềm truyền thống, trong đó toàn bộ ứng
dụng được đóng gói vào một tệp nhị phân duy nhất và chạy trên một máy chủ. Hệ thống
50
lưu trữ trong kiến trúc monolithic thường được triển khai bằng cách sử dụng cơ sở dữ liệu
quan hệ (Relational Database Management System - RDBMS), ví dụ như MySQL hoặc
PostgreSQL. Các bảng trong cơ sở dữ liệu được thiết kế để phù hợp với các tính năng và
chức năng của ứng dụng. Khi có nhiều phiên bản ứng dụng đang chạy trên nhiều máy
chủ, chúng có thể chia sẻ cùng một cơ sở dữ liệu.
Kiến trúc microservice là một kiểu thiết kế phần mềm phổ biến trong đó ứng dụng được
chia thành các dịch vụ nhỏ hơn và độc lập nhau. Mỗi dịch vụ có thể được đóng gói và
triển khai một cách độc lập, cho phép chúng có thể được phát triển và cập nhật một cách
độc lập. Hệ thống lưu trữ trong kiến trúc microservice thường được triển khai bằng cách
sử dụng các cơ sở dữ liệu phi quan hệ (NoSQL databases), ví dụ như MongoDB hoặc
Cassandra. Các cơ sở dữ liệu này được thiết kế để lưu trữ dữ liệu phân tán, giúp cho các
dịch vụ có thể chia sẻ và truy cập dữ liệu dễ dàng.
Trong kiến trúc monolithic, toàn bộ ứng dụng được đóng gói vào một tệp nhị phân duy
nhất và chạy trên một máy chủ. Do đó, cơ sở dữ liệu được sử dụng là cơ sở dữ liệu quan
hệ (RDBMS) để đảm bảo tính nhất quán và đồng bộ giữa các thành phần của ứng dụng.
Tuy nhiên, điều này đồng nghĩa với việc khi có sự thay đổi trong cấu trúc của ứng dụng,
cả cơ sở dữ liệu và ứng dụng đều phải được thay đổi và triển khai lại. Điều này dẫn đến
việc triển khai ứng dụng trở nên phức tạp hơn và thường yêu cầu nhiều thời gian.
Trong khi đó, trong kiến trúc microservice, ứng dụng được chia thành các dịch vụ độc lập
nhau, mỗi dịch vụ sử dụng một cơ sở dữ liệu riêng biệt. Cơ sở dữ liệu thường là cơ sở dữ
liệu phi quan hệ (NoSQL) để đáp ứng các yêu cầu về khả năng mở rộng và tính sẵn sàng
51
cao. Việc sử dụng các cơ sở dữ liệu này cho phép các dịch vụ có thể được phát triển và
triển khai một cách độc lập và không phụ thuộc vào các thành phần khác của ứng dụng.
Tuy nhiên, điều này có thể dẫn đến sự mất tính nhất quán giữa các dịch vụ, và đôi khi cần
có các cơ chế để đồng bộ dữ liệu giữa các dịch vụ.
e)Kết luận
Hệ thống lưu trữ là một phần quan trọng của hệ thống phần mềm, và cách tích hợp hệ
thống lưu trữ vào hệ thống phần mềm phụ thuộc vào kiểu kiến trúc phần mềm được sử
dụng. Kiến trúc monolithic và kiến trúc microservice có cách tiếp cận khác nhau về hệ
thống lưu trữ, và tùy vào yêu cầu của ứng dụng mà một trong hai kiểu kiến trúc có thể
được lựa chọn để triển khai.
3.7 Tìm hiểu về ESP8266 NodeMCU và lập trình đơn giản với Arduino IDE
52
3.7.3 Cài đặt thư viện ESP8266 trong Arduino IDE.
Để lập trình cho ESP8266 NodeMCU, chúng ta cần cài đặt thư viện ESP8266
trong Arduino IDE. Để cài đặt, bạn có thể làm theo các bước sau:
Phần khởi tạo: thiết lập các biến và khởi tạo kết nối Wi-Fi.
Phần chính: kiểm tra trạng thái đèn LED và điều khiển bật/tắt đèn qua mạng Wi-Fi.
-Khai báo thư viện
Đầu tiên, chương trình khai báo các thư viện cần thiết như ESP8266WiFi,
WiFiClient, ESP8266WebServer và ESP8266mDNS để sử dụng trong chương trình.
-Khởi tạo đối tượng
Sau đó, chương trình khởi tạo các đối tượng cần thiết, bao gồm:
Tiếp theo, chương trình thiết lập hai chân đầu ra cho hai đèn LED.
Sau khi khởi tạo đối tượng, chương trình tiến hành kết nối với mạng WiFi thông qua
tên và mật khẩu mà ta đã khai báo trước đó. Trong quá trình kết nối, chương trình sử
dụng hàm delay() để đợi đến khi kết nối được thiết lập.
Trong trường hợp mạng không có DNS, chương trình sử dụng MDNS responder để
giúp các thiết bị kết nối với NodeMCU thông qua tên miền (ví dụ: esp8266.local).
Sau khi thiết lập xong kết nối và các thiết bị, chương trình tiếp tục thiết lập các hàm
xử lý yêu cầu HTTP từ trình duyệt. Cụ thể, chương trình sử dụng hàm server.on() để
đăng ký các đường dẫn và hàm xử lý tương ứng. Ví dụ: server.on("/socket1On", {...})
để đăng ký đường dẫn "/socket1On" và hàm xử lý khi yêu cầu đường dẫn này.
Cuối cùng, chương trình khởi động web server thông qua hàm server.begin() và bắt
đầu chạy vòng lặp chính để xử lý các yêu cầu từ trình duyệt thông qua hàm
server.handleClient().
54
3.8 Tìm hiểu về các cơ chế chấp hành
Trong thế giới Internet of Things (IoT), việc kết nối và điều khiển các thiết bị
thông qua mạng internet là một yêu cầu thiết yếu. Trong phần báo cáo này, chúng ta sẽ
tìm hiểu về các cơ cấu chấp hành như LED 7 đoạn, LCD và Rơ le và cách sử dụng chúng
với ESP8266 NodeMCU. Ngoài ra, chúng ta sẽ lập trình và thực hành với các cơ cấu chấp
hành đơn giản.
LED 7 đoạn là một loại màn hình hiển thị đơn giản được sử dụng để hiển thị các
ký tự và số. Nó bao gồm 7 đèn LED đơn lẻ được sắp xếp theo một cấu trúc nhất định để
hiển thị các ký tự và số khác nhau. Để điều khiển LED 7 đoạn, chúng ta có thể sử dụng
các cổng GPIO của ESP8266 NodeMCU và các chân đất và điện áp.
b. LCD
LCD (Liquid Crystal Display) là một loại màn hình hiển thị được sử dụng để hiển
thị các ký tự, số và đồ họa. Nó có thể được điều khiển bằng các tín hiệu điện áp để điều
55
khiển các pixel của màn hình. Để sử dụng LCD với ESP8266 NodeMCU, chúng ta có thể
sử dụng các chân GPIO để điều khiển các tín hiệu điện áp cần thiết.
c . Rơ le
Rơ le là một loại công tắc điện được sử dụng để điều khiển các thiết bị điện. Nó
hoạt động bằng cách sử dụng một cộng hưởng từ để điều khiển một thiết bị điện khác. Để
điều khiển một rơ le, chúng ta có thể sử dụng các chân GPIO của ESP8266 NodeMCU và
một nguồn điện ngoài để cung cấp cho rơ le.
Để lập trình và thực hành với các cơ cấu chấp hành, chúng ta có thể sử dụng ngôn ngữ lập
trình Arduino và môi trường phát triển Arduino IDE.
Đầu tiên, chúng ta cần khai báo các chân GPIO được sử dụng để điều khiển LED 7
đoạn. Sau đó, chúng ta có thể sử dụng các hàm có sẵn trong thư viện Arduino để điều
khiển LED 7 đoạn. Ví dụ, để hiển thị số 0 trên LED 7 đoạn, chúng ta có thể sử dụng hàm
digitalWrite để gửi tín hiệu điện áp đến các chân GPIO tương ứng để kích hoạt các đèn
LED cần thiết.
Tương tự, chúng ta cũng cần khai báo các chân GPIO được sử dụng để điều khiển
LCD và sử dụng các hàm có sẵn trong thư viện Arduino để hiển thị các ký tự và số trên
LCD. Ví dụ, để hiển thị dòng chữ "Hello, world!" trên LCD, chúng ta có thể sử dụng hàm
lcd.print() để gửi chuỗi ký tự đến LCD.
56
c.Lập trình rơ le
Để điều khiển một rơ le, chúng ta cần sử dụng một chân GPIO để điều khiển cộng
hưởng từ và một nguồn điện ngoài để cung cấp cho rơ le. Chúng ta có thể sử dụng hàm
digitalWrite để gửi tín hiệu điện áp đến chân GPIO để điều khiển rơ le.
3.9 Tìm hiểu về Timer và lập trình ngắt Timer với ESP8266 NodeMCU.
3.9.2 Timer
Khái niệm về Timer:
Trong lập trình, Timer được sử dụng để đếm số lần xảy ra của một sự kiện hoặc để đếm
thời gian. Điều này rất hữu ích trong các ứng dụng IoT, nơi thời gian là yếu tố quan trọng.
ESP8266 NodeMCU có bốn bộ định thời (Timer) có thể sử dụng cho các mục đích khác
nhau. Các Timer này có độ chính xác cao và được tính bằng microsecond. Bốn Timer trên
ESP8266 NodeMCU được đánh số từ 0 đến 3.
Ngắt Timer:
Ngắt Timer là một tính năng quan trọng của Timer. Khi Timer đếm đến một giá trị xác
định, nó sẽ tạo ra một ngắt Timer. Ngắt Timer cho phép chúng ta thực hiện các hành động
khác nhau tùy thuộc vào mục đích của ứng dụng.
Chúng ta có thể sử dụng hàm attachInterrupt() để đặt một hàm ngắt Timer cho một Timer
cụ thể. Hàm này sẽ thực hiện các hành động tương ứng với ngắt Timer.
Ví dụ: Chúng ta có thể lập trình để LED trên NodeMCU nhấp nháy mỗi 1 giây bằng cách
sử dụng một timer và hàm xử lý ngắt như sau:
58
3.9.5 Ứng dụng của Timer và lập trình ngắt Timer với ESP8266 NodeMCU
Việc sử dụng Timer và lập trình ngắt Timer với ESP8266 NodeMCU rất hữu ích trong
việc xây dựng các ứng dụng IoT. Các ứng dụng có thể được phát triển để hoạt động độc
lập hoặc kết hợp với các thiết bị khác, cung cấp các giải pháp đáp ứng nhanh và linh hoạt
trong quản lý các hoạt động tự động.
Một số ứng dụng của Timer và lập trình ngắt Timer với ESP8266 NodeMCU bao gồm:
Điều khiển đèn: Timer có thể được sử dụng để bật và tắt đèn hoặc thay đổi màu sắc
của đèn trong một khoảng thời gian nhất định. Ngắt Timer có thể được sử dụng để
báo cho hệ thống khi nào đèn cần được thay đổi hoặc bật / tắt.
Quản lý nhiệt độ: Timer có thể được sử dụng để theo dõi nhiệt độ trong phòng và bật /
tắt máy điều hòa hoặc bật các thiết bị khác để giảm nhiệt độ trong một khoảng thời
gian nhất định.
Kiểm soát độ ẩm: Timer có thể được sử dụng để bật / tắt máy làm mát hoặc bật các
thiết bị khác để kiểm soát độ ẩm trong một khoảng thời gian nhất định.
Kiểm soát thời gian ăn uống: Timer có thể được sử dụng để đặt giờ cho việc ăn uống
hoặc uống nước đều đặn trong một khoảng thời gian nhất định.
Cảnh báo sự cố: Ngắt Timer có thể được sử dụng để báo cho hệ thống khi có sự cố
xảy ra, chẳng hạn như khi nhiệt độ hoặc độ ẩm quá cao hoặc quá thấp.
59
3.10 Thiết kế hệ thống giám sát nhiệt độ và ẩm bằng ESP8266 NODEMCU +
BLYNK + DHT11
60
+ 10 chân GPIO từ D0 – D8, có chức năng PWM, IIC, giao tiếp SPI, 1-Wire và ADC trên chân
A0
+ Kết nối mạng wifi (có thể là sử dụng như điểm truy cập và/hoặc trạm máy chủ lưu trữ một, máy
chủ web), kết nối internet để lấy hoặc tải lên dữ liệu.
-Chuẩn giao tiếp nối tiếp UART với tốc độ Baud lên đến115200
-Tích hợp chuyển đổi TR, balun, LNA, bộ khuếch đại công suất và phù hợp với mạng.
-Tích hợp PLL, bộ quản lý, và các đơn vị quản lý điện năng.
61
-Tích hợp cảm biến nhiệt độ.
-DHT11 có cấu tạo 4 chân như hình. Nó sử dụng giao tiếp số theo chuẩn 1 dây.
-Thông số kỹ thuật:
+ Do độ ẩm: 20%-95%
+ Sai số độ ẩm ±5%
62
Hình 2. Sơ đồ nguyên lý DTH11 kết nối MCU
Để có thể giao tiếp với DHT11 theo chuẩn 1 chân vi xử lý thực hiện theo 2 bước:
oGửi tin hiệu muốn đo (Start) tới DHT11, sau đó DHT11 xác nhận lại.
oKhi đã giao tiếp được với DHT11, Cảm biến sẽ gửi lại 5 byte dữ liệu và nhiệt độ đo được.
o MCU thiết lập chân DATA là Output, kéo chân DATA xuống 0 trong khoảng thời gian >18ms.
Khi đó DHT11 sẽ hiểu MCU muốn đo giá trị nhiệt độ và độ ẩm.
oMCU đưa chân DATA lên 1, sau đó thiết lập lại là chân đầu vào.
oSau khoảng 20-40us, DHT11 sẽ kéo chân DATA xuống thấp. Nếu >40us mà chân DATA ko
được kéo xuống thấp nghĩa là ko giao tiếp được với DHT11.
oChân DATA sẽ ở mức thấp 80us sau đó nó được DHT11 kéo nên cao trong 80us. Bằng việc
giám sát chân DATA, MCU có thể biết được có giao tiếp được với DHT11 ko. Nếu tín hiệu đo
được DHT11 lên cao, khi đó hoàn thiện quá trình giao tiếp của MCU với DHT.
Byte 2: giá trị phần thập phân của độ ẩm (RH%) Byte 3: giá trị phần nguyên của nhiệt độ (TC)
Byte 4 : giá trị phần thập phân của nhiệt độ (TC)
-> Nếu Byte 5 = (8 bit) (Byte1 +Byte2 +Byte3 + Byte4) thì giá trị độ ẩm và nhiệt độ là chính xác,
nếu sai thì kết quả đo không có nghĩa.
Sau khi tín hiệu được đưa về 0, ta đợi chân DATA của MCU được DHT11 kéo lên
1. Nếu chân DATA là 1 trong khoảng 26-28 us thì là 0, còn nếu tồn tại 70us là 1. Do đó trong lập
trình ta bắt sườn lên của chân DATA, sau đó delay 50us. Nếu giá trị đo được là 0 thì ta đọc được
bit 0, nếu giá trị đo được là 1 thì giá trị đo được là
Blynk được thiết kế cho IoT, nó có thể điều khiển phần cứng từ xa, hiển thị dữ liệu cảm biến, lưu
trữ dữ liệu và có thể làm một vài điều khác khá thú vị. Blynk gồm 3 phần:
Blynk App: cho phép tạo các giao diện từ Widget có sẵn
Blynk Server: truyền tải thông tin giữa Smarthome và thiết bị. Blynk Server có thể là 1 đám mây
của Blynk hoặc có thể cài đặt trên máy cá nhân. Có thể cài đặt trên Raspberry Pi.
Blynk Libraries: thư viện cung cấp kết nối phần cứng đến server, xử lý các lệnh đến và đi.
64
Để bắt đầu Blynk cần cái gì?
1.Thiết bị
Thiết bị dùng các bộ kit phát triển như Arduino, Raspberry, ESP8266. Blynk hoạt động trên
Internet vì vậy các thiết bị
2.Smartphone
Ứng dụng Blynk có thể hoạt động trên iOS và Android. Có thể download từ trên điện thoại.
Trong Arduino IDE có thể thêm thư viện này từ Manager Libraries bằng cách tìm kiếm từ khóa
Blynk và cài đặt.
Blynk thực ra là một cái app trên điện thoại, cho phép người dùng có thể tạo ra giao diện và
điều khiển thiết bị theo ý thích của cá nhân. Mình lựa chọn Blynk vì một số lý do sau:
65
Dễ sử dụng: Quá đơn giản, chỉ việc vào store, cài đặt, sau đó đăng ký tài khoản và mất không
quá 5 phút để làm quen.
Đẹp và đầy đủ: Giao diện của Blynk quá tuyệt vời, sử dụng bằng cách kéo thả, bạn cần nút
bấm, kéo thả nút bấm, bạn cần đồ thị, kéo thả đồ thị, bạn cần LCD, kéo thả LCD, tóm lại là
bạn cần gì thì kéo thả cái đó.
Không phải lập trình android hay ios: Nếu như không có kiên thức về làm app trên điện thoại
thì việc điều khiển thiết bị từ chính smartphone của mình quả là điều vô cùng khó khăn và
phức tạp. Nhờ blynk thì chúng ta có thể bỏ qua bước lập trình tạo app. Có thể thử nhanh
chóng và ứng dụng được dự án của mình vào thực tế.
Thử nghiệm nhanh chóng, có thể điều khiển giám sát ở bất kỳ nơi nào có internet.
Hệ thống hoạt động dựa trên sự kết hợp của Module Nodemcu Esp8266 và app Blynk trên
smartphone . Blynk sẽ lưu dữ liệu . App Blynk ngoài chức năng lưu trữ dữ liệu từ mạch đo gửi
lên còn có chức năng hiển thị giao diện điều khiển thiết bị, dữ liệu về nhiệt độ, độ ẩm ra giao diện
người dùng.
-Khi nhận được tín hiệu nhiệt độ báo về từ cảm biến thì bộ vi xử lý của hệ thống module
Nodemcu Wifi ESP8266 sẽ xử lý tín hiệu và sau đó truyền lên phần mềm blynk thông qua môi
trường ko dây wifi.
-Khi module wifi ESP8266 gửi tín hiệu lên App blynk người dùng có thể truy cập vào hệ thống
để điều khiển thiết bị trong gia đình và giám sát nhiệt độ, độ ẩm từ xa có mạng internet.
-Tại Blynk , thông qua mạng LAN (nội bộ) hoặc thông qua internet, nhà quản lý có thể :
+ Giám sát nhiệt độ liên tục tại các thời điểm trong ngày. Có thể xem nhiệt độ tại các điểm đo
trong cùng một thời điểm
+ Hiển thị nhiệt độ cao nhất và thơi điểm nhiệt độ cao nhất, thuận tiên cho việc theo dõi nhiệt độ
vượt ngưỡng
Module đo nhiệt độ
66
+Yêu cầu chức năng
-Kết nối với mạng internet qua wifi sử dụng module wifi8266.
-Module đo có chức năng đọc tham số như là nhiệt độ, độ ẩm từ cảm biến DHT11 sau đó gửi qua
module wifi ESP8266 để truyền lên webserver.
-Điều khiển cơ cấu chấp hành qua relay để điều khiển các thiết bị điện trong nhà như: quạt, bóng
đèn, điều hòa, tivi...
-Điều khiển thiết bị: Người dùng có thể điều khiển bật tắt thiết bị điện từ giao diện web phù hợp
với tất cả các thiết bị như PC, laptop, máy tính bảng, điện thoại thông qua internet.
Trong quá trình hiện đại hóa , công nghiệp hóa ngày nay : Người tiêu dùng ưa thích sự
tiện lợi , phát triển nhất và đất nước ta người dân đang có xu hướng xây dựng các ngôi
nhà thông minh hướng tới 10-15 năm sau vẫn sẽ không lỗi thời khi áp dụng các kĩ thuật
điều khiển từ xa và tự động. Vì vậy , nhóm chúng em xin tìm hiểu về chủ đề : giám sát
nhiệt độ và điều khiển thiết bị từ xa . Yêu cầu của mô phỏng là : phải giám sát được nhiệt
độ , độ ẩm trong phòng và điều khiển được thiết bị thông qua mạng internet .
b.Thiết kế hệ thống
-Khối vi điều khiển có chức năng điều khiển mọi hoạt động của mạch. Đọc nhiệt độ, độ
ẩm từ cảm biến gửi ra module wifi để truyền lên App . Ngoài ra khối vi điều khiển còn có
nhiệm vụ đọc và giải mã lệnh nhận được từ giao diện trên Blynk người dùng để đưa ra
67
lệnh điều khiển tương ứng để điều chỉnh nhiệt độ. Kit wifi vai trò giao tiếp giữa mạch và
internet, vận chuyển dữ liệu giữa hai module Nodemcu và App blynk
-Khối cảm biến nhiệt độ sử dụng cảm biến DHT11 có khả năng đo cả 2 thông số nhiệt độ
và độ ẩm.
-Đối tượng điều khiển : sử dụng led red (có thể thay thế bằng thiết bị khác)
68
=>Tạo ra ba biến để nhận tín hiệu từ modul và hiển thị ra giao diện .
* Kết nối app blink trên điện thoại với Modul ESP 8266:
69
70
d.Viết chương trình code cho Vi điều khiển NODEMCU
Để sử dụng được blynk thì cần phải tải thư viện của nó thông qua Arduino IDE Chọn
Sketch -> Include Library -> Manage Libraries, tìm kiếm blynk và install.
71
*Chọn Tool -> Board rồi chọn Nodemcu 1.0
72
73
74