TỔNG QUAN VỀ HỆ THỐNG

Một phần của tài liệu 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 39 - 47)

Mô hình tổng quan của hệ thống nhƣ Hình 3.1, gồm 2 thành phần chính:

- Bộ xử lý trung tâm để thu thập dữ liệu cảm biến và hình ảnh.

- Các dịch vụ web và ứng dụng trên nền điện toán đám mây của Google: Google

DriveGoogle Spreadsheet.

Hình 3.1 Mô hình tổng quan của hệ thống

Bộ xử lý sẽ giao tiếp với các cảm biến lƣu lƣợng nƣớc, cảm biến độ ẩm đất và camera để lấy dữ liệu và hình ảnh của đoạn đƣờng có nguy cơ bị sạt lở, sau đó kết nối với Wifi thông qua module Wifi ESP8266 để kết nối với internet, upload và lƣu trữ dữ liệu lên Google Drive, cụ thể là Google Spreadsheet. Các dữ liệu này sẽ đƣợc thể hiện lại dƣới dạng biểu đồ thông qua Google Chart API. Ngƣời dùng hay ngƣời quản lý hệ

33

thống có thể xem và quản lý các dữ liệu này thông qua việc truy cập vào Google Drive bằng Internet từ máy tính cá nhân hoặc các thiết bị di động thông minh,...

3.2 THIẾT KẾ PHẦN CỨNG

Phần cứng của Bộ xử lý trung tâm để thu thập dữ liệu và hình ảnh trong hệ thống gồm 3 thành phần chính là: bộ gửi dữ liệu, bộ nhận dữ liệu và bộ thu thập hình ảnh. Hai bộ gửi và nhận dữ liệu sẽ thực hiện việc truyền nhận không dây thông qua sóng RF.

3.2.1 Bộ gửi dữ liệu

Trong bộ gửi dữ liệu chủ yếu gồm có một board Arduino Mega 2560, các cảm biến và một module RF CC1101 đƣợc cấu hình truyền dữ liệu. Sơ đồ khối của bộ này nhƣ Hình 3.2 dƣới đây:

Hình 3.2 Sơ đồ khối của Bộ gửi dữ liệu

Hệ thống của nhóm sử dụng 2 cảm biến độ ẩm đất và 2 cảm biến lƣu lƣợng nƣớc để kiểm tra độ ẩm đất của đoạn đƣờng có nguy cơ bị sạt lở và kiểm tra lƣu lƣợng nƣớc chảy qua đoạn đƣờng đó.

- Ngõ ra của cảm biến độ ẩm đất là dạng analog nên nhóm đã kết nối chúng với

các chân analog A0, A1 biến đổi ADC (Analog to Digital Converter, dùng để chuyển tín hiệu tƣơng tự sang tín hiệu số) của board Arduino Mega 2560 để lấy đƣợc tín hiệu ngõ ra của cảm biến, rồi dùng công thức để tính ra đƣợc độ ẩm đất dƣới dạng %. Cách tính nhƣ sau:

 Bộ ADC của board Arduino Mega 2560 là ADC 10 bit nên sẽ có 210 = 1024

giá trị từ 0-1023.

 Nếu quy ƣớc : 1023  Độ ẩm 100%

34

 Để tính đƣợc độ ẩm đất, chúng ta sẽ có công thức nhƣ sau:

Độ ẩm đất = đ đ

- Ngõ ra của cảm biến lƣu lƣợng nƣớc S201 là dạng xung, nên để đo đƣợc lƣu

lƣợng nƣớc chảy qua cần phải đo tần số tín hiệu ngõ ra của cảm biến.

 Tần số tín hiệu đầu ra: F (Hz) = 7,5 x Q (Lít/phút) (1) (công thức do nhà sản

xuất cung cấp).

 Kết nối cảm biến lƣu lƣợng nƣớc với các chân có chức năng ngắt ngoài (

chân 2,3) của board Arduino Mega 2560 để đo tần số ngõ ra của cảm biến. Nhóm lập trình cho board Arduino đếm xung ngõ ra của cảm biến lƣu lƣợng trong mỗi 1 giây rồi áp dụng công thức (1) để tính ra đƣợc lƣu lƣợng nƣớc. Board Arduino sẽ lấy tất cả dữ liệu đọc đƣợc từ các cảm biến rồi lƣu chúng vào trong một mảng và truyền đến module RF CC1101 (thông qua chuẩn SPI) để truyền không dây qua sóng RF đến Bộ nhận dữ liệu.

3.2.2 Bộ nhận dữ liệu

