Tải bản đầy đủ (.pdf) (65 trang)

thiết kế và thực hiện hệ thống hỗ trợ cảnh báo nguy cơ sạt lở bờ sông

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

TRƢỜNG ĐẠI HỌC CẦN THƠ
KHOA CÔNG NGHỆ
BỘ MÔN ĐIỆN TỬ - VIỄN THÔNG

LUẬN VĂN TỐT NGHIỆP

THIẾT KẾ VÀ THỰC HIỆN HỆ THỐNG
HỖ TRỢ CẢNH BÁO NGUY CƠ
SẠT LỞ BỜ SÔNG

Sinh viên thực hiện

Cán bộ hƣớng dẫn

Nguyễn Đức Khanh
MSSV: 1117976

ThS. Trƣơng Phong Tuyên

Trần Vận Toàn
MSSV: 1118028
Lớp Kỹ thuật máy tính K37

Cần Thơ, Tháng 05 năm 2015


TRƢỜNG ĐẠI HỌC CẦN THƠ
KHOA CÔNG NGHỆ
BỘ MÔN ĐIỆN TỬ - VIỄN THÔNG

LUẬN VĂN TỐT NGHIỆP



THIẾT KẾ VÀ THỰC HIỆN HỆ THỐNG
HỖ TRỢ CẢNH BÁO NGUY CƠ
SẠT LỞ BỜ SÔNG

Sinh viên thực hiện
Nguyễn Đức Khanh
MSSV: 1117976
Trần Vận Toàn
MSSV: 1118028
Lớp Kỹ thuật máy tính K37

Cán bộ hƣớng dẫn
ThS. Trƣơng Phong Tuyên


TRƢỜNG ĐẠI HỌC CẦN THƠ
KHOA CÔNG NGHỆ
BỘ MÔN ĐIỆN TỬ VIỄN THÔNG
Luận văn đƣợc thực hiện bởi:
1. Họ tên: Nguyễn Đức Khanh, MSSV: 1117976, Lớp: Kỹ thuật máy tính
2. Họ tên: Trần Vận Toàn, MSSV: 1118028, Lớp: Kỹ thuật máy tính
Tựa đề luận văn:
Thiết kế và thực hiện hệ thống hỗ trợ cảnh báo nguy cơ sạt lở bờ sông

Luận văn đã nộp và báo cáo tại Hội đồng chấm bảo vệ Luận văn tốt nghiệp
Đại học ngành Điện tử Viễn thông/ Kỹ thuật máy tính, Bộ môn Điện tử Viễn
thông vào ngày 19 tháng 05 năm 2015.
(Quyết định thành lập Hội đồng số: 133/QĐ-CN ngày 24 tháng 04 năm 2015 của
Trƣởng Khoa Công Nghệ)


Kết quả đánh giá:.............................
Chữ ký của các thành viên Hội đồng:
Thành viên 1: Ths. Trƣơng Phong Tuyên.........................................................
Thành viên 2: TS. Lƣơng Vinh Quốc Danh......................................................
Thành viên 3: Ths. Nhan Văn Khoa..................................................................


Thiết kế và thực hiện hệ thống hỗ trợ cảnh báo nguy cơ sạc lỡ bờ sông

LỜI CAM ĐOAN
Đề tài “Thiết kế và thực hiện hệ thống hỗ trợ cảnh báo nguy cơ sạt lở bờ sông”
đƣợc thực hiện bởi hai sinh viên: Nguyễn Đức Khanh và Trần Vận Toàn, sinh viên lớp
Kỹ thuật máy tính, khóa 37, khoa Công nghệ, Đại học Cần Thơ.
Trong quá trình thực hiện đề tài, có thể còn nhiều thiếu sót do thời gian có hạn và
kiến thức còn hạn chế nhƣng những nội dung trình bày trong quyển báo cáo này đều là
những hiểu biết và là thành quả nghiên cứu của chúng tôi dƣới sự hƣớng dẫn tận tình
của thầy Trƣơng Phong Tuyên.
Chúng tôi xin cam đoan rằng những nội dung đƣợc trình bày trong quyển báo cáo
luận văn tốt nghiệp này không phải là bản sao chép từ bất kỳ công trình nào đã thực
hiện trƣớc đây. Nếu không đúng sự thật, chúng tôi xin chịu mọi trách nhiệm trƣớc nhà
Trƣờng.
Cần Thơ, ngày 11 tháng 05 năm 2015
Nhóm sinh viên thực hiện

Nguyễn Đức Khanh

i

Trần Vận Toàn



Thiết kế và thực hiện hệ thống hỗ trợ cảnh báo nguy cơ sạc lỡ bờ sông

LỜI CẢM ƠN
Đầu tiên, nhóm chúng tôi xin bày tỏ lòng biết ơn với gia đình đã động viên, hỗ trợ
và giúp đỡ chúng tôi trong quá trình thực hiện đề tài.
Kế đến, chúng tôi xin gửi lời cảm ơn chân thành đến thầy Trƣơng Phong Tuyên,
là ngƣời trực tiếp đƣa ra ý tƣởng, hƣớng dẫn và động viên nhóm chúng tôi trong suốt
quá trình thực hiện đề tài luận văn tốt nghiệp. Thầy đã cung cấp cho nhóm những kiến
thức và kinh nghiệm thực tế hữu ích để nhóm có hƣớng đi đúng đắn trong việc tím
hiểu, giải quyết và hoàn thành đề tài.
Sau cùng, xin chân thành cảm ơn các anh khóa trƣớc và các bạn đã giúp đỡ và hỗ
trợ nhóm trong suốt quá trình tìm hiểu, nghiên cứu và thực hiện đề tài.
Xin chân thành cảm ơn!

Nhóm sinh viên thực hiện đề tài

Nguyễn Đức Khanh

ii

Trần Vận Toàn


Thiết kế và thực hiện hệ thống hỗ trợ cảnh báo nguy cơ sạc lỡ bờ sông

MỤC LỤC
DANH MỤC HÌNH ẢNH ............................................................................................... 1
DANH MỤC BẢNG ........................................................................................................ 2

TÓM TẮT ........................................................................................................................ 3
CHƢƠNG 1. TỔNG QUAN ............................................................................................ 4
1.1 ĐẶT VẦN ĐỀ ........................................................................................................ 4
1.2 LỊCH SỬ GIẢI QUYẾT VẤN ĐỀ......................................................................... 4
1.3 PHẠM VI ĐỀ TÀI.................................................................................................. 5
1.4 PHƢƠNG PHÁP NGHIÊN CỨU .......................................................................... 5
CHƢƠNG 2: CƠ SỞ LÝ THUYẾT ................................................................................ 6
2.1 GIỚI THIỆU MỘT SỐ CHUẨN GIAO TIẾP ....................................................... 6
2.1.1 Chuẩn UART .................................................................................................... 6
2.1.2 Chuẩn SPI ......................................................................................................... 8
2.2 TỔNG QUAN VỀ MỘT SỐ DỊCH VỤ CỦA GOOGLE .................................... 10
2.2.1 Giới thiệu Google Drive ................................................................................. 10
2.2.2 Google Spreadsheet ........................................................................................ 10
2.2.3 Google Chart API ........................................................................................... 11
2.3 NGÔN NGỮ LẬP TRÌNH C/C++ VÀ MỘT SỐ NGÔN NGỮ LẬP TRÌNH
WEB............................................................................................................................ 12
2.3.1 Ngôn ngữ lập trình C/C++ ............................................................................. 12
2.3.2 Tổng quan về một số ngôn ngữ lập trình web ................................................ 13
2.4 GIỚI THIỆU GIAO THỨC HTTP VÀ HTTPS ................................................... 15
2.4.1 Giao thức HTTP ............................................................................................. 15
2.4.2 Giao thức HTTPS ........................................................................................... 16
2.5 GIỚI THIỆU KHÁI QUÁT VỀ XỬ LÝ ẢNH .................................................... 16
2.5.1 Một số khái niệm cơ bản trong xử lý ảnh....................................................... 17
2.5.2 Các giải thuật xử lý ảnh đƣợc sử dụng trong đề tài........................................ 17
2.5.3 Giới thiệu phần mềm Qt Creator .................................................................... 20
iii


Thiết kế và thực hiện hệ thống hỗ trợ cảnh báo nguy cơ sạc lỡ bờ sông


2.6 TÌM HIỂU VỀ ARDUINO VÀ CÁC LINH KIỆN SỬ DỤNG TRONG ĐỀ TÀI
.................................................................................................................................... 20
2.6.1 Tổng quan về Arduino.................................................................................... 20
2.6.2 Board Arduino Mega 2560 ............................................................................. 21
2.6.3 Module WIFI ESP8266 .................................................................................. 22
2.6.4 Module RF CC1101 433MHz giao tiếp SPI .................................................. 26
2.6.5 Module camera hồng ngoại màu JPEG LS-Y201 giao tiếp UART ............... 27
2.6.6 Module Micro SD card ................................................................................... 29
2.6.7 Cảm biến độ ẩm đất và cảm biến lƣu lƣợng nƣớc.......................................... 29
CHƢƠNG 3. THIẾT KẾ HỆ THỐNG VÀ KẾT QUẢ THỰC NGHIỆM.................... 32
3.1 TỔNG QUAN VỀ HỆ THỐNG ........................................................................... 32
3.2 THIẾT KẾ PHẦN CỨNG .................................................................................... 33
3.2.1 Bộ gửi dữ liệu ................................................................................................. 33
3.2.2 Bộ nhận dữ liệu .............................................................................................. 34
3.2.3 Bộ thu thập hình ảnh ...................................................................................... 35
3.3 THIẾT KẾ PHẦN MỀM ...................................................................................... 36
3.3.1 Lập trình phần mềm cho hệ thống .................................................................. 36
3.3.2 Giao diện web cho hệ thống ........................................................................... 40
3.3.3 Giao diện phần mềm xử lý ảnh ...................................................................... 41
3.3.4 Giao thức gửi dữ liệu lên Google Spreadsheet............................................... 44
3.4 KẾT QUẢ THỰC NGHIỆM ................................................................................ 48
KẾT LUẬN VÀ ĐỀ NGHỊ ............................................................................................ 56
1. KẾT QUẢ ĐẠT ĐƢỢC ...................................................................................... 56
2. ĐỀ NGHỊ HƢỚNG PHÁT TRIỂN ..................................................................... 56
TÀI LIỆU THAM KHẢO.............................................................................................. 58

iv


Thiết kế và thực hiện hệ thống hỗ trợ cảnh báo nguy cơ sạc lỡ bờ sông


DANH MỤC HÌNH ẢNH
Hình 2. 1 Một khung truyền/nhận theo UART ............................................................... 7
Hình 2. 2 Giao diện kết nối giữa SPI Master và Slave ................................................... 8
Hình 2. 3 Truyền dữ liệu SPI .......................................................................................... 9
Hình 2. 4 Ví dụ tạo biểu đồ bằng URL ......................................................................... 11
Hình 2. 5 Mô hình giao tiếp Client-Server của giao thức HTTP .................................. 15
Hình 2. 6 Ví dụ gửi dữ liệu bằng phƣơng thức GET thông qua URL ........................... 16
Hình 2. 7 Các bƣớc cơ bản của một hệ thống xử lý ảnh ................................................ 17
Hình 2. 8 Ảnh màu (ảnh trái) và ảnh đã phân ngƣỡng của một tờ giấy trắng
(ảnh phải) ....................................................................................................................... 18
Hình 2. 9 Ảnh đã phân ngƣỡng (ảnh trái) và ảnh sau khi lọc đƣờng biên của một tờ
giấy trắng (ảnh phải) ...................................................................................................... 19
Hình 2. 10 Hình ảnh thực tế của Board Arduino Mega 2560 ....................................... 21
Hình 2. 11 Hình ảnh thực tế và sơ đồ chân của module Wifi ESP8266 ....................... 23
Hình 2. 12 Hình ảnh thực tế và sơ đồ chân module RF CC1101 433MHz .................. 27
Hình 2. 13 Module camera hồng ngoại màu JPEG giao tiếp UART ............................ 28
Hình 2. 14 Module micro SD card ................................................................................. 29
Hình 2. 15 Cảm biến đo độ ẩm đất ............................................................................... 30
Hình 2. 16 Cảm biến lƣu lƣợng nƣớc S201 .................................................................. 31
Hình 3.1 Mô hình tổng quan của hệ thống ..................................................................... 32
Hình 3.2 Sơ đồ khối của Bộ gửi dữ liệu......................................................................... 33
Hình 3.3 Sơ đồ khối của Bộ nhận dữ liệu ...................................................................... 34
Hình 3.4 Sơ đồ khối của Bộ thu thập hình ảnh .............................................................. 35
Hình 3. 5 Lƣu đồ giải thuật gửi dữ liệu lên web bằng module Wifi ESP8266 .............. 38
Hình 3. 6 Lƣu đồ giải thuật chụp ảnh và lƣu trữ trong thẻ SD ...................................... 39
Hình 3. 7 Giao diện web của hệ thống ........................................................................... 40
Hình 3. 8 Giao diện phần mềm xử lý ảnh ...................................................................... 41
Hình 3. 9 Lƣu đồ giải thuật phân ngƣỡng ảnh màu ....................................................... 42
Hình 3. 10 Lƣu đồ giải thuật lọc đƣờng biên ................................................................. 43

Hình 3. 11 Lƣu đồ giải thuật trừ ảnh .............................................................................. 44
Hình 3. 12 Cấu tạo của một Bridge Server .................................................................... 45
Hình 3. 13 Các lệnh chính của một file code PHP sử dụng trong đề tài........................ 46
Hình 3. 14 Giao diện bảng tính trong đề tài ................................................................... 46
Hình 3. 15 Mô hình upload dữ liệu lên Google Spreadsheet ......................................... 47
Hình 3. 16 Các khối phần cứng trong đề tài .................................................................. 48
1


Thiết kế và thực hiện hệ thống hỗ trợ cảnh báo nguy cơ sạc lỡ bờ sông

Hình 3. 17 Dữ liệu thu đƣợc từ cảm biến và lƣu trữ trên Google Spreadsheet ............. 49
Hình 3. 18 Biểu đồ dữ liệu thu đƣợc từ cảm biến .......................................................... 50
Hình 3. 19 Hình ảnh tham chiếu gốc và đã qua xử lý lấy đƣờng biên thu đƣợc từ
camera ............................................................................................................................ 51
Hình 3. 20 Hình ảnh đƣợc tham chiếu và đã qua xử lý lấy đƣờng biên ........................ 52
Hình 3. 21 Kết quả ảnh trừ của ảnh tham chiếu gốc và ảnh đƣợc tham chiếu .............. 53
Hình 3. 22 Hình ảnh khúc cây đƣợc đặt ở vị trí xa góc chụp camera hơn và đã qua xử
lý lấy đƣờng biên............................................................................................................ 54
Hình 3. 23 Kết quả ảnh trừ giữa ảnh tham chiếu gốc với ảnh ở Hình 3.22 ................... 55

DANH MỤC BẢNG
Bảng 2. 1 Các chân SPI trên Arduino Mega 2560 ......................................................... 22
Bảng 2. 2 Các cổng Serial dành cho giao tiếp UART trên Arduino Mega 2560 ........... 22
Bảng 2. 3 Các chân ngắt ngoài trên Arduino Mega 2560 .............................................. 22
Bảng 2. 4 Chức năng các chân kết nối của module Wifi ESP8266 ............................... 23
Bảng 2. 5 Các lệnh AT sử dụng trong giao tiếp với module ESP8266 ......................... 24
Bảng 2. 6 Các lệnh trong firmware NodeMCU đƣợc sử dụng trong đề tài ................... 25
Bảng 2. 7 Giao thức giao tiếp với module camera hồng ngoại màu JPEG LS-Y201 .... 28
Bảng 3. 1 Các lệnh sử dụng trong đề tài để kết nối board Arduino với Internet ........... 36

Bảng 3. 2 Các mã HEX đƣợc truyền cho camera phục vụ việc chụp ảnh ..................... 39

2


Thiết kế và thực hiện hệ thống hỗ trợ cảnh báo nguy cơ sạc lỡ bờ sông

TÓM TẮT
Đồng bằng sông Cửu Long là vùng có hệ thống kênh rạch chằng chịt dẫn đến
vấn đề sạt lở bờ sông xảy ra ở nhiều nơi và gây ra nhiều hậu quả nghiêm trọng. Thấy
đƣợc điều đó, nhóm đã chọn đề tài “Thiết kế và thực hiện hệ thống hỗ trợ cảnh báo
nguy cơ sạt lở bờ sông” làm đề tài tốt nghiệp cho mình. Mục tiêu của đề tài là nhằm
tìm ra một giải pháp có thể phát hiện sớm nguy cơ sạt lở bờ sông để có cách khắc phục
và xử lý hiệu quả, kịp thời, tránh những hậu quả nặng nề do việc phát hiện chậm trễ.
Quá trình giám sát dựa trên các yếu tố nhƣ: lƣu lƣợng nƣớc, độ ẩm đất... đƣợc thu thập
thông qua các cảm biến. Ngoài ra, còn có một Camera giám sát sẽ chụp lại hình ảnh
nơi bờ sông có nguy cơ sạt lở. Tất cả dữ liệu cảm biến sẽ đƣợc upload lên web một
cách tự động, cụ thể là upload lên dịch vụ điện toán đám mây của Google: Google
Drive. Ngƣời giám sát có thể truy cập vào web để theo dõi, cập nhật dữ liệu ở bất kì
nơi đâu có Internet. Hoặc có thể giám sát thông qua các ảnh chụp về bờ sông sau khi
chúng ta đã xử lý chúng thông qua một phần mềm xử lý ảnh tự thiết kế. Hệ thống đƣợc
thiết kế với chi phí thấp, dễ sử dụng và có thể mở rộng để giám sát nhiều vị trí.
Từ khóa: cảm biến, camera, upload, điện toán đám mây, xử lý ảnh.
ABSTRACT
Mekong Delta is the region with complex canal system leading to river bank
erosion problems occured in many places and caused serious consequences. Seeing
that, we have chosen the topic “Design and implementation a system which
supports warning river bank erosion” to make thesis for us. The purpose of this
research is to find a solution that can detect early risk for river bank erosion to have
clearance and processing efficiently, uptime, avoiding severe consequences due to the

detecting late. Monitoring process based on factors such as water flow, soil moisture ...
be collected through the sensors. Besides, there is also a surveillance camera to take
picture where the river bank have eroding risk. All sensor data will be uploaded to the
web automatically, namely upload to cloud computing service of Google: Google
Drive. The supervisor can access the web for monitoring, updating data in anywhere
with internet. Or they can monitor through the photos of river bank after we have
processed them through an image processing software. The system is designed for low
cost, easy to use and can be expanded to monitor multiple locations.
Keywords: sensor, camera, upload, cloud computing, process image.

3


Thiết kế và thực hiện hệ thống hỗ trợ cảnh báo nguy cơ sạc lỡ bờ sông

CHƢƠNG 1. TỔNG QUAN
Chƣơng này sẽ tập trung trình bày các vấn đề sau:
-

Đặt vấn đề: “Bối cảnh xuất hiện của đề tài”
Lịch sử giải quyết đề tài
Phạm vi đề tài
Phƣơng pháp nghiên cứu

1.1 ĐẶT VẦN ĐỀ
Hiện nay, vấn đề sạt lở bờ sông ở Việt Nam đang tăng với mức báo động. Đặc
biệt là ở vùng Đồng bằng sông Cửu Long. Theo những chuyên gia môi trƣờng, việc sạt
lở đất đai ở ven những bờ sông lớn có nhiều nguyên nhân. Trong đó, sự biến đổi thất
thƣờng của thời tiết, khí hậu là quan trọng nhất. Khi đó, dòng nƣớc trở nên bất thƣờng,
các chế độ của dòng chảy cũng thƣờng xuyên bị đảo lộn làm hệ sinh thái ven bờ sông

không thích nghi kịp. Ngoài ra, có một nguyên nhân nữa cũng hết sức quan trọng, đó
chính là do lƣợng ghe, thuyền trên sông quá nhiều, lại chủ yếu là loại công suất lớn chở
hàng hóa thƣờng xuyên đi qua lại, gây nên những đợt sóng nhân tạo làm đất đai bị xói
lở theo. Lâu dần, đất đai cũng bị sạt lở.
Từ những vấn đề trên, cần có một hệ thống giám sát và đánh giá nhằm giúp phát
hiện sớm nguy cơ sạt lở để có thể đƣa ra giải pháp khắc phục và xử lý kịp thời, hiệu
quả, tránh đƣợc những hậu quả nặng nề. Vì vậy nhóm đã quyết định thực hiện đề tài
“Thiết kế và thực hiện hệ thống hỗ trợ cảnh báo nguy cơ sạt lở bờ sông” nhằm tạo ra
một hệ thống đáp ứng đƣợc các yêu cầu trên và góp phần ứng dụng công nghệ vào
trong thực tiễn.
1.2 LỊCH SỬ GIẢI QUYẾT VẤN ĐỀ
“Thiết kế và thực hiện hệ thống hỗ trợ cảnh báo nguy cơ sạt lở bờ sông” là một đề
tài thuộc lĩnh vực khá phổ biến ở Việt Nam, đặc biệt là ở vùng Đồng bằng sông Cửu
Long do nơi đây có hệ thống sông ngòi chằng chịt.
Một số đề tài và văn bản có liên quan đến hiện tƣợng sạt lở bờ sông nhƣ sau:
-

-

“Vĩnh Long: Nghiên cứu hiện tƣợng bồi lắng, sạt lở bờ sông, xác định nguyên
nhân, đề xuất các giải pháp phòng chống, khắc phục.”. Nguồn: Sở KH&CN Vĩnh
Long.
“Cảnh báo nguy cơ sạt lở đất ven sông, ven biển và thực hiện các biện pháp ứng
phó, xử lý”. Nguồn: Văn bản số 47/PCLB ngày 03 tháng 3 năm 2008 của Ban
Chỉ huy phòng chống lụt bão thành phố.
4


Thiết kế và thực hiện hệ thống hỗ trợ cảnh báo nguy cơ sạc lỡ bờ sông


-

Lê Ngọc Thanh, Nguyễn Văn Giảng. Góp phần xác định nguyên nhân sạt lở bờ
sông Tiền và sông Sài Gòn bằng các khảo sát địa vật lý gần mặt đất. Tháng 09
năm 2012.

