Lưu đồ thuật toán nhận dữ liệu từ CSDL

Một phần của tài liệu (Đồ án tốt nghiệp) THIẾT kế hệ THỐNG điều KHIỂN và GIÁM sát PHÂN tán vườn THÔNG MINH sử DỤNG VI điều KHIỂN THÔNG QUA MẠNG LORA và INTERNET (Trang 69)

Nếu như thời gian thực hiện hai việc trên không đúng, ESP8266 sẽ quét qua hàm tiếp theo cần thực hiện. Đó là việc nhận dữ liệu từ trạm khu vực để gửi lên CSDL, cũng là việc quan trọng trong quá trình hoạt động của hệ thống. Lưu đồ thuật toán của chương trình được biểu diễn như trong hình 4.8. Khi thực hiện chương trình này, ESP8266 sẽ kiểm tra biến counter, nếu 11 < counter < 15, sẽ tạo một chuỗi JSON chứa ID là giá trị biến counter, sau đó gửi đi các trạm khu vực. Nếu giá trị counter = 11, trạm khu vực thứ nhất sẽ gửi dữ liệu về cho ESP8266, vì đây là địa chỉ mà ESP8266 sẽ

yêu cầu trạm khu vực thứ nhất gửi dữ liệu về cho nó. ESP8266 sẽ liên tục thực hiện hàm nhận Lora cho đến khi nhận được liệu. Trong quá trình này, cứ mỗi 3 giây mà ESP8266 chưa nhận được dữ liệu gửi về, ESP8266 sẽ gửi yêu cầu dữ liệu tới trạm khu vực một lần nữa. Việc này thực hiện 3 lần khi không nhận được dữ liệu, nếu quá 3 lần thì ESP8266 sẽ bỏ qua việc nhận dữ liệu ở trạm thứ nhất, và biến counter sẽ tăng một đơn vị. Còn nếu như ESP8266 đã nhận được dữ liệu, biến counter cũng tăng một đơn vị. Việc nhận dữ liệu ở các trạm khu vực 2, 3, 4 tương đương với giá trị biến counter là 12, 13, 14, các công việc thực hiện tương tự như trạm thứ nhất. Khi đã nhận dữ liệu đủ từ bốn khu vực, biến counter sẽ reset về giá trị 11, đồng thời thốt hỏi hàm Request Data.

Hình 4. 8: Lưu đồ thuật toán nhận dữ liệu từ trạm khu vưc

Công việc cuối cùng mà ESP8266 sẽ quét qua để thực hiện trong một vòng lặp của nó là việc kiểm tra chế độ hoạt động mà người dùng mong muốn sẽ được ESP thực hiện mỗi 6 giây một lần. Nếu ESP8266 thực hiện hàm này, việc đầu tiên cần thực

hiện là truy cập vào CSDL để nhận chế độ thực hiện. Trang Web mà ESP8266 sẽ truy cập là http://dungblog.xyz/get_auto_mode.php thông qua phương thức GET. Dữ liệu

nhận về sẽ là một chuỗi JSON có chứa giá trị xác định chế độ hoạt động và một số các thông tin cần thiết khác.

Hình 4. 9: Lưu đồ thuật tốn chương trình xác định chế độ hoạt động của hệ thống Trong đồ án này, có 3 chế độ cho hệ thống hoạt động, trong cả 3 chế độ việc thực Trong đồ án này, có 3 chế độ cho hệ thống hoạt động, trong cả 3 chế độ việc thực hiện giám sát các thông tin của vườn thì thực hiện hồn tồn tự động. Chỉ có việc điều

