Đồ án tốt nghiệp Điện tự động công nghiệp: Đo, giám sát nhiệt độ và độ ẩm sử dụng Arduino kết nối qua mạng Internet

51 0 0
Đồ án tốt nghiệp Điện tự động công nghiệp: Đo, giám sát nhiệt độ và độ ẩm sử dụng Arduino kết nối qua mạng Internet

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Đồ án tốt nghiệp Điện tự động công nghiệp Đo, giám sát nhiệt độ và độ ẩm sử dụng Arduino kết nối qua mạng Internet được kết cấu gồm 3 chương, trình bày về: chương 1 Tổng quan về Internet of things; chương 2 Giới thiệu các cảm biến; chương 3 Giám sát độ ẩm nhiệt độ qua Internet;... Mời các bạn cùng tham khảo Đề tài Hoàn thiện công tác quản trị nhân sự tại Công ty TNHH Mộc Khải Tuyên được nghiên cứu nhằm giúp công ty TNHH Mộc Khải Tuyên làm rõ được thực trạng công tác quản trị nhân sự trong công ty như thế nào từ đó đề ra các giải pháp giúp công ty hoàn thiện công tác quản trị nhân sự tốt hơn trong thời gian tới.

package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); BỘ GIÁO DỤC VÀ ĐÀO TẠO } } } public static Connection getConnection() { return con; } } TRƯỜNG ĐẠI HỌC QUẢN LÝ VÀ CƠNG NGHỆ HẢI PHỊNG ĐỒ ÁN TỐT NGHIỆP NGÀNH ĐIỆN TỰ ĐỘNG CÔNG NGHIỆP Sinh viên : Phạm Thị Nhung Giảng viên hướng dẫn :TS Đoàn Hữu Chức Hải Phòng - 2022 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); BỘ GIÁO DỤC VÀ ĐÀO TẠO } } } public static Connection getConnection() { return con; } } TRƯỜNG ĐẠI HỌC QUẢN LÝ VÀ CƠNG NGHỆ HẢI PHỊNG - ĐO, GIÁM SÁT NHIỆT ĐỘ VÀ ĐỘ ẨM SỬ DỤNG ARDUINO KẾT NỐI QUA MẠNG INTERNET ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY NGÀNH ĐIỆN TỰ ĐỘNG CƠNG NGHIỆP Sinh viên thực : Phạm Thị Nhung Giảng viên hướng dẫn: TS Đồn Hữu Chức Hải Phịng - 2022 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); BỘ GIÁO DỤC VÀ ĐÀO TẠO } } } public static Connection getConnection() { return con; } } TRƯỜNG ĐẠI HỌC QUẢN LÝ VÀ CÔNG NGHỆ HẢI PHÒNG NHIỆM VỤ ĐỀ TÀI TỐT NGHIỆP Sinh viên : Phạm Thị Nhung MSV : 2013102008 Lớp Ngành : DCL 2401 : Điện Tự Động Công Nghiệp Tên đề tài: Đo, giám sát nhiệt độ độ ẩm sử dụng Arduino kết nối qua mạng Internet package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } NHIỆM VỤ ĐỀ TÀI 1.Nội dung yêu cầu cần giải nhiệm vụ đề tài tốt nghiệp ( lý luận, thực tiễn, số liệu cần tính tốn vẽ) ………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… Các số liệu cần thiết để tính toán …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… 3.Địa điểm thực tập tốt nghiệp …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); CÁC CÁN BỘ HƯỚNG DẪN ĐỀ TÀI TỐT NGHIỆP } } } public static Connection getConnection() { return con; } } Họ tên : Đoàn Hữu Chức Học hàm, học vị : Tiến sĩ Cơ quan công tác : Trường Đại học quản lý cơng nghệ Hải Phịng Nội dung hướng dẫn: ………………………………………………………………………… ………………………………………………………………………… ………………………………………………………………………… ………………………………………………………………………… Đề tài tốt nghiệp giao ngày 04 tháng năm 2022 Yêu cầu phải hoàn thành xong trước ngày 24 tháng năm 2022 Đã nhận nhiệm vụ ĐTTN Đã giao nhiệm vụ ĐTTN Sinh viên Giảng viên hướng dẫn Phạm Thị Nhung Đồn Hữu Chức Hải Phịng, ngày tháng TRƯỞNG KHOA TS Đoàn Hữu Chức năm 2022 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); Cộng hòa xã hội chủ nghĩa Việt Nam Độc lập - Tự - Hạnh phúc } } } public static Connection getConnection() { return con; } } PHIẾU NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN TỐT NGHIỆP Họ tên giảng viên :Đoàn Hữu Chức Đơn vị công tác :Trường Đại học Quản lý Công nghệ Hải Phòng Họ tên sinh viên : Phạm Thị Nhung Chuyên ngành : Điện Tự Động Công Nghiệp Nội dung hướng dẫn : Toàn đề tài Tinh thần thái độ sinh viên trình làm đề tài tốt nghiệp Đánh giá chất lượng đồ án/khóa luận ( so với nội dung yêu cầu đề nhiệm vụ Đ.T.T.N, mặt lý luận, thực tiễn, tính tốn số liệu ) Ý kiến giảng viên hướng dẫn tốt nghiệp Được bảo vệ Không bảo vệ Điểm hướng dẫn Hải Phòng, ngày tháng năm 2022 Giảng viên hướng dẫn ( ký ghi rõ họ tên) package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); Cộng hòa xã hội chủ nghĩa Việt Nam Độc lập - Tự - Hạnh phúc } } } public static Connection getConnection() { return con; } } PHIẾU NHẬN XÉT CỦA GIẢNG VIÊN CHẤM PHẢN BIỆN Họ tên giảng viên ……………………………………………………… Đơn vị công tác: Họ tên sinh viên: Chuyên ngành: Đề tài tốt nghiệp: Phần nhận xét giảng viên chấm phản biện Những mặt hạn chế Ý kiến giảng viên chấm phản biện Được bảo vệ Không bảo vệ Điểm hướng dẫn Hải Phòng, ngày tháng năm 2022 Giảng viên chấm phản biện (ký ghi rõ họ tên) package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { MỤC LỤC if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } LỜI NÓI ĐẦU CHƯƠNG I TỔNG QUAN VỀ INTERNET OF THING .2 1.1 GIỚI THIỆU VỀ INTERNET OF THING 1.1.1 Giới thiệu Internet of Things (IoT) 1.1.2 Lịch sử hình thành 1.2 CÔNG NGHỆ WIFi 1.2.1 Giới thiệu .6 1.2.2 Công nghệ truyền nhận liệu .7 1.3 Arduino Mega 2560 1.4 Giới thiệu ESP8266 NodeMCU 11 CHƯƠNG GIỚI THIỆU CÁC CẢM BIẾN 17 2.1 Cảm biến nhiệt độ 18 2.1.1 Cấu tạo cảm biến nhiệt 18 2.1.2 Nguyên lí hoạt động 19 2.1.3 Phân loại cảm biến nhiệt 20 2.2 Cảm biến độ ẩm 20 2.2.1 Định nghĩa cảm biến độ ẩm 20 2.2.2 Nguyên lý hoạt động cảm biến độ ẩm 21 2.2.3 Ứng dụng cảm biến nhiệt độ 26 2.3 Cảm biến nước mưa 27 2.3.1 Định nghĩa cảm biến nước mưa 27 2.3.2 Nguyên tắc hoạt động cảm biến nước mưa 28 CHƯƠNG 3: GIÁM SÁT ĐỘ ẨM NHIỆT ĐỘ QUA INTERNET .29 3.1 Cảm biến nhiệt độ độ ẩm .29 3.2 Cảm biến độ ẩm đất ứng dụng 32 3.2 Ứng dụng arduino cho Internet Of Thing .34 Kết luận 37 TÀI LIỆU THAM KHẢO .43 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { LỜI NÓI ĐẦU return con; } } Trong phát triển cơng nghệ ngày có nhiều sản phẩm đời với tính vượt trội, vơ đa dạng phong phú chủng loại, ưu việt tính Các ngành khoa học ln có kết hợp chặt chẽ với từ khí, điện tử đến lập trình nhằm tạo hệ thống chất lượng cao ứng dụng vào thực tiễn sản xuất đời sống hàng ngày Một phận quan trọng để tạo nên vận hành hệ thống cách thông minh cảm biến Nhờ cảm biến mà khả giám sát, thu thập liệu thực đơn giản, chuẩn xác từ góp phần vào làm việc hiệu hệ thống điều khiển thơng minh Có nhiều loại cảm biến thị trường phân loại tuỳ theo công dụng, vật liệu chế tạo, công nghệ sản xuất cảm biến nhiệt độ, độ ẩm sử dụng rộng rãi có ý nghĩa đặc biệt lớn Ứng dụng cảm biến độ ẩm vô đa dạng: dùng xác định độ ẩm đất, phịng thí nghiệm, nhà máy, khu sản xuất nơng nghiệp cơng nghệ cao….Vì em xây dựng đồ án “ Đo, giám sát nhiệt độ độ ẩm sử dụng Arduino kết nối qua mạng Internet” Trong q trình thực đồ án ngồi nỗ lực thân, em nhận hướng dẫn nhiệt tình thầy Đồn Hữu Chức Mặc dù cố gắng kinh nghiệm thực tế, kiến thức hạn chế, thời gian chưa cho phép nên khơng tránh khỏi cịn thiếu sót chưa đầy đủ Vậy em mong nhận ý kiến đóng góp thầy, giáo bạn để hoàn thiện thân đồ án Em xin chân thành cảm ơn ! Hải Phòng, ngày tháng Sinh viên thực Phạm Thị Nhung năm 2022 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); CHƯƠNG I TỔNG QUAN VỀ INTERNET OF THING } } } public static Connection getConnection() { return con; } } 1.1 GIỚI THIỆU VỀ INTERNET OF THING 1.1.1 Giới thiệu Internet of Things (IoT) Khi nhu cầu phát triển ứng dụng liên quan đến Internet ngày cao Và IoT (Internet of things) công nghệ quan trọng mà tất thiết bị kết nối với Việc kết nối thực qua Wi-Fi, mạng viễn thông băng rộng (3G, 4G), Bluetooth, ZigBee, hồng ngoại…Về bản, IoT hệ thống mạng lưới mà tất thiết bị, đối tượng kết nối Internet thông qua thiết bị mạng (network devices) định tuyến (routers) IoT cho phép đối tượng điều khiển từ xa dựa hệ thống mạng Công nghệ tiên tiến giúp giảm công sức vận hành người cách tự động hóa việc điều khiển thiết bị Hình 1.1.Các thành phần hệ thống IoT - Thiết bị: Mỗi thiết bị bao gồm nhiều cảm biến để phát thông số ứng dụng gửi chúng đến Platform - IoT – Platform: • Nền tảng phần mềm lưu trữ trực tuyến gọi điện toán đám mây, thiết bị kết nối với thơng qua • Nền tảng thu thập liệu từ thiết bị, toàn liệu phân tích, xử lý, phát có lỗi phát sinh trình hệ thống vận hành - Kết nối Internet: Để giao tiếp IoT, kết nối Internet thiết bị điều bắt buộc Wifi phương thức kết nối Internet phổ biến - Ứng dụng: Ứng dụng giao diện để người dùng điều khiển package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; 29 public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } Khi có nước bề mặt cảm biến (trời mưa), độ dẫn điện tốt tạo } } public static Connection getConnection() { return con; } } điện trở hơn, chân DO kéo xuống thấp (0V), đèn LED màu đỏ sáng lên Tương tự, cảm biến khô (trời không mưa), độ dẫn điện cho điện trở cao, chân DO module cảm biến mưa giữ mức cao (5V-12V) Vì vậy, đầu cảm biến mưa chủ yếu phụ thuộc vào điện trở Mạch hoạt động với nguồn 5V Bạn nên sử dụng loại rơ le kích mức thấp kèm với cảm biến CHƯƠNG 3: GIÁM SÁT ĐỘ ẨM NHIỆT ĐỘ QUA INTERNET 3.1 Cảm biến nhiệt độ độ ẩm Nhiệt độ đại lượng vật lý quan tâm nhiều đóng vai trị định đến nhiều tính chất vật chất package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { 30 public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } Để đo nhiệt độ hệ thống tự động có nhiều biện pháp khác Trên } } public static Connection getConnection() { return con; } } sở người ta sử dụng cảm biến nhiệt độ với nguyên lý làm việc khác VD: nhiệt điện trở, nhiệt ngẫu, quang… Độ ẩm khơng khí lượng nước có khơng khí, nước dạng khí nước vơ hình với mắt người Thường sử dụng thuật ngữ “độ ẩm tuyệt đối” “độ ẩm tương đối” Độ ẩm tuyệt đối: lượng nước tồn thể tích hỗn hợp dạng khí định Đơn vị phổ biến dùng để tính độ ẩm tuyệt đối gam mét khối (g/m³) Tuy nhiên, việc tính tốn độ ẩm tuyệt đối khơng tính đến nhiệt độ hệ thống; giá trị bị ảnh hưởng thay đổi nhiệt độ khơng khí áp suất khơng khí thay đổi Mặt khác, độ ẩm cụ thể tỷ số khối lượng nước so với tổng khối lượng khơng khí ẩm Thường gọi “độ ẩm” Vì vậy, loại độ ẩm mà nói tới “độ ẩm tương đối” Độ ẩm tương đối: tỉ số áp suất nước hỗn hợp khí với nước so với áp suất nước bão hịa tính theo đơn vị % Định nghĩa khác độ ẩm tương đối tỉ số khối lượng nước thể tích so với khối lượng nước thể tích nước bão hịa Nhiệt độ độ ẩm hai thông số quan trọng môi trường vật chất Trong thực tiễn nhiều cần đo đồng thời hai thơng số Ví dụ nhiệt độ độ ẩm lò ấp trứng gia cầm, môi trường đất vườn nông nghiệp, v.v Trong nghiên cứu tác giả sử dụng cảm biến DHT11 cho phép đo hai thông số nhiệt độ độ ẩm môi trường DHT11 cảm biến ngõ số, mức điện áp hoạt động từ 3-5VDC, dòng cung cấp 0.5mA - 2.5mA phù hợp với dòng áp xử lý trung tâm để module hoạt động bình thường Cảm biến DHT11 có thơng số kỹ thuật sau: Bảng 3.1 Thông số kỹ thuật DHT11 Điện áp hoạt động - 5VDC Dòng sử dụng Tối đa 2.5mA Đo nhiệt độ - 50℃, sai số ± 2℃ Đo độ ẩm 20 -80%, sai số ± 5% package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { 31 public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } Tốc độ lấy mẫu } 1Hz (1 giây lần) } public static Connection getConnection() { return con; } } ➢ Thiết kế mạch cảm biến với Arduino đơn giản sau: - Cảm biến DHT11 gồm chân kết nối sau: - Chân VCC nối với nguồn 5VDC - Chân GND nối với chân GND nguồn - Chân DATA nối với chân GPIO Arduino Uno R3 (hoặc phiên nào) qua điện trở kéo lên nguồn (a) (b) Hình 3.1 (a) Hình dạng thực tế DHT11; (b) Thiết kế kết nối với Arduino Sử dụng phần mềm Fritzing để thiết kế tồn hệ thống ta có sơ đồ hình 3.2 Theo đó, kit Arduino sử dụng để nhận tín hiệu nhiệt độ độ ẩm từ cảm biến DHT11, kết đo đưa thị LCD thông báo cho người sử dụng Biến trở dùng để chỉnh độ tương phản LCD Nguồn nuôi cho hệ thống cấp từ cổng USB kết nối máy tính từ nguồn rời Adapter +5V/2A package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; 32 public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } Hình 3.2 Sơ đồ đấu nối hệ thống đo nhiệt độ độ ẩm dùng DHT11 Lưu đồ thuật toán đo nhiệt độ độ ẩm đưa hình 3.3 Chương trình chi tiết nạp cho Arduino trình bày phụ lục báo cáo Hình 3.3 Lưu đồ thuật tốn đo nhiệt độ độ ẩm 3.2 Cảm biến độ ẩm đất ứng dụng Độ ẩm đất là: Lượng nước chứa đất, tính phần trăm so với khối lượng đất khô Độ ẩm đất phải xác định trạng thái tự nhiên Trong nông nghiệp đo độ ẩm đất quan trọng ứng dụng nông nghiệp để giúp nông dân quản lý hệ thống tưới tiêu hiệu Biết xác điều kiện độ ẩm đất ruộng họ, khơng người nơng dân thường sử dụng nước để trồng trọt, họ cịn tăng suất chất lượng trồng cách cải thiện quản lý độ ẩm đất giai đoạn tăng trưởng quan trọng package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; 33 public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } Hình 3.4 Hình ảnh thực tế cảm biến độ ẩm đất Trong phần tác giả sử dụng cảm biến đo độ ẩm đất Cảm biến bao gồm thành phần đầu dò mạch xử lý tín hiệu Hình ảnh thực tế cảm biến cho hình 3.4 Các cảm biến có biến trở điều chỉnh độ nhạy đầu kỹ thuật số (D0), đèn LED đầu kỹ thuật số LED Hoạt động cảm biến đơn gian sau: Các điện áp đầu cảm biến thay đổi cho phù hợp với hàm lượng nước đất Khi đất là: - ẩm: điện áp đầu giảm - khô: điện áp đầu tăng Các đầu tín hiệu kỹ thuật số (D0) THẤP CAO, tùy thuộc vào hàm lượng nước Nếu độ ẩm đất vượt giá trị ngưỡng xác định trước, môđun đầu THẤP, không CAO Các giá trị ngưỡng cho tín hiệu kỹ thuật số điều chỉnh cách sử dụng chiết áp Các đầu tín hiệu tương tự ta nhận giá trị 1023 Để đơn giản, nghiên cứu tác giả sử tín hiệu số để thực Sơ đồ đấu nối mạch đo độ ẩm đất đưa hình 3.5 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; 34 public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } Hình 3.5 Sơ đồ hệ thống đo độ ẩm đất Theo tín hiệu từ đầu đo đưa Arduino, Vi điều khiển đọc tín hiệu chân 13 KIT Mega 2560 Nếu tín hiệu mức thấp nghĩa độ ẩm đất đủ để sinh trưởng Khi tín hiệu thu mức điện áp cao đất bị khơ cần tưới thêm để đảm bảo độ ẩm cho vườn Chi tiết code chương trình phụ lục 3.2 Ứng dụng arduino cho Internet Of Thing Trong phần này, tác giả sử dụng KIT ESP8266 để thực ứng dụng đo tín hiệu từ cảm biến sau truyền tín hiệu tự động người giám sát qua hệ thống mạng Internet Có thể coi hệ thống IOT đơn giản Tác giả sử dụng cảm biến độ ẩm đất để thực dự án Yêu cầu người dùng đo độ ẩm đất độ ẩm đất thấp thực lệnh cho bật máy bơm Khi đủ nước tức đủ độ ẩm lại lệnh tắt máy bơm Như vậy, ứng dụng vào nhà vườn nông nghiệp để giám sát thông số độ ẩm môi trường Để thiết kế hệ thống, sử dụng KIT ESP8266 vừa làm nhiệm vụ kết nối internet qua tín hiệu Wifi vừa làm nhiệm vụ nhận xử lý tín hiệu đo từ cảm biến đất Sơ đồ phần cứng thiết kế hình 3.6 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; 35 public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } Hình 3.6 Sơ đồ phần cứng hệ thống giám sát độ ẩm qua Internet Để thực đưa tín hiệu đo độ ẩm đất thao tác điều khiển bơm từ xa qua Internet dùng nhiều cơng cụ hỗ trợ Blynk, Google Assistant,… Trong nghiên cứu sử dụng WEB Serve Blynk để kết nối điện thoại dùng để giám sát thiết bị kết nối qua mạng Internet Sơ đồ khối hệ thống kết nối hình 3.7 Blynk Server Ứng dụng Blynk Khơng u cầu có Laptop, PC Hệ thống thư viện Blynk Truy cập Internet qua Wifi, 4G, Ethernet,… Hình 3.7 Sơ đồ khối kết nối qua Blynk Server (nguồn: https://kipalog.com/posts/Arduino) Lưu đồ thuật toán đo giám sát độ ẩm đưa hình 3.8 Theo lưu đồ thuật toán, ban đầu thực lệnh cấu hình ngõ vào/ra KIT Arduino sử dụng Ở ESP8266 Sau đưa thơng số kết nối mạng vào cho KIT Bao gồm thơng số là: mã xác thực quyền Blynk, tên hệ thống Wifi mật dùng Việc kết nối thành công package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; 36 public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } chất thông báo điện thoại cài ứng dụng Blynk Khi hệ thống kết } } public static Connection getConnection() { return con; } } nối thành công, thực đọc giá trị từ cảm biến kiểm tra xem giá trị có đảm bảo độ ẩm đất mong muốn khơng Nếu khơng thực lệnh cho phép bật máy bơm Nếu độ ẩm đủ khơng làm Chương trình thực khép kín Code chi tiết chương trình tác giả trình bày phụ lục báo cáo Hình 3.8 Lưu đồ thuật tốn đo giám sát độ ẩm Một số hình ảnh ví dụ việc giám sát độ ẩm điều khiển thiết bị máy bơm trình bày package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; 37 public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } Hình 3.9 Độ ẩm đất thấp, thực lệnh bơm Hình 3.10 Độ ẩm đất cao Hình 3.11 Độ ẩm đất cao, thực dừng bơm Kết luận Sau thời gian tìm hiểu nghiên cứu, em hiểu số cảm biến có package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; 38 public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } nhiều ứng dụng thực tiễn cảm biến độ ẩm, cảm biến nhiệt độ Thực } } public static Connection getConnection() { return con; } } thiết kế xây dựng hệ thống sử dụng cảm biến Tín hiệu từ cảm biến đưa tới chân vào/ra Vi điều khiển, sở thị kết đo lệnh điều khiển thiết bị khác theo yêu cầu Các ứng dụng trình bày báo cáo điều khiển kết nối hình LCD Một ứng dụng hệ thống Internet Of Things trình bày giám sát độ ẩm nhiệt độ qua mạng Internet Module arduino esp8266 cho phép truy cập vào vi điều khiển thông qua kết nối Wifi, mạch điều khiển nhỏ gọn hoạt động ổn định môi trường cơng nghiệp khắc nghiệt Hệ thống mơ hình có độ xác giao diện dễ sử dụng nên dễ dàng áp dụng vào thực tế Tuy nhiên, kiến thức hạn chế nguồn tài liệu chủ yếu tham khảo mạng nên không tránh khỏi thiếu sót hoạt động chủ yếu mơi trường phải có Wifi tốc độ truy cập mạng Internet Trong trình nghiên cứu em thấy cảm biến có tính ứng dụng cao thực tế đào tạo giúp thực hiệu phương pháp đào tạo đại STEM STEAM Công cụ giúp giảm chi phí linh động thay đổi cấu hình hệ thống thay đổi đấu nối thêm cảm biến xây dựng ứng dụng package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; 39 public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } Phụ lục } public static Connection getConnection() { return con; } } // Chương trình đo nhiệt độ độ ẩm nạp trực tiếp cho KIT Arduino // Sử dụng cảm biến DHT11 #include #include //Khởi tạo với chân LiquidCrystal lcd(8, 9, 4, 5, 6, 7); const int DHTPIN = 2; //Đọc liệu từ DHT11 chân mạch Arduino const int DHTTYPE = DHT11;//Khai báo loại cảm biến, có loại DHT11 DHT22 DHT dht(DHTPIN, DHTTYPE); byte degree[8] = { 0B01110, 0B01010, 0B01110, 0B00000, 0B00000, 0B00000, 0B00000, 0B00000}; void setup() { lcd.begin(16,2); lcd.print("Nhiet do: "); lcd.setCursor(0,1); lcd.print("Do am: "); lcd.createChar(1,degree); Serial.begin(9600); dht.begin(); // Khởi động cảm biến } void loop() { float h = dht.readHumidity(); //Đọc độ ẩm package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; 40 public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); float t = dht.readTemperature(); //Đọc nhiệt độ Serial.print("Nhiet do: "); Serial.println(t); //Xuất nhiệt độ Serial.print("Do am: "); Serial.println(h); //Xuất độ ẩm Serial.println(); //Xuống hàng delay(1000); //Đợi giây if (isnan(t) || isnan(h)) { } else { lcd.setCursor(10,0); lcd.print(round(t)); lcd.print(" "); lcd.write(1); lcd.print("C"); lcd.setCursor(10,1); lcd.print(round(h)); lcd.print(" %"); } } } } } public static Connection getConnection() { return con; } } package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; 41 public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } Phụ lục // Chương trình đo độ ẩm đất #include LiquidCrystal lcd(8, 9, 4, 5, 6, 7); int do_am_pin = 13; //Chan doc tin hieu int do_am; void setup() { Serial.begin(9600); lcd.begin(16,2); lcd.print("HPU va Arduino"); lcd.setCursor(0,1); lcd.print("Do am dat: "); delay(5000); lcd.clear(); } void loop() { Serial.print("Do am: "); Serial.println(digitalRead(13)); do_am = digitalRead(do_am_pin); if (do_am==HIGH) { lcd.clear(); lcd.setCursor(0,0); lcd.print("Khong du nuoc"); } else { lcd.clear(); lcd.setCursor(0,0); lcd.print("Du nuoc"); } delay(1000); } package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; 42 public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } Phụ lục } public static Connection getConnection() { return con; } } // Chương trình giám sát độ ẩm đất nạp vào chip ESP 8266 kết nối Internet // điều khiển thiết bị #define BLYNK_PRINT Serial #include #include #include #define do_am_pin D7 #define adc_pin A0 char auth[] = "TL7A7vnE5uz5Omo2uJhRExNWwMJf5St7"; char ssid[] = "Cong Ty HTC"; char pass[] = "88888888"; int do_am, gia_tri_adc; void setup() { Serial.begin(9600); Blynk.begin(auth, ssid, pass); //timer.setInterval(1000L, blinkLedWidget); pinMode(D0,OUTPUT); } void loop() { gia_tri_adc=analogRead(adc_pin); do_am=map(gia_tri_adc,0,1023,0,100); do_am=100-do_am; Blynk.virtualWrite(V6,do_am); Blynk.run(); //timer.run(); Serial.print("Do am: "); //Serial.println(analogRead(A0)); delay(1000); gia_tri_adc=0; } package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; 43 public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } TÀI LIỆU THAM KHẢO Giáo trình Kỹ Thuật Lập Trình C Căn Bản Và nâng cao - Phạm Văn Ất Nguyễn Đình Phú, Giáo trình Vi điều khiển PIC, Nhà xuất ĐH Quốc gia Tp Hồ Chí Minh,8/2016 Nguyễn Đình Phú- Nguyễn Trường Duy,Giáo trình Kỹ thuật số,Nhà xuất ĐH Quốc gia Tp Hồ Chí Minh https://cdn-shop.adafruit.com/product-files/2471/0AESP8266-Datasheet-EN V4.3.pdf ESP8266 https://www.micrpik.com/pdf/dht11.pdf cảm biến DHT11 https://tailieu.vn https://www.youtube.com https://esp8266.vn Adeel Javed, “Building Arduino Projects for the Internet of Things”, Apress, 2016 10 Hà Quang Phúc, “Lập Trình Điều Khiển Trên Arduino Cho Hệ Vạn Vật Kết Nối (IoT)”, NXB Thanh Niên, 2020 11 http://arduino.vn/ 12 https://www.arduino.cc/ 13 Jack Purdum, “Beginning C for Arduino”, Apress, 2012 14 Lê Mỹ Hà, Phạm Quang Huy, “Lập trình IoT với Arduino”, NXB Thanh niên,2019 15 Marco Schwartz, “Internet of Things with Arduino Cookbook”, Packt Publishing Ltd, 2016 16 Nguyễn Vũ Quỳnh, Phạm Quang Huy, “Giáo trình đo lường cảm biến (Lý thuyết – Thực hành)”, NXB Thanh Niên, 2020

Ngày đăng: 13/07/2023, 13:57

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan