LẬP TRÌNH HỆ THỐNG

Một phần của tài liệu Thiết kế và thi công công tơ điện tử giám sát được điện năng tiêu thụ qua mạng lora và internet (Trang 59)

a. Xây dựng mô hình truyền

Mô hình kết nối của các thiết bị có thể có: - Kết nối wifi:

+ Ưu điểm của kết nối thông qua trực tiếp bằng wifi, sẽ giúp dữ liệu được cập nhật lên cơ sở dữ liệu server nhanh nhất.

+ Khuyết điểm là không phải hộ gia đình nào cũng có.

 Như vậy module wifi sẽ được ưu tiên truyền dữ liệu trước. Đối với một số hộ gia đình sẽ không có kết nối wifi, thì khi đó kết nối tự động chuyển qua kết nối lora, lora sẽ được sử dụng.

- Kết nối Lora:

+ Trong trường hợp kết nối wifi thất bại, module lora sẽ thực hiện chức năng giao tiếp tới 1 thiết bị đặt sẵn kết nối wifi để gửi dữ liệu lên cơ sở dữ liệu server.

+ Tuy nhiên trong một số trường hợp vì khoảng cách địa lý xa, thiết bị này có thể gửi dữ liệu qua thiết bị gần đó để gửi lên server, nếu không thành công thì ta sẽ được chuyển tiếp tới tất cả các thiết bị trong khu vực và đưa lên cơ sở dữ liệu server.

Phân Tích mô hình kết nối.

Device #1 Device #2 Device #3 Database server Database server Lora Wifi Lora Lora Wifi Wifi Hình 4.9 Sơ đồ truyền hệ thống

- Trong mô hình có 3 thiết bị: “Device #1”, “Device #2”, “Device #3”.

.

- Xét đối tượng phân tích:

+ Đối tượng phân tích chính: “Device #2”. + Đối tượng Lora server: “Device #3”. + Đối tượng lân cận: “Device #1”.

- Trường hợp 1: Thiết bị #2 gửi dữ liệu lên cơ sở dữ liệu server thông qua wifi. + Nếu gửi dữ liệu thành công thì thiết bị #2 sẽ kết thúc quá trình gửi dữ liệu.

.

+ Nếu gửi dữ liệu không thành công thì sẽ được chuyển qua trường hợp 2.

.

- Trường hợp 2: Thiết bị #2 gửi dữ liệu lên thiết bị #3 thông qua lora: + Nếu gửi dữ liệu thành công thì thiết bị #2 sẽ kết thúc quá trình gửi dữ liệu, khi đó dữ liệu sẽ được thiết bị #3 gửi lên server thông qua wifi.

.

.

- Trường hợp 3: Thiết bị #2 gửi dữ liệu qua thiết bị lân cận khác thông qua lora:

s

+ Nếu gửi dữ liệu thành công thì thiết bị #2 sẽ kết thúc quá trình gửi dữ liệu. Khi đó dữ liệu sẽ được thiết bị lân cận gửi dữ liệu như trường hợp 1.

.

+ Nếu thiết bị #2 gửi lên thiết bị #3 không thành công: sẽ được thông báo gửi dữ liệu không thành công, cần hỗ trợ. Trường hợp này có thể lưu trữ dữ liệu.

.

- Ngoài ra nếu thiết bị #2 rãnh (không gửi dữ liệu), thiết bị #2 sẽ liên tục kiểm tra dữ liệu từ thiết bị #1 có yêu cầu chuyển tiếp dữ liệu không, nếu có thì thiết bị sẽ nhận và thực hiện quá trình gửi dữ liệu như ban đầu.

Giao thức giao tiếp lora: Mô hình bắt tay 3 bước của TCP/IP. + Bước 1: Thiết bị #1 gửi yêu cầu tới thiết bị #2, (Request).

