Sau đó chúng ta ấn finish và đợi project khởi tạo trong thời gian đó chúng ta tiến hành vào Firebase console (google.com) để tạo dự án firebase và đặt tên cho nó.
Sau khi hồn tất bước này chúng ta truy cập vào bảng điều khiển của firebase tiến hành nhấp vào hình android đăng ký dự án trên android studio với firebase và làm theo các quy trình thiết lập. Bao gồm việc tải về tệp cấu hình google-service.json và di chuyển nó vào thư mục của ứng dụng trên android studio.
Sau khi đã thêm tệp cấu hình chúng ta cần thêm các plugin của google service vào tệp gradle tiếp theo đó thêm SDK firebase vào ứng dụng trên android studio và đồng bộ hoá tất cả. Lúc này ứng dụng của chúng ta đã liên kết thành cơng với firebase giờ đây có thể tiến hành code đọc ghi dữ liệu… từ ứng dụng với cơ sở dữ liệu Realtime Database của Firebase. Chi tiết q trình cài đặt và hình ảnh có thể tham khảo theo tài liệu link đính kèm dưới đây:
Cài đặt & Thiết lập trên Android | Firebase Documentation (google.com)
- Tiến hành thiết kế giao diện ứng dụng và lập trình:
Ở đề tài này sử dụng ngơn ngữ lập trình kotlin và ứng dụng chạy trên nền API 26 phiên bản android 8.0.
Trang 138
4.2.1 Thiết kế giao diện đăng nhập
Trang 139 - Xử dụng tính năng Authencation của firebase cho phép xác minh danh tính người dùng, đăng nhập vào app với email hoặc tài khoản google
- Người dùng có thể đăng ký tài khoản mới bằng cách ấn vào đăng ký lúc này thông tin như tên, họ và địa chỉ email sẽ lưu vào cơ sở dữ liệu(cụ thể là mục profile).
Trang 140
Hình: Giao diện đăng ký tài khoản
- Khi quên mật khẩu có thể khơi phục lại mật khẩu bằng cách ấn vào quên mật khẩu, lúc đó nhập vào email đã đăng ký trước đó firebase sẽ gửi một email xác minh kèm đường link để đặt lại mật khẩu.
Hình: Popup hiện lên để reset mật khẩu
- Sơ đồ thuật tốn q trình xử lý đăng nhập:
Bắt đầu K Nhập vào email và mật khẩu
Kiểm tra với Database
Giao diện chính gThơng báo u
cầu nhập lại
Kết thúc Đúng
Trang 141
4.2.2 Giao diện Profile
Hình: Giao diện profile
Giao diện này sẽ hiển thị các thông tin của tài khoản đăng nhập bao gồm: + Email
+ Họ + Tên
Trang 142
4.2.3 Giao diện màn hình giám sát chính
Hình: Giao diện màn hình chính
Giao diện đơn giản trực quan với các giá trị cảm biến được hiển thị theo thời gian thực.
- Thanh điều hướng để chuyển tới các chức năng khác của ứng dung:
+ Nút Profile: Để xem thông tin tài khoản đang đăng nhập sử dụng ứng dụng với các thông tin như họ, tên và địa chỉ email.
+ Nút History: Chuyển đến giao diện xem lịch sử dưới dạng cuộn tại đây cho phép xem 1000 giá trị gần nhất và cũng cập nhật giá trị theo thời gian thực.
Trang 143 + Nút Set: Chuyển tới giao diện cài đặt tại đây có thể cài đặt các thông số PID cho động cơ, các thông số cảnh báo mức cao, mức thấp cho cảm biến và pin của từng trạm một.
+ Nút Chart: Chuyển tới giao diện biểu đồ cho phép xem biểu đồ ở hai chế độ là thể hiện theo thời gian thực với 7 giá trị khởi tạo ban đầu là giá trị cũ, chế độ thứ 2 cho phép trend 1000 giá trị lịch sử giúp theo dõi dễ dàng hơn.
Sơ đồ thuật toán cách lấy giá trị realtime database từ firebase:
Nếu có giá trị tại vị trí lấy data Nếu khơng có giá trị tại
vị trí lấy data
Nếu mất kết nối tới server Start
Đọc dữ liệu từ database
Hiện thị giá trị lên màn hình Hiện thị giá trị null
màn hình Khơng hiển thị giá trị
Kết thúc Khởi tạo dữ liệu
Trang 144
4.2.4 Giao diện màn hình cài đặt các giá trị
Trang 145 Tại giao diện màn hình này sẽ cho phép đặt các giá trị cảnh báo mức cao mức thấp của cảm biến và giá trị cài đặt PID.
- Khi nhập giá trị và ấn nút Set các thông số này sẽ được ghi lên cơ sở dữ liệu realtime database. Cloud function sẽ có chức năng so sánh các giá trị hiện tại từ phần cứng gửi lên với các giá trị cảnh báo đã đặt nếu cao hơn hoặc thấp hơn giá trị đã đặt sẽ gửi một thông báo tới điện thoại đã cài đặt ứng dụng. Giúp cảnh báo người dùng theo dõi hằng ngày tránh để các thơng số vượt mức cho phép có biện pháp xử lý kịp thời.
- Đối với các ô giá trị không nhập khi bấm Set sẽ lấy giá trị hiện tại (giá trị màu xanh bên cạnh là giá trị thực lấy từ realtime database gán vào để tránh hiện tượng khi Set các giá cũ đã cài đặt bị xố).
4.2.5 Giao diện data
Hình: Giao diện history
Trang 146 - Mục Export cho phép xuất báo cáo dưới dạng file CSV có thể đọc bằng notepad hoặc Excel bình thường.
- Tại Export sẽ cho phép chọn xuất theo ngày hoặc tất cả dữ liệu lịch sử
Hình: Popup cho phép chọn xuất theo thời gian
- Cách tính thời gian xuất data :
+ Hơm nay sẽ tính từ thời điểm lúc ấn chọn cho tới thời điểm từ 0 giờ đêm nếu khơng có dữ liệu sẽ thốt ra ngồi.
+ Tương tự các giá trị 2 ngày 3 ngày… sẽ lấy từ thời điểm hiện tại lùi lại tới 0 giờ 00 của các ngày trước đó.
Trang 147
4.2.6 Giao diện biểu đồ thể hiện các thơng số
Hình: Giao diện chart
Tại đây sẽ hiển thị giá trị hiện tại của cảm biến và trend data thành biểu đồ theo thời gian thực mỗi 1 nút điều hướng ở trên là một cảm biến khác nhau.
- Nút show all cho phép trend 1000 dữ liệu lịch sử để hiển thị - Giao diện các biểu đồ khác là tương tự
- Trục tung và trục hoành của biểu đồ được lấy theo giá trị mức cao nhất + 10 đơn vị , giá trị thấp nhất -10 đơn vị sử dụng thư viện Mpchart. Mục đích lấy giá trị cao nhất và thấp nhất mà không đặt cố định để biểu đồ khi trend sẽ hiển thị trực quan dễ nhìn hơn tránh đường biểu diện thấp quá hoặc cao quá.
Trang 148
4.2 Thiết kế website giám sát hệ thống 4.2.1 Nodejs 4.2.1 Nodejs
Nodejs là gì?
Hình: Nodejs
• Nodejs là một nền tảng (Platform) phát triển độc lập được xây dựng ở trên Javascript Runtime của Chrome mà chúng ta có thể xây dựng được các ứng dụng mạng một cách nhanh chóng và dễ dàng mở rộng.
• Nodejs được xây dựng và phát triển từ năm 2009, bảo trợ bởi công ty Joyent, trụ sở tại California, Hoa Kỳ. Dù sao thì chúng ta cũng nên biết qua một chút chút lịch sử của thứ mà chúng ta đang học một chút chứ nhỉ? =))
• Phần Core bên dưới của Nodejs được viết hầu hết bằng C++ nên cho tốc độ xử lý và hiệu năng khá cao.
• Nodejs tạo ra được các ứng dụng có tốc độ xử lý nhanh, realtime thời gian thực. • Nodejs áp dụng cho các sản phẩm có lượng truy cập lớn, cần mở rộng nhanh,
cần đổi mới công nghệ, hoặc tạo ra các dự án Startup nhanh nhất có thể.
Trang 149
Những ứng dụng nên viết bằng Nodejs
• Rõ ràng, khơng phải cứ hot và mới là Nodejs làm gì cũng tốt, ví dụ như một ứng dụng cần tính ổn định cao, logic phức tạp thì các ngơn ngữ PHP hay Ruby… vẫn là sự lựa chọn tốt hơn. Cịn dưới đây là những ứng dụng có thể và nên viết bằng Nodejs:
• Websocket server: Các máy chủ web socket như là Online Chat, Game Server…
• Fast File Upload Client: là các chương trình upload file tốc độ cao. • Ad Server: Các máy chủ quảng cáo.
• Cloud Services: Các dịch vụ đám mây.
• RESTful API: đây là những ứng dụng mà được sử dụng cho các ứng dụng khác thơng qua API.
• Any Real-time Data Application: bất kỳ một ứng dụng nào có yêu cầu về tốc độ thời gian thực. Micro Services: Ý tưởng của micro services là chia nhỏ một ứng dụng lớn thành các dịch vụ nhỏ và kết nối chúng lại với nhau. Nodejs có thể làm tốt điều này.
Lý do nên sử dụng NodeJS
• Các ứng dụng Nodejs được viết bằng javascript, ngôn ngữ này là một ngôn ngữ khá thông dụng. Theo tác giả của ngôn ngữ Javascript, Ryan Dahl: “Javascript có những đặc tính mà làm cho nó rất khác biệt so với các ngơn ngữ lập trình động cịn lại, cụ thể là nó khơng có khái niệm về đa luồng, tất cả là đơn luồng và hướng sự kiện.”
• Nodejs chạy đa nền tảng phía Server, sử dụng kiến trúc hướng sự kiện Event-driven, cơ chế non-blocking I/O làm cho nó nhẹ và hiệu quả.
• Có thể chạy ứng dụng Nodejs ở bất kỳ đâu trên máy Mac – Window – Linux, hơn nữa cộng đồng Nodejs rất lớn và hồn tồn miễn phí. Các bạn có thể thấy cộng đồng Nodejs lớn như thế nào tại đây, các package đều hồn tồn free:
• Các ứng dụng NodeJS đáp ứng tốt thời gian thực và chạy đa nền tảng, đa thiết bị.
Trang 150
=> Vì những lý do trên nhóm lựa chọn Nodejs để xây dựng webserver cho đề tài ứng dụng webserver viết bằng ngôn ngữ javascrip và được deploy trên server riêng.
4.2.2 Giao diện đăng nhập websiste
Hình: Giao diện đăng nhập website
Sử dụng tính năng Authencation
Firebase Authentication là chức năng xác thực người dùng. Hiểu một cách đơn giản, app của bạn cần phải đăng nhập/ đăng ký tài khoản để sử dụng, Firebase cung cấp cho chúng ta chức năng xác thực người dùng bằng email, số điện thoại, hay tài khoản Facebook, Google,...
Việc xác thực người dùng là một chức năng vô cùng quan trọng trong việc phát triển ứng dụng. Tuy nhiên, khi bạn muốn xác thực với nhiều phương thức khác nhau như email, số điện thoại, google, facebook sẽ tốn nhiều thời gian và công sức. Firebase Authentication giúp thực hiện việc đó một cách dễ dàng, giúp người dùng nhanh chóng tiếp cận sản phẩm hơn.
- Tại giao diện này cho phép đăng ký tài khoản hoặc sử dụng tài khoản đã đăng ký từ để đăng nhập sử dụng.
Trang 151
4.2.3 Giao diện chính
- Cho phép theo dõi giám sát nhanh các thông số của từng trạm lora - Các chế độ hoạt động của trạm 4 như bật tắt động cơ thủ công.
- Cài đặt các thông số cơ bản như tần số biến tần và thời gian request các chế độ hoạt động
4.2.4 Giao diện biểu đồ
Hình: Giao diện biểu đồ giám sát
Trang 152
- Biểu đồ thể hiện các giá trị theo thời gian thực
4.2.5 Giao diện cài đặt các thơng số
Hình : Giao diện cài đặt thông số
- Tại đây sẽ cho phép cài đặt ghi các giá trị cài đặt vào database với các thông số PID động cơ, thơng số Oxy hồ tan cài đặt, các giá trị cảnh báo mức thấp mức cao của các cảm biến số lượng bản ghi data, email nhận dữ liệu khi master mất kết nối internet. - Phần gợi ý nhập hiển thị giá trị cài đặt hiện tại trong database giúp người dùng tiện theo dõi và điểu chỉnh một cách đơn giản.
Trang 153
Hình: Giao diện lịch sử
- Hiển thị 1000 giá trị gần nhất
- Cho phép xuất data theo ngày gần nhất từ hôm nay, 2, 3 4, 5 ,6 , 7 và xuất tất cả data được lưu trên database.
- 1000 giá trị gần nhất sẽ ln được cập nhật khi có sự thay đổi trên database. - File xuất ra dưới dạng đi CSV có thể mở bằng excel tiện cho người dùng lọc dữ liệu hoặc làm báo cáo.
Trang 154
Chương 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 5.1 Kết quả 5.1 Kết quả
Lượng pin tiêu thụ
- Thời gian thử nghiệm từ 20:57:05 tới 22:10:07 ngày 22/03 năm 2021 - Loại pin sử dụng pin Lipo 3,7v dung lượng 1000 Mah
- Mức pin tiêu hao từ 94% xuống còn 84% => mất 10% cho 1 tiếng 13
Trang 155
Hình: Kết quả từ dữ liệu lịch sử cho thấy lượng pin tiêu thụ
=> Kết luận: Trạm Lora tiêu thụ rất ít năng lượng có thế thay thế pin dung lượng lớn hơn cho thời gian sử dụng hiệu quả và lâu hơn. Mức tiêu thụ trung bình khoảng 0,3 W/h theo thực nghiệm với trạm 2 có thế cao hoặc thấp hơn so với các trạm khác ( Số lượng thiết bị cảm biến khác nhau).
Các thông số thực tế môi trường nước sinh hoạt đo được
- Môi trường là nước sinh hoạt tại khu vực phường Tân Chánh Hiệp, Quận 12, thành phố Hồ Chí Minh.
- Lần lượt các chỉ số đo được như sau:
+ Hàm lượng oxy hồ tan: trung bình dao động từ 4,5 mg/l tới 5,5 mg/l khá thấp với mức 8mg/l để các sinh vật trong nước có thể sinh sống và phát triển tốt.
+ Độ pH: Dao động khoảng từ 8 tới 8.8 độ kiềm khá cao nên các vịi nước thường có hiện tượng đóng cặn canxi.
+ Nhiệt độ: Dao động từ 27 tới 29 độ C tuỳ thời điểm trong ngày vào mùa này thành phố Hồ Chí Minh khá nóng nên nhiệt độ nước cũng cao.
Trang 156
Hình: Thơng số thực tế đo đạc được
Khoảng cách thực tế giữa các trạm:
- Qua q trình thực nghiệm test trong mơi trường thành phố cụ thể tại khu vực quận 12.
- Khoảng cách truyền nhận dữ liệu ổn định dao động khoảng 400m tới 600m với địa hình nhiều vật cản nhà cao tầng…
Khoảng cách(m) Tổng số gói tin Số gói tin bị mất
10 1000 0
Trang 157 100 1000 0 200 1000 10 400 1000 100 550 1000 372 600 1000 575 >600 1000 Mất kết nối
-Để tăng khoảng cách tuyền có 1 số giải pháp như sau: +Tăng thời gian request.
+Tăng dãy bang tần.
+Tăng mức năng lượng anten phát/thu +Tặng độ cao của anten.
+Thay thế anten có độ nhạy cao hơn.
-Mức độ chậm truyền của tín hiệu khi thực hiện q trình điều khiển của mơ hình thực tế khoảng 5s.
Bộ điều khiển PID
-Đối tượng điều khiển lượng oxy hoà tan, - Bộ feedback là cảm biến Do,
-Cơ cấu chấp hành máy sục khí. Truyền thơng từ node truyền thơng 485 qua biến tần điều khiển máy sục khí.
-Bộ điều khiển chỉ sử dụng được trong khoảng DO từ 6.2 đến 7 mg/l. Nguyên nhân do phần cứng của nhóm chỉ đáp ứng ở mức thấp. Motor sục khí chạy ở tầm 30hz thì mới có khí ra nên lượng DO khơng thể lên cao được. Vì vậy để mơ phổng việc điều khiển này nhóm đã chọn lượng DO setpoint là 6.3 mg/l.
- Sử dụng phương pháp thử và sai nhóm tìm được thơng số bộ PID như sau
Setpoint Kp Ki Kd Oxy phản hồi
6.3 0.1 0 0 5.8
Trang 158 6.3 0.3 0.01 0 6 6.3 0.5 0.01 0 6.12 6.3 0.6 0.01 0 6.23 6.3 0.7 0.01 0 6.35 6.3 0.8 0.01 0 6.5 6.3 0.7 0.05 0 6.34 6.3 0.7 0.1 0 6.45
Từ nhiều lần thực nghiệm nhóm quyết định chọn thơng số cho mơ hình lần lượt là: Kp=0.7.
Ki=0.05; Kd=0. -Kết quả:
Oxy hoà tan cài đặt : OxySV = 6.3 mg/l
Hình: Kết quả trên web
Trang 159
Hình: Biểu đồ thơng số Oxy hồ tan với bộ điều khiển PID
Hình: Biểu đồ thơng số Oxy hoà tan với bộ điều khiển PID chạy trong 1 tiếng
Biểu đồ oxy hoà tan với bộ điều khiển PI trong 1 tiếng hệ số oxy hoà tan cài đặt 6,3