Ngoài ra trong đề tài có áp dụng giải pháp lƣu trữ dữ liệu trên nền điện toán đám
mây của Google đã đƣợc thực hiện trƣớc đó bởi các anh sinh viên khóa trƣớc và cho
kết quả tƣơng đối tốt.
1.3 PHẠM VI ĐỀ TÀI
Đề tài nghiên cứu đƣợc thực hiện nhằm tạo ra một hệ thống có thể giám sát và
đánh giá bờ sông giúp phát hiện sớm nguy cơ sạt lở. Thực tế cho thấy bờ sông sạt lở là
do ảnh hƣởng của nhiều nguyên nhân, nhƣng sẽ có một số nguyên nhân chính đƣợc sử
dụng trong đề tài nhƣ lƣu lƣợng nƣớc chảy qua bờ sông, độ ẩm đất của bờ sông,... Vì
thế, hệ thống sẽ bao gồm một bộ xử lý để thu thập dữ liệu của các cảm biến đo lƣu
lƣợng nƣớc, độ ẩm đất và hình ảnh của bờ sông tại vị trí đƣợc giám sát và các dịch vụ
web trên nền điện toán đám mây của Google cho việc lƣu trữ dữ liệu, cụ thể là Google
Spreadsheet của Google Drive. Ngƣời giám sát có thể truy cập vào các dữ liệu này từ
xa, ở bất kỳ đâu có Internet.
1.4 PHƢƠNG PHÁP NGHIÊN CỨU
Nhóm đã giải quyết đề tài theo hƣớng chia nhỏ từng phần. Tiếp theo sẽ giải quyết
từng phần, mỗi phần sẽ trải qua các giai đoạn: nghiên cứu lý thuyết, tiến hành thực
nghiệm để kiểm chứng, cuối cùng là ghép các phần lại.
Giai đoạn nghiên cứu lý thuyết: nhóm tiến hành tìm hiểu tài liệu thông qua sự
hƣớng dẫn của giáo viên. Đồng thời, nhóm cũng thông qua mạng Internet để tìm các tài
liệu có liên quan ở trong và ngoài nƣớc.
Giai đoạn thực nghiệm để kiểm chứng: nhóm tiến hành chia nhỏ và thiết kế các
khối chức năng của hệ thống: khối gửi dữ liệu đọc đƣợc từ cảm biến, khối nhận dữ liệu
và upload dữ liệu lƣu trữ trên Google Drive và khối thu thập hình ảnh. Ngoài ra, về
phần mềm nhóm sẽ thiết kế một giao diện web để giúp dễ dàng tƣơng tác và truy cập

vào dữ liệu hệ thống; thiết kế một phần mềm xử lý hính ảnh phục vụ cho việc giám sát
đoạn đƣờng có nguy cơ sạt lở. Sau đó kiểm tra toàn bộ hệ thống với thực tế để xem xét
sự hoạt động và tính ổn định của nó.

5


Thiết kế và thực hiện hệ thống hỗ trợ cảnh báo nguy cơ sạc lỡ bờ sông

CHƢƠNG 2: CƠ SỞ LÝ THUYẾT
Chƣơng này sẽ tập trung trình bày các vấn đề sau:
-

Giới thiệu một số chuẩn giao tiếp
Tổng quan về một số dịch vụ của Google
Giới thiệu ngôn ngữ lập trình C/C++ và một số ngôn ngữ lập trình web
Giới thiệu giao thức HTTP/HTTPs
Giới thiệu khái quát về xử lý ảnh
Tìm hiểu về Arduino và các linh kiện sử dụng trong đề tài

2.1 GIỚI THIỆU MỘT SỐ CHUẨN GIAO TIẾP
2.1.1 Chuẩn UART
UART là viết tắt của Universal Asynchronous Receiver – Transmitter, còn đƣợc
gọi là truyền thông nối tiếp không đồng bộ, thƣờng là một mạch tích hợp đƣợc sử dụng
trong việc truyền dẫn dữ liệu nối tiếp giữa máy tính và các thiết bị ngoại vi. Khác với
cách truyền đồng bộ, truyền thông “không đồng bộ” chỉ cần một đƣờng truyền cho một
quá trình. “Khung dữ liệu” đã đƣợc chuẩn hóa bởi các thiết bị nên không cần đƣờng
xung nhịp báo trƣớc dữ liệu đến. Ví dụ 2 thiết bị đang giao tiếp với nhau theo phƣơng
pháp này, chúng đã đƣợc thỏa thuận với nhau rằng cứ 1ms thì sẽ có 1 bit dữ liệu truyền
đến, nhƣ thế thiết bị nhận chỉ cần kiểm tra và đọc đƣờng truyền mỗi mili-giây để đọc

các bit dữ liệu và sau đó kết hợp chúng lại thành dữ liệu có ý nghĩa. Truyền thông nối
tiếp không đồng bộ vì thế hiệu quả hơn truyền thông đồng bộ (không cần nhiều đƣờng
truyền). Tuy nhiên, để quá trình truyền thành công thì việc tuân thủ các tiêu chuẩn
truyền là hết sức quan trọng.
Các thông số cơ bản trong truyền thông UART
-

-

Baud rate (tốc độ baud): nhƣ trong ví dụ trên về việc truyền 1 bit trong 1ms,
chúng ta thấy rằng để việc truyền và nhận không đồng bộ xảy ra thành công thì
các thiết bị tham gia phải “thống nhất” nhau về khoảng thời gian dành cho 1 bit
truyền, hay nói cách khác tốc độ truyền phải đƣợc cài đặt nhƣ nhau trƣớc, tốc độ
này gọi là tốc độ Baud. Theo định nghĩa, tốc độ baud là số bit truyền trong 1
giây. Ví dụ nếu tốc độ baud đƣợc đặt là 19200 thì thời gian dành cho 1 bit
truyền là 1/19200 ~ 52.083us.
Frame (khung truyền): do truyền thông nối tiếp mà nhất là nối tiếp không
đồng bộ rất dễ mất hoặc sai lệch dữ liệu, quá trình truyền thông theo kiểu này
phải tuân theo một số quy cách nhất định. Bên cạnh tốc độ baud, khung truyền
6


Thiết kế và thực hiện hệ thống hỗ trợ cảnh báo nguy cơ sạc lỡ bờ sông

là một yếu tố quan trọng tạo nên sự thành công khi truyền và nhận. Khung
truyền bao gồm các quy định về số bit trong mỗi lần truyền, các bit “báo” nhƣ
bit Start và bit Stop, các bit kiểm tra nhƣ Parity, ngoài ra số lƣợng các bit trong
một data cũng đƣợc quy định bởi khung truyền. Hình 2.1 là một ví dụ của một
khung truyền theo UART, khung truyền này đƣợc bắt đầu bằng một start bit St,
tiếp theo là 8 bit data, sau đó là 1 bit parity P dùng kiểm tra dữ liệu và cuối cùng

là 2 bits stop Sp.

Hình 2. 1 Một khung truyền/nhận theo UART 1

-

-

-

-

Start bit: start là bit đầu tiên đƣợc truyền trong một frame truyền, bit này có
chức năng báo cho thiết bị nhận biết rằng có một gói dữ liệu sắp đƣợc truyền
tới. Start là bit bắt buộc phải có trong khung truyền.
Data: data hay dữ liệu cần truyền là thông tin chính mà chúng ta cần gởi và
nhận. Data không nhất thiết phải là gói 8 bit, chúng ta có thể quy định số lƣợng
bit của data là 5, 6, 7, 8 hoặc 9. Trong truyền thông nối tiếp UART, bit có ảnh
hƣởng nhỏ nhất (LSB) của data sẽ đƣợc truyền trƣớc và cuối cùng là bit có ảnh
hƣởng lớn nhất (MSB).
Parity bit: parity là bit dùng để kiểm tra dữ liệu truyền đúng hay không. Có 2
loại parity là parity chẵn (even parity) và parity lẻ (odd parity). Parity chẵn
nghĩa là số lƣợng số 1 trong dữ liệu bao gồm bit parity luôn là số chẵn. Ngƣợc
lại tổng số lƣợng các số 1 trong parity lẻ luôn là số lẻ. Parity bit không phải là
bit bắt buộc và vì thế chúng ta có thể loại bit này khỏi khung truyền.
Stop bit: Stop bit là một hoặc các bit báo cho thiết bị nhận rằng một gói dữ liệu
đã đƣợc gởi xong. Sau khi nhận đƣợc Stop bit, thiết bị nhận sẽ tiến hành kiểm
tra khung truyền để đảm bảo tính chính xác của dữ liệu. Stop bit là các bit bắt
buộc xuất hiện trong khung truyền.