khiển thiết bị là khác nhau bao gồm: điều khiển bằng tay, tự động và bán tự động. Nếu giá trị biến chế độ là 0, thì tức là chế độ điều khiển bằng tay, ESP8266 sẽ trực tiếp thoát khỏi hàm Auto Mode Control. Nhưng nếu giá trị biến chế độ bằng 1, tức là ESP8266 lập tức đi vào chế độ bán tự động, các thiết bị được người dùng bật bằng tay, và tự động tắt sau khoảng thời gian mà người dùng đã cài đặt. Trong chế độ bán tự động, ESP8266 sẽ nhận các giá trị điều khiển thiết bị mới nhất trên CSDL để điều khiển các thiết bị ở trạm khu vực. Đồng thời ESP8266 xác định thời gian tắt các thiết bị trong chuỗi JSON đã nhận về trước đó. Nếu chưa đến thời gian kết thúc, ESP8266 sẽ thực hiện các công việc trong “Main” như trên lưu đồ thuật tốn trong Hình 4.4.

Cịn nếu thời gian đã tới thời điểm kết thúc, ESP8266 sẽ tạo một chuỗi JSON tín hiệu điều khiển trạng thái thiết bị (trạng thái tắt), sau đó gửi chúng cho các trạm khu vực thông qua Lora. Ngược lại, giá trị biến chế độ bằng 2, ESP8266 ngay lập tức vào chế độ tự động hoàn toàn. Trong chế độ này, các công việc cần ESP8266 thực hiện giống như trong chế độ bán tự động, chỉ khác là khơng có thời gian kết thúc, và các thiết bị được điều khiển theo thời gian cố định. Đồng thời luôn kiểm tra biến điều khiển để có thể thay đổi chế độ hoạt động khi người dùng thay đổi trên giao diện điều khiển. Lưu đồ thuật tốn biểu diễn q trình hoạt động này được miêu tả trong hình 4.10.

Các cơng việc trên thực hiện lặp lại liên tục cho đến khi dừng. Ta cảm thấy việc cần xử lý là rất nhiều, tuy nhiên tần số hoạt động của ESP8266 là 80MHz nên các công việc này xử lý rất nhanh.

4.2. Trạm thu thập dữ liệu khu vực.

Tương tự như khi thiết kế trạm điều khiển trung tâm, trạm thu thập dữ liệu khu vực sử dụng dụng Arduino làm bộ xử lý chính. Arduino kết nối với Module Lora để truyền nhận dữ liệu với trạm điều khiển trung tâm, đồng thời cũng kết nối với các Module cảm biến để thu thập dữ liệu tại khu vực cần thiết. Trạm khu vực cũng cần thiết kế phần cứng và phần mềm.

4.2.1. Thiết kế phần cứng

Arduino kết nối với Module Lora thông qua chuẩn truyền thơng SPI. Vì ở trạm khu vực, nhóm sử dụng cả hai loại vi điều khiển là Arduino Uno và Arduino Nano, vì vậy khi thiết kế phần cứng, nhóm sẽ thiết kế mạch cho cả hai loại vi điều khiển này. Sơ đồ mạch điện tử trạm thu thập dữ liệu khu vực được trình bày như hình 4.10 và hình 4.11 sau đây:

Hình 4. 10: Sơ đồ mạch điều khiển chính trạm khu vực sử dụng Arduino Uno Trong sơ đồ mạch điện trên, Arduino cịn 5 chân thừa đó là A2, A3, A4, A5 và Trong sơ đồ mạch điện trên, Arduino cịn 5 chân thừa đó là A2, A3, A4, A5 và D2. Các chân này có thể sử dụng để mở rộng mạch điện cho cơ cấu chấp hành. Hoặc có thể sử dụng để mở rộng đầu vào cảm biến, ví dụ cảm biến cường độ ánh sáng, cảm biến mưa, ...

Hình 4. 11: Sơ đồ mạch điều khiển chính trạm khu vực sử dụng Arduino Nano Tương tự như mạch điều khiển sử dụng Arduino Uno, mạch điều khiển sử dụng Tương tự như mạch điều khiển sử dụng Arduino Uno, mạch điều khiển sử dụng Arduino Nano cũng có các chân thừa là: A4, A5, A7, D3, D8, D9. Ta có thể sử dụng

