1. Trang chủ
  2. » Giáo án - Bài giảng

XÂY DỰNG WEBSITE VÀ MÁY CHỦ ỨNG DỤNG THU THẬP DỮ LIỆU CHO TRẠM QUAN TRẮC

102 38 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây Dựng Website Và Máy Chủ Ứng Dụng Thu Thập Dữ Liệu Cho Trạm Quan Trắc
Trường học Trường Đại Học Bách Khoa Hà Nội
Chuyên ngành Vật Lý Kỹ Thuật
Thể loại Đồ Án Tốt Nghiệp
Năm xuất bản 2020
Thành phố Hà Nội
Định dạng
Số trang 102
Dung lượng 2,29 MB

Cấu trúc

  • Ngành Vật Lý Kỹ Thuật

  • HÀ NỘI - 7/2020

    • BÁCH KHOA - 5 năm một chặng đường!

  • DANH MỤC HÌNH ẢNH

  • CHƯƠNG 1. TỔNG QUAN

    • 1.1 Ngôn ngữ JAVA

    • 1.1.1 Khái niệm

    • 1.1.2 Ứng dụng của ngôn ngữ lập trình JAVA

    • 1.1.3 Phân tầng môi trường hoạt động của JAVA

    • 1.1.4 Phần mềm lập trình

    • 1.1.4.1 Phần mềm lập trình cho máy chủ

    • 1.1.4.2 Phần mềm lập trình cho website

    • 1.2 Giao thức TCP / IP

    • 1.2.2 Tầng mạng (INTERNET)

    • 1.2.3 Tầng giao vận (Transport)

    • 1.2.4 Tầng ứng dụng (Application)

    • 1.3 Khái niệm về Socket

    • 1.3.1 Chức năng của Socket

    • 1.3.2 Cách hoạt động của Socket

    • 1.3.2.1 Quá trình khởi tạo Socket connection từ client tới server.

    • 1.3.2.2 Vòng đời của Socket

    • 1.3.3 Phân Loại Socket

    • 1.4 Hệ quản trị cơ sở dữ liệu MYSQL

    • 1.4.1 Hiệu năng cao

    • 1.4.2 Tính sẵn sàng cao

    • 1.4.3 Bảo vệ dữ liệu mạnh mẽ

    • 1.4.4 Một số câu lệnh SQL thông dụng dùng trong dự án

    • 1.4.4.1 SELECT

    • 1.4.4.2 WHERE

    • 1.4.4.3 ORDER BY

    • 1.4.4.4 UPDATE

    • 2.2 Thông số chi tiết của mạch thu thập dữ liệu quan trắc

    • 2.3 Sơ đồ khối của mạch thu thập dữ liệu từ cảm biến

    • 2.3.1 Khối MCU STM32L071CZT6[10]

    • 2.3.2 Khối SIM

    • 2.3.2.1 SIM5320E

    • 2.3.3 Khối RTC3231

    • 2.4 Thiết kế mạch nguyên lý

    • 2.5 Mạch in

    • 2.6 Hoàn thiện mạch thu thập dữ liệu

    • 2.6.1 Hình ảnh mạch sau khi hàn linh kiện

    • 2.6.2 Nạp chương trình cho vi điều khiển STM32L071CZT6

    • 2.7 Phần mềm cài đặt cho SIM 5320E

    • 2.8 Chương trình điều khiển gửi dữ liệu lên máy chủ

  • CHƯƠNG 3. LẬP TRÌNH MÁY CHỦ

    • 3.1 Lệnh gửi dữ liệu từ thiết bị tới máy chủ

    • 3.1.1 Phân chia cấu trúc của máy chủ

    • 3.2 Lệnh xử lý từ máy chủ, bóc tách dữ liệu

    • 3.2.1 Kiểm tra độ dài dữ liệu gửi lên

    • 3.2.2 Tách dữ liệu của cảm biến theo ngày, tháng, năm

    • 3.3 Kết nối MYSQL và lưu trữ liệu

    • 3.3.1 Framework Hibernate

    • 3.3.2 Tạo bảng và dữ liệu trong MYSQL

    • 3.3.2.1 Trường dữ liệu bảng User

    • 3.3.2.2 Trường dữ liệu bảng Role

    • 3.3.2.3 Trường dữ liệu bảng Datafollowtime

    • 3.3.2.4 Trường dữ liệu bảng Datafollowday

    • 3.3.2.5 Trường dữ liệu bảng Datafollowmonth

    • 3.3.2.6 Trường dữ liệu bảng Datafollowyear

    • 4.1 Lập trình giao diện website (Font-end)

    • 4.1.1 HTML

    • 4.1.2 CSS

    • 4.1.3 JAVASCRIPT

    • 4.2 Lập trình xử lý LOGIC SERVER (BACKEND)

    • 4.2.1 Công nghệ JSP – Servlet

    • 4.2.1.1 JSP

    • 4.2.1.2 Servlet

      • Một công nghệ được sử dụng để tạo ra ứng dụng web.

      • Tạo và gửi request đến client hoặc tại request mới đến Servlet mới hoặc JSP mới: Không chỉ gửi dữ liệu rõ ràng (tức là tài liệu) tới khách hàng (trình duyệt) dưới nhiều định dạng như văn bản (HTML hoặc XML), nhị phân (hình ảnh GIF), Excel,… mà còn gửi phản hồi HTTP ẩn cho khách hàng (trình duyệt). Điều này bao gồm nói với trình duyệt hoặc các trình khách khác loại tài liệu đang được trả về (ví dụ, HTML), thiết lập cookie và các tham số bộ nhớ đệm, và các tác vụ khác. [10]

    • 4.2.1.3 Môi trường làm việc của Servlet

    • 4.2.2 Mô hình MVC

    • 4.3 Xử lý đăng nhập

    • 4.4 Xử lý lấy dữ liệu dưới hệ quản trị cơ sở dữ liệu vẽ đồ thị trên website

  • CHƯƠNG 5. KẾT QUẢ VÀ THẢO LUẬN

    • 5.1 Thiết kế chế tạo phần cứng và lựa chọn cảm biến

    • 5.2 Thiết kế và lập trình chương trình máy chủ

    • 5.3 Thiết kế và lập trình website

    • 5.4 Kết luận

    • 5.4.1 Thiết bị thu thập dữ liệu từ cảm biến và gửi lên máy chủ

    • 5.4.2 Lập trình máy chủ

    • 5.4.3 Lập trình website

    • 5.5 Hướng phát triển tiếp theo

    • 5.5.1 Máy chủ

    • 5.5.2 Website

    • 5.5.3 Hệ quản trị cơ sở dữ liệu

    • 5.5.4 Ứng dụng trên điện thoại thông minh

  • TÀI LIỆU THAM KHẢO

    • 2. Mã nguồn ( code ) chính cho máy chủ

    • 2.1.2 ModeConnection.java

    • 2.2 package SensorEntity

    • 2.3 package SensorDao

    • 2.4 package SensorDaoImpl

    • 2.5 package JDBC

    • 2.6 package Common

    • 3. Mã nguồn ( code ) cho Website

      • 3.1.2. admin.jsp

      • 3.1.3. Login.jsp

    • 3.2 Websensor – Logic

    • 3.2.2 ChartController.java

      • "/admin-columnchart-year.html" ,

      • break;

      • break;

      • break;

      • break;

      • break;

      • break;

      • break;

      • break;

      • break;

      • break;

      • break;

      • break;

      • break;

      • break;

      • break;

    • 3.2.3 UserController.java

Nội dung

Mục tiêu của đồ án này là thiết kế mạch thu thập dữ liệu cho trạm quan trắc và ứng dụng INTERNET để gửi dữ liệu cảm biến từ mạch thu thập dữ liệu lên môi trường INTERNET bằng giao thức TCPIP thông qua việc xây dựng máy chủ nhận dữ liệu từ mạch gửi lên bằng ngôn ngữ JAVA và lưu dữ liệu vào hệ quản trị cơ sở dữ liệu MYSQL. Xây dựng website bằng ngôn ngữ JAVA giúp người dùng và quản trị dễ dàng xem biểu đồ dữ liệu cảm biến thay đổi từ xa. Máy chủ và website được cài đặt trên máy tính đặt tại”CÔNG TY CỔ PHẦN SÁNG TẠO BÁCH KHOA”. Dữ liệu hoạt động sẽ được so sánh và rút ra kết luận cũng như xây dựng các chức năng mới cho máy chủ và website. Mở ra hướng đọc dữ liệu và điều khiển thiết bị từ xa, phân quyền người dùng có tính ứng dụng cao trong thời đại ngày nay

TỔNG QUAN

Ngôn ngữ JAVA

Ngôn ngữ JAVA là một ngôn ngữ lập trình hướng đối tượng, cho phép phát triển ứng dụng có khả năng chạy trên nhiều nền tảng như Windows, UNIX và Linux mà không cần biên dịch lại Với phương châm "Viết một lần, chạy khắp mọi nơi", JAVA mang lại sự linh hoạt và tiện lợi cho lập trình viên.

1.1.2 Ứng dụng của ngôn ngữ lập trình JAVA

Hiện nay, Ngôn ngữ lập trình JAVA được sử dụng với một số mục đích sau:

 Tạo website có nội dung động với độ tối ưu cao (JAVA - WEB)

 Xây dựng ứng dụng nền tảng máy tính (JAVA - SWING)

 Phát triển ứng dụng cho các thiết bị điện tử thông minh…

1.1.3 Phân tầng môi trường hoạt động của JAVA

Hình 1: Phân tầng ngôn ngữ lập trình JAVA hoạt động

BÁO CÁO ĐỒ ÁN TỐT NGHIỆP

1.1.4.1 Phần mềm lập trình cho máy chủ

NetBeans IDE là một công cụ lập trình mã nguồn mở miễn phí, chủ yếu dành cho lập trình viên Java Nó tương thích với nhiều hệ điều hành như Linux, Windows và MacOS, cung cấp các tính năng cần thiết để phát triển ứng dụng cho thiết bị di động và desktop.

Hình 2: Phần mềm Netbeans sử dụng tạo máy chủ

1.1.4.2 Phần mềm lập trình cho website

Hình 3: Phần mềm Inteliji viết website

Giao thức TCP / IP

TCP/IP là sự kết hợp giữa hai giao thức chính: IP (Giao thức liên mạng) và TCP (Giao thức truyền vận) Giao thức IP chịu trách nhiệm gửi các gói tin đến địa chỉ đã định sẵn bằng cách thêm thông tin dẫn đường, trong khi giao thức TCP đảm bảo an toàn cho từng gói tin trong quá trình truyền tải Nếu TCP phát hiện gói tin bị lỗi, nó sẽ gửi tín hiệu yêu cầu hệ thống gửi lại gói tin khác Chức năng của từng tầng trong mô hình TCP/IP sẽ làm rõ hơn quy trình hoạt động này.

Mô hình TCP/IP tiêu chuẩn bao gồm bốn lớp chính: Tầng vật lý (Physical), Tầng mạng (Network), Tầng giao vận (Transport) và Tầng ứng dụng (Application).

Hình 4: Mô hình phân tầng của TCP/IP

Các giao thức trong lớp liên kết chỉ hoạt động trên một liên kết, kết nối các nút hoặc máy chủ trong mạng Hai giao thức tiêu biểu trong lớp này là Ethernet, sử dụng cho mạng cục bộ (LAN), và Giao thức phân giải địa chỉ (ARP).

Các phân đoạn dữ liệu sẽ được đóng gói thành các gói tin với kích thước phù hợp với mạng chuyển mạch Mỗi gói tin sẽ được thêm phần Header chứa thông tin của tầng mạng trước khi chuyển đến tầng tiếp theo Các giao thức tầng mạng như IP và ICMP (Internet Control Message Protocol) được sử dụng để báo cáo lỗi trong quá trình truyền dữ liệu.

Tầng 3 của mô hình OSI có chức năng chính là xử lý giao tiếp giữa các máy chủ trong cùng một mạng hoặc khác mạng thông qua bộ định tuyến Tại đây, dữ liệu được phân đoạn thành các phần nhỏ hơn 64KB, với mỗi đoạn có kích thước không đồng nhất Cấu trúc của một Segment bao gồm Header chứa thông tin điều khiển và phần dữ liệu theo sau.