Bộ này có nhiệm vụ nhận các dữ liệu đọc đƣợc từ cảm biến đƣợc gửi từ bộ gửi thông qua truyền không dây qua sóng RF. Các thành phần chính của bộ nhận dữ liệu bao gồm một board Arduino Mega 2560, một module RF CC1101 đƣợc cấu hình nhận dữ liệu và một module Wifi ESP8266 giúp board Arduino kết nối với mạng Wifi để upload dữ liệu lên web.

Sơ đồ khối bộ nhận dữ liệu nhƣ Hình 3.3 dƣới đây:

Hình 3.3 Sơ đồ khối của Bộ nhận dữ liệu

Board Arduino Mega 2560 sẽ nhận dữ liệu từ bộ gửi qua module RF. Sau đó Bộ nhận dữ liệu đƣợc kết nối với Wifi để kết nối Internet và upload toàn bộ dữ liệu nhận

35

đƣợc lên Google Drive, cụ thể là Google Spreadsheet thông qua module Wifi ESP8266. Board Arduino giao tiếp với module Wifi này bằng chuẩn UART (kết nối với Serial1 ở chân số 18 và 19 của board Arduino Mega 2560, lƣu ý là chân TX của module Wifi phải kết nối với chân RX1 (19), chân RX kết nối với chân TX1 (18) của board Arduino).

3.2.3 Bộ thu thập hình ảnh

Bộ thu thập hình ảnh chủ yếu chỉ gồm một board Arduino Mega 2560, một camera hồng ngoại màu JPEG LS-Y201 và một module SD card để lƣu trữ hình ảnh. Camera sẽ giao tiếp với board Arduino thông qua chuẩn UART; module SD card giao tiếp với board Arduino qua chuẩn SPI. Sơ đồ khối và cách nối dây của Bộ thu thập hình ảnh nhƣ Hình 3.4 dƣới đây:

Hình 3.4 Sơ đồ khối của Bộ thu thập hình ảnh

Bộ thu thập hình ảnh sẽ đƣợc lắp đặt tại đoạn đƣờng có nguy cơ sạt lở, có chức năng chính là chụp lại những hình ảnh của đoạn đƣờng đó và lƣu trữ chúng trong thẻ SD card. Ngƣời giám sát sẽ thu thập những hình ảnh này và xử lý với phần mềm xử lý ảnh để xem xét sự thay đổi của đoạn đƣờng (nếu có).

36

3.3 THIẾT KẾ PHẦN MỀM

3.3.1 Lập trình phần mềm cho hệ thống

3.3.1.1 Kết nối board Arduino với Internet qua module Wifi ESP8266

Nhƣ đã trình bày ở phần thiết kế phần cứng, board Arduino Mega 2560 giao tiếp với module Wifi ESP8266 qua chuẩn UART để kết nối Internet và upload dữ liệu lên Google Drive. Nhóm đã lập trình cho board Arduino truyền các lệnh kết nối đến module Wifi để kết nối board với Access Point. Dƣới đây là bảng chức năng của các lệnh sử dụng trong giao tiếp giữa board Arduino Mega 2560 với module Wifi:

Bảng 3. 1 Các lệnh sử dụng trong đề tài để kết nối board Arduino với Internet

Lệnh Chức năng

node.restart() Khởi động lại module Wifi

wifi.setmode(wifi.STATION) Thiết lập cho board Arduino nhƣ 1 thiết bị kết

nối tới 1 Wifi router

wifi.sta.config(ssid, password) Kết nối board Arduino với Wifi router có tên

truy cập là SSID, mật khẩu là password

wifi.sta.getip() Xem địa chỉ IP mà Access Point cấp cho

module Wifi khi kết nối thành công

Các lệnh trên sẽ đƣợc truyền theo thứ tự nhƣ trong bảng 3.1 qua Serial0 của board Arduino Mega 2560. Sau mỗi lần truyền lệnh, nếu truyền thành công thì sẽ trả về dấu “>”. Suy ra, việc lập trình truyền các lệnh sẽ dựa vào kiểm tra dấu ”>”. Khi đã kết nối đƣợc module Wifi với 1 Access Point thì module có chức năng ghi nhớ lại điểm truy cập Wifi đó mà không cần truyền lại các lệnh trên để kết nối lại.

3.3.1.2 Lập trình gửi dữ liệu lên web với module Wifi ESP8266

Sau khi đã kết nối đƣợc với Internet, Board Arduino ở Bộ nhận dữ liệu sẽ tiến hành kiểm tra và nhận các dữ liệu cảm biến gửi từ bộ gửi và lấy những dữ liệu đó gửi