A4 và A5 để mở rộng đầu ra hoặc đầu vào I2C. Các chân cịn lại có thể mở rộng đầu vào cảm biến. Việc mở rộng đầu ra, nhóm em sử dụng IC 74HC595 để mở rộng đầu cho cơ cấu chấp hành. Sơ đồ mạch cơ cấu chấp hành điều khiển các thiết bị được mơ tả như hình 4.12:

Hình 4. 12: Sơ đồ mạch điện cơ cấu chấp hành của các khu vực trung tâm

Sau khi đã thiết kế thành công sơ đồ mạch điện phần cứng của các trạm khu, ta vẽ mạch in để có thể tiến hành thi cơng phần cứng. Mạch in phần cứng của các trạm khu vực được trình bày như hình 4.13 và hình 4.14:

Hình 4. 14: Sơ đồ mạch in sử dụng Arduino Nano

4.2.2. Lưu đồ thuật tốn

Lưu đồ thuật tốn chương trình chính của trạm thu thập dữ liệu khu vực được trình bày trong hình 4.15.

Khi trạm khu vực bắt đầu hoạt động, Arduino bắt đầu thực hiện việc kết nối vào Module Lora. Việc kết nối với Lora tương tự như ESP8266 kết nối Lora. Sau khi đã kết nối Lora thành công, các cảm biến sẽ được khởi tạo. Sau khi hồn tất các cơng việc này, Arduino tiếp tục thực hiện một vịng lặp vơ hạn.

Hình 4. 16: Lưu đồ thuật tốn nhận dữ liệu Lora của trạm khu vực

Trong vòng lặp này, việc đầu tiên mà Arduino sẽ thực hiện đó là nhận dữ liệu từ mạng Lora. Lưu đồ thuật toán nhận dữ liệu Lora của trạm thu thập dữ liệu khu vực được trình bày như Hình 4.16. Theo như hình, Arduino sẽ thực hiện việc kiểm tra có hay khơng tín hiệu gửi dữ liệu tới đây, nếu khơng có tín hiệu thì Arduino sẽ trực tiếp kết thúc hàm nhận dữ liệu Lora, nhưng nếu có Arduino sẽ thực hiện việc đọc dữ liệu sau tín hiệu đầu tiên và lưu vào một biến toàn cục để xử lý. Sau khi đã có dữ liệu nhận về, dữ liệu này sẽ được mã hóa thành dạng JSON, sau đó sẽ được xử lý. Arduino sẽ kiểm tra “ID” trong chuỗi tín hiệu gửi đến, nếu ID có giá trị là 1, 2, 3 hoặc 4, Arduino sẽ lưu các giá trị điều khiển thiết bị được mang theo trong chuỗi dữ liệu gửi đến để

Arduino xử lý trong hàm Control Device. Ngược lại nếu như “ID” là 11, 12, 13, 14 thì Arduino sẽ tạo một chuỗi JSON chứa các giá trị dữ liệu nhiệt độ, độ ẩm khơng khí và độ ẩm đất để gửi sang trạm điều khiển trung tâm xử lý. Các giá trị ID là 1, 2, 3, 4 và 11, 12, 13, 14 tương đương với giá trị địa chỉ được nhóm cài đặt cho các node Lora để dễ xử lý tín hiệu. Giá trị 1 và 11 là địa chỉ của Node Lora trạm khu vực thứ nhất, tương tự, 2 và 12, 3 và 13, 4 và 14 là địa chỉ của các node Lora của trạm khu vực 2, 3, 4.

Khi đã thực hiện xong hàm nhận dữ liệu Lora, việc tiếp theo mà Arduino sẽ thực hiện trong vịng lặp vơ hạn là hàm đọc giá trị cảm biến. Việc đọc cảm biến được thực hiện 20 giây một lần. Nếu đã đọc được giá trị của các cảm biến, các giá trị này sẽ được lưu lại để khi có tín hiệu u cầu sẽ gửi qua trạm điều khiển trung tâm.