+ Bước 2: Thiết bị #1 sẽ phải đợi phản hồi ACK xác nhận từ thiết bị #2, (ACK). + Bước 3: Thiết bị #2 sẽ gửi phản hồi cho thiết bị #1. (Response).

Khung truyền giao tiếp lora:

Flag start

Addr Source Addr Destination Flag Action Transaction Data Flag stop - Flag start: Cờ báo hiệu bắt đầu khung truyền. (2 byte)

- Addr Source: Địa chỉ lora gửi data (2 byte). - Addr Destination: Địa chỉ đích đến (2 byte).

- Flag Action: Cờ báo hiệu yêu cầu của tín hiệu gồm (Request, ACK, Response). (1 byte).

- Transaction: Định danh cho tín hiệu truyền, tránh trường hợp trùng lặp data. (4 byte).

- Data: dữ liệu cần truyền gửi, bao gồm (username, power, current, voltage) (36 byte) Flag stop: Cờ báo hiệu kết thúc khung truyền. (2 byte).

b. Lưu đồ giải thuật

Lưu đồ truyền dữ liệu giữa các thiết bị

Bắt đầu

Khởi động port Biến trạng thái = gởi bằng

WIFI

Biến trạng thái = gửi bằng WIFI

Biến trạng thái = gửi bằng LoRa

Biến trạng thái = Rỗng

Gửi dữ liệu đến

LoRa Server Biến trạng thái = Rỗng

Biến trạng thái = dữ liệu lặp lại

Gửi dữ liệu đến LoRa

khác Biến trạng thái = Rỗng

Trạng thái = Rỗng Thời gian < Thời gian

cập nhập

Nhận dữ liệu từ

thiết bị LoRa Biến trạng thái = Rỗng

Gửi dữ liệu Webserver Đ Đ Đ Đ S S S Có kết quả Có kết quả Có kết quả Đ Đ Đ S S Lưu trữ dữ liệu S

Hình 4.10 Lưu đồ hoạt động của thiết bị

Giải thích lưu đồ:

- Khi được cấp nguồn, hệ thống sẽ khởi động các chân I/O, do hệ thống ưu tiên gửi dữ liệu lên cơ sở dữ liệu bằng wifi nên đầu tiên biến trạng thái sẽ được gán bằng “gửi bằng WIFI”, nếu đúng thì sẽ gửi dữ liệu đến webserver, nếu

webserver có kết quả (có Internet) lúc đó biến trạng thái sẽ được gán bằng “Rỗng” và quay lên thực hiên lại quá trình truyền, nếu webserver không có kết quả (không có Internet) thì sẽ chuyển sang gửi bằng Lora.

- Sau khi gửi dữ liệu bằng Wifi thất bại thì sẽ chuyển sang gửi bằng Lora, biến trạng thái sẽ được gán bằng “gửi bằng LoRa”, khi đó dữ liệu từ thiết bị sẽ được truyền qua Lora Server, và nếu có kết quả (có ACK nhận về từ lora server) lúc

đó biến trạng thái sẽ được gán bằng “Rỗng” và quay lên thực hiên lại quá trình truyền, nếu lora server không có kết quả (không có ACK nhận về) thì sẽ

chuyển sang gửi dữ liệu đến thiết bị gần đó.

- Sau khi gửi dữ liệu đến lora server thất bại thì sẽ tiếp tục gửi dữ liệu đến thiết bị gần đó, biến trạng thái sẽ được gán bằng “dữ liệu lặp lại”, nếu đúng thì sẽ gửi dữ liệu đến thiết bị gần đó (lora khác), và nếu có kết quả ( có ACK nhận về từ lora gần đó) lúc đó biến trạng thái sẽ được gán bằng “Rỗng” và quay lên thực hiên lại quá trình truyền, nếu lora gần đó không có kết quả (không có ACK nhận về) thì sẽ chuyển sang lưu dữ liệu và thực hiện lại quá trình truyền.

