“HỆ THỐNG IOT ĐIỀU KHIỂN VÀ GIÁM SÁT NHÀ KÍNH THÔNG MINH”. Hệ thống có khả năng ghi nhận và gửi cho người dùng các thông số môi trường, từ đó đưa ra quyết định tác động thay đổi dựa vào chương trình đã được lập trình sẵn hoặc lệnh điều khiển trực tiếp từ người dùng. Hệ thống có hỗ trợ giúp người dùng giám sát và điều khiển từ xa thông qua điện thoại kết nối wifi.
TÓM TẮT ĐỒ ÁN Ngày với phát triển mạnh mẽ ngành khoa học kỹ thuật, cơng nghệ kỹ thuật điện tử mà đăc biệt kỹ thuật điều khiển tự động đóng vai trò quan trọng lĩnh vựa khoa học kỹ thuật, quản lý, công nghiệp, nộng nghiệp, truyền thông… Công nghệ trở nên đại, xu hướng thứ điều khiển giám sát từ xa qua mạng không dây, đặc biệt nông nghiệp Với ý tưởng nhóm đưa đề tài “HỆ THỐNG IOT ĐIỀU KHIỂN VÀ GIÁM SÁT NHÀ KÍNH THƠNG MINH” Hệ thống có khả ghi nhận gửi cho người dùng thơng số mơi trường, từ đưa định tác động thay đổi dựa vào chương trình lập trình sẵn lệnh điều khiển trực tiếp từ người dùng Hệ thống có hỗ trợ giúp người dùng giám sát điều khiển từ xa thông qua điện thoại kết nối wifi Với đề tài này, nhóm hy vọng nghiên cứu cho nhóm sau mở rộng, phát triển Nếu điều chỉnh tốt, ý tưởng kết hợp với hệ thống tưới tự động, trở thành hệ thống lớn đáp ứng nhu cầu giám sát nông nghiệp nâng cao đời sống tiện ích cho người I MỤC LỤC GIỚI THIỆU 1.1 Đặt vấn đề 1.2 Mục tiêu 1.3 Giới hạn 1.4 Nội dung nghiên cứu 1.5 Phân chia cơng việc 2 TÍNH TỐN VÀ THIẾT KẾ HỆ THỐNG .4 LỰA CHỌN THIẾT BỊ THIẾT KẾ VÀ THI CÔNG PHẦN CỨNG 42 THIẾT KẾ VÀ THI CÔNG PHẦN MỀM 45 KẾT QUẢ, KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 50 TÀI LIỆU THAM KHẢO 54 PHỤ LỤC 56 II DANH SÁCH HÌNH MINH HỌA Hình 2.2a: Sơ đồ khối hệ thống Hình 3.1a: Pinout Kit Tiva Lauchpad Hình 3.1b: Pinout Arduino R3 Hình 3.1c: Pinout NODEMCU esp8266 Hình 3.2.1a: Cảm biến nhiệt độ, độ ẩm khơng khí AM2305 10 Hình 3.2.1b: Thơng số kỹ thuật AM2305 11 Hình 3.2.1c: Cảm biến nhiệt độ, độ ẩm khơng khí DHT21 12 Hình 3.2.1d: Cảm biến nhiệt độ, độ ẩm khơng khí DHT22 13 Hình 3.2.2a: Cảm biến độ ẩm đất đầu dị chống ăn mịn 15 Hình 3.2.2b: Cảm biến độ ẩm đất điện dung 16 Hình 3.2.2c: Cảm biến độ ẩm đất thường 18 Hình 3.3a: Màn hình Graphic LCD12864 Driver ST7920 xanh dương 19 Hình 3.3b: Màn hình LCD TextLCD1604 xanh dương 22 Hình 3.4a: Mạch điều khiển Relay tạo trễ bật / tắt thiết bị 24 Hình 3.4b: Mạch Soild State relay ( SSR) 2A/240VAC 25 Hình 3.4c: Mạch Relay Opto Chọn Mức Kích High/Low (5/12/24VDC) 27 Hình 3.5a: Nguồn Power Adaptor AC-DC 5V 2A 29 Hình 3.5b: Solar Panel 5V 200mA 30 Hình 3.5c: Pin sạc dự phịng điện thoại 31 Hình 4a: Sơ đồ nối chân 32 Hình 4b: Mạch in vẽ Capture 33 Hình 4c: Hình vẽ 3D mạch in 34 Hình 6a: Hình hoàn thiện hệ thống 43 III GIỚI THIỆU 1.1 Đặt vấn đề Cuộc sống ngày phát triển nhanh chóng đai hơn, cơng nghệ ngày cảng phát minh phát triển để đưa vào phục vụ sống hàng ngày người Những ứng dụng IOT sử dụng ngày rộng rãi nhiều lĩnh vực từ đời sống đến sản xuất Với đất nước 50% dân số làm ngành nghề liên quan đến nông nghiệp nước ta, việc nhanh chóng ứng dụng IOT vào nông nghiệp nhu cầu thiết xã hội Điều khiển giám sát thơng minh, tích hợp hệ thống điều khiển giám sát nhiệt độ, độ ẩm, ánh sáng, cường độ gió…thành hệ thống thống Mỗi chức điều khiển giám sát thông minh có khả tự vận hành điều khiển người dùng Người dùng truy cập từ xa để kiểm tra, điều khiển hệ thống hoạt động theo yêu cầu Điều khiển giám sát thông minh đề tài công nghệ ứng dụng ứng dụng nhiều dự án Khơng hạn chế với tính nêu trên, ngày có nhiều nghiên cứu đề xuất phát triển hệ thống điều khiển giám sát để theo kịp phát triển cơng nghệ, tối ưu hóa hiệu sử dụng giá hợp lý Cùng với ngày phổ bến mạng không dây, việc kết nối thông tin ngày trở nên tiện lợi nhanh chóng với giá thành ngày thấp Do đó, nhóm định chọn đề tài: “ HỆ THỐNG IOT DIỀU KHIỂN VÀ GIÁM SÁT NHÀ KÍNH THÔNG MINH” 1.2 Mục tiêu Thiết kế hệ thống có khả đo thơng số nhiệt độ, độ ẩm, độ ẩm đất nông nghiệp đặn cập nhật thơng số lên internet để thuận tiện cho việc giám sát Ngồi hệ thống cịn có khả tự điều chỉnh điều kiện nhiệt độ, độ ẩm, độ ẩm đất theo lập trình trước đó, người dùng trực tiếp tác động thay đổi thơng số theo ý Hệ thống ứng dụng công nghệ IoT, giúp cho người dùng đâu dễ dàng điều khiển, giám sát 1.3 Giới hạn Hệ thống dừng lại công việc thu thập, gửi lên internet, tự điều chỉnh tác động thay đổi trực tiếp thông số nhiệt độ, độ ẩm, độ ẩm đất Hệ thống không to với quy mô đồ án Sai số chấp nhận Do giới hạn lập trình nên hệ thống cịn độ trể định 1.4 Nội dung nghiên cứu Nội dung 1: Tìm hiểu lựa chọn giải pháp thiết kế Nội dung 2: Thu nhập tài liệu linh kiện, phần mềm thiết kế sử dụng Nội dung 3: Thiết kế phần cứng hệ thống Nội dung 4: Lập trình cho hệ thống, phần mềm giúp giao tiếp với người dùng qua internet Nội dung 5: Thử nghiệm thực tế hệ thống, đánh giá kết thực Nội dung 6: Viết báo cáo bảo vệ đồ án 1.5 Phân chia cơng việc nhóm BẢNG PHÂN CƠNG CƠNG VIỆC Thành viên Nguyễn Minh Đức Phan Đăng Hồng Trần Duy Hiền Công việc Thành viên phụ trách Cả nhóm Tìm hiểu, nghiên cứu thực tế Xây dựng sơ đồ khối Cả nhóm Tìm hiểu NODEMCU Hiền ,Hồng Tìm hiểu esp8266 Hồng,Hiền Tìm hiểu cảm biến Đức Xây dựng giải thuật Hồng Xây dựng app blynk Hiền Thi cơng phần cứng Cả nhóm Xây dựng mơ hình Cả nhóm Đánh giá kết quả, viết báo cáo Đức Thứ phịng GPL Họp nhóm Quy định - Hồn thành cơng việc giao thời gian - Tơn trọng ý kiến thành viên nhóm Bảng 1: Bảng phân chia cơng việc nhóm TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG 2.1 Yêu cầu hệ thống cụ thể Cơ chế hoạt động: Hệ thống tự động cập nhật thông tin nhiệt độ, độ ẩm, độ ẩm đất sau 1p lần sau hiển thị thông tin lên LCD, thông báo cho người dùng qua wifi mạng di động Tác động thay đổi thông số độ ẩm đất thông qua máy bơm nước, thông số nhiệt độ thông qua đèn sưởi Hệ thống nhận lệnh điều khiển đèn sưởi, máy bơm trực tiếp từ người dùng qua nút ấn chỗ hay từ xa qua wifi mạng di động Ngoài tự động điều khiển máy bơm, đèn sưởi với chương trình tự động lập trình trước sau: - Hệ thống tự động đọc thông tin cảm biến xuất LCD App sau 1p - Nếu độ ẩm đất 10%, điều khiển relay bật máy bơm 15s - Nếu nhiệt độ 25 độ C, điều khiển relay bật đèn sưởi 15s Input: - Thông số môi trường từ cảm biến nhiệt độ, độ ẩm khơng khí, độ ẩm đất - Nút nhấn: Điều khiển bật tắt đèn sưởi, máy bơm - Thông tin điều khiển từ xa người điều khiển thông qua wifi mạng di động Output: - Relay dđiều khiển đèn sưởi, máy bơm - Hiển thi thông số cảm biến đo lên LCD - Hiển thị thông số cảm biến, trạng thái relay cho người dùng xa qua wifi mạng di động Kết nối: Giao tiếp với người dùng từ xa qua wifi mạng di động 2.2 Sơ đồ khối hệ thống Từ yêu cầu cụ thể đặt trên, ta có sơ đồ khối sau: Hình 2.2 a Khối cảm biến độ ẩm đất: + Nhiệm vụ: Thu nhập thông số độ ẩm đất theo thời gian thực + u cầu: Thơng số xác, đảm bảo hoạt động ổn định thời gian dài Khối cám biến nhiệt độ, độ ẩm: + Nhiệm vụ: Thu nhập thông số nhiệt độ, độ ẩm theo thời gian thực + u cầu: Thơng số xác, đảm bảo hoạt động ổn định thời gian dài Khối xử lý trung tâm: + Nhiệm vụ: Xử lý thông số từ cảm biến, tự động thực điều khiển liệu nhận được, bao gồm từ lập trình trước hay trực tiếp qua nút nhấn wifi + Yêu cầu: Ổn định, bảo mật, có giải thuật xử lý hợp lý Màn hình hiển thị LCD: + Nhiệm vụ: Hiển thị thông số cảm biến + Yêu cầu : Kịp thời, xác, ổn định Nút nhấn điều khiển: + Nhiệm vụ: Gửi thông tin điều khiển từ người đến khối xử lý + Yêu cầu: Ổn định, xác Nguồn: + Nhiệm vụ: Cung cấp lượng cho toàn hệ thống + Yêu cầu: Đủ công suất, đáng tin cậy, ổn định Relay: + Nhiệm vụ: Thực yêu cầu điều khiển thiết bị đầu cuối + Yêu cầu: Chính xác, ổn định Ngồi cịn khối giao tiếp với người dùng qua internet: + Nhiệm vụ: Giúp người dùng điều khiển hệ thống từ xa thông qua kết nối internet + Yêu cầu: Hiển thị thông số cảm biến, trạng thái relay cho người dùng Giúp người dùng điều khiển relay bật, tắt đèn sưởi, máy bơm nước từ xa LỰA CHỌN THIẾT BỊ 3.1 Khối xử lý trung tâm Yêu cầu kỹ thuật : - Đọc thông số từ cảm biến - Nhận tín hiệu điều khiển chỗ từ nút nhấn - Gửi thông tin nhận lệnh điều khiển qua internet - Hiển thị thông số cảm biến chỗ qua LCD qua wifi cho người dùng xa - Chạy chương trình lập trình trước tự động tự động bật, tắt relay từ thông số môi trường Phương án 1: Thiết kế phần cứng xoay quanh vi xử lý Kit TIVA Launchpad modoul esp8266 Kit Tiva Lauchapad kit sử dụng nhiều để tiếp cận vi điều khiển ARM, kit sử dụng vi điều khiển ARM cortex M4 TM4C123 từ Texas Intrument( TI ), có tích hợp sẵn mạch nạp, giao tiếp UART Debugger thiết kế nhỏ gọn , dễ sử dụng , ngồi kit có chuẩn chân cắm đực dễ kết nối làm shield ghép tầng Thông tin kỹ thuật - High Performance TM4C123GH6PM MCU: - 80MHz 32-bit ARM Cortex-M4-based microcontrollers CPU - 256KB Flash, 32KB SRAM, 2KB EEPROM [14] https://hshop.vn/products/module-2-relay-voi-opto-coch-ly-koch-h-l-5vdc [15] https://hshop.vn/products/nguon-power-adaptor-ac-dc-5v-2a [16] https://hshop.vn/products/pin-nang-luong-mat-troi-solar-panel-5v-200ma 55 8.PHỤ LỤC Code lập trình NODEMCU nhóm: //CODE ĐỒ ÁN NHÀ KÍNH // khai báo thư viện #define BLYNK_PRINT Serial #include #include #include "DHT.h" #include #include #include WidgetLED PUMP(V0); // Đèn trạng thái bơm WidgetLED LAMP(V1); // Đèn trạng thái đèn // khai báo hình lcd LiquidCrystal_I2C lcd(0x27,16,2); // khai báo nối chân linh kiện #define DHTPIN D5 // Chân DATA DHT22 nối vào D5 #define SOIL_MOIST_1_PIN A0 // Chân DATA cảm biến độ ẩm đất nối vào A0 #define PUMP_ON_BUTTON D0 //Nút nhấn điều khiển tay bơm #define LAMP_ON_BUTTON D3 //Nút nhấn điều khiển đèn tay 56 #define SENSORS_READ_BUTTON D4 //Nút nhấn cập nhật liệu tức thời #define PUMP_PIN D6 // Relay điều khiển bơm #define LAMP_PIN D7 // Relay điều khiển đèn #define DHTTYPE DHT22 // Thông số cho chế độ tự động #define DRY_SOIL 10 // độ ẩm đất khô #define WET_SOIL 85 // độ ẩm đất ướt #define COLD_TEMP #define HOT_TEMP 25 // nhiệt độ lạnh 35 // nhiệt độ nóng #define TIME_PUMP_ON 15 // thời gian bơm bật #define TIME_LAMP_ON 15 // thời gian đèn bật // TIMER #define READ_BUTTONS_TM 1L // Tương ứng với giây #define READ_SOIL_HUM_TM 10L //Đọc cảm biến ẩm đất #define READ_AIR_DATA_TM 2L //Đọc cảm biến DHT22 #define DISPLAY_DATA_TM 10L //Gửi liệu lên terminal #define SEND_UP_DATA_TM 10L //Gửi liệu lên blynk #define AUTO_CTRL_TM 60L //Chế độ tư động // Kết nối với app Blynk Wifi 57 char auth[] = "wBFimDiL8G6Rg_gawo1sjE65j9NjrIF8"; // nhập mã code Blynk gửi mail char ssid[] = "BKGPL"; //Tên wifi char pass[] = "bkgpl2016"; //Mật // Biến lưu giá trị cảm biến float humDHT = 0; float tempDHT = 0; //int lumen; int soilMoist = 0; // Biến lưu trạng thái bơm boolean pumpStatus = 0; boolean lampStatus = 0; int timePumpOn = 10; // Thời gian bật bơm nước // Biến cho timer long sampleTimingSeconds = 50; // Thời gian đọc cảm biến (s) long startTiming = 0; long elapsedTime = 0; // Khởi tạo timer SimpleTimer timer; 58 // Khởi tạo cảm biến DHT dht(DHTPIN, DHTTYPE); byte degree[8] = { 0B01110, 0B01010, 0B01110, 0B00000, 0B00000, 0B00000, 0B00000, 0B00000 }; void setup() { pinMode(PUMP_PIN, OUTPUT); pinMode(LAMP_PIN, OUTPUT); pinMode(PUMP_ON_BUTTON, INPUT_PULLUP); pinMode(LAMP_ON_BUTTON, INPUT_PULLUP); pinMode(SENSORS_READ_BUTTON, INPUT_PULLUP); aplyCmd(); // Khởi tạo cổng serial baud 115200 Serial.begin(115200); 59 // thị tên T, DA, DA DAT lên hình LCD lcd.init(); lcd.backlight(); lcd.print("T: "); lcd.setCursor(8,0); lcd.print("DA: "); lcd.setCursor(0,1); lcd.print("DA Dat: "); lcd.createChar(1, degree); dht.begin(); // Bắt đầu đọc liệu Blynk.begin(auth, ssid, pass); PUMP.off(); LAMP.off(); startTimers(); } void loop() { timer.run(); // Bắt đầu SimpleTimer Blynk.run(); } //Hàm điều khiển nhận tín hiệu từ blynk BLYNK_WRITE(3) // Điều khiển bơm 60 { int i = param.asInt(); if (i == 1) { pumpStatus = !pumpStatus; aplyCmd(); } } BLYNK_WRITE(4) // Điều khiển đèn { int i = param.asInt(); if (i == 1) { lampStatus = !lampStatus; aplyCmd(); } } void getSoilMoist(void) { int i = 0; soilMoist = 0; 61 for (i = 0; i < 10; i++) { soilMoist += analogRead(SOIL_MOIST_1_PIN); //Đọc giá trị cảm biến độ ẩm đất delay(50); // Đợi đọc giá trị ADC } soilMoist = soilMoist / (i); soilMoist = map(soilMoist, 1023, 0, 0, 100); //Ít nước:0% ==> Nhiều nước 100% } void getDhtData(void) { tempDHT = dht.readTemperature(); humDHT = dht.readHumidity(); if (isnan(tempDHT) || isnan(humDHT)) {// Kiểm tra xem thử việc đọc giá trị có bị thất bại hay không } else { // Hiện thị giá trị nhiệt độ, độ ẩm, độ ẩm đất lên hình LCD lcd.setCursor(2,0); lcd.print(round(tempDHT)); lcd.setCursor(11,0); lcd.print(round(humDHT)); lcd.setCursor(7,1); lcd.print(round(soilMoist)); 62 } } void printData(void) { // IN thông tin hình giả lập máy tính Serial.print("Do am: "); Serial.print(humDHT); Serial.print(" %\t"); Serial.print("Nhiet do: "); Serial.print(tempDHT); Serial.print(" *C\t"); Serial.print(" %\t"); Serial.print("Do am dat: "); Serial.print(soilMoist); Serial.println(" %"); } void aaa(void) { Serial.print("Do nut nhan "); } // Hàm đọc trạng thái bơm kiểm tra nút nhấn (Nút nhấn mặc định mức "CAO"): void readLocalCmd() 63 { boolean digiValue = debounce(PUMP_ON_BUTTON); if (!digiValue) { pumpStatus = !pumpStatus; aplyCmd(); } digiValue = debounce(LAMP_ON_BUTTON); if (!digiValue) { lampStatus = !lampStatus; aplyCmd(); } digiValue = debounce(SENSORS_READ_BUTTON); if (!digiValue) { getDhtData(); getSoilMoist(); aaa(); printData(); } } 64 // Thực điều khiển bơm void aplyCmd() { if (pumpStatus == 1) { Blynk.notify("NDTRBOT: Canh bao ==>> BOM ON"); digitalWrite(PUMP_PIN, LOW); PUMP.on(); } else { digitalWrite(PUMP_PIN, HIGH); PUMP.off(); } if (lampStatus == 1) { Blynk.notify("NDTRBOT: Canh bao ==>> DEN ON"); digitalWrite(LAMP_PIN, LOW); LAMP.on(); } else { digitalWrite(LAMP_PIN, HIGH); 65 LAMP.off(); } } // Hàm kiểm tra trạng thái phím bấm boolean debounce(int pin) { boolean state; boolean previousState; const int debounceDelay = 60; previousState = digitalRead(pin); for (int counter = 0; counter < debounceDelay; counter++) { delay(1); state = digitalRead(pin); if (state != previousState) { counter = 0; previousState = state; } } return state; } 66 // Chế độ tự động dựa thông số cảm biến void autoControlPlantation(void) { if (soilMoist < DRY_SOIL) // so sánh giá trị độ ẩm đo với giá trị cài đặt sẵn { turnPumpOn(); } if (tempDHT < COLD_TEMP) // so sánh giá trị nhiệt độ đo với giá trị cài đặt sẵn { turnLampOn(); } } // Bật bơm thời gian định sẵn void turnPumpOn() { pumpStatus = 1; aplyCmd(); delay (TIME_PUMP_ON * 1000); pumpStatus = 0; aplyCmd(); } 67 // Bật đèn thời gian định sẵn void turnLampOn() { lampStatus = 1; aplyCmd(); delay (TIME_LAMP_ON * 1000); lampStatus = 0; aplyCmd(); } // Khởi động Timers void startTimers(void) { timer.setInterval(READ_BUTTONS_TM * 1000, readLocalCmd); timer.setInterval(READ_AIR_DATA_TM * 1000, getDhtData); timer.setInterval(READ_SOIL_HUM_TM * 1000, getSoilMoist); timer.setInterval(SEND_UP_DATA_TM * 1000, sendUptime); timer.setInterval(AUTO_CTRL_TM * 1000, autoControlPlantation); } 68 //Gửi liệu lên App Blynk void sendUptime() { Blynk.virtualWrite(10, tempDHT); //Nhiệt độ với pin V10 Blynk.virtualWrite(11, humDHT); // Độ ẩm với pin V11 Blynk.virtualWrite(12, soilMoist); // Độ ẩm đất với V12 } // Hết 69 ... dụng IOT vào nông nghiệp nhu cầu thiết xã hội Điều khiển giám sát thơng minh, tích hợp hệ thống điều khiển giám sát nhiệt độ, độ ẩm, ánh sáng, cường độ gió…thành hệ thống thống Mỗi chức điều khiển. .. khiển giám sát thông minh có khả tự vận hành điều khiển người dùng Người dùng truy cập từ xa để kiểm tra, điều khiển hệ thống hoạt động theo yêu cầu Điều khiển giám sát thông minh đề tài công nghệ... với giá thành ngày thấp Do đó, nhóm định chọn đề tài: “ HỆ THỐNG IOT DIỀU KHIỂN VÀ GIÁM SÁT NHÀ KÍNH THƠNG MINH? ?? 1.2 Mục tiêu Thiết kế hệ thống có khả đo thơng số nhiệt độ, độ ẩm, độ ẩm đất nông