lên web. Các lệnh để khởi tạo kết nối và gửi dữ liệu lên web gồm các lệnh sau đây 12

(gửi bằng giao thức HTTP dƣới quyền client):

tt=net.createConnection(net.TCP, 0) (lệnh 1)

12

37

tt:on("receive", function(sck, c) print(c) end ) (lệnh 2)

tt:connect(80 ,"nguyenkhanh.16mb.com") (lệnh 3)

tt:send("GET /”uploaddata.php?

Flow_water1=aa&Flow_water2=bb&Moisture1=cc&Moisture2=dd” HTTP/1.1\r\nHost: nguyenkhanh.16mb.com\r\nConnection: keep- alive\r\nAccept: \r\n\r\n") (lệnh 4)

với nguyenkhanh.16mb.com là tên host, uploaddata.php là file code viết bằng ngôn ngữ PHP, Flow_water1=aa&Flow_water2=bb&Moisture1=cc&Moisture2= dd bao gồm các biến chứa dữ liệu cảm biến đƣợc khai báo trong file code PHP. Các đối tƣợng này sẽ đƣợc trình bày rõ hơn trong mục 3.3.4.

Nhóm đã lập trình cho board Arduino Mega 2560 truyền các lệnh này qua Serial0 đến module Wifi ESP8266 để gửi các dữ liệu cảm biến lên web, phục vụ việc lƣu trữ dữ liệu lên Google Spreadsheet. Dƣới đây là lƣu đồ giải thuật gửi dữ liệu lên web bằng module Wifi ESP8266:

38

Bắt đầu

Kiểm tra dữ liệu từ bộ gửi

Nhận và gán dữ liệu vào các biến

trong (lệnh 4) Khởi động lại module Wifi Truyền (lệnh 1) Truyền (lệnh 2) Truyền (lệnh 3) Truyền (lệnh 4) Dữ liệu đƣợc gửi lên web Kết thúc “>” ? “>” ? “>” ? Đúng Sai Đúng Đúng Đúng Sai Sai Sai

Hình 3. 5 Lƣu đồ giải thuật gửi dữ liệu lên web bằng module Wifi ESP8266

3.3.1.3 Lập trình giao tiếp board Arduino với module camera hồng ngoài màu

JPEG

Module camera đƣợc kết nối với board Arduino Mega 2560 thông qua chuẩn UART, nhóm lập trình cho board truyền các mã HEX qua UART đến camera để thực hiện việc chụp ảnh. Các mã HEX đƣợc nhóm sử trong đề tài nhƣ Bảng 3.2 dƣới đây:

39

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

56 00 26 00 Reset camera

56 00 36 01 00 Bắt đầu cho camera chụp ảnh

56 00 32 0C 00 0A 00 00 MH ML 00 00 00 20 00 0A (MH=0x000/0x100; ML=0x000 %0x100)

Đọc nội dung của file ảnh chụp đƣợc

56 00 36 01 03 Ngừng chụp ảnh

Dƣới đây là lƣu đồ giải thuật chụp một tấm ảnh và lƣu trữ trong thẻ SD card:

Bắt đầu

Khởi tạo thẻ SD và Reset lại camera

Bắt đầu chụp ảnh và tạo 1 file trog thẻ SD để ghi hình ảnh chụp đƣợc Đọc dữ liệu của ảnh chụp và ghi ảnh vào thẻ SD Dữ liệu nhận đƣợc kết thúc với FFD9 Ngừng chụp ảnh và đóng file ghi ảnh chụp trong thẻ SD Kết thúc Đúng Sai

Hình 3. 6 Lƣu đồ giải thuật chụp ảnh và lƣu trữ trong thẻ SD

13

40

Dữ liệu của ảnh chụp của module camera sử dụng trong đề tài là một chuỗi các mã HEX liên tục nhau, bắt đầu bằng FFD8 và kết thúc bằng FFD9. Dựa vào lƣu đồ trên, để biết khi nào camera đã chụp xong một tấm ảnh thì chúng ta sẽ lập trình cho board Arduino kiểm tra dữ liệu ảnh chụp có kết thúc với FFD9 hay chƣa? Nếu có thì board Arduino sẽ truyền mã HEX ngừng chụp ảnh đến camera, ngƣợc lại việc chụp ảnh và lƣu ảnh vào thẻ SD vẫn đƣợc tiếp tục.

Một phần của tài liệu 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 39 - 47)

Tải bản đầy đủ (PDF)

(65 trang)