Trong tầng này, có hai giao thức cốt lõi là TCP và UDP TCP đảm bảo chất lượng gói tin nhưng mất nhiều thời gian để kiểm tra thông tin, bao gồm thứ tự dữ liệu và kiểm soát tắc nghẽn Ngược lại, UDP cung cấp tốc độ truyền tải nhanh hơn nhưng không đảm bảo chất lượng dữ liệu được gửi đi.

1.2.4 Tầng ứng dụng (Application) Đây là lớp giao tiếp trên cùng của mô hình Đúng với tên gọi, tầng Ứng dụng đảm nhận vai trò giao tiếp dữ liệu giữa 2 máy khác nhau thông qua các dịch vụ mạng khác nhau (duyệt web, chat, gửi email, một số giao thức trao đổi dữ liệu: SMTP, SSH, FTP, ) Dữ liệu khi đến đây sẽ được định dạng theo kiểu Byte nối Byte, cùng với đó là các thông tin định tuyến giúp xác định đường đi đúng của một gói tin.[4]

Khái niệm về Socket

Socket là giao diện lập trình ứng dụng mạng cho phép truyền và nhận dữ liệu qua internet Để hai chương trình trên mạng có thể giao tiếp với nhau, cần thiết lập một liên kết hai chiều, hay còn gọi là two-way communication Điểm cuối của liên kết này được gọi là socket, giúp kết nối hai máy tính để chúng có thể trò chuyện.

Socket = Địa chỉ IP + Cổng port

Một chức năng quan trọng của socket là xác định ứng dụng nhận dữ liệu thông qua việc ràng buộc với một cổng (port) cụ thể, từ đó thiết lập kết nối giữa client và server trong giao thức TCP.

Hình 5: Cách thức hoạt động của Socket

Socket hoạt động theo một luồng sự kiện trong mô hình máy khách - máy chủ Máy chủ chờ đợi yêu cầu từ máy khách sau khi thiết lập địa chỉ kết nối Khi kết nối thành công, máy chủ sẵn sàng nhận yêu cầu dịch vụ từ máy khách Việc trao đổi dữ liệu diễn ra khi máy khách kết nối với máy chủ qua socket, và máy chủ sẽ phản hồi lại yêu cầu của máy khách.

1.3.2 Cách hoạt động của Socket

1.3.2.1 Quá trình khởi tạo Socket connection từ client tới server

1 Máy khách có địa chỉ IP1 đang có port bất kỳ tử 1 – 65535 và sử dụng Socket (IP, PORT) để kết nối tới máy chủ có địa chỉ IP2 và port mở được quy định từ 1 – 65535

2 Sau khi máy khách được máy chủ xác thực thành công đã có đủ thông tin cần thiết, nó sẽ mở port cho địa chỉ IP2 để trao đổi dữ liệu giữa 2 máy.

Vòng đời của socket có 3 thuộc tính để quy định có đóng kết nối hay không:

• tcp_keepalive_time: Khoảng thời gian không có tín hiệu Mặc định là 7200s.

• tcp_keepalive_intvl: Khoảng thời gian chờ chiều bên kia hồi đáp Mặc định là 75s.

• tcp_keppalive_probles: Số lần sẽ thử lại nếu việc giao tiếp gặp lỗi Mặc định là 9.

1 Stream Socket: Dựa trên giao thức TCP (Tranmission Control Protocol), việc truyền dữ liệu chỉ thực hiện giữa 2 quá trình đã thiết lập kết nối.

Giao thức client-server mang lại nhiều ưu điểm, cho phép liên lạc hiệu quả giữa các bên Trong mô hình này, máy chủ lắng nghe và chấp nhận yêu cầu từ máy khách, đảm bảo dữ liệu được truyền tải một cách đáng tin cậy và theo đúng thứ tự Điều này được thực hiện nhờ vào cơ chế quản lý luồng lưu thông và cơ chế chống tắc nghẽn trên mạng Hơn nữa, mỗi thông điệp gửi đi đều yêu cầu có xác nhận trả về và các gói tin được chuyển đi tuần tự, tăng cường tính ổn định của quá trình truyền dữ liệu.

• Hạn chế: Có một đường kết nối (địa chỉ IP) giữa 2 tiến trình nên 1 trong 2 tiến trình kia phải đợi tiến trình kia yêu cầu kết nối.

2 Datagram Socket: Dựa trên giao thức UDP(User Datagram Protocol) việc truyền dữ liệu không yêu cầu có sự thiết lập kết nối giữa 2 quá trình.

Giao thức này có ưu điểm nổi bật là không yêu cầu thiết lập kết nối và không cần các cơ chế phức tạp, giúp tăng tốc độ truyền dữ liệu Điều này rất thuận tiện cho các ứng dụng cần truyền tải nhanh như chat và game.

Giao thức UDP không đảm bảo tính tin cậy trong việc truyền dữ liệu, do đó dữ liệu có thể đến không đúng thứ tự hoặc bị lặp lại.

Hệ quản trị cơ sở dữ liệu MYSQL

MySQL là một phần mềm quản lý hệ thống cơ sở dữ liệu (CSDL), cho phép lưu trữ và tổ chức thông tin một cách rõ ràng và có cấu trúc Hệ thống CSDL giúp sắp xếp ngăn nắp các dữ liệu mà người dùng muốn lưu trữ.

Hình 6: biểu đồ liên kết dữ liệu của bảng user với bảng role trong hệ quản trị cơ sở dữ liệu MYSQL

Kiến trúc storage-engine của MySQL cho phép các chuyên gia cơ sở dữ liệu tùy chỉnh máy chủ cho các ứng dụng đặc thù MySQL có khả năng xử lý linh hoạt, từ các website lớn phục vụ hàng triệu người mỗi ngày đến hệ thống giao dịch tốc độ cao, đáp ứng mọi yêu cầu khắt khe của các hệ thống.

MySQL cung cấp độ tin cậy và khả năng sử dụng ngay lập tức, với nhiều tùy chọn cấu hình tái tạo chủ/tớ tốc độ cao Điều này cho phép các nhà phân phối thứ ba phát triển các giải pháp có thể sử dụng ngay cho server cơ sở dữ liệu MySQL.