Khi đã hoàn thành đọc giá trị cảm biến, việc cuối cùng mà Arduino sẽ phải thực hiện đó là hàm điều khiển thiết bị (Control Device). Các tín hiệu điều khiển các thiết bị ở trạm khu vực sẽ được trạm điều khiển trung tâm gửi tới từng trạm khu vực. Mặt khác, tín hiệu điều khiển cịn có thể nhận được từ các nút nhấn tại các trạm khu vực. Khi nhấn nút điều khiển tại trạm khu vực, trạm khu vực sẽ gửi dữ liệu tới trạm trung tâm để cập nhật tín hiệu điều khiển lên CSDL. Khi trạm trung tâm đã cập nhật thành cơng, trạm trung tâm sẽ gửi tín hiệu trả về trạm khu vực thơng báo rằng đã cập nhật thành công. Khi trạm khu vực đã nhận được hiệu trả về, trạng thái của thiết bị tương ứng với nút nhấn được nhấn sẽ thay đổi.

Một số hình ảnh thực tế về mạch điện tử của các trạm thu thập dữ liệu khu vực trong đồ án của nhóm ở Hình 4.17 và hình 4.18:

CHƯƠNG 5: THIẾT KẾ GIAO DIỆN GIÁM SÁT VÀ ĐIỀU KHIỂN

5.1. Thiết kế Server của đồ án

Server là phần quan trọng thiết yếu trong đồ án này của nhóm. Server có trách nhiệm xử lý, lưu trữ thông tin của vườn đồng thời cũng xử lý, lưu trữ tín hiệu điều khiển của người dùng. Trong thực tế có rất nhiều Server cung cấp dịch vụ IoT tương tự như Blynk, CNC IoT, … Tuy nhiên các Server này là của bên cung cấp quản lý, ta không thể thao tác thay đổi thông tin trong các Server. Điều đó rất bất tiện trong việc quản lý và sử dụng. Đồng thời, khi ta sử dụng các Server này thì việc đảm bảo dữ liệu sẽ khơng được đảm bảo và Server có thể ngừng hoạt động bất kì lúc nào mà có thể sẽ khơng thơng báo trước. Điều đó sẽ ảnh hưởng đến q trình hoạt động của hệ thống. Chính vì vậy, nhóm em đã quyết dịnh xây dựng một Server riêng cho hệ thống của mình.

Nhóm sử dụng giao thức API để truyền nhận dữ liệu với Server trong đồ án thay vì sử dụng các giao thức khác như MQTT, XMPP, DSS, … là do giao thức API có đầy đủ các phương thức như Post, Get, Pub, Delete dữ liệu. Do vậy chúng ta có thể xây dựng các HTTP service đơn giản, nhanh chóng. Đồng thời linh hoạt trong kiểu dữ liệu trả về cho Client (trong đồ án này là định dạng dữ liệu JSON).

Quy trình API hoạt động trong đồ án như sau:

1. Xây dựng URL để Client có thể gửi request dữ liệu lên Server thông qua giao thức HTTP hoặc HTTPS.

2. Tại Server sẽ thực hiện kiểm tra xác thực request đã gửi lên và tìm tài nguyên thích hợp để tạo nội dung trả về nếu là phương thức Get hoặc xử lý, lưu dữ liệu vào CSDL nếu là phương thức Post.

3. Server trả về kết quả theo định dạng JSON thông qua giao thức HTTP/HTTPS nếu có.

Nhóm em sử dụng Hosting của cơng ty TNHH Lưu trữ số, có địa chỉ trang web là https://123host.vn để làm Server của đồ án. Các bước thực hiện như sau:

B2: Tạo tài khoản đăng nhập, sau đó ta sẽ được cung cấp 1 Hosting miễn phí có 200MB dung lượng bộ nhớ để chúng ta có thể dựng Server của mình.

