LẬP TRÌNH HỆ THỐNG

Một phần của tài liệu (Đồ án tốt nghiệp) NGHIÊN cứu MẠNG LORA ỨNG DỤNG vào QUAN TRẮC KHÍ hậu ở KHU vực hòa KHÁNH (Trang 47)

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

Hoạt động dựa vào quá trình truyền nhận dữ liệu qua lại với nhau theo quá trình sau: Hiển thị quan sát các yếu tố môi trường cho người dùng thông qua ứng dụng Thingspeak, MitApp cập nhật thời điểm liên tục. Hệ thống cập nhật liên tục truyền gửi tín hiệu qua lại có thể báo về cho người dùng cập nhật kịp thời.

Quá trình khi cấp điện áp cho hệ thống sẽ khởi động Esp32,Arduino Nano,Lora sx1278,cảm biến mưa ,áp suất BMP280,và cảm biến ánh sáng...đảm bảo quá trình truyền không bị tác động ngoài môi trường. Dữ liệu từ các cảm biến lấy thông số giá trị ngoài môi trường và hiển thị lên Web Server .

Hình 4.5 Lưu đồ giải thuật gói nhận (Gateway)

Sau khi các cảm biến lấy dữ liệu thông số từ môi trường thông qua Arduino chương trình bắt đầu khởi tạo các chân chuẩn SPI ,khởi tạo Lora ,các biến và khởi tạo cảm biến và kết nối Lora với các thông số băng tầng đã thiết lập.Sau đó nhận dữ liệu từ cảm biến để tiến hành kiểm tra với ngưỡng xác lập và kiểm tra so sánh đọc giá trị .Nếu có tham số thay đổi thì sẽ đọc và gửi giá trị cảm biến cho Gateway.

Lưu đồ giải thuật gói nhận (Gateway)

Hình 4.6 Lưu đồ giải thuật gói gửi cổng Node

Chương trình bắt đầu khởi tạo các biến, chuẩn giao tiếp SPI,và Lora ,Esp32 mặt định trạng thái Auto ,kiểm tra lại băng tầng hoạt động .Ban đầu Gateway sẽ kiểm tra có gói dữ liệu từ lora bên Node gửi tới .Nếu có dữ liệu thì lora nhận sẽ nhận gói tin và lưu vào dữ liệu lên sever và đưa lên Thingspeak,đảm bảo là thingspeak đã có địa chỉ mã hóa và kết nối wifi với Esp32.Ở chế độ Auto so sánh thì giá trị nhận nếu thay đổi thì hiển thị thông số mới nhất đến người dùng với mã tương ứng ghi vào biến tạo và trao đổi tín hiệu qua lại giữa gói nhận và gửi .Nếu không có gói tin Lora gửi đến thì gói

4.2.2. Phần mềm lập trình cho vi điều khiển

Giới thiệu phần mềm :

Arduino IDE là một phần mềm mã nguồn mở chủ yếu được sử dụng để viết và biên dịch mã vào module Arduino.

Đây là một phần mềm Arduino chính thức, giúp cho việc biên dịch mã trở nên dễ dàng mà ngay cả một người bình thường không có kiến thức kỹ thuật cũng có thể làm được.

Hình 4.7 Giao diện phần mềm Arduino IDE

Nó có các phiên bản cho các hệ điều hành như MAC, Windows, Linux và chạy trên nền tảng Java đi kèm với các chức năng và lệnh có sẵn đóng vai trò quan trọng để gỡ lỗi, chỉnh sửa và biên dịch mã trong môi trường. Có rất nhiều các module Arduino như Arduino Uno, Arduino Mega, Arduino Leonardo, Arduino Micro và nhiều module khác. Mỗi module chứa một bộ vi điều khiển trên bo mạch được lập trình và chấp nhận thông tin dưới dạng mã. Mã chính, còn được gọi là sketch, được tạo trên nền tảng IDE sẽ tạo ra một file Hex, sau đó được chuyển và tải lên trong bộ điều khiển trên bo.

Môi trường IDE chủ yếu chứa hai phần cơ bản: Trình chỉnh sửa và Trình biên dịch, phần đầu sử dụng để viết mã được yêu cầu và phần sau được sử dụng để biên dịch và tải mã lên module Arduino. Môi trường này hỗ trợ cả ngôn ngữ C và C ++.

Khi người dùng viết mã và biên dịch, IDE sẽ tạo file Hex cho mã. File Hex là các file thập phân Hexa được Arduino hiểu và sau đó được gửi đến bo mạch bằng cáp USB. Mỗi bo Arduino đều được tích hợp một bộ vi điều khiển, bộ vi điều khiển sẽ nhận file hex và chạy theo mã được viết.

Các vùng chức năng cơ bản :