1.4.3 Bảo vệ dữ liệu mạnh mẽ

Bảo mật dữ liệu là một yếu tố quan trọng đối với các doanh nghiệp, và MySQL cung cấp các tính năng bảo mật mạnh mẽ để đảm bảo an toàn tuyệt đối Hệ thống xác nhận truy cập cơ sở dữ liệu của MySQL chỉ cho phép người dùng đã được xác thực truy cập vào dữ liệu Ngoài ra, MySQL hỗ trợ các giao thức SSH và SSL để đảm bảo kết nối an toàn Các tiện ích sao lưu và phục hồi do MySQL cùng các nhà cung cấp phần mềm thứ ba cung cấp cho phép thực hiện sao lưu logic và vật lý, cũng như phục hồi dữ liệu toàn bộ hoặc tại một thời điểm cụ thể.

1.4.4 Một số câu lệnh SQL thông dụng dùng trong dự án

Câu lệnh được sử dụng để lấy dữ liệu từ database

Cú pháp:”SELECT cột 1, cột 2, FROM tên_bảng;”

Cậu lệnh được dữ liệu để lọc dữ liệu theo dữ liệu yêu cầu

Cú pháp:”SELECT cột 1, cột 2, FROM tên_bảng WHERE điều_kiện_lọc;

Ví dụ: SELECT * FROM VLKT WHERE name=TO THAI MINH QUANG;

Câu lệnh dùng để sắp xếp kết quả theo thứ tự tăng đần hoặc giảm dần

Cú pháp: “SELECT cột 1, cột 2, FROM tên_bảng ORDER BY cột 1, cột 2, ASC|DESC;”

Ví dụ: SELECT * FROM VLKT ORDER BY name DESC;

Câu lệnh sử dụng để cập nhật sửa đổi bản ghi đã tồn tại trước đó

Cú pháp:”UPDATE tên bảng SET cột 1 = giá trị 1, cột 2 = giá trị 2, WHERE điều_kiện_lọc;

Vi dụ: UPDATE VLKT SET name=’QUANG’ WHERE MSSV 15294;

CHƯƠNG 2 THIẾT BỊ THU THẬP DỮ LIỆU VÀ GỬI DỮ LIỆU LÊN

2.1 Tổng quan về mạch thu thập dữ liệu quan trắc

• 04 AI (Analog Input) (đầu vào tương tự 4-20mA hoặc 0-20mA).

• 06 DI (Digital Input) (đầu vào số).

• 02 DO (Digital Input) (đầu ra số).

• 01 RS485_Modbus (cổng truyền thông RS485 chuẩn Modbus ).

• 01 VI (Voltage Input) (cổng đo điện áp thường dùng để đo năng lượng ắc quy khi dùng với pin năng lượng mặt trời).

Hai đèn LED báo trạng thái gồm: đèn LED xanh báo nguồn và đèn LED đỏ báo trạng thái kết nối mạng Đèn LED xanh sáng 1 giây và tắt 1 giây khi đang kết nối, trong khi đèn LED đỏ sáng 3 giây và tắt 1 giây khi kết nối thành công.

Thông số chi tiết của mạch thu thập dữ liệu quan trắc

• Điện áp đầu vào DI

Mức cao: từ 12-24VDC Mức thấp: từ 0-1VDC

• Đầu vào đọc xung Áp vào: - Mức cao 12-24VDC

- Mức thấp 0-1VDC Đáp ứng tần số: Từ 0-1(KHz).

Khoảng cách kết nối 0-800m, kết nối tốt nhất 0-500m

Chuẩn giao tiếp Modbus RTU, tốc độ 1200, 2400, 4800, 9600,19200(bps).

Giải điện áp đo 0-30VDC.

Sim viettel, mobifone, vinafone, sfone,…

• Thẻ nhớ lưu trữ dữ liệu

Sử dụng thẻ microsd dung lượng 0-32GB.

Sơ đồ khối của mạch thu thập dữ liệu từ cảm biến

Hình 7: Sơ đồ khối của mạch thu thập dữ liệu từ cảm biến

2.3.1 Khối MCU STM32L071CZT6[10] Được xây dựng trên nền tảng ARM Cotex-M3 thế hệ mới do hãng ST Microelectronic sản xuất, tần số hoạt động xung nhịp của CPU lên đến 72MHz, hỗ trợ mạnh mẽ hầu hết tất cả các ngoại vi [7]

STM32L071CZT6 có thông số cơ bản sau

 Kích thước lõi nhân : 32bit

 Tốc độ xung nhịp 32Mhz

 Các chuẩn hỗ trợ kết nối : I²C, IrDA, SPI, UART/USART

 Hỗ trợ kết nối thiết bị ngoại vi : Brown-out Detect/Reset, DMA, POR, PWM, WDT

 Kích thước bộ nhớ chương trình : 192KB

 Loại bộ nhớ chương trình : FLASH

 Kích thước bộ nhớ EEPROM : 6KB

 Kích thước bộ nhớ RAM : 20KB

 Bộ chuyển đổi dữ liệu : Analong – Digital

 dao động của chíp : dao động bên trong

 Nhiệt độ làm việc : -40 – 85 độ

SIM5320E là giải pháp băng rộng HSDPA / WCDMA và băng rộng hai băng tần GSM / GPRS / EDGE được hỗ trợ HSDPA lên đến 3,6 Mbps

Module SIM5320E hỗ trợ mở rộng mạnh mẽ với các giao diện như UART, USB2.0, SPI, I2C, bàn phím và PCM Nó cung cấp khả năng ứng dụng phong phú, bao gồm nhúng LUA script và các giao thức TCP/UDP/FTP/FTPS/HTTP/HTTPS/SMTP/POP3/MMS Với tính năng linh hoạt và dễ tích hợp, SIM5320E là lựa chọn lý tưởng cho các ứng dụng như PDA, MID, PND, POS, Tracker và AMI.

• UMTS / HSDPA băng tần kép 900 / 2100MHz

