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.
Trang 1LUẬ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
Trang 2LUẬ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
Trang 3TRƯỜ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
Trang 4i
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
Trang 5LỜ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 Trần Vận Toàn
Trang 6iii
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
Trang 72.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
Trang 81
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
Trang 9Hì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
Trang 103
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
Trang 11CHƯƠ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
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ố
Trang 125
- 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
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ó
Trang 13CHƯƠ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
Trang 147
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 UART1
- 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
http://smart-techvn.com/6724-hoc-msp430-voi-kit-msp430-launchpad-bai-5-uart.html
Trang 152.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à Slave2
4 đường giao tiếp cơ bản trong giao tiếp SPI:
- 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
2
http://voer.edu.vn/m/giao-dien/229cccfc
Trang 169
- 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 SPI3
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
http://www.hocavr.com/index.php/lectures/spi
Trang 172.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
Trang 1811
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:
http://chart.googleapis.com/chart?cht=p&chtt=Browser+Statistics+05/2013&chd
=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 URL4
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
http://enews.agu.edu.vn/?act=VIEW&a=14677
Trang 19ngườ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
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
Trang 202.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
Trang 21Trong 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
Trang 2215
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
- 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
5
http://codekeo.com/website-la-gi-bon-cu-soan-lai/
Trang 23thi 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 :
Trang 24Hì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
Trang 252.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 = (
)
Trang 26và chính pixel trung tâm
Hướng x sẽ cho chúng ta kết quả là một bộ lọc biên dọc và hướng y sẽ cho chúng
ta kết quả là một bộ lọc biên ngang
Dưới đây là hình đã được lọc đường biên của tờ giấy đã được phân ngưỡng ở mục 2.5.2.1:
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)
2.5.2.3 Kỹ thuật trừ ảnh
Khi hai ảnh đầu vào được xử lý xong Nhóm sẽ sẽ sử dụng kỹ thuật trừ ảnh để nhằm mục đích làm rõ sự khác biệt giữa các đường biên hỗ trợ người giám sát phán đoán được tình hình sạt lở Kỹ thuật trừ ảnh có hai ảnh vào bao gồm: ảnh tham chiếu
và ảnh được tham chiếu Ảnh tham chiếu và ảnh được tham chiếu đều được xử lý với
độ phân ngưỡng giống nhau và đều được lọc đường biên bằng kỹ thuật Sobel Ảnh được tham chiếu sẽ được đem trừ cho ảnh tham chiếu để tìm ra sự khác biệt giữa hai ảnh nếu có sự thay đổi
Trang 272.5.3 Giới thiệu phần mềm Qt Creator
Qt là nền tảng xây dựng các ứng dụng chạy được trên nhiều hệ điều hành Phần lớn các ứng dụng xây dựng bằng Qt đều có giao diện đồ họa, do vậy Qt còn được coi như là một bộ công cụ (widget toolkit) Ban đầu Qt ra đời như một sản phẩm thương mại và cũng được dùng để viết môi trường KDE, nhưng về sau được bổ sung giấy phép LGPL, theo đó có thể được sử dụng tự do để phát triển các phần mềm nguồn mở hay đúng hơn là có thể sử dụng trong các phần mềm thương mại nếu muốn Bản quyền thương mại của Qt hiện nay đã được chuyển qua hình thức thu phí hỗ trợ Chúng ta có thể dùng Qt như một thư viện để viết phần mềm thương mại, nếu có sửa đổi nào trong
bộ nguồn chính của Qt thì chúng ta chỉ phải cung cấp mã nguồn đã sửa ra chứ không yêu cầu phải mở toàn bộ mã nguồn hay phải mua giấy phép thương mại như trước kia
Qt Creator là một IDE rất được các lập trình viên ngày nay ưa chuộng vì từ ngày Microsoft đã hết mặn mà với MFC và chuyển sang NET thì các lập trình viên đang dần chuyển sang Qt Qt đã được Nokia mua lại từ năm 2008 vì vậy hiện giờ cộng động
Qt ngày càng lớn mạnh và gia tăng rất nhanh Qt hỗ trợ rất mạnh trong lập trình giao diện, tương tác với Database, Graphics
Trong đề tài, nhóm sử dụng phần mềm Qt Creator để làm môi trường soạn thảo
và biên dịch chương trình ứng dụng thành một phần mềm xử lý ảnh phục vụ việc xử lý các hình ảnh thu được từ camera của hệ thống
2.6 TÌM HIỂU VỀ ARDUINO VÀ CÁC LINH KIỆN SỬ DỤNG TRONG ĐỀ TÀI
2.6.1 Tổng quan về Arduino
Arduino là một nền tảng mã nguồn mở được sử dụng để xây dựng các ứng dụng điện tử Arduino gồm có board mạch có thể lập trình được (thường gọi là vi điều khiển), được thiết kế trên nền tảng vi xử lý AVR Atmel 8bit hoặc ARM Atmel 32-bit
và các phần mềm hỗ trợ phát triển tích hợp IDE (Integrated Development Environment) dùng để soạn thảo, biên dịch code và nạp chương cho board Những Model hiện tại được trang bị gồm 1 cổng giao tiếp USB, 6 chân đầu vào analog, 14 chân I/O kỹ thuật số tương thích với nhiều board mở rộng khác nhau
Được giới thiệu vào năm 2005, Những nhà thiết kế của Arduino cố gắng mang đến một phương thức dễ dàng, không tốn kém cho những người yêu thích, sinh viên và giới chuyên nghiệp để tạo ra những nhiết bị có khả năng tương tác với môi trường thông qua các cảm biến và các cơ cấu chấp hành Những ví dụ phổ biến cho những
Trang 28là shield Vài shield truyền thông với board Arduino trực tiếp thông qua các chân khác nhau, nhưng nhiều shield được định địa chỉ thông qua serial bus I²C-nhiều shield có thể được xếp chồng và sử dụng dưới dạng song song
2.6.2 Board Arduino Mega 2560
Arduino Mega 2560 sử dụng vi điều khiển ATmega2560 cho tốc độ, ngoại vi và
số chân nhiều nhất, board hoàn toàn có cấu trúc chân tương thích với các board như Uno và chạy ở điện áp 5VDC
Hình 2 10 Hình ảnh thực tế của Board Arduino Mega 25606
Các thông số kỹ thuật của board Arduino Mega 2560:
- Vi điều khiển: Atmega2560
Trang 29Chân 50 hoặc ICSP 1 51 hoặc ICSP 4 52 hoặc ICSP 3 53
Bảng 2 2 Các cổng Serial dành cho giao tiếp UART trên Arduino Mega 2560
2.6.3 Module WIFI ESP8266
Đây là module truyền nhận WiFi đơn giản dựa trên chip ESP8266 SoC (System
on Chip)
ESP8266 là một chip tích hợp được thiết kế dùng cho chuẩn kết nối mới Có thể dùng nó để đưa những dự án của bạn kết nối đến Internet Đơn giản nó sử dụng ngõ giao thức nối tiếp với tốc độ Baud 9600 (mặc định) Kết nối mạng không dây, giống như một máy chủ hoặc một cầu nối trung gian và có thể download dữ liệu từ Internet ESP8266 có xử lý và khả năng lưu trữ mạnh mẽ cho phép nó được tích hợp với các bộ cảm biến, vi điều khiển và các thiết bị ứng dụng cụ thể khác thông qua GPIOs với một chi phí tối thiểu và một PCB tối thiểu
Trang 3023
Các tính năng cơ bản của module Wifi ESP8266:
- Hỗ trợ chuẩn 802.11 b/g/n
- Wi-Fi 2.4 GHz, hỗ trợ WPA/WPA2
- Chuẩn điện áp hoạt động: 3.3V
- Chuẩn giao tiếp nối tiếp UART với tốc độ Baud lên đến 115200
- Có 3 chế độ hoạt động: Client, Access Point, Both Client and Access Point
- Hỗ trợ các chuẩn bảo mật như: OPEN, WEP, WPA_PSK, WPA2_PSK,
WPA_WPA2_PSK
- Hỗ trợ cả 2 giao tiếp TCP và UDP
- Làm việc như các máy chủ có thể kết nối với 5 máy con
Hình 2 11 Hình ảnh thực tế và sơ đồ chân của module Wifi ESP82667
Bảng 2 4 Chức năng các chân kết nối của module Wifi ESP8266
1 RX Chân Rx của giao thức UART, kết nối đến chân Tx của vi
điều khiển
2 VCC Kết nối với nguồn 3.3VDC, dòng lên tới 300mA
3 GPIO 0 Kéo xuống thấp cho chế độ update firmware
4 RESET Chân Reset, xảy ra khi được kéo xuống mass
5 CH_PD Kích hoạt chip, sử dụng cho Flash Boot và updating lại
module Thường giữ ở mức cao khi sử dụng
7 TX Chân Tx của giao thức UART, kết nối đến chân Rx của vi
điều khiển
7
display/
Trang 31http://laptrinhpic.info/esp8266-wifi-module-hien-thi-thong-tin-thoi-tiet-len-lcd-esp8266-weather-8 GND Nối mass
Để giao tiếp với module Wifi ESP8266, chúng ta có thể truyền các lệnh AT qua kết nối UART đối với firmware mặc định hoặc truyền các lệnh đơn giản và dễ hiểu hơn đối với firmware mới “NodeMCU”
2.6.3.1 Tập lệnh AT
Các lệnh AT hay sử dụng trong giao tiếp với module Wifi ESP8266 đối với
firmware mặc định đƣợc trình bày trong bảng sau:
Bảng 2 5 Các lệnh AT sử dụng trong giao tiếp với module ESP8266
về "OK"
AT+CWMODE =<mode> Cài đặt chế độ 1 = Station
2 = Access Point
3 = Both
AT+CWMODE? Truy vấn chế độ đã cài đặt
AT+CIPMUX = <mode> Cài đặt số lƣợng các
Trang 322.2.3.2 Các lệnh trong firmware NodeMCU
Do các lệnh trong firmware NodeMCU đơn giản và dễ hiểu, nên trong đề tài nhóm đã sử dụng firmware này trong việc giao tiếp module với board Arduino Mega
2560 Các lệnh sử dụng trong đề tài đƣợc liệt kê trong Bảng 2.6:
Bảng 2 6 Các lệnh trong firmware NodeMCU đƣợc sử dụng trong đề tài
node.restart() Khởi động lại chip
wifi.setmode(mode) Thiết lập chế độ hoạt
wifi.sta.config(ssid, password) Kết nối với 1 mạng wifi
wifi.sta.getip() Xem đỉa chỉ IP, netmask,
gateway