Hình 4.8 Chức năng của các công cụ trên thanh ghi

Vùng lệnh ,chức năng của giao diện:

Là vùng chứa các nút lệnh như File,Edit,Sketch,Tools,Help như bao giao diện khác . - Open Recent: hiển thị danh sách rút gọn các chương trình đã mở gần đây.

- Sketchbook: hiển thị các sketch hiện tại mà bạn đã sử dụng cho project của mình - Examples: Ví dụ về một vài vấn đề cơ bản để tham khảo.

- Close: đóng cửa sổ màn hình chính. (Ctrl + W) - Save: được sử dụng để lưu sketch hiện tại. (Ctrl + S)

- Undo / Redo: quay lại một hoặc nhiều bước bạn đã làm trong khi chỉnh sửa. - Cut: cắt văn bản đã chọn khỏi trình chỉnh sửa.

- Verify / Compile: kiểm tra hoặc xác minh chương trình của bạn nếu có bất kỳ lỗi nào và hiển thị trong bảng đầu ra.

- Upload: biên dịch và tải mã lên bo Arduino.

- Upload using programmer: tải mã lên bằng Programmer có sẵn trong tab Tools. - Export Compiled Binary: lưu file .hex trong hệ thống

- Include Library: thêm thư viện vào sketch của bạn bằng cách chèn các câu lệnh #include vào đầu mã

- Add File… : thêm một file vào sketch và file mới xuất hiện trong tab mới trong cửa sổ.

Các nhóm lệnh là các icon sử dụng nhanh các chức năng thường dùng sau đây:

- Verifly để kiểm tra code có chạy hay không

- Upload nạp chương trình soạn thảo lên Arduino Nano. - New tạo một chương trình mới.

- Open mở thư mục chương trình có sẳn. - Save dùng để lưu chương trình.

- Serial Monitor là dùng xem hiển thị từ dữ liệu Arduino Nano gửi lên.

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

Là dùng để ghi các chương trình code vào trong hàm Setup() và hàm Loop() và sau đó chạy chương trình

- Hàm khai báo các thư viện dùng #include để có dữ liệu đọc.

- Hàm Setup() là dùng để khởi động ,thiết lập các cài đặt chương trình để cho chương trình chạy .

- Hàm Loop() dùng để chạy sau hàm setup và để ghi các tham số giá trị cảm biến để lấy dữ liệu và chạy liên tục khi hệ thống tắt.

Vùng thông báo chương trình:

Báo lỗi của chương trình để người dùng để khắc phục .Nếu chương trình không lỗi sẽ báo biên dịch thành công và báo đường dẫn file và cổng ,bộ nhớ ram đã sử dụng.

Quá trình khi nạp chương trình:gồm các bước sau ;

Bước 1:Sau khi kiểm tra chương trình code không lỗi ,ta vào menu Tools chọn Boar và chọn vào Board Arduino Nano

Hình 4.9 Lựa chọn Boar (Arduino NaNo)

Bước 2: Sau khi chọn Boar xong ta tiếp tục vào Tools chọn Processor và kích chuột vào Atmega328P(Old bootloader) cho phù hợp.

Bước 3: Vào Tools chọn Port chọn cổng đang kết nối với máy tính mà chọn cổng COM phù hợp.

Hình 4.11 Chọn cổng COM

Lưu ý: Để tải sketch lên, bạn cần chọn bo mạch phù hợp mà bạn đang sử dụng và các cổng cho hệ điều hành đó. Bạn nhấp vào Tool trên Menu, đi tới phần Board và chọn bo bạn muốn làm việc. Tương tự, COM1, COM2, COM4, COM14, COM16 hoặc cao hơn được dành riêng cho bo Serial và bo USB. Bạn có thể tìm thiết bị serial USB trong phần cổng của Windows Device Manager.

Bước 4:chọn vào Uploap và hiển thị Done compiling như hình dưới.

Hình 4.12 Quá trình kết nối thành công

Bảng đầu ra này được sử dụng để đưa ra nhận xét về mã

• Nếu mã được biên dịch thành công hoặc bất kỳ lỗi nào xảy ra. • Nếu mã đã được tải lên bo thành công.

• Bo đã chiếm bao nhiêu không gian.

Hình 4.13 Chạy chương trình xuất ra màn hình

Serial Monitor: màn hình nối tiếp hiển thị giao tiếp trực quan bằng cách gửi và nhận dữ liệu

4.2.3. Phần mềm lập trình Web

Phần mền lập trình thingspeak gồm các bước sau:

Hình 4.14 Phần mền lập trình thingspeak cho IOT

Bước 1: Tạo một tài khoản Sever trên Thingspeak.Sau khi tạo xong ta tiến hành điền thông tin đăng kí người dùng ,mật khẩu tài khoản ta đăng nhập vào.

