Professional Documents
Culture Documents
Hethong Nhung TV
Hethong Nhung TV
HỆ THỐNG NHÚNG
NGHIÊN CỨU VÀ TRIỂN KHAI HỆ THỐNG XE GIÁM
SÁT MÔI TRƯỜNG BẰNG CẢM BIẾN ỨNG DỤNG CƠ
SỞ DỮ LIỆU CASSANDRA CLOUD ASTRADB
HỆ THỐNG NHÚNG
NGHIÊN CỨU VÀ TRIỂN KHAI HỆ THỐNG XE GIÁM
SÁT MÔI TRƯỜNG BẰNG CẢM BIẾN ỨNG DỤNG
CƠ SỞ DỮ LIỆU CASSANDRA CLOUD ASTRADB
Trong quá trình tìm hiểu, thiết kế và thực hiện đề tài, do kiến thức chuyên ngành
còn hạn chế nên vẫn còn nhiều thiếu sót trong việc tìm hiểu, nghiên cứu, trình bày về
đề tài cũng như tạo được một sản phẩm hoàn thiện. Nhóm chúng em mong sẽ nhận
được sự đóng góp, đánh giá của các quý thầy, cô về kết quả thực hiện đề tài của nhóm.
Đó là những kiến thức quý giá để cả nhóm cũng như từng thành viên chúng em có thể
hoàn thiện và phát triển đề tài này cũng như cho các đề tài sau này.
Trần Viết An
Lê Đức Nhật
Lê Thiện Nhân
Hiện nay hệ thống nhúng có mặt trong rất nhiều các sản phẩm gần gũi với cuộc
sống con người như các hệ thống dẫn đường trong không lưu, hệ thống định vị toàn
cầu, vệ tinh; các thiết bị gia dụng: tủ lạnh, lò vi sóng, lò nướng,… hay các thiết bị kết
nối mạng: router, hub, gateway,… và cả các thiết bị mà chúng ta sử dụng hằng ngày
như điện thoại, máy tính, đồng hồ thông minh, ngay cả trên các phương tiện giao
thông hiện đại.
Nhận thấy tình hình biến đổi khí hậu ở nước ta có nhiều biến động, đặt biệt là trong
mùa mưa bão, nhiều khu vực vùng núi có nguy cơ bị sạt lỡ, gây ảnh hưởng đến cuộc
sống, sinh hoạt của người dân ở đây mà việc thực hiện kiểm tra địa chất với đại hình
vùng núi khá khó khăn, tìm ẩn nguy cơ mất an toàn trong khi thực hiện vì không biết
tình hình khu vực đó thế nào. Vì vậy nhóm chúng em sẽ thực hiện đề tài “Nghiên cứu
và triển khai hệ thống xe giám sát môi trường bằng cảm biến ứng dụng cơ sở dữ liệu
Cassandra Cloud AstraDb”. Với đề tài lần này mà chúng em sẽ xây dựng được một hệ
thống nhúng cơ bản hoàn thiện, có sự kết hợp giữa công nghệ IoT và cơ sở dữ liệu
AstraDb. Sản phầm của đề tài này sẽ giúp ích rất nhiều trong việc thực hiện kiểm ta
địa chất hay khi hậu từ xa tại khu vực có nguy cơ bị sạt lỡ đất, những nơi có địa hình
phức tạp mà con người khó có thể đi đến được, đây là một biện pháp an toàn để bảo vệ
cho con người cũng như tạo điều kiện thuận lời nhất để thu thập dữ liệu môi trường để
phục vụ cho việc phân tích dữ liệu, dự đoán thiên tai.
10
CHƯƠNG 1 TỔNG QUAN ĐỀ TÀI
1.1. Tổng quan đề tài
Với đề tài “Nghiên cứu và triển khai hệ thống xe giám sát môi trường bằng cảm
biến ứng dụng cơ sở dữ liệu Cassandra Cloud AstraDB” khi hoàn thiện có thể sẽ giúp
ích rất nhiều trong việc thực hiện kiểm ta địa chất hay khi hậu từ xa tại khu vực có
nguy cơ bị sạt lỡ đất, những nơi có địa hình phức tạp mà con người khó có thể đi đến
được, đây là một biện pháp an toàn để bảo vệ cho con người cũng như tạo điều kiện
thuận lời nhất để thu thập dữ liệu môi trường để phục vụ cho việc phân tích dữ liệu,
dự đoán thiên tai.
- Nắm kiến thức căn bản về hệ thống nhúng, công nghệ IoT.
- Thiết kế, mô hình hóa các chức năng cần có của hệ thống.
- Nắm nguyên lý hoạt động của các linh kiện cảm biến, module được sử dụng
trong hệ thống.
- Thiết kế, xây dựng ứng dụng điều khiển, hiển thị dữ liệu thu thập được trên
nền tảng Android.
- Tìm hiều, phân tích, ứng dụng được cơ sở dữ liệu AstraDb vào trong đề tài để
lưu trữ dữ liệu.
- Thử nghiệm hoạt động và cách sử dụng của các linh kiện điện tử như các cảm
biến, module Bluetooth nhận tín hiệu điều khiển từ ứng dụng Android, truyền
dữ liệu thu thập được từ cảm biến thông qua Internet.
- Ứng dụng các kiến thức về lập trình nhúng để lập trình cho hệ thống.
Mục tiêu lớn nhất của đề tài là nhằm nâng cao trình độ hiểu biết của bản thân về
chuyên ngành kỹ thuật điện tử, lập trình nhúng, công nghệ IoT, tự tạo cho bản thân
các thử thách khó, đặt ra và tự bản thân vượt qua để hoàn thiện mình.
11
- Nguyên cứu tổng quan về các vấn đề thực tế gặp phải của đề tài.
- Nguyên cứu tổng quan về nguyên lý hoạt động của từng thiết bị, từng module
cảm biến, vi điều khiển ESP8266.
- Nguyên cứu cách thức truyền nhận dữ liệu thu thập từ cảm biến đến Server và
cơ sở dữ liệu AstraDB.
- Tích hợp các thiết bị thành một hệ thống, thực hiện lắp đặt và chạy thử
nghiệm.
- Thiết kế, xây dựng ứng dụng điều khiển chạy trên nền tảng Android.
- Xử lý dữ liệu truyền nhận , hiển thị lên giao diện và điều khiển được các thiết
bị thông qua giao diện đó.
- Tạo mới, sử dụng cơ sở dữ liệu AstraDb với tài khoảng dùng thử.
- Linh kiện điện tử, nguyên lý hoạt động của các cảm biến.
- Giải pháp, thiết lập điều khiển hoạt động của xe thông qua sóng Bluetooth.
Giao diện ứng dụng giám sát môi trường.
- Phương thức giao tiếp dữ liệu giữa hệ thống nhà thông minh và không gian
mạng.
- Mô hình hệ thống xe giám sát môi trường dựa trên kiến thức về hệ thống
nhúng, vi điều khiển các giao thức kết nối thông qua mạng dựa trên nền tảng
Internet of Things và nền tảng Android.
12
- Cảm biến biến độ ẩm đất
- Giao tiếp điều khiển không dây thông qua module bluetooth.
- Dùng động cơ servo để thay đổi vị trí cảm biến đất khi đo đạt, lấy giữ liệu.
Lập trình, thiết lập và kết nối ESP8266 vào mạng, liên kết server và AstraDb.
Lập trình, xây dựng ứng dụng điều khiển, ứng dụng hiển thị dữ kiệu trên Android.
13
CHƯƠNG 2 XÂY DỰNG MÔ HÌNH HỆ THỐNG
2.1. Mô hình hệ thống điều khiển động cơ
Mô tả hoạt động:
- Tại Android app Control car sẽ kết nối với xe thông qua sóng Bluetooth và sẽ
truyền các giá trị điều khiển dưới dạng các ký tự.
- ESP8266 được sử dụng làm trung tâm xử lý hoạt động. Kết nối với module
Bluetooh với chuẩn giao tiếp UART nhận tín hiệu điều khiển từ app. Đồng
thời xử lý, cấu hình điều khiển động cơ theo tín hiệu nhận được thông qua
module L298N.
2.2. Mô hình hệ thống kết nối truyền tải dữ liệu cảm biến môi trường
Hình 2.2: Mô hình hệ thống kết nối truyền trải dữ liệu xảm biến môi trường
Mô tả hoạt động:
- ESP đọc giá trị từ các cảm biến thông qua các chân GPIO. Kết nối với server
thông qua giao thức HTTP để đưa dữ liệu lên theo dạng các chuổi json.
- Server sẽ tiếp nhận dữ liệu từ ESP8266 đưa lên và sẽ lưu vào cơ sở dữ liệu
AstraDB để lưu trữ, đồng thời sẽ kết nối với Android app Display collected
data để hiển thị các giá trị thu thập được từ các cảm biến ở trên xe.
14
CHƯƠNG 3 TRIỂN KHAI THỰC HIỆN ĐỀ TÀI
3.1. Chuẩn bị phần cứng
3.1.1. ESP8266NodeMCU
NodeMCU ESP8266 được phát triển dựa trên Chip WiFi ESP8266EX bên trong
Module ESP-12E dễ dàng kết nối WiFi với một vài thao tác. Board còn tích hợp IC
CP2102, giúp dễ dàng giao tiếp với máy tính thông qua Micro USB để thao tác với
board. Và có sẳn nút nhấn, Led để tiện trong quá trình học, nghiên cứu. ESP8266
được sử dụng rộng rãi trong các dự án IOT, ESP8266 Blynk.
Với kích thước nhỏ gọn, linh hoạt board dễ dàng liên kết với các thiết bị ngoại vi
để tạo thành project, sản phẩm mẫu một cách nhanh chóng.
- Dòng tối đa cho mỗi cầu H là: 2A (=>2A cho mỗi motor)
Thông số kĩ thuật
Thông số kỹ thuật:
Thông số kỹ thuật:
Thông số kỹ thuật:
Động cơ Servo SG90 là động phổ biến dùng trong các mô hình điều khiển nhỏ và
đơn giản. Động cơ có tốc độ phản ứng nhanh, được tích hợp sẵn Driver điều khiển
động cơ, dễ dàng điều khiển góc quay bằng phương pháp điều độ rộng xung PWM.
Công dụng chính của động cơ servo là đạt được góc quay chính xác trong khoảng từ
90o – 180o.
18
Thông số kỹ thuật:
- Để viết chương trình điều khiển cho ESP, ta dùng phần mềm Arduino IDE
Android Studio:
- Để viết chương trình tạo ứng dụng điều khiển, ta dùng phần mềm Android
Studio.
- Android Studio là môi trường phát triển tích hợp (IDE) chính thức cho việc
phát triển ứng dụng Android với ngôn ngữ lập trình java và kotlin.
19
Hình 3.9: Phần mềm Android Studio
- Fritzing dùng để vẽ sô đồ lắp đặt hệ thống một cách trực quan hơn.
- Fritzing là phần mềm tự động hóa thiết kế điện tử, được phát triển nhằm hỗ trợ
thiết kế dự án và xây dựng ý tưởng. Bên cạnh đó, Fritzing còn được sử dụng
làm công cụ hỗ trợ giáo dục, cung cấp tất cả các kiến thức tạo và xử lý các
bảng mạch in PCB và các thành phần điện tử khác.
3.2.2. Cơ sở dữ liệu
Cassandra là một cơ sở dữ liệu phân tán kết hợp mô hình dữ liệu của Google
Bigtable với thiết kế hệ thống phân tán như bản sao của Amazon Dynamo. Tất cả
được thực hiện bởi Java và được cung cấp trong ASL 2 (Giấy phép Phần mềm
Apache Phiên bản 2).
Các tính năng ưu việt của Cassandra bao gồm 9 điểm sau:
20
- Kiến trúc không có SPOF (một điểm gây tổn hại)
- Có thể tăng cường cải thiện thông lượng cho tuyến tính
- Hỗ trợ các ngôn ngữ khác nhau dưới dạng client code
- Dễ dàng nắm bắt trạng thái bên trong của máy chủ bằng JMX/Dễ giám sát
Không có SPOF vì kiến trúc của Cassandra không có nút chính. Kết quả là, toàn
bộ hệ thống sẽ không dừng lại do một phần nào đó bị thất bại, service vẫn tiếp tục
được vận hành, vì vậy có thể nói rằng khả năng chịu lỗi là rất cao.
Cassandra thu thập dữ liệu bằng framework có tên là Thrift. Thrift có một cơ chế
để giao tiếp với nhiều các ngôn ngữ khác nhau, vì vậy khách hàng Cassandra có thể
đối ứng với nhiều ngôn ngữ khác nhau ví dụ như C ++, Java, Python, PHP, Ruby,
Erlang, Perl, C #, Objective-C, Smalltalk, OCaml...
21
3.3. Sơ đồ lắp đặt
- Control Car:
Đầu tiên, khai báo thư viện, các chân của vi điều khiển cần sử dụng và khởi
tạo các biến ban đầu
Tiếp theo, trong hàm void setup(), cấu hình chức năng hoạt động của các
chân, gọi các hàm bất đầu sử dụng của thư viện.
Trong hàm void loop() – [khối while(1)] sẽ là 1 vòng lặp vô hạn, là phần
chương trình chính để xe hoạt động. Trong hàm này, bất đầu cấu hình kết nối
Bluetooth thông qua module Bluetooth HC05. Nếu kết nối thất bại sẽ phải
cấu hình kết nối lại. Nếu kết nối thành công sẽ nhận tín hiệu điều khiển thông
qua bluetooth, và gán cho mỗi ký hiệu nhận được với các hàm chức năng như
điều chỉnh tốc độ động cơ, điều chỉnh hướng duy chuyển của xe, và góc quay
của động cơ servo.
- Connect Server:
Đầu tiên, khai báo các thư viện, các chân của vi điều khiển cần sử dụng và
khởi tạo các biến ban đầu dùng để kết nối WiFi, kết nối với Server.
Tiếp theo, trong hàm void setup(), cấu hình chức năng hoạt động của các
chân, gọi các hàm bất đầu sử dụng của thư viện. Thiết lập kết nối mạng thông
qua WiFi, vòng lặp while(WiFi connect) chỉ dừng khi đã kết nối được với
WiFi.
Trong hàm void loop() – [khối while(1)] sẽ là 1 vòng lặp vô hạn, là phần
chương trình chính để kết nối và gửi dữ liệu cảm biến thu tập được lên
Server. Trong hàm này, bất đầu sẽ kiểm tra trạng thái kết nối với WiFi và
thực hiện kết nối với Server, đóng gói dữ liệu đọc từ các cảm biến thành 1
chuổi json. Sau đó sẽ gửi lên Server, nếu gửi lên thất bại thì sẽ nhân được
thông báo lỗi kết nối, kết thúc kết nối với Server và thực hiện lại việc kết nối
ở trên. Nếu kết nối thành công, Server sẽ gửi phản hồi đã nhận được gói tin,
dừng kết nối và lặp lại quá trình kết nối và gửi dữ liệu lên Server.
23
3.5. Tạo cơ sở dữ liệu với AstraDb
3.5.1. Đăng ký hoặc đăng nhập tài khoản DataStax AstraDB
Truy cập theo đường dẫn sau: https://auth.cloud.datastax.com/
Nếu chưa có tài khoản, nhấn Sign Up và điền các thông tin để tạo tài khoản:
Bạn có thể đăng nhập bằng tài khoản Google hoặc Github của mình hoặc bằng tài
khoản bạn đã đăng ký ở bước trên
24
Hình 3.16: Đăng nhập vào AstraDb
Sau khi đăng nhập thành công, bạn sẽ được chuyển đến trang làm việc của mình.
Sau đó điền Database name, Keyspace name và Select the provider and region.
(Ở đây đang sử dụng tài khoản dùng thử nên sẽ bị giới hạn một số nhà cung cấp và
khu vực, nếu bạn muốn trải nghiệm tốt hơn vui lòng đăng ký Unlock all regions).
Sau đó nhấn Create Database và đợi trong giây lát để khởi tạo cơ sở dữ liệu.
25
Hình 3.19: Tạo Database (2)
Để kết nối và gửi dữ liệu từ Server đến DataStax AstraDB sẽ thông qua REST
API, phần Connect và chọn {REST:API}.
Tiếp theo chúng ta sẽ tạo token để phục vụ trong kết nối giữa Server và AstraDB
bằng cách nhấn vào Application Token, và tạo bảng cơ sở dữ liệu trong Swagger UI
(click vào liên kết trong phần 2.Lauchn Swagger UI)
Tạo Token: Sau khi click vào Application Token sẽ đến trang quản lý token. Trong vai trò được chọn,
chọn Administrator User rồi chọn Generate Token.
27
Hình 3.26: Tạo Token key thành công
Tạo bảng cơ sở dữ liệu trong Swagger UI: Sau khi nhấp vào liên kết trong Lauchn
Swagger UI, bạn sẽ được chuyển đến giao diện làm việc của Swagger UI.
28
Nhập không gian phím được cơ sở dữ liệu sử dụng trong trường keyspaceName
Ở phần body, chúng ta sẽ tạo bảng cơ sở dữ liệu ở dạng chuỗi json. tạo một cơ sở
dữ liệu như Hình 3.22 sau:
{
"name": "collection",
"primaryKey": {
"partitionKey": [ "id" ],
"clusteringKey": [ ]
},
"columnDefinitions": [ {
"name": "id",
"typeDefinition": "text",
"static": false
}, {
"name": "position",
"typeDefinition": "text",
"static": false
}, {
"name": "temprature",
"typeDefinition": "text",
"static": false
}, {
"name": "humility",
"typeDefinition": "text",
"static": false
29
}, {
"name": "amount_of_rain",
"typeDefinition": "text",
"static": false
} ],
"ifNotExists": true,
"tableOptions": {
"defaultTimeToLive": 0,
"clusteringExpression": [ ]
}
}
Bạn có thể thay đổi chuỗi json trên cho phù hợp với cơ sở dữ liệu mà bạn muốn
tạo như tên bảng, khóa chính, tên các trường dữ liệu, kiểu dữ liệu đầu vào.
Để kiểm tra bảng cơ sở dữ liệu đã được tạo thành công hay chưa, bạn thực hiện
các bước sau: Quay lại Dashboard -> CQL Console -> chạy lệnh USE key19ce;
(key19ce là keyspacename của cơ sở dữ liệu); chạy lệnh DESC TABLES; (dùng để
hiển thị tất cả các bảng cơ sở dữ liệu đã tạo). Bạn thấy rằng bảng thu thập đã được
tạo thành công. Chạy lệnh chọn * từ bộ sưu tập; để xem các trường cơ sở dữ liệu của
bảng bộ sưu tập.
30
Hình 3.29: Truy vấn cơ sở dữ liệu vừa tạo
Cơ sở dữ liệu Apache Cassandra NoSQL cung cấp nhiều khả năng mới cho các
nhóm đang tìm kiếm giải pháp để xử lý các luồng dữ liệu có tốc độ cao, khối lượng
lớn và biến đổi. Cách suy nghĩ mới này giới thiệu các khái niệm mới và một lộ trình
học tập có thể gây sợ hãi cho các thành viên trong nhóm và người quản lý nhóm. Dữ
liệu mùa xuân cho Apache Cassandra cung cấp một giao diện quen thuộc cho những
người đã sử dụng các mô-đun Dữ liệu mùa xuân khác trong quá khứ.
- Thời gian học tập để phát triển ứng dụng với Apache Cassandra giảm đáng kể
khi sử dụng Dữ liệu mùa xuân cho Apache Cassandra. Với khả năng duy trì ở mức
cao với các POJO được chú thích hoặc ở mức thấp với khả năng nhập dữ liệu hiệu
suất cao, các mẫu Spring Data cho Apache Cassandra chắc chắn sẽ đáp ứng mọi nhu
cầu của ứng dụng.
31
Đặc trưng
- Xây dựng kho lưu trữ dựa trên các giao diện Spring Data phổ biến
- Hỗ trợ cho các hoạt động dữ liệu đồng bộ, phản ứng và không đồng bộ
- Hỗ trợ JavaConfig và XML cho tất cả các khả năng của cụm và phiên
- Dịch ngoại lệ sang cấu trúc phân cấp Spring DataAccessException quen thuộc
- Tự động triển khai các giao diện Kho lưu trữ bao gồm hỗ trợ các phương thức
truy vấn tùy chỉnh
- Phiên bản 2.x dựa trên Trình điều khiển Java CQL DataStax 3.x, phiên bản 3.x
sử dụng Trình điều khiển Java DataStax 4.x
32
Thêm drive spring-data-cassandra
Khai báo các thông số của database và add file bundle vừa tải về
33
CHƯƠNG 4 KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN
4.1 Kết quả thực hiện đề tài.
4.1.1. Sản phẩm đạt được
Sau thời gian tìm hiểu và triển khai thực hiện thì đề tài “Nghiên cứu và triển khai
hệ thống xe giám sát môi trường bằng cảm biến ứng dụng cơ sở dữ liệu Cassandra
cloud AstraDb ” đã được hoàn thành với những kết quả đạt được như sau:
Hình 4.1: Giao diện khởi động ứng dụng điều khiển
Ứng dụng hiển thị dữ liệu từ cảm biến thông qua cơ sở dữ liệu AstraDb
34
Hình 4.4:Data display Hình 4.5: Data through graphs
- Ứng dụng Android: các chức năng căn bản hoàn thiện, hoạt động tốt trên
nhiều phiên bản Android, có thể điều khiển ở mọi nơi.
35
Hạn chế :
- Sản phẩm dừng lại ở dạng mô hình chưa ứng dụng, giải quyết được các vấn đề
trong thực tế.
- Ứng dụng Android: ứng dụng điều khiển và hiển thị tách biệt nhau chưa thống
nhất lại thành một, chỉ điều khiển hoạt động cho một hệ thống duy nhất, chức
năng không nhiều.
- Do sử dụng tài khoản dùng thử nên chưa thể khai thách hết được những ưu
điểm của Cassandra Cloud AstraDb.
Từ những ưu nhược điểm của dự án lần này cùng với xu hướng hiện nay, hướng
phát triển của đề tài là có thể tạo nên một hệ thống nhúng hoàn chỉnh hơn. Tích hợp
thêm các cảm biến chuyên dụng vào mạch cũng như sản phẩm để cập nhật đầy đủ
nhất các thông số môi trường như chất lượng không khí. Tối ưu hóa việc lựa chọn
thiết bị phần cứng cũng như thuật toán lập trình phù hợp. Mở rộng việc cập nhật dữ
liệu như phát triển App hiển thị đầy đủ hơn và mở rộng các phương tiện cập nhật như
Website. Phối hợp với các chuyên gia môi trường để cập nhật và có biện pháp điều
chỉnh, làm trong sạch môi trường.
36
TÀI LIỆU THAM KHẢO
Bài báo – sách:
[1]
[2]
[3]
[4]
Website:
[1]
[2]
[3]
[4]
37