Việc ứng dụng giao tiếp UART trong đề tài đƣợc thể hiện qua việc kết nối Board
Arduino MEGA 2560 với camera JPEG UART trong giám sát và thu thập hình ảnh từ
hệ thống; với module WIFI ESP8266 để kết nối board Arduino với một Access Point
cho việc upload dữ liệu lên dịch vụ điện toán đám mây của Google (Google Drive).
1

/>7


Thiết kế và thực hiện hệ thống hỗ trợ cảnh báo nguy cơ sạc lỡ bờ sông

2.1.2 Chuẩn SPI
SPI (Serial Peripheral Bus) là một chuẩn truyền thông nối tiếp tốc độ cao do hãng
Motorola đề xuất. Đây là kiểu truyền thông Master-Slave, trong đó có 1 chip Master
điều phối quá trình tuyền thông và các chip Slaves đƣợc điều khiển bởi Master vì thế
truyền thông chỉ xảy ra giữa Master và Slave. SPI là một cách truyền song công (full
duplex) nghĩa là tại cùng một thời điểm quá trình truyền và nhận có thể xảy ra đồng
thời. SPI đôi khi đƣợc gọi là chuẩn truyền thông “4 dây” vì có 4 đƣờng giao tiếp trong
chuẩn này đó là SCK (Serial Clock), MISO (Master Input Slave Output), MOSI
(Master Ouput Slave Input) và SS (Slave Select). Hình 2.2 thể hiện một kết nối SPI
giữa một chip Master và 3 chip Slave thông qua 4 đƣờng.

Hình 2. 2 Giao diện kết nối giữa SPI Master và Slave 2

4 đƣờng giao tiếp cơ bản trong giao tiếp SPI:
-

-

2


SCK: Xung giữ nhịp cho giao tiếp SPI, vì SPI là chuẩn truyền đồng bộ nên cần
1 đƣờng giữ nhịp, mỗi nhịp trên chân SCK báo 1 bit dữ liệu đến hoặc đi. Đây là
điểm khác biệt với truyền thông không đồng bộ mà chúng ta đã biết trong chuẩn
UART. Sự tồn tại của chân SCK giúp quá trình truyền ít bị lỗi và vì thế tốc độ
truyền của SPI có thể đạt rất cao. Xung nhịp chỉ đƣợc tạo ra bởi chip Master.
MISO– Master Input / Slave Output: nếu là chip Master thì đây là đƣờng
Input còn nếu là chip Slave thì MISO lại là Output. MISO của Master và các
Slaves đƣợc nối trực tiếp với nhau.

/>8


Thiết kế và thực hiện hệ thống hỗ trợ cảnh báo nguy cơ sạc lỡ bờ sông

-

-

MOSI – Master Output / Slave Input: nếu là chip Master thì đây là đƣờng
Output còn nếu là chip Slave thì MOSI là Input. MOSI của Master và các Slaves
đƣợc nối trực tiếp với nhau.
SS – Slave Select: SS là đƣờng chọn Slave cần giap tiếp, trên các chip Slave
đƣờng SS sẽ ở mức cao khi không làm việc. Nếu chip Master kéo đƣờng SS của
một Slave nào đó xuống mức thấp thì việc giao tiếp sẽ xảy ra giữa Master và
Slave đó. Chỉ có 1 đƣờng SS trên mỗi Slave nhƣng có thể có nhiều đƣờng điều
khiển SS trên Master, tùy thuộc vào thiết kế của ngƣời dùng.

Hoạt động: mỗi chip Master hay Slave có một thanh ghi dữ liệu 8 bits. Cứ mỗi
xung nhịp do Master tạo ra trên đƣờng giữ nhịp SCK, một bit trong thanh ghi dữ liệu

của Master đƣợc truyền qua Slave trên đƣờng MOSI, đồng thời một bit trong thanh ghi
dữ liệu của chip Slave cũng đƣợc truyền qua Master trên đƣờng MISO. Do 2 gói dữ
liệu trên 2 chip đƣợc gởi qua lại đồng thời nên quá trình truyền dữ liệu này đƣợc gọi là
“song công”. Quá trình truyền 1 gói dữ liệu bằng giao tiếp SPI đƣợc mô tả trong Hình
2.3, bên trái là chip Master và bên phải là Slave.

Hình 2. 3 Truyền dữ liệu SPI 3

Với ƣu điểm là truyền nhận dữ liệu tốc độ cao và ít bị lỗi, trong đề tài có sử dụng
“Module RF CC1101 SPI” để giao tiếp với Board Arduino MEGA 2560 thông qua
chuẩn SPI trong việc truyền nhận dữ liệu đọc đƣợc từ các cảm biến.

3

/>9


Thiết kế và thực hiện hệ thống hỗ trợ cảnh báo nguy cơ sạc lỡ bờ sông

2.2 TỔNG QUAN VỀ MỘT SỐ DỊCH VỤ CỦA GOOGLE
2.2.1 Giới thiệu Google Drive
Google Drive là một dịch vụ trực tuyến đƣợc Google phát hành chính thức vào
ngày 27 tháng 04 năm 2012, cho phép ngƣời dùng lƣu trữ dữ liệu trên máy chủ của
Google thông qua tài khoản Gmail, từ đó chúng ta có thể tận dụng làm các việc sau:
-

-

-


Có thể tải các dữ liệu thƣờng dùng lên để có thể truy cập, sử dụng ở bất kỳ đâu
có đƣờng truyền internet.
Dữ liệu trên máy chủ đƣợc đồng bộ với một ổ dữ liệu trên máy tính cá nhân,
thiết bị di động, do đó thao tác Copy, Paste nhƣ việc sử dụng máy tính bình
thƣờng.
Chia sẻ file cho ngƣời khác bằng cách gửi đƣờng dẫn (link) để ngƣời nhận
download, do vậy email sẽ nhẹ, gửi nhanh, nhận nhanh đồng thời không làm
tăng dung lƣợng hòm thƣ ngƣời nhận nhiều.
Dữ liệu trên máy chủ của Google đƣợc đảm bảo an toàn theo chính sách bảo
mật của Google.

Google Drive bao gồm một bộ các ứng dụng tiện ích văn phòng: Spreadsheet
(bảng tính), Form (biểu mẫu), Docs (tài liệu), Presentations (trình bày) và nhiều ứng
dụng khác nhƣ: Drawing (bản vẽ), Fusion Table (biểu bảng), Script (tập lệnh),... đƣợc
Google cung cấp miễn phí cho ngƣời dùng với dung lƣợng lƣu trữ lên đến 15GB.
Google với nền tảng đám mây cho phép ngƣời dùng có thể tƣơng tác, đồng bộ dễ
dàng với Google Drive và các dịch vụ khác của mình thông qua các trình duyệt hoặc
ứng dụng trên máy tính, điện thoại và các thiết bị thông minh khác.
2.2.2 Google Spreadsheet
Google Spreadsheet là một trong số các ứng dụng nằm trong Google Drive, cho
phép ngƣời dùng lƣu trữ thông tin, dữ liệu dƣới dạng bảng tính tƣơng tự nhƣ Microsoft
Excel trong Office nhƣng nó hoạt động trên nền web.
Việc đƣa dữ liệu vào lƣu trữ trong Google Spreadsheet có thể đƣợc thực hiện
thông qua nhiều cách nhƣ: ngƣời dùng tự nhập hoặc nhập dữ liệu thông qua Form hoặc
nhập dữ liệu thông qua lập trình Script.
Ngoài ra, Google Spreadsheet còn cho phép chúng ta chèn thêm hình ảnh, biểu đồ
và nhiều tiện ích khác vào trong bảng tính.