Bước 2:Tạo kênh dữ liệu lưu trữ trên ứng dụng.Vào New Channel =>chọn vào Filed trường dùng cho dữ liệu vị trí và một trường dùng cho dữ liệu trạng thái chọn phù hợp với dữ liệu đo.Đối với đề tài của tôi sử dụng 6 Field để biểu diễn 6 biểu đồ đến người dùng

Hình 4.15 Tạo kênh dữ liệu

Bước 3: Sau khi đã tạo các trường xong ta chọn vào “Save Channel” để tạo ra một kênh lưu trữ dữ liệu có 6 trường lưu trữ như trên.

Để quan sát quá trình cập nhật dữ liệu lên Server theo thời gian, ta nhấp chuột vào thẻ “Private View“, trên giao diện của website sẽ xuất hiện một số đồ thị tương ứng với số lượng các trường dữ liệu biểu diễn các giá trị dữ liệu được cập nhật theo thời gian,

Biểu đồ sẽ cung cấp giá trị đo đạt và đơn vị đo của kênh theo thời gian .như biểu đồ cho thấy trường 1 là đo Nhiệt độ (c),trường thứ 2 là đo Áp suất (%)....Nó sẽ biểu diễn theo dạng đồ thị và theo thời gian .

Để chuyển xem số liệu dạng số ta vào Add Widgets chọn Numeric Dipsplay để hiển thị dạng số liệu

Hình 4. 17 Thêm tiện ích dạng số

Sau đó ta nhập tên và chọn trường và Data Type để hiển thị như hình dưới.

Bước 4: Hoạt động của Server bằng các khóa API

Để có thể ghi dữ liệu vào một kênh lưu trữ hoặc đọc dữ liệu từ một kênh lưu trữ cá nhân (private channel) thì chúng ta cần phải sử dụng đến các khóa API (API Key). Các khóa API này sẽ tự động được tạo ra khi chúng ta tạo một kênh lưu trữ dữ liệu mới. Nếu chúng ta cảm thấy các khóa API này không còn tính bảo mật nữa thì có thể thay đổi bằng cách nhấp chuột vào nút “Generate New Write/Read API Key“.

Hình 4.19 Cài đặt khóa API

Để đưa dữ liệu từ Esp32 lên thingspeak là ta xuất bản các giá trị HTTP Client ta mở API Keys sau đó sao lưu giá trị Write API Key và sao chép vào chương trình .Ghi và điền tên Wifi , mật khẩu và địa chỉ wed server .

Hình 4. 20 Sao chép khóa API vào chương trình

Bước 5: Kết quả hiển thị trên serial port gồm có kết nối thành công Wifi,chìa khóa API,địa chỉ thingspeak và hiển thị các tham số đo ,đơn vị đô của từng cảm biến.

Hình 4. 21 Hiển thị trên serial port

Bước 6: Kết quả đạt được trên ứng dụng hiển thị dạng biểu đồ và dạng số.

4.2.4. Cách thức sử dụng ứng dụng Mit App Inventor và ThingShow.

Mit App Inventor

App Inventor là một ứng dụng lập trình kéo thả cho phép người dùng đăng nhập dễ dàng có thể thu thập các dữ liệu về điện thoại hoặc các ứng dụng khác đến cho người dùng.Với đồ án này em sử dụng Mit App Inventor để đưa các số liệu từ thingspeak lên để xem số liệu ,biểu đồ dễ dàng hơn.

Hình 4.23 Sơ đồ kết nối Mit App với thiết bị khác

Cách thức sử dụng Mit App Inventor theo các bước sau: Bước 1: Tạo project để có giao diện cho ứng dụng.

Sau khi tạo xong ta được giao diện như trên với cách thức như sau: • Ta chọn vào Label để ghi các kí hiệu và tên của từng cảm biến

• Sau đó chọn phần Layout để chọn cách bố trí cho giao diện,có thể thay đổi khích thước và backgrourd phù hợp

• Muốn hiển dữ liệu ta sử dụng WebViewer để lấy địa chỉ từ thingspeak. Bước 2: Lập trình giao diện cho ứng dụng:

Sau khi hoàn thành phần thiết kế giao diện ta nhấn chuột vào Blocks để tiến hành sau: • Ta chọn vào WebViewer 1 chọn phần bắt đầu có url để ta nhâp biến của trang

web đến để hiển thị.

Hình 4.25 Lập trình hiển thị trên ứng dụng

• Lấy địa chỉ url từ thingspeak sao chép đến phần join gắn lên nó biến WebViewer1 .lần lược với từng cảm biến.

• Sau đó ta chọn vào call WebViewer GoHome để thực hiện chạy .