• GSM bốn băng tần GSM / GPRS / EDGE 850/900/1800 / 1900MHz

• GPRS khe cắm nhiều lớp 12

UMTS 850/1900: 0.25W UMTS 900/2100: 0.25W GSM850 / GSM900: 2W DCS1800 / PCS1900:

• Nhiệt độ hoạt động mở rộng: -30 ° C đến + 85 ° C

Sử dụng sim5320E sử dụng GPRS để truyền, nhận dữ liệu lên máy chủ

Mạch thời gian thực RTC DS3231 sử dụng thạch anh nội với độ chính xác cao, cung cấp thông tin thời gian như ngày, tháng, năm, giờ, phút, giây cho Vi điều khiển qua giao tiếp I2C Mạch tích hợp pin backup để duy trì thời gian ngay cả khi không có nguồn điện, đảm bảo tính liên tục và ổn định cho các ứng dụng.

IC EEPROM AT24C32 để lưu trữ thông tin khi cần, thích hợp cho các ứng dụng điều khiển hoặc đồng bộ dữ liệu thời gian thực RTC.

 IC chính: RTC DS3231 + EEPROM AT24C32

 Lưu trữ và cung cấp các thông tin thời gian thực: ngày, tháng, năm, giờ, phút, giây,

 Có pin backup duy trì thời gian trong trường hợp không cấp nguồn.

Thiết kế mạch nguyên lý

Hình 8: Mạch nguyên lý khối nguồn

Hình 9 : Mạch nguyên lý thời gian thực RTC3231

Mạch in

Hoàn thiện mạch thu thập dữ liệu

2.6.1 Hình ảnh mạch sau khi hàn linh kiện

Hình 12: Mạch thu thập dữ liệu sau khi đã hoàn thành 1

Hình 13: Mạch thu thập dữ liệu sau khi đã hoàn thành 2

2.6.2 Nạp chương trình cho vi điều khiển STM32L071CZT6

Kết nối mạch điều khiển với máy tính PC thông qua cáp USB TO RS232 để nạp chương trình cho vi điều khiển Sử dụng chương trình Flash Loader Demonstrator, chọn file định dạng HEX đã lập trình để bắt đầu quá trình nạp Sau khi hoàn tất, tiến hành kiểm tra hoạt động của mạch.

Hình 14: Giao diện phần mềm nạp khi kết nối thành công

Phần mềm cài đặt cho SIM 5320E

Hình 15: Phần mềm Terminal cài đặt cho SIM5320E

Chương trình điều khiển gửi dữ liệu lên máy chủ

Hình 16: Sơ đồ thuật toán lấy dữ liệu và gửi lên máy chủ

LẬP TRÌNH MÁY CHỦ

Lệnh gửi dữ liệu từ thiết bị tới máy chủ

Bảng 1: Cấu trúc lệnh gửi dữ liệu lên máy chủ

Header: là byte bắt đầu của 1 frame truyền, được mặc định là hai ký tự @ và $.

- Packet Length: là tổng số byte truyền trong một frame truyền tính từ byte Hearder đến byte Fnish frame;

+ ID: là mã phân biệt các thiết bị;

+ CMD: là lệnh truyền thông;

+ Information: là thông tin dữ liệu.

- Check sum: là byte kiểm tra lỗi dữ liệu tính từ Header đến hết Data cuối cùng, cách tính check sum sử dụng mã CRC16.