10



Thiết kế và thực hiện hệ thống hỗ trợ cảnh báo nguy cơ sạc lỡ bờ sông

Chính bởi những ƣu điểm này nên nhóm đã chọn Google Spreadsheet làm cơ sở
dữ liệu cho việc lƣu trữ các dữ liệu đọc từ cảm biến gửi lên thông qua board Arduino
Mega 2560.
2.2.3 Google Chart API
Google Chart API là một công cụ của Google giúp bạn tạo ra những biểu đồ một
cách đơn giản và nhanh chóng. Đây là một công cụ miễn phí với rất nhiều tính năng
mạnh mẽ. Cho phép hiển thị những số liệu, những bảng xếp hạng trên web một cách
trực quan. Google Chart API cung cấp rất nhiều loại biểu đồ, từ những biểu đồ tròn,
biểu đồ cột , biểu đồ đƣờng đơn giản đến những biểu đồ cây phân cấp phức tạp.
Chúng ta có thể nhúng những biểu đồ này vào trang web một cách dễ dàng bằng
một URL (viết tắt của Uniform Resource Locator, đƣợc dùng để tham chiếu tới tài
nguyên trên Internet) dựa trên Google Chart API, hoặc nâng cao hơn, là nhúng những
đoạn Javascript vào trang HTML của mình. Hình 2.4 dƣới đây là một ví dụ về tạo một
biểu đồ bằng URL:
/>=t:12.6,27.7,52.9,4,1.6&chdl=IE|Firefox|Chrome|Safari|Opera&chl=IE|Firefox|Ch
rome|Safari|Opera&chs=400x250&chco=FF9900|3399CC|80C65A|990066|76A4F
B&chp=2.1

Hình 2. 4 Ví dụ tạo biểu đồ bằng URL 4

Tận dụng những ƣu điểm này của Google Chart API, trong đề tài nhóm đã sử
dụng công cụ này để tạo ra những biểu đồ về các dữ liệu thu đƣợc từ cảm biến để giúp
4

/>11



Thiết kế và thực hiện hệ thống hỗ trợ cảnh báo nguy cơ sạc lỡ bờ sông

ngƣời sử dụng có một cái nhìn trực quan và bao quát hơn về sự thay đổi của các dữ
liệu. Nhóm sử dụng cách tạo biểu đồ bằng cách nhúng những đoạn Javascript vào trang
HTML của mình, tuy cách này sẽ phức tạp hơn nhƣng việc nhúng các script này sẽ cho
chúng ta một biểu đồ trực quan, sinh động hơn, hiển thị đƣợc nhiều thông tin hơn, đồng
thời chuyển đổi qua lại giữa các biểu đồ cũng dễ dàng hơn. Và đặc biệt, là có thể tƣơng
tác với chúng.
2.3 NGÔN NGỮ LẬP TRÌNH C/C++ VÀ MỘT SỐ NGÔN NGỮ LẬP TRÌNH
WEB
2.3.1 Ngôn ngữ lập trình C/C++
Ngôn ngữ lập trình C/C++ là một trong những ngôn ngữ lập trình hƣớng đối
tƣợng mạnh và phổ biến hiện nay do tính mềm dẻo và đa năng của nó, cú pháp cũng
tƣơng đối đơn giản và dễ hiểu,... đƣợc viết không chỉ cho các ứng dụng thông thƣờng
mà còn cho những chƣơng trình hệ thống lớn.
Trong đề tài, ngôn ngữ C/C++ đƣợc sử dụng để lập trình cho các board Arduino
giao tiếp với các cảm biến và linh kiện.
2.3.1.1 Ngôn ngữ lập trình C
C là một ngôn ngữ mệnh lệnh đƣợc phát triển từ đầu thập niên 1970 bởi Dennis
Ritchie để dùng trong hệ điều hành UNIX. Từ đó, ngôn ngữ này đã lan rộng ra nhiều
hệ điều hành khác và trở thành một những ngôn ngữ phổ dụng nhất.
C là một ngôn ngữ lập trình tƣơng đối nhỏ gọn, vận hành gần với phần cứng và
nó giống với ngôn ngữ Assembler hơn hầu hết các ngôn ngữ bậc cao.
Ƣu điểm của ngôn ngữ C là rất mạnh và linh động, có khả năng thể hiện bất cứ ý
tƣởng nào, chạy nhanh, cú pháp đơn giản, tƣờng minh, tập lệnh đầy đủ và có thể tái sử
dụng các hàm hay thƣ viện hàm do ngƣời lập trình khởi tạo.
2.3.1.2 Ngôn ngữ lập trình C++
C++ là ngôn ngữ lập trình hƣớng đối tƣợng đƣợc phát triển trên nền tảng của
ngôn ngữ C. Do vậy, C++ có ƣu điểm là kế thừa đƣợc các điểm mạnh truyền thống của
ngôn ngữ C nhƣ uyển chuyển, tƣơng thích với các thiết bị phần cứng.

Đến với C++, ngƣời lập trình sẽ đƣợc tiếp cận với một kỹ thuật lập trình mới đó
là lập trình hƣớng đối tƣợng-phƣơng pháp lập trình lấy đối tƣợng làm nền tảng để xây
dựng giải thuật, xây dựng chƣơng trình. Đây là kỹ thuật đƣợc sử dụng trong hầu hết
các ngôn ngữ lập trình phổ biến hiện nay.
12


Thiết kế và thực hiện hệ thống hỗ trợ cảnh báo nguy cơ sạc lỡ bờ sông

Ngoài những đặc điểm kế thừa từ ngôn ngữ C, lập trình hƣớng đối tƣợng trong
C++ còn cho phép ngƣời lập trình định nghĩa và xây dựng các lớp đối tƣợng có thể tái
sử dụng với những thuộc tính thiên về hƣớng đối tƣợng nhƣ: tính trừu tƣợng, tính đóng
gói, tính đa hình...
Do những ƣu điểm này mà ngôn ngữ C++ đƣợc sử dụng để xây dựng hầu hết các
thƣ viện trong Arduino. Trong đề tài cũng sử dụng chƣơng trình Qt Creator dựa trên
nền ngôn ngữ C++ trong lập trình xử lý hình ảnh thu đƣợc từ camera.
2.3.2 Tổng quan về một số ngôn ngữ lập trình web
Trong đề tài có sử dụng một số ngôn ngữ lập trình web nhƣ: PHP, HTML,
Google Apps Script,... để phục vụ cho việc lập trình lƣu trữ dữ liệu lên Google Drive
và thiết kế giao diện web tƣơng tác với ngƣời dùng.
Việc lựa chọn sử dụng các ngôn ngữ trên là bởi các ƣu điểm sau:
-

Thông dụng, phổ biến và đƣợc nhiều ngƣời sử dụng.
Mã nguồn mỡ và miễn phí.
Nguồn tài liệu phong phú để tìm hiểu và học tập.
Cú pháp tƣơng đối đơn giản và dễ hiểu.