Bước 3: xuất file và đóng gói đưa lên ứng dụng điện thoại người dùng như sau: • Ta vào Connect chọn Al companion để cho chạy thử trên giao diện giữa điện

thoại và trên ứng dụng.

• Sau đó vào build chọn App (provide QR code) để xuất file như hình. • Tiến hành file đến người dùng cài đặt ứng dụng.

Hình 4.26 Đóng gói File

Bước 4: Chạy trên ứng dụng điện thoại:

• Sau khi đóng gói có mã QR ta lấy mã nhập vào ứng dụng trên điện thoại sau đó tải ứng dụng và cài lên.

ThingShow

Thingshow là ứng dụng xem dữ liệu ,số liệu dạng biểu đồ lấy dữ liệu từ thingspeak . Quy trình các bước sau:

Bước 1: Cài đặt ứng dụng về điện thoại sau đó đăng nhập tài khoản để sử dụng. Bước 2: Sau khi tạo được tài khoản ta chọn select type để chọn dạng biểu thị ,chọn vào Private chanel và nhập địa chỉ ,sao chép khóa API phần Write APIkey hoặc Read APIkey từ dữ liệu trên web thingspeak.

Hình 4. 28 Tạo kênh và nhập chìa khóa API

Bước 3: Sau khi đăng nhập khóa API những số liệu tham số được xuất lên cho người dùng biểu diễn ở dạng biểu đồ

Ta có thể kích xem từng trường một , với mỗi trường có hiển thị từng cảm biến và đơn vị đo khác nhau và được cập nhật theo thời gian khi khí hậu thay đổi

H ình 4. 29 Dữ liệu biểu diễn dạng đồ thị

CHƯƠNG 5:KẾT QUẢ - NHẬN XÉT - ĐÁNH GIÁ

5.1. KẾT QUẢ

Sau 15 tuần nghiên cứu , tìm hiểu , thực hiện thi công tôi cũng đã hoàn thành được đồ án tốt nghiệp với đề tài “NGHIÊN CỨU MẠNG LORA ỨNG DỤNG VÀO QUAN TRẮC KHÍ HẬU Ở KHU VỰC HÒA KHÁNH” tôi cũng đã nghiên cứu và tích lũy được thêm nhiều hiểu biết , kiến thức mới về công nghệ sau :

• Thêm kiến thức về công nghệ lora hơn biết được bang thông hoạt động có thể truyền xa .

• Hiểu biết sâu hơn về sử dụng và các tính năng của Arduino như giao tiếp giữa Arduino Nano với các module mở rộng như : cảm biến mưa , cảm biến áp suất, module Lora- 02 SX1278 ,cảm biến ánh sáng.Cũng như các chuẩn giao tiếp của nó.

• Nghiên cứu và biết được cách giao tiếp giữa Arduino với Esp32 thông qua module lora - ra02 SX1278 .

• Biết cách lập trình webserver và Thingspeak - giao diện người dùng và hiển thị các giá trị cho người dùng .

• Biết được cách thi công một bo mạch và sử dụng các thiết bị phục vụ cho quá trình thi công mô hình như : máy khoan , máy hàn , và kỹ năng thiết kế phần cứng • Hiểu thêm về lập trình kéo thả sử dụng Mit app inventer trong giao diện để người

dùng dễ sử dụng.

• Thực hiện và hoàn thành được các tính năng sau: Gồm có các trang giao diện đăng nhập cho người dùng , giao diện quả lý , giao diện hiển thị , giao diện biểu đồ và giao diện điều khiển.

Kết quả tính : Sai số tuyệt đối trung bình: 2 % Sai số tương đối trung bình : 2.827 % Trong quá trình nghiên cứu , tìm hiểu và thi công hệ thống chúng tôi cũng đã gặp không ít khó khăn phát sinh trong việc lựa chọn linh kiện cho phù hợp , hướng thiết kế và gặp một số trục trặc về phần cứng cũng như phần mềm , nhưng thông qua quá trình tìm hiểu , nghiên cứu thì những vấn đề trên đã được giải quyết . Khó khăn lớn nhất chúng tôi gặp phải là đồng bộ quá trình truyền và nhận giữa node và Gateway . Nhìn chung thì hệ thống đã hoạt động ổn định , có thể hoạt động liên tục , nhưng những yêu cầu đặt ra đối với hệ thống chỉ đạt trên 80 % , vẫn còn điểm hạn chế là chưa áp dụng được vào qui mô lớn .

5.2. ĐÁNH GIÁ

Hệ thống có thể giúp người dùng giám sát được đối tượng canh tác của mình ở xa

Một phần của tài liệu (Đồ án tốt nghiệp) NGHIÊN cứu MẠNG LORA ỨNG DỤNG vào QUAN TRẮC KHÍ hậu ở KHU vực hòa KHÁNH (Trang 47)