(http://www.codeproject.com/Articles/19214/CRC- Calculation).

- Finish Frame: là byte kết thúc khung truyền, mặc định là 0x0D và 0x0A

Số thứ tự byt e tro ng fra me

Số thứ tự byte trong data

Nộ i du ng thô ng tin

Mặc định Độ dày nội dung thông tin ( 2 byte)

2 LOW_BYTE 77 Độ dài fra me truy ền

8 BYTE 1 Lệnh gửi dữ liệu

2 Điện áp đầu vào ( 2 byte )

Kết thúc khung truyền thông

Bảng 2: Chi tiết nội dung thông tin thiết bị gửi lên máy chủ

Ghi chú về giá trị AI (1, 2, 3, 4) và điện áp của pin (voltage_battery) bao gồm các giá trị voltage_12, 23, 31 Các giá trị I1, 2, 3 được tính bằng cách nhân giá trị thực với 100 để lấy 2 chữ số sau dấu phẩy Để có được giá trị thực, cần chia giá trị nhận được cho 100 Ví dụ, nếu giá trị nhận được là 1380, giá trị thực sẽ là 1380/100 = 13.8 mA.

Tên byte Vị trí bit Thiết bị Trạng thái Ghi chú

Bảng 3: Chi tiết nội dung thông tin trạng thái thiết bị thiết bị gửi lên máy chủ

3.1.1 Phân chia cấu trúc của máy chủ

Hình 17: Mô hình phân tầng hoạt động của máy chủ

SensorDTO là một lớp chứa các biến được gán cho từng đối tượng cụ thể, được mô tả qua hình ảnh Các đối tượng này sử dụng phương thức bảo mật "private" và cung cấp các phương thức để truy xuất thông tin của chúng.

SensorService thực hiện giao tiếp trực tiếp với tầng DTO để nhận dữ liệu, bao gồm các chức năng so sánh dữ liệu cũ với dữ liệu mới từ SensorDTO Qua đó, nó thực hiện các phương thức sao lưu và cập nhật dữ liệu hiệu quả.

SensorEntity bao gồm các biến tương tự như SensorDTO và các phương thức truy xuất Điểm khác biệt giữa SensorDTO và SensorEntity là SensorDTO kết nối trực tiếp với tầng ServerSocket, trong khi SensorEntity tương tác với tầng Database Việc phân tách này giúp dễ dàng bảo trì, nâng cấp khi gặp sự cố và phát triển các phiên bản tiếp theo.

SensorDao bao gồm các phương thức chưa được hiện thực hóa để tương tác với tầng Database trong dự án, bao gồm các chức năng như lưu trữ, cập nhật, tìm kiếm giá trị trong database và truy xuất giá trị cuối cùng trong database.

• SensorDaoImpl: Gồm các phương thức hiện thực từ SensorDao;

• SensorCommon: Gồm các các công thức chuyển đổi hoặc những tiện ích phục vụ cho các tầng khác;

• JDBC – Database: Bao gồm các phương thức kết nối đến MYSQL và lệnh sử dụng trong MYSQL đã đề cập bên trên.

Hình 18: Các tầng dữ liệu trong phần mềm viết máy chủ Netbeans

Lệnh xử lý từ máy chủ, bóc tách dữ liệu

3.2.1 Kiểm tra độ dài dữ liệu gửi lên

• Đọc tất cả ký tự và kiểm tra ký tự đầu và cuối của 1 frame truyền

Kiểm tra độ dài của một frame để xác định tính hợp lệ của dữ liệu Nếu độ dài khớp với dữ liệu thiết bị gửi, tiến hành xử lý Ngược lại, nếu độ dài không đúng, hãy hủy tệp tin đó.

Hình 19: Sơ đồ thuật toán bóc tách dữ liệu gửi lên máy chủ

3.2.2 Tách dữ liệu của cảm biến theo ngày, tháng, năm

Hình 20: Sơ đồ thuật toán tính toán lưu dữ liệu cảm biến theo thời gian, ngày, tháng, năm xuống hệ quản trị cơ sở dữ liệu MYSQL

Kết nối MYSQL và lưu trữ liệu

The Hibernate framework is a lightweight, open-source Object Relational Mapping (ORM) solution that simplifies Java application development for database interaction.

ORM là một kỹ thuật lập trình giúp đơn giản hóa việc tạo, thao tác và truy cập dữ liệu, bằng cách ánh xạ các đối tượng vào dữ liệu được lưu trữ trong cơ sở dữ liệu.

Hình 21: Framework hibernate hỗ trợ kết nối hệ quản trị cơ sở dữ liệu MYSQL

3.3.2 Tạo bảng và dữ liệu trong MYSQL

Hình 22: Cấu trúc các bảng dữ liệu dự án trong hệ quản trị cơ sở dữ liệu MYSQL

3.3.2.1 Trường dữ liệu bảng User

Hình 23: Trường dữ liệu trong bảng user với hệ quản trị cơ sở dữ liệu MYSQL

3.3.2.2 Trường dữ liệu bảng Role

Hình 24: Trường dữ liệu trong bảng role với hệ quản trị cơ sở dữ liệu MYSQL

3.3.2.3 Trường dữ liệu bảng Datafollowtime

Hình 25: Trường dữ liệu trong bảng datafollowtime với hệ quản trị cơ sở dữ liệu

3.3.2.4 Trường dữ liệu bảng Datafollowday

Hình 26: Trường dữ liệu trong bảng datafollowday với hệ quản trị cơ sở dữ liệu

3.3.2.5 Trường dữ liệu bảng Datafollowmonth

Hình 27: Trường dữ liệu trong bảng datafollowmonth với hệ quản trị cơ sở dữ liệu

3.3.2.6 Trường dữ liệu bảng Datafollowyear

Hình 28: Trường dữ liệu trong bảng datafollowyear với hệ quản trị cơ sở dữ liệu

Lập trình giao diện website (Font-end)

HTML (Ngôn ngữ đánh dấu siêu văn bản) là ngôn ngữ được sử dụng để xây dựng các trang web, giúp trình bày thông tin trên World Wide Web Kết hợp với CSS và JavaScript, HTML hình thành bộ ba nền tảng kỹ thuật thiết yếu cho mọi website.

Mỗi trang web bao gồm nhiều thẻ HTML, mỗi thẻ đại diện cho một loại nội dung cụ thể Các loại nội dung này được "bọc" bởi các thẻ HTML, tạo nên cấu trúc rõ ràng cho trang.

Sử dụng HTML, bạn có thể thêm tiêu đề, định dạng đoạn văn và kiểm soát ngắt dòng Ngoài ra, bạn có thể tạo danh sách, nhấn mạnh văn bản, chèn ký tự đặc biệt, hình ảnh và liên kết, cũng như xây dựng bảng và điều chỉnh nhiều kiểu dáng khác nhau.

HTML không phải là một ngôn ngữ lập trình, mà là một công cụ dùng để bố cục và định dạng trang web, tương tự như Microsoft Word Điều này có nghĩa là HTML không thể tạo ra các chức năng "động".

CSS, viết tắt của Cascading Style Sheets, là ngôn ngữ lập trình quy định cách hiển thị các yếu tố HTML trên giao diện trang web Trong khi HTML cung cấp cấu trúc cơ bản cho nội dung, CSS giúp định hình và trang trí nội dung đó, tạo nên vẻ đẹp cho trang web Có thể hình dung rằng HTML giống như tường gạch thô, còn CSS là lớp sơn trang trí cho tường Việc tách biệt hai ngôn ngữ này đảm bảo rằng các trang web được xây dựng chính xác trước khi được định dạng lại.

JavaScript là một ngôn ngữ lập trình phức tạp hơn so với HTML và CSS, và nó chỉ được phát hành phiên bản beta vào năm 1995 Hiện nay, JavaScript được hỗ trợ bởi tất cả các trình duyệt web hiện đại và được sử dụng rộng rãi trên hầu hết các trang web, mang đến chức năng mạnh mẽ và phức tạp.

JavaScript là ngôn ngữ lập trình logic, cho phép sửa đổi nội dung trang web và tạo ra các phản hồi khác nhau dựa trên hành động của người dùng Một số ứng dụng phổ biến của JavaScript bao gồm việc sử dụng hộp xác nhận, kêu gọi hành động và bổ sung thông tin mới vào dữ liệu hiện có.

JavaScript là ngôn ngữ lập trình quan trọng giúp các nhà phát triển web tạo ra các trang web tương tác Hầu hết các tính năng động trên trang web đều được thực hiện nhờ JavaScript, giúp cải thiện hành vi và kiểm soát mặc định của trình duyệt.

Hình 29: Giao diện trang chủ người dùng

Hình 30: Giao diện trang chủ quản trị viên

Hình 31: Giao diện trang đăng nhập

Lập trình xử lý LOGIC SERVER (BACKEND)

JSP (Java Server Page hay Java Scripting Preprocessor) là công nghệ Java giúp các nhà phát triển tạo ra nội dung HTML, XML và các định dạng khác, làm cho trang web trở nên sinh động hơn.

JSP thường được sử dụng làm view trong mô hình MVC, mặc dù nó cũng có thể đáp ứng nhiều yêu cầu khác Việc sử dụng JSP làm view giúp dễ dàng hơn trong việc debug và tái sử dụng mã, trong khi servlet thường đảm nhiệm vai trò controller.

 Thẻ Root: Thẻ này sẽ chứa các thuộc tính, thông tin của trang JSP.

 Comment: Cũng như trang HTML, trong JSP, bạn cũng có thể comment với kí hiệu này:

 Declaration: khai báo biến hoặc phương thức của java ngay trong trang JSP.

Nhưng nếu như khai báo quá nhiều trong trang thì sẽ bị nhầm lẫn giữa code JSP và code java Cú pháp là

 Expression: được sử dụng để chèn một giá trị vào trong trang một cách trực tiếp.

Thẻ biểu thức JSP được sử dụng để đánh giá các biểu thức và hướng kết quả đầu ra đến trình duyệt web Cú pháp để khai báo thẻ biểu thức này là: .

 Scriptlet Tag: cho phép bạn viết mã java trong trang JSP Cú pháp như sau: <

 Một công nghệ được sử dụng để tạo ra ứng dụng web.

 Một API cung cấp các interface và lớp bao gồm các tài liệu.

 Một thành phần web được triển khai trên máy chủ để tạo ra trang web động.

 Có nhiều interface và các lớp trong API servlet như Servlet, GenericServlet, HttpServlet, ServletRequest, ServletResponse,…

 Nhận client request và lấy thông tin từ request: Đọc dữ liệu rõ ràng do khách hàng (trình duyệt) gửi.

Quá trình xử lý nghiệp vụ và phát sinh chuyên môn liên quan đến việc truy cập cơ sở dữ liệu để xử lý dữ liệu và tạo ra kết quả Điều này có thể bao gồm việc giao tiếp với cơ sở dữ liệu thông qua các phương thức như gọi RMI, CORBA, dịch vụ Web hoặc tính toán phản hồi trực tiếp.

Khi tạo và gửi yêu cầu đến client hoặc một Servlet hoặc JSP mới, không chỉ dữ liệu rõ ràng (tài liệu) được gửi tới trình duyệt dưới nhiều định dạng như HTML, XML, hình ảnh GIF hay Excel, mà còn có phản hồi HTTP ẩn cho trình duyệt Phản hồi này bao gồm việc thông báo cho trình duyệt về loại tài liệu đang được trả về, thiết lập cookie, tham số bộ nhớ đệm và thực hiện các tác vụ khác.

4.2.1.3 Môi trường làm việc của Servlet

Một Servlet là một lớp Java, cần được thực thi trên máy ảo Java (JVM) thông qua một dịch vụ gọi là servlet engine Servlet engine sẽ tải lớp servlet khi servlet đầu tiên được yêu cầu hoặc ngay khi nó được khởi động Quá trình tải servlet sẽ dừng lại để xử lý nhiều yêu cầu khi servlet engine bị tắt hoặc dừng hoạt động.

Tóm lại, JSP là mở rộng của Servlet Trong thực tế, JSP và Servlet được sử dụng đồng thời để phát triển ứng dụng.

Nếu JSP đại diện cho trang web thì Servlet đại diện cho các thành phần Java.

Việc viết code HTML trong Servlet có thể khó khăn hơn, nhưng lập trình Java lại rất đơn giản Ngược lại, JSP cho phép viết code HTML một cách dễ dàng, tuy nhiên, việc viết code Java trong JSP lại phức tạp và có thể gây khó khăn cho những người mới bắt đầu học Java web.

Trong mô hình MVC, Servlet xử lý phần controller còn JSP xử lý phần view.

Mô hình Model – View – Controller (MVC) là một phương pháp thiết kế giúp tách biệt phần Giao diện và Mã nguồn, từ đó nâng cao khả năng quản lý, phát triển và bảo trì ứng dụng MVC chia ứng dụng phần mềm thành ba thành phần tương tác lẫn nhau: Model (Dữ liệu), View (Giao diện), và Controller (Bộ điều khiển).

Controller(Code điều khiển tương tác giữa Model và View).

• Model là lớp chứa thông tin đối tượng (Dữ liệu), tương tác với Database

Chịu trách nhiệm chính trong mô hình hóa đối tượng.

• View là giao diện của hệ thống tương tác trực tiếp với người dùng.

• Controller nhận yêu cầu từ người dùng và sử dụng Model và View để xử lý và trả kết quả cho người dùng.

Hình 33: Phân chia tầng cho lập trình xử lý LOGIC SERVER (BACK – END)

• Tầng Web: Chứa các mã nguồn html, css, javascript để định dạng trang website sinh động Đây cũng là tầng VIEW (V) trong mô hình MVC;

• Tầng Core – Web: Tầng này chứa các tiện ích cho tầng web giao tiếp với tầng controller;

• Tầng Controller: Chứa các mã lệnh điều khiển sau khi nhận lệnh từ tầng web Đây là tầng Controller (C) trong mô hình MVC;

• Tầng DTO: Tầng này gồm các biến gắn cho các đối tượng cụ thể cũng như các phương thức truy xuất đối tượng, DTO giao tiếp với tầng Controller;

• Tầng Service: Bao gồm các phương thức chưa được hiện thực chúng giúp giao tiếp giữa tầng DTO xuống các tầng dưới;

• Tầng ServiceImpl: Bao gồm các phương thức hiện thực tầng Service giao tiếp với tầng dưới;

• Tầng Utils: Tầng Utils gồm các phương thức chuyển tầng DTO sang tầng Entity;

Tầng Entity tương tự như tầng DTO, bao gồm các biến gắn liền với đối tượng cụ thể và phương thức truy xuất đối tượng Tuy nhiên, điểm khác biệt là DTO giao tiếp với Controller, trong khi Entity tương tác với Database Tầng này chính là Model (M) trong mô hình MVC.

• Tầng Data: Tầng này gồm các phương thức sử dụng chung cho Entity để truy xuất xuống Database như các phương thức “thêm, sửa, xóa, tìm trường dữ liệu

Tầng Dao bao gồm các phương thức đặc thù chưa được hiện thực hóa để truy xuất dữ liệu từ cơ sở dữ liệu Chẳng hạn, UserDao có phương thức "CheckLogin", được sử dụng riêng để kiểm tra đăng nhập cho người dùng.

• Tầng DaoImpl: Hiện thực các phương thức ở tầng Dao;

• Tầng Common: bao gồm các tiện ích dùng cho hệ thống.

Xử lý đăng nhập

Hình 34: Sơ đồ giải thuật xử lý đăng nhập phân quyền người dùng quản trị và người dùng

Xử lý lấy dữ liệu dưới hệ quản trị cơ sở dữ liệu vẽ đồ thị trên website

Hình 35 : Sơ đồ giải thuật xử lý lấy dữ liệu cảm biến từ hệ quản trị cơ sở dữ liệu MYSQL lên website theo người dùng

Ngày đăng: 18/12/2021, 03:04

HÌNH ẢNH LIÊN QUAN

Hình 2: Phần mềm Netbeans sử dụng tạo máy chủ - XÂY DỰNG WEBSITE VÀ MÁY CHỦ ỨNG DỤNG THU THẬP DỮ LIỆU CHO TRẠM QUAN TRẮC
Hình 2 Phần mềm Netbeans sử dụng tạo máy chủ (Trang 10)
Hình 3: Phần mềm Inteliji viết website - XÂY DỰNG WEBSITE VÀ MÁY CHỦ ỨNG DỤNG THU THẬP DỮ LIỆU CHO TRẠM QUAN TRẮC
Hình 3 Phần mềm Inteliji viết website (Trang 11)
Hình 4: Mô hình phân tầng của TCP/IP - XÂY DỰNG WEBSITE VÀ MÁY CHỦ ỨNG DỤNG THU THẬP DỮ LIỆU CHO TRẠM QUAN TRẮC
Hình 4 Mô hình phân tầng của TCP/IP (Trang 12)
Hình 5: Cách thức hoạt động của Socket - XÂY DỰNG WEBSITE VÀ MÁY CHỦ ỨNG DỤNG THU THẬP DỮ LIỆU CHO TRẠM QUAN TRẮC
Hình 5 Cách thức hoạt động của Socket (Trang 13)
Hình 6: biểu đồ liên kết dữ liệu của bảng user với bảng role trong hệ quản trị cơ sở - XÂY DỰNG WEBSITE VÀ MÁY CHỦ ỨNG DỤNG THU THẬP DỮ LIỆU CHO TRẠM QUAN TRẮC
Hình 6 biểu đồ liên kết dữ liệu của bảng user với bảng role trong hệ quản trị cơ sở (Trang 15)
Hình 7: Sơ đồ khối của mạch thu thập dữ liệu từ cảm biến - XÂY DỰNG WEBSITE VÀ MÁY CHỦ ỨNG DỤNG THU THẬP DỮ LIỆU CHO TRẠM QUAN TRẮC
Hình 7 Sơ đồ khối của mạch thu thập dữ liệu từ cảm biến (Trang 18)
Hình 8: Mạch nguyên lý khối nguồn - XÂY DỰNG WEBSITE VÀ MÁY CHỦ ỨNG DỤNG THU THẬP DỮ LIỆU CHO TRẠM QUAN TRẮC
Hình 8 Mạch nguyên lý khối nguồn (Trang 20)
Hình 9 : Mạch nguyên lý thời gian thực RTC3231 - XÂY DỰNG WEBSITE VÀ MÁY CHỦ ỨNG DỤNG THU THẬP DỮ LIỆU CHO TRẠM QUAN TRẮC
Hình 9 Mạch nguyên lý thời gian thực RTC3231 (Trang 21)
Hình 10: Mạch in 1 - XÂY DỰNG WEBSITE VÀ MÁY CHỦ ỨNG DỤNG THU THẬP DỮ LIỆU CHO TRẠM QUAN TRẮC
Hình 10 Mạch in 1 (Trang 21)
Hình 11: Mạch in 2 - XÂY DỰNG WEBSITE VÀ MÁY CHỦ ỨNG DỤNG THU THẬP DỮ LIỆU CHO TRẠM QUAN TRẮC
Hình 11 Mạch in 2 (Trang 22)
Hình 12: Mạch thu thập dữ liệu sau khi đã hoàn thành 1 - XÂY DỰNG WEBSITE VÀ MÁY CHỦ ỨNG DỤNG THU THẬP DỮ LIỆU CHO TRẠM QUAN TRẮC
Hình 12 Mạch thu thập dữ liệu sau khi đã hoàn thành 1 (Trang 22)
Hình 13: Mạch thu thập dữ liệu sau khi đã hoàn thành 2 - XÂY DỰNG WEBSITE VÀ MÁY CHỦ ỨNG DỤNG THU THẬP DỮ LIỆU CHO TRẠM QUAN TRẮC
Hình 13 Mạch thu thập dữ liệu sau khi đã hoàn thành 2 (Trang 23)
Hình 14: Giao diện phần mềm nạp khi kết nối thành công - XÂY DỰNG WEBSITE VÀ MÁY CHỦ ỨNG DỤNG THU THẬP DỮ LIỆU CHO TRẠM QUAN TRẮC
Hình 14 Giao diện phần mềm nạp khi kết nối thành công (Trang 23)
Hình 15: Phần mềm Terminal cài đặt cho SIM5320E - XÂY DỰNG WEBSITE VÀ MÁY CHỦ ỨNG DỤNG THU THẬP DỮ LIỆU CHO TRẠM QUAN TRẮC
Hình 15 Phần mềm Terminal cài đặt cho SIM5320E (Trang 24)
Bảng 2: Chi tiết nội dung thông tin thiết bị gửi lên máy chủ - XÂY DỰNG WEBSITE VÀ MÁY CHỦ ỨNG DỤNG THU THẬP DỮ LIỆU CHO TRẠM QUAN TRẮC
Bảng 2 Chi tiết nội dung thông tin thiết bị gửi lên máy chủ (Trang 30)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w