2.3.2.1 Ngôn ngữ HTML
HTML (viết tắt cho HyperText Markup Language, hay là "Ngôn ngữ Đánh dấu

Siêu văn bản") là một ngôn ngữ đánh dấu đƣợc thiết kế để tạo nên các trang web với
các mẩu thông tin đƣợc trình bày trên World Wide Web (WWW). HTML đƣợc định
nghĩa nhƣ là một ứng dụng đơn giản của SGML và đƣợc sử dụng trong các tổ chức cần
đến các yêu cầu xuất bản phức tạp. HTML đã trở thành một chuẩn Internet do tổ
chức World Wide Web Consortium (W3C) duy trì. Phiên bản chính thức mới nhất của
HTML là HTML 4.01 (1999). Sau đó, các nhà phát triển đã thay thế nó bằng XHTML.
Hiện nay, HTML đang đƣợc phát triển tiếp với phiên bản HTML5 hứa hẹn mang lại
diện mạo mới cho Web với nhiều tính năng vƣợt trội.
HTML đƣợc xem là một ngôn ngữ trình bày hơn là một ngôn ngữ lập trình. Tập
tin HTML là một văn bản có chứa các thẻ đánh dấu (markup tags), các thẻ đánh dấu
này giúp các trình duyệt Web hiểu đƣợc cách trình bày và hiển thị trang Web. Tập tin
HTML thƣờng có phần mở rộng là .html hay .htm và có thể đƣợc tạo ra bằng bất cứ
chƣơng trình xử lý văn bản đơn giản nào.

13


Thiết kế và thực hiện hệ thống hỗ trợ cảnh báo nguy cơ sạc lỡ bờ sông

Trong tập HTML các phần tử (Element) đƣợc đánh dấu bằng các thẻ HTML. Các
thẻ này đƣợc bao bởi dấu < và dấu >. Thông thƣờng các thẻ HTML đƣợc dùng theo
một cặp (thẻ bắt đầu, thẻ mở) và (thẻ kết thúc, thẻ đóng), văn bản nằm giữa cặp thẻ này
là nội dung của phần tử, một số thẻ không cần thẻ kết thúc (thẻ đóng). Các thẻ HTML
không phân biệt chữ hoa và chữ thƣờng, có nghĩa là các kiểu chữ đều đƣợc xem nhƣ
nhau.
2.3.2.2 Ngôn ngữ PHP
PHP (viết tắt hồi quy "PHP: Hypertext Preprocessor") là một ngôn ngữ lập
trình kịch bản hay một loại mã lệnh chủ yếu đƣợc dùng để phát triển các ứng dụng viết
cho máy chủ (Không giống nhƣ javascript chạy ở client, PHP đƣợc sử dụng để chạy
phía server), mã nguồn mở, dùng cho mục đích tổng quát.

PHP rất thích hợp với web và có thể dễ dàng nhúng vào các trang HTML. Do
đƣợc tối ƣu hóa cho các ứng dụng web, tốc độ nhanh, nhỏ gọn, cú pháp
giống C và Java, dễ học và thời gian xây dựng sản phẩm tƣơng đối ngắn hơn so với các
ngôn ngữ khác nên PHP đã nhanh chóng trở thành một ngôn ngữ lập trình web phổ
biến nhất thế giới.
Tập tin PHP có phần mở rộng là.php. Do là ngôn ngữ chạy phía server nên việc
thực thi và đáp ứng các yêu cầu trong PHP đƣợc thực hiện tại máy chủ server và không
phụ thuộc vào môi trƣờng (cho phép PHP chạy trên hầu hết các hệ điều hành khác
nhau). Kết quả đƣợc trả về cho trình duyệt web dƣới dạng HTML.
Trong đề tài sử dụng ngôn ngữ PHP để viết một dịch vụ trung gian hỗ trợ lấy dữ
liệu từ cảm biến và lƣu trữ trên Google Drive, cụ thể là Google Spreadsheet.
2.3.2.3 Google Apps Script (GAS)
Google Apps Script (GAS) là một ngôn ngữ kịch bản JavaScript điện toán đám
mây đƣợc phát triển bởi Google, cho phép bạn mở rộng Google Apps và xây dựng các
ứng dụng web. Kịch bản đƣợc phát triển trong trình soạn thảo kịch bản dựa trên trình
duyệt của Google Apps Script, và chúng đƣợc lƣu trữ trong và chạy từ các máy chủ
của Google.
Do đƣợc phát triển trên nền JavaScript nên cú pháp, lệnh, từ khóa và các hàm
chức năng của GAS cũng tƣơng tự nhƣ JavaScript. GAS chạy trên nền tảng điện toán
đám mây của Google nên không có bất kỳ một phần mềm biên dịch nào. Thay vào đó,
Google cung cấp sẵn một trình biên tập và biên dịch cho GAS thông qua trình duyệt
web.
Google Apps Script đƣợc Google áp dụng cho các ứng dụng trong Google Drive
(trong đó có Google Docs, Google Spreadsheet, Google Forms, Google Sites…). GAS
14


Thiết kế và thực hiện hệ thống hỗ trợ cảnh báo nguy cơ sạc lỡ bờ sông

giúp việc tƣơng tác với các dịch vụ này trở nên dễ dàng và thuận tiện thông qua các gói

API đƣợc Google cung cấp đầy đủ và miễn phí. Đề tài sử dụng GAS để viết chƣơng
trình hỗ trợ việc upload dữ liệu từ cảm biến lên Google Spreadsheet.
2.4 GIỚI THIỆU GIAO THỨC HTTP VÀ HTTPS
2.4.1 Giao thức HTTP
HTTP (Hypertext Transfer Protocol hay Giao thức truyền siêu văn bản) là một
giao thức không trạng thái (stateless) nằm ở tầng ứng dụng, đảm nhiệm việc giao tiếp
giữa các hệ thống phân tán với nhau, và nó là nền tảng của web.
HTTP đƣợc ứng dụng để truyền tải tài liệu và các tệp siêu văn bản giữa máy chủ
Web (Web server) và máy khách Web (Web client) thông qua một trình duyệt Web.
HTTP cho phép giao tiếp giữa rất nhiều loại server/client với nhau, chủ yếu thông qua
TCP/IP, tuy nhiên bất kỳ giao thức đáng tin cậy nào khác cũng có thể đƣợc dùng. Cổng
giao tiếp chuẩn là 80, tuy nhiên có thể dùng bất kỳ cổng khác. Giao tiếp giữa client và
server dựa vào một cặp request/response. Client khởi tạo HTTP request và nhận HTTP
response từ server gửi về. Mô hình hoạt động của giao thức HTTP nhƣ hình sau:

Hình 2. 5 Mô hình giao tiếp Client-Server của giao thức HTTP 5

Trong giao thức này có một số phƣơng thức để gửi yều cầu từ máy khách (Client)
đến máy chủ (Server) nhƣ: GET, POST, PUT, DELETE, HEAD,... Trong đề tài sử
dụng phƣơng thức GET để đƣa dữ liệu cảm biến từ board Arduino lên web server.
-

5

Phƣơng thức GET: là phƣơng thức dùng để gửi yêu cầu từ Client lên Server để
gửi hoặc cung cấp dữ liệu thông qua đƣờng dẫn URL (Uniform Resource
Locator) nằm trên thanh địa chỉ của Browser. Server sẽ nhận đƣờng dẫn đó và
phân tích trả về kết quả cho Client. Phƣơng thức GET có tốc độ xử lý và thực

/>15



Thiết kế và thực hiện hệ thống hỗ trợ cảnh báo nguy cơ sạc lỡ bờ sông

thi nhanh hơn POST mặc dù chức năng cũng tƣơng tự nhau, dữ liệu đƣợc gửi
tƣờng minh và có thể nhìn thấy trên URL. Vì vậy nhóm đã chọn phƣơng thức
này để gửi dữ liệu lên web.

Hình 2. 6 Ví dụ gửi dữ liệu bằng phƣơng thức GET thông qua URL

2.4.2 Giao thức HTTPS
HTTPS (Hypertext Transfer Protocol Secure) là một sự kết hợp giữa giao thức
HTTP và giao thức bảo mật SSL hay TLS cho phép trao đổi thông tin một cách bảo
mật trên Internet. Giao thức HTTPS thƣờng đƣợc dùng trong các giao dịch nhạy cảm
cần tính bảo mật cao.
Khác với HTTP, HTTPS sẽ hỗ trợ việc xác thực tính chính danh của các Website
mà ngƣời dùng truy nhập thông qua việc kiểm tra xác thực bảo mật (security
certificate). Các xác thực bảo mật này đƣợc cung cấp và xác minh bởi các CA
(Certificate Authority) có uy tín. Với các xác thực từ CA, ngƣời sử dụng có thể biết
rằng mình đã truy nhập đúng vào Website cần truy nhập chứ không phải một Website
giả danh bất kỳ nào khác.
Hiện nay, phần lớn các ứng dụng và trang web của Google đều sử dụng giao thức
HTTPS nhằm nâng cao tính bảo mật, trong đó có ứng dụng trên nền tảng điện toán
đám mây là Google Drive. Vì vậy việc tác động từ board Arduino sẽ gặp phải khó khăn
do Arduino chỉ đủ mạnh để sử dụng giao thức HTTP, nên trong đề tài để phục vụ cho
việc gửi dữ liệu cảm biến và lƣu trữ trên Google Drive, phải thiết kế thêm một dịch vụ
trung gian để chuyển đổi giao thức HTTP-HTTPS cho Arduino.
2.5 GIỚI THIỆU KHÁI QUÁT VỀ XỬ LÝ ẢNH
Con ngƣời thu nhận thông tin qua các giác quan, trong đó thị giác đóng vai trò
quan trọng nhất. Những năm trở lại đây với sự phát triển của phần cứng máy tính, xử lý

ảnh và đồ hoạ phát triển một cách mạnh mẽ và có nhiều ứng dụng trong cuộc sống.
Quá trình xử lý ảnh đƣợc xem nhƣ là quá trình thao tác ảnh đầu vào nhằm cho ra ảnh
kết quả nhƣ mong muốn.
Sơ đồ tổng quát của một hệ thống xử lý ảnh :
16


Thiết kế và thực hiện hệ thống hỗ trợ cảnh báo nguy cơ sạc lỡ bờ sông

Hệ quyết định
Thu nhận ảnh
(scanner,
camera,sensor…)

Tiền Xử Lí

Trích chọn
đặc điểm

So sánh rút ra
kết luận

Hậu xử lí
Lƣu Trữ

Hình 2. 7 Các bƣớc cơ bản của một hệ thống xử lý ảnh

2.5.1 Một số khái niệm cơ bản trong xử lý ảnh
Ảnh: là tập hợp hữu hạn các điểm ảnh với mức xám phù hợp dùng để mô tả ảnh
gần với ảnh thật. Số điểm ảnh xác định độ phân giải của ảnh. Ảnh có độ phân giải càng

cao thì càng thể hiện rõ nét các đặt điểm của tấm hình càng làm cho tấm ảnh trở nên
thực và sắc nét hơn.
Điểm ảnh (Pixel): là một phần tử của ảnh số tại toạ độ (x,y) với độ xám hoặc màu
nhất định. Kích thƣớc và khoảng cách giữa các điểm ảnh đó đƣợc chọn thích hợp sao
cho mắt ngƣời cảm nhận sự liên tục về không gian và mức xám (hoặc màu) của ảnh số
gần nhƣ ảnh thật. Mỗi phần tử trong ma trận đƣợc gọi là một phần tử ảnh.
Mức xám của điểm ảnh: là cƣờng độ sáng của nó đƣợc gán bằng giá trị số tại
điểm đó.
Các thang giá trị mức xám thông thƣờng: 16, 32, 64, 128, 256 (Mức 256 là mức
phổ dụng. Lý do: từ kỹ thuật máy tính dùng 1 byte (8 bit) để biểu diễn mức xám: Mức
xám dùng 1 byte biểu diễn: 28=256 mức, tức là từ 0 đến 255).
Ảnh nhị phân: ảnh chỉ có 2 mức đen trắng phân biệt, tức dùng 1 bit mô tả 21 mức
khác nhau. Nói cách khác: mỗi điểm ảnh của ảnh nhị phân chỉ có thể là 0 hoặc 1.
Ảnh đen trắng (ảnh mức xám): là ảnh chỉ có hai màu đen, trắng với mức xám ở
các điểm ảnh có thể khác nhau (có nhiều giá trị mức xám, khác với ảnh nhị phân).
2.5.2 Các giải thuật xử lý ảnh đƣợc sử dụng trong đề tài
Trong đề tài, hệ thống của nhóm có phần yêu cầu thu thập hình ảnh để xử lý rút ra
đƣợc đƣờng biên của đoạn đƣờng có nguy cơ sạt lở để ngƣời giám sát có thể dễ dàng
quan sát và đánh giá độ sụt, lún của đoạn đƣờng đó. Để giải quyết các vần đề trên,
nhóm đã sử dụng các kỹ thuật phân ngƣỡng ảnh, lọc đƣờng biên bằng kỹ thuật Sobel
và kỹ thuật trừ ảnh để phục vụ cho việc xử lý hình ảnh.

17


Thiết kế và thực hiện hệ thống hỗ trợ cảnh báo nguy cơ sạc lỡ bờ sông

2.5.2.1 Giới thiệu kỹ thuật phân ngưỡng ảnh
Kỹ thuật phân ngƣỡng ảnh sẽ quét từng điểm ảnh và lấy giá trị mức xám của từng
điểm ảnh để so sánh với độ phân ngƣỡng đƣợc đề ra. Nếu mức xám lớn hơn độ phân

ngƣỡng thì mức xám sẽ đƣợc điều gán bằng 255, và ngƣợc lại mức xám sẽ bằng 0.
Phân ngƣỡng ảnh sẽ chuyển ảnh mức xám thành ảnh nhị phân. Một ngƣỡng đƣợc xem
là tốt nếu sau quá trình phân ngƣỡng, ảnh thu đƣợc có thể giữ lại những chi tiết mong
muốn và loại bỏ các chi tiết thừa.
Trƣớc khi ứng dụng kỹ thuật này vào hình ảnh thực tế nhóm đã xử lý ảnh chụp
của một tờ giấy trắng đặt trên bàn gỗ để kiểm tra các giải thuật xử lý ảnh có thực hiện
đúng yêu cầu đề ra hay không. Hình 2.8 dƣới đây bao gồm ảnh chụp từ camera sử dụng
trong đề tài và ảnh sau khi phân ngƣỡng với độ phân ngƣỡng 110.

Hình 2. 8 Ảnh màu (ảnh trái) và ảnh đã phân ngƣỡng của một tờ giấy trắng (ảnh phải)

2.5.2.2 Giới thiệu kỹ thuật lọc đường biên Sobel
Khái niệm đƣờng biên : biên là một vấn đề chủ yếu trong phân tích ảnh vì các kỹ
thuật phân đoạn ảnh chủ yếu dựa vào biên. Một điểm ảnh có thể đƣợc coi là điểm biên
nếu tại đó có sự thay đổi đột ngột về mức xám. Tập hợp các điểm biên tạo thành biên
hay đƣờng bao của ảnh. Ví dụ : trong ảnh nhị phân có một điểm gọi là biên nếu nó là
điểm đen và có ít nhất một điểm trắng lân cận.
Có nhiều kỹ thuật lọc đƣờng biên nhƣ Sobel, gradient, prewitt, ... Nhƣng với đề
tài này, nhóm đã chọn kỹ thuật Sobel. Kỹ thuật Sobel sử dụng tích chập ảnh theo 2
hƣớng x và y, ta có:
Hx = (

)

18


×