- Nếu thiết bị đang ở trạng thái rãnh (không gửi dữ liệu) thì sẽ tiếp nhận dữ liệu từ các thiết bị gần đó gửi đến sau đó thực hiện lại quá trình truyền. Lúc này biến trạng thái sẽ so sánh nếu “Rỗng thời gian < thời gian cập nhật” thì sẽ nhận dữ liệu từ các thiết bị gần đó, trả về ACK cho thiết bị gửi và thực hiện lại quá trình truyền.

Gởi dữ liệu đến LoRa Server

Tạo khung truyền

Gởi khung truyền

Đợi ACK

Kết thúc

S

Đ

1.5s

Giải thích lưu đồ:

- Để gửi dữ liệu đến lora server thì lora gửi sẽ “Tạo khung truyền” (khung chứa dữ liệu sẽ gửi), sau khi tạo xong thì sẽ gửi khung truyền đến lora server, và sau đó sẽ đợi ACK phản hồi từ lora server, nếu ACK từ lora server phản hồi về trước 1.5s thì quá trình truyền hoàn tất. Nếu sau 1.5s không có ACK từ lora server lúc đó quá trình truyền thất bại.

Nhận dữ liệu từ thiết bị LoRa

Đọc khung truyền nhận về

Có dữ liệu nhận về

Gởi dữ liệu lên database

Kết thúc

S

Đ

Hình 4.12 Lưu đồ đọc dữ liệu của LoRa Server

Giải thích lưu đồ:

- Để nhận dữ liệu từ các thiết bị Lora, thì lora server sẽ luôn đọc khung truyền nhận về từ các thiết bị lora. Nếu có dữ liệu nhận về, lúc này lora server sẽ phản hồi ACK lại cho lora gửi và gửi dữ liệu lên cơ sở dữ liệu và kết thúc quá trình nhận dữ liệu,

Lưu đồ sử dụng website

Bắt đầu

Đăng kí người dùng

Có phải là khách hàng Truy cập tài khoản

Có phải là quản lý

Quan sát điện năng, dòng điện, điện áp

Quan sát điện khu vực Đ S Đ S Hình 4.13 Lưu đồ sử dụng website Giải thích lưu đồ:

- Khi lắp đặt công tơ điện tử, người dùng sẽ được các kỹ sư đăng kí cho tài khoản, khi đăng nhập vào tài khoản thì người dùng sẽ quan sát được điện năng trên website.

- Nếu là nhà quản lý khi đăng nhập sẽ quan sát được lượng điện năng tiêu thụ của từng hộ, từng khu vực, từng tháng.

4.4.2 Phần mềm lập trình cho vi điều khiển Giới thiệu phần mềm lập trình Giới thiệu phần mềm lập trình

Các thiết bị dựa trên nền tảng Arduino được lập trình bằng ngôn riêng. Ngôn ngữ này dựa trên ngôn ngữ Wiring được viết cho phần cứng nói chung. Và Wiring lại là một biến thể của C/C++. Ngôn ngữ Arduino bắt nguồn từ C/C++ phổ biến hiện nay do đó rất

Có rất nhiều trình biên dịch cho ngôn ngữ này, ngoài trình biên dịch thường hay dùng như Arduino IDE, Eclipse, Visual Studio hoặc IntelliJ… những trình biên dịch ra đời sau đã sửa được một số hạn chế của trình biên dịch Arduino IDE, đồng thời hỗ trợ nhiều hơn các thư viện mã nguồn mở. Đồng thời cung cấp cho người lập trình một môi trường dễ đang thao tác hơn như gợi ý các cú pháp, báo lỗi, sửa lỗi một cách dễ dàng hơn.

Hình 4.14 Phần mềm Slober-The Eclipse Arduino IDE

- Hỗ trợ nhiều thư viện Arduino: ESP8266WiFi.h, ESP8266WebServer.h, Adafruit_GFX.h…

