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 .
Sinh viên thực hiện: NGUYỄN NGỌC TRƯỜNG Người hướng dẫn: TH.S TRẦN DUY CHUNG 46
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 nhận(Gateway) sẽ bỏ qua bước nhận gói tin và đưa dữ liệu trực tiếp lên Thingspeak.
Sinh viên thực hiện: NGUYỄN NGỌC TRƯỜNG Người hướng dẫn: TH.S TRẦN DUY CHUNG 48 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.
Sinh viên thực hiện: NGUYỄN NGỌC TRƯỜNG Người hướng dẫn: TH.S TRẦN DUY CHUNG 49
❖ 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
Sinh viên thực hiện: NGUYỄN NGỌC TRƯỜNG Người hướng dẫn: TH.S TRẦN DUY CHUNG 50
- 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
Sinh viên thực hiện: NGUYỄN NGỌC TRƯỜNG Người hướng dẫn: TH.S TRẦN DUY CHUNG 51
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.
Sinh viên thực hiện: NGUYỄN NGỌC TRƯỜNG Người hướng dẫn: TH.S TRẦN DUY CHUNG 52
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.
Bước 5:Sau khi kiểm tra Port và boar xong tiến hành cho Serial Monitor dùng xem hiển thị từ dữ liệu Arduino Nano gửi lên.
Sinh viên thực hiện: NGUYỄN NGỌC TRƯỜNG Người hướng dẫn: TH.S TRẦN DUY CHUNG 53
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
Sinh viên thực hiện: NGUYỄN NGỌC TRƯỜNG Người hướng dẫn: TH.S TRẦN DUY CHUNG 54
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,
Sinh viên thực hiện: NGUYỄN NGỌC TRƯỜNG Người hướng dẫn: TH.S TRẦN DUY CHUNG 55
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.
Sinh viên thực hiện: NGUYỄN NGỌC TRƯỜNG Người hướng dẫn: TH.S TRẦN DUY CHUNG 56
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
Sau khi có khóa API ta sử dụng giao thức HTTP GET để đưa dữ liệu lên Thingspeak qua Request với URL .đối với Key là chìa khóa viết dữ liệu và đọc dữ liệu ,Temp là giá trị nhiệt độ đo được đơn vị *C, Pres là giá trị Áp suất khí quyển đo được đơn vị hPa....
Sinh viên thực hiện: NGUYỄN NGỌC TRƯỜNG Người hướng dẫn: TH.S TRẦN DUY CHUNG 57
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ố.
Sinh viên thực hiện: NGUYỄN NGỌC TRƯỜNG Người hướng dẫn: TH.S TRẦN DUY CHUNG 58 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.
Để tạo một Project mới ta chọn Start New Project và đặt tên cho project đó.
Sinh viên thực hiện: NGUYỄN NGỌC TRƯỜNG Người hướng dẫn: TH.S TRẦN DUY CHUNG 59
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.
Sinh viên thực hiện: NGUYỄN NGỌC TRƯỜNG Người hướng dẫn: TH.S TRẦN DUY CHUNG 60
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.
• Xem các thông số liệu đến người dùng .
Sinh viên thực hiện: NGUYỄN NGỌC TRƯỜNG Người hướng dẫn: TH.S TRẦN DUY CHUNG 61
❖ 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
Sinh viên thực hiện: NGUYỄN NGỌC TRƯỜNG Người hướng dẫn: TH.S TRẦN DUY CHUNG 62
H ình 4. 29 Dữ liệu biểu diễn dạng đồ thị
Sinh viên thực hiện: NGUYỄN NGỌC TRƯỜNG Người hướng dẫn: TH.S TRẦN DUY CHUNG 63 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