B3: Tiếp theo, chúng ta sẽ mua một tên miền, sau đó nhờ bộ phận hỗ trợ khách hàng trỏ tên miền vừa mua được vào Hosting miễn phí của mình, nếu đã có tên miền chưa sử dụng thì có thể sử dụng nó mà không cần mua tên miền mới.

Nếu như bạn khơng muốn mua tên miền mới thì cũng khơng sao, bởi vì bên phía cơng ty sẽ cung cấp cho bạn một tên miền riêng. Tất nhiên là nó có thể sẽ khó nhớ hơn, tuy nhên thì nó miễn phí.

B4: Sau khi bạn đăng nhập lại, trong mục Dashboard sẽ có giao diện như hình 5.1:

Hình 5. 1: Thơng tin dịch vụ Hosting của đồ án

Vào phần quản lý dịch vụ trong mục Free Hosting, giao diện như hình 5.2 sẽ hiện ra:

Hình 5. 2: Free Hosting của đồ án Sẽ có tên miền của mình đã mua và trạng thái hoạt động của nó. Sẽ có tên miền của mình đã mua và trạng thái hoạt động của nó.

Ở đây, nhóm đã mua tên miền là “dungblog.xyz” và tên miền này đã được trỏ vào hosting Free-Host-200.

Click vào icon bánh răng bên phải như trên hình 35, chọn Quản lý dịch vụ -> Truy cập vào cPanel sẽ đưa ta vào mục quản lý hosting của mình.

Trong mục cPanel, truy cập vào mục File Manager, chọn thư mục public_html, sau đó đưa tất cả các tập tin cần thiết của đồ án vào đây như hình 5.3. Các tập tin này sẽ được trình bày trong phần phụ lục của đồ án.

Đồng thời, trong cPanel, ở mục DATABASE ta sẽ tạo một cơ sở dữ liệu dùng để lưu trữ các thông tin cần giám sát trong vườn, cũng như lưu tín hiệu điều khiển từ người dùng. Việc tạo Databse sẽ được làm rõ ở mục 5.3.

Vậy là các bước tạo Server cho đồ án của nhóm đã hồn thành, các tập tin trong thư mục public_html đã được nhóm viết sẵn trước đó, chỉ cần đưa lên Server là hoạt động được. Tất cả các tập tin này đều được nhóm viết bằng ngơn ngữ PHP và HTML.

Hình 5. 3: Thư mục public_html trong cPanel của Hosting

5.2. Thiết kế giao diện giám sát và điều khiển

Như đã trình bày như tên của đề tài, hệ thống sẽ bao gồm cả giao diện giám sát và điều khiển. Trong đề tài này, nhóm em thực hiện việc xây dựng giao diện giám sát trên Website. Giao diện sẽ bao gồm 3 phần chính:

− Giám sát.

− Điều khiển thiết bị.

Người dùng có thể thao tác trên giao diện giám sát và điều khiển để tương tác trực tiếp với hệ thống dù ở khoảng cách xa. Chỉ cần có một thiết bị thơng minh như SmartPhone, Laptop hay Tablet, ... có kết nối mạng, ta có thể truy cập vào giao diện giám sát thông qua ứng dụng trình duyệt Web ở bất kì đâu, bất kì thời gian nào đều được.

Để có thể vào giao diện giám sát của hệ thống, ta truy cập vào trang Web thông qua đường đẫn http://dungblog.xyz. Khi truy cập vào đường dẫn, sẽ hiện ra một trang giao diện đăng nhập, tài khoản và mật khẩu đăng nhập là “admin”. Dưới đây là trang

Một phần của tài liệu (Đồ án tốt nghiệp) THIẾT kế hệ THỐNG điều KHIỂN và GIÁM sát PHÂN tán vườn THÔNG MINH sử DỤNG VI điều KHIỂN THÔNG QUA MẠNG LORA và INTERNET (Trang 69)

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

(162 trang)