Để có thể nạp được code cho Module Node MCU chúng ta phải thêm board và phải cài đặt các thư viện cần thiết.

Hình 4.15 Các thư viện được cài đặt thành công

- Gợi ý các cú pháp thuộc các thư viện:

Tiếp theo, để thực hiện viết chương trình. Ta cần mở một chương trình mới. vào File.

Hình 4.16 Giao diện hỗ trợ lập trình của Phần mềm Slober-The Eclipse Arduino IDE

Tương tự như các trình biên dịch khác, ở phần mềm Slober-The Eclipse Arduino IDE.

Vùng lệnh bao gồm các nút lệnh menu (File, Edit, Help, Run…). Cho phép biên dịch và kiểm tra lỗi; nạp chương trình cho board; mở cửa sổ soạn thảo mới; mở các chương trình đã lưu; lưu chương trình soạn thảo.

- Vùng viết chương trình: vùng mà người dùng sẽ viết chương trình vào đây. - Vùng thông báo: thông báo cho người dùng biết chương trình có lỗi hay không hoặc là đã nạp được chưa.

- Để nạp chương trình thì kết nối cáp USB giữa board và máy tính. Sau khi kết nối thành công vào biểu tượng nạp để đúng cổng kết nối máy tính rồi mới nạp.

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

a. Giới thiệu về chương trình tạo máy chủ Xampp

Xampp là chương trình tạo máy chủ Web (Web Server) được tích hợp sẵn Apache, PHP, MySQL, FTP Server, Mail Server và các công cụ như phpMyAdmin. Không như Appserv, Xampp có chương trình quản lý khá tiện lợi, cho phép chủ động bật tắt hoặc khởi động lại các dịch vụ máy chủ bất kỳ lúc nào.

Xampp là một mã nguồn mở máy chủ web đa nền được phát triển bởi Apache Friends, bao gồm chủ yếu là Apache HTTP Server, MariaDB database, và interpreters dành cho những đối tượng sử dụng ngôn ngữ PHP và Perl. Xampp là viết tắt của Cross- Platform (đa nền tảng-X), Apache (A), MariaDB (M), PHP (P) và Perl (P). Nó phân bố Apache nhẹ và đơn giản, khiến các lập trình viên có thể dễ dàng tạo ra máy chủ web local để kiểm tra và triển khai trang web của mình. Tất cả mọi thứ cần cho phát triển một trang web - Apache (ứng dụng máy chủ), Cơ sở dữ liệu (MariaDB) và ngôn ngữ lập trình (PHP) được gói gọn trong 1 tệp. Xampp cũng là 1 đa nền tảng vì nó có thể chạy tốt trên cả Linux, Windows và Mac. Hầu hết việc triển khai máy chủ web thực tế đều sử dụng cùng thành phần như XAMPP nên rất dễ dàng để chuyển từ máy chủ local sang máy chủ online.

Hình 4.17 Phần mềm Xampp

Để khởi động ta nhấp vào nút start ở mục Apache (Port), MySQL (Database system).

Hình 4.18 Ảnh các dữ liệu lưu trữ trên database

Hình 4.19 Trình biên dịch Subline Text 3

Đây là một trình soạn thảo mã nguồn đa nền tảng chia sẻ với giao diện lập trình ứng dụng Python (API). Nó thực sự hỗ trợ nhiều ngôn ngữ lập trình và ngôn ngữ đánh dấu, và người dùng có thể thêm các chức năng bổ sung, thường được xây dựng bởi cộng đồng và được duy trì theo giấy phép phần mềm miễn phí.

Subline Text 3 hỗ trợ rất nhiều ngồn ngữ lập trình: Python, PHP, Html, CSS… trình biên dịch đa năng rất phù hợp để lập trình website.

Sau khi cài đặt thành công, vào vùng soạn thảo chương trình sẽ thấy như sau:

Hình 4.20 Vùng soạn thảo chương trình

