4.2.1 Thi công bo mạch
Hình 4.2 Sơ đồ mạch in PCB mạch nguồn
Sau khi in mạch ra bo đồng, cần kiểm tra các đường mạch đã nối với nhau như thiết kế ban đầu. Sử dụng mũi khoan phù hợp với từng loại linh kiện trong mạch và sau đó tiến hành hàn mạch.
Sơ đồ bố trí linh kiện dạng 3D để dễ quan sát và sắp xếp linh kiện theo đúng chiều.
Hình 4.3 Sơ đồ bố trí linh kiện 3D mạch điều khiển Sơ đồ bố trí linh kiện 3D mạch
điều khiển
được hư hao trong mạch. Mạch nguồn có nhiệm vụ nhận điện xoay chiều 220V vào và chuyển thành điện một chiều 5V. Mạch điều khiển có nhiệm vụ nhận nguồn 5V vào mạch để điều khiển hệ thống.
Bảng 4.1 Danh sách các linh kiện sử dụng cho toàn hệ thống
STT Tên linh kiện Số lượng 1 Module NODE MCU ESP8266 1 2 Màn hình TFT 2.4 inch 1 3 Module Lora E32-TTL-100 1 4 Module đo điện năng AC PZEM-004T 1 5 Module nguồn AC-DC Hi-Link HLK-PM05 1
6 Led đỏ 1
7 Nút nhấn 1
4.2.2 Lắp ráp và kiểm tra
Sau khi thiết kế, nhóm tiến hành in và ủi mạch, rửa mạch, khoan mạch và hàn các linh kiện vào mạch. Dùng đồng hồ đo vạn năng VOM dò xem có dây nào bị đứt hay có linh kiện nào bị hỏng không. Do trong quá trình thiết kế đã để khoảng cách giữa hai dây nên không có vấn đề hai dây gần nhau để xảy ra hiện tượng chập mạch. Do nhóm làm hai mạch riêng nên việc tiến hành kiểm tra rất dễ dàng. Nhóm chỉ cần kiểm tra mạch nguồn trước nếu mạch nguồn ổn định thì nhóm tiến hành lắp cả hệ thống vào.
Hình 4.5 Hình ảnh thực tế bên trong của mạch điều khiển sau khi hoàn chỉnh
Hình 4.6 Hình ảnh thực tế bên ngoài của mạch điều khiển sau khi hoàn chỉnh
4.3 ĐÓNG GÓI VÀ THI CÔNG MÔ HÌNH
4.3.1 Đóng gói bộ điều khiển
Sau khi nhóm hoàn thiện phần mạch và kiểm tra hoàn tất thì tiến hành đóng gói tất cả hệ thống vào hộp cho an toàn và thẩm mỹ. Hộp có kích thước dài x rộng x cao: 158x90x65 mm.
Hình 4.7 Hình ảnh hộp bảo vệ toàn hệ thống.
4.3.2 Thi công mô hình
Để giảm chi phí thì nhóm dùng hộp nhựa được bán sẵn. Ưu điểm là tiết kiệm được chi phí, hộp được kiểm định để được bán đại trà và nhược điểm là bị động theo kích thước của hộp. Hộp đã được thiết kế lại để có thể phù hợp với nhu cầu của đề tài.
Đề tài của nhóm là công tơ điện tử nên nhóm đã thiết kế thêm các bảng điện để có thể mô phỏng được thực tế.
Hình 4.8 Hình ảnh thực tế mô hình
4.4 LẬP TRÌNH HỆ THỐNG 4.4.1 Lưu đồ giải thuật 4.4.1 Lưu đồ giải thuật
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