Cuối cùng vào một trình suyệt bất kì như GooGle, Fire Fox Moliza…. Bấm localhost sẽ có kết quả như hình:

Hình 4.21 Giao diện đăng kí thành viên

c. Giới thiệu Website

Website (tiếng Anh: website), còn gọi là trang web (có thể nhầm lẫn với "web page") hoặc trang mạng, là một tập hợp trang web, thường chỉ nằm trong một tên miền hoặc tên miền phụ trên World Wide Web của Internet. Một trang web là tập tin HTML hoặc XHTML có thể truy nhập dùng giao thức HTTP. Trang mạng có thể được xây dựng từ các tệp tin HTML (trang mạng tĩnh) hoặc vận hành bằng các CMS chạy trên máy chủ (trang mạng động).

Trang mạng có thể được xây dựng bằng nhiều ngôn ngữ lập trình khác nhau (PHP, ASP.NET, Java, Ruby on Rails, Perl,..).

Website được giao tiếp và hiển thị cho người dùng truy cập bằng các phần mềm được gọi là trình duyệt website. Một sô trình duyệt website nổi tiếng có thể kể đến như Internet Explorer được cài đặt mặc định vào mỗi máy tính cài hệ điều hành windows và được thay thế bởi Edge trên Windows 10 hay Chrome được phát triển bởi Google và Firefox được phát triển bởi Mozilla.

- Website tĩnh: Website tĩnh là website mà người quản trị (những người không phải là lập trình viên) không thể tùy ý thay đổi nội dung và hình ảnh mà phải cần kiến thức về HTML cơ bản. Website tĩnh được viết hoàn toàn dựa trên nền tảng HTML CSS và thêm các hiệu ứng từ Javascript nếu muốn.

- Website động: Website động là website được viết kèm theo một bộ công cụ quản trị để tùy biến nội dung dành cho webmaster (người quản trị) có thể dễ dàng thay đổi nội dung, hình ảnh. Website động được thiết kế bởi các lập trình viên để làm sao cho phép website có thể thay đổi được nội dung thường xuyên. Một số công nghệ, ngôn ngữ để xây dựng website động bao gồm PHP, ASP.NET, Java,.. Để xấy dựng và truy xuất được các dữ liệu thì cần đến website động, các ngôn ngữ giúp người lập trình có thể truy xuất được các dữ liệu một cách dễ dàng, giúp xây dựng các hệ thống giám sát chuyên nghiệp hơn.

Với website đề tài thực hiện với mục đích giám sát và quản lý.

Hình 4.22 Phần mục đăng nhập

Đối với chức năng quản lý: Website xây dựng với hai lựa chọn. Đầu tiên, khi thiết bị được cài đặt tại các hộ gia đình thì các hộ sẽ được cấp một mã số để truy cập vào

thể. Các số liệu thu thấp được, lấy các dữ liệu này để mô phỏng, dự đoán, giúp tiết kiệm điện năng một cách hợp lý từ các cơ quan.

Hình 4.23 Trang đăng kí mới

Về hướng khách hàng, người dùng sau khi được cấp một mã khách hàng có thể vào trang web để quan sát được các thông số: điện năng tiêu thụ, hiệu điện thế, dòng điện của các thiết bị trong gia trong một ngày, và số tiền tính tới thời điểm nhất định, đồng thời có thể truy vấn dữ liệu của các tháng đã sử dụng tùy ý. Hỗ trợ người dùng trong việc quản lý, sử dụng các thiết bị trong nhà hiệu quả hơn.

Trên trang của người dùng sẽ hiển thị các thông tin đã được lưu trữ như: Mã khách hàng được cấp, tên khách hàng, địa chỉ khách hàng, số hợp đồng, loại khách hàng,…

Một phần của tài liệu Thiết kế và thi công công tơ điện tử giám sát được điện năng tiêu thụ qua mạng lora và internet (Trang 59)

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

(93 trang)