Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 50 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
50
Dung lượng
1,92 MB
Nội dung
BAN CƠ YẾU CHÍNH PHỦ HỌC VIỆN KỸ THUẬT MẬT MÃ BÁO CÁO HỌC PHẦN HỆ ĐIỀU HÀNH NHÚNG THỜI GIAN THỰC ĐỀ TÀI: ỨNG DỤNG CẢM BIẾN NHIỆT ĐỘ, ĐỘ ẨM TRONG HỆ THỐNG VƯỜN THÔNG MINH SỬ DỤNG HỆ ĐIỀU HÀNH FREERTOS Giảng viên hướng dẫn: Lê Thị Hồng Vân Nhóm sinh viên thực hiện: Dương Quang Triệu DT020244 Lê Đình Tùng DT020246 Bùi Thị Linh DT020223 Vũ Văn Hoàng DT020216 Hà Nội, tháng 10 năm 2021 MỤC LỤC CHƯƠNG I KHẢO SÁT VÀ XÂY DỰNG BÀI TOÁN 1 Khảo sát toán thực tế Xây dựng toán Sử dụng FreeRTOS vào đề tài CHƯƠNG II CƠ SỞ LÝ THUYẾT Tổng quan Hệ điều hành Nhúng thời gian thực FreeRTOS 1.1 Lịch sử phát triển hệ điều hành nhúng thời gian thực FreeRTOS 1.2 Các đặc điểm FreeRTOS 1.3 Các vi điều khiển trình dịch hỗ trợ port FreeRTOS Lựa chọn linh kiện 2.1 Giới thiệu Arduino UNO R3 2.2 Tổng quan ESP8266 nodeMCU 10 2.3 Iot with blynk 13 2.4 Giao tiếp UART 16 2.5 Giới thiệu STM32 12 2.6 App Segger Systemview 19 2.7 Một số linh kiện khác 13 CHƯƠNG III XÂY DỰNG HỆ THỐNG 21 Giải pháp thiết kế 21 1.1 Sơ đồ khối 21 1.2 Chức khối 21 Thiết kế phần cứng 22 2.1 Sơ đồ nguyên lý 22 2.2 Sơ đồ nối chân 22 Thiết kế phần mềm 23 3.1 Lưu đồ thuật toán 23 3.2 Code 24 3.2.1 Code Arduino 24 3.2.2 Code ESP8266 28 3.2.3 Code STM32 31 CHƯƠNG IV KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 39 Kết đạt 39 1.1 Lý thuyết 39 1.2 Thực nghiệm 39 1.2.1 Thử nghiệm tính 39 1.2.2 Đánh giá hệ thống 41 Hạn chế 41 Hướng phát triển 41 Kết luận 41 DANH MỤC HÌNH ẢNH Hình 2.1: Sơ đồ phát triển FreeRTOS Hình 2.1: Board Arduino uno R3 Hình 2.2 Sơ đồ chân Arduino Uno R3 Hình 2.4 ESP8266 nodeMCU 10 Hình 2.5 Mơ hình ESP8266 NodeMCU 11 Hình 2.6 Sơ đồ chân STM32F407 Discovery Board 13 Hình 2.7 Giao tiếp app Blynk 14 Hình 2.8 Sơ đồ khối Blynk 15 Hình 2.9 Giao tiếp song song 16 Hình 2.10 Sơ đồ khối UART 17 Hình 2.11 Truyền thông UART 18 Hình 2.12 Giao tiếp UART 18 Hình 2.12 Giao diện theo dõi hoạt động tác vụ 20 Hình 3.1 Sơ đồ khối 21 Hình 3.2 Sơ đồ nguyên lý 22 Hình 3.3 Lưu đồ thuật toán Arduino 23 Hình 3.4 Lưu đồ thuật toán ESP8266 24 Hình 4.1: Hình ảnh mạch thực tế 40 Hình 4.2: Mơ hình sản phẩm thực tế hiển thị qua Blynk 40 Hình 4.3 Hiển thị điều khiển vườn web Blynk 40 Hình 4.4 Theo dõi hoạt động hệ thống qua Segger Systemview 41 DANH MỤC BẢNG Bảng 2.1 Các thông số kỹ thuật Arduino UNO R3…………………… Bảng 3.1 Sơ đồ nối chân…………………………………………………….22 NHẬN XÉT CỦA GIẢNG VIÊN Hà Nội, tháng 10 năm 2021 Giảng Viên LỜI NĨI ĐẦU Nền nơng nghiệp nước ta lạc hậu chưa có nhiều ứng dụng khoa học kĩ thuật áp dụng vào thực tế Rất nhiều quy trình kĩ thuật trồng trọt, chăm sóc áp dụng thủ cơng không đạt yêu cầu Hệ thống vườn thông minh hệ thống nhằm đáp ứng theo yêu cầu sinh trưởng trồng, hệ thống hình thức cung cấp tự động nước, ánh sáng môi trường đất hợp lý, giúp tiết kiệm sức lao động thời gian, cơng sức Trong tưới nước khâu quan trọng trồng trọt Để đảm bảo trồng sinh trường phát triển bình thường, tưới tưới đủ theo yêu cầu nông học không sinh sâu bệnh, hạn chế thuốc trừ sâu cho sản phẩm an toàn, đạt suất hiệu cao Vì vậy, thiết bị thơng minh, tự động ngày trở nên phổ biến Nhận thấy nhu cầu rau gia đình ngày tăng cao, việc tìm mua rau có rõ nguồn gốc thật khơng dễ, để có khơng gian đủ để làm hệ thống vườn thông minh với đầy đủ ứng dụng cơng nghệ chăm sóc cho rau đạt chất lượng cao phục vụ cho gia đình người khó Do ý tưởng ứng dụng cảm biến nhiệt độ, độ ẩm vườn thông minh mini đời CHƯƠNG I KHẢO SÁT VÀ XÂY DỰNG BÀI TOÁN Khảo sát toán thực tế Đặt vấn đề Hiện với phát triển khoa học công nghệ nhu cầu chất lựng thực phẩm người ngày tăng cao Việc ứng dụng cảm biến nhiệt độ, độ ẩm vào hệ thống vườn thông minh cần thiết Hệ thống tưới phun nước đáp ứng độ ẩm gốc, độ ẩm lả khơng khí cho trồng phát triển tốt, hệ thống tiếc kiệm nước tạo điều kiện cho trồng hấp thụ dinh dưỡng khơng gây rửa trơi, thối hóa đất gây ô nhiễm môi trường Hơn nữa, với việc thiết kế hệ thống tưới tự động giúp người tưới cây, tốn chi phí nhân cơng tưới nước giám sát thời gian tưới cây, phù hợp với giai đoạn trồng Với hướng dẫn cô Lê Thị Hồng Vân với nỗ lực nhóm chúng em hồn thành đề tài “ Ứng dụng cảm biến nhiệt độ, độ ẩm vườn thông minh sử dụng hệ điều hành FreeRtos” Xây dựng toán Yêu cầu đặt ra: cảm biến hoạt động xác, tốc độ phản hồi nhanh, thiết bị đo nhiệt độ độ ẩm hoạt động xác gặp điều kiện khác Hệ thống có chức chính: + Tự động bật đèn,tưới nhiệt độ, độ ẩm xuông thấp + Ứng dụng IOT giám sát , gửi nhiệt độ độ ẩm lên Blynk Hệ thống bao gồm : Arduino Nano Iot with Blynk Esp8266 Giao tiếp Uart VĐK STM32 App Segger Systemview Một số linh kiện khác Sử dụng FreeRTOS vào đề tài FreeRTOS hệ điều hành nhúng thời gian thực mã nguồn mở đời từ năm 2003, đến phát triển mạnh mẽ nhận nhiều ủng hộ lập trình cho hệ nhúng FreeRTOS có tính khả chuyển, sử dụng miễn phí dùng cho mục đích thương mại Nó có nhiều ưu điểm bật so với hệ điều hành nhúng thời gian thực khác có kích thứơc nhỏ gọn nên phù hợp với hệ nhúng thời gian thực nhỏ; viết bằng ngơn ngữ C nên có độ phù hợp cao với phần cứng khác Ngoài ra, FreeRTOS hỗ trợ chế cho phép tạo task coroutie với số lượng task không giới hạn phụ thuộc vào tài nguyên phần cứng, chip; hỗ trợ chế truyền thông đồng task task ngắt bằng cách sử dụng hàng đợi semaphore nhị phân semaphore đếm mutex; cho phép nhận biết ngăn xếp bị tràn Ngay hệ thống nhúng lớn người ta sử dụng FreeRTOS để tiết kiệm dung lượng nhớ làm cho hệ thống bị tải CHƯƠNG II CƠ SỞ LÝ THUYẾT Tổng quan Hệ điều hành Nhúng thời gian thực FreeRTOS 1.1 Lịch sử phát triển hệ điều hành nhúng thời gian thực FreeRTOS FreeRTOS lõi hệ điều hành thời gian thực miễn phí Hệ điều hành Richard Barry cơng bố rộng rãi từ năm 2003, phát triển mạnh đến cộng đồng mạng mã nguồn mở ủng hộ FreeRTOS có tính khả chuyển, mã nguồn mở, lõi down miễn phí dùng cho ứng dụng thương mại Nó phù hợp với hệ nhúng thời gian thực nhỏ Hầu hết code viết bằng ngơn ngữ C nên có tính phù hợp cao với nhiều khác Ưu điểm dung lượng nhỏ chạy mà nhiều hệ khơng chạy Có thể port cho nhiều kiến trúc vi điều khiển cơng cụ phát triển khác Mỗi port thức bao gồm ứng dụng ví dụ tiền cấu hình biểu riêng biệt lõi, kiến thức hướng phát triển Những hỗ trợ miễn phí cung cấp cộng đồng mạng Hỗ trợ thương mại với dịch vụ phát triển đầy đủ cung cấp FreeRTOS cấp giấy phép chỉnh sửa GPL ( GeneralPublic License ) sử dụng ứng dụng thương mại với giấy phép Ngoài liên quan đến FreeRTOS có OpenRTOS SafeRTOS OpenRTOS thương mại FreeRTOS.org khơng liên quan đến GPL SafeRTOS dựa FreeRTOS phân tích, chứng minh bằng tài liệu kiểm tra nghiêm ngặt với chuẩn IEC61508 Và chuẩn IEC61508 SIL3 tạo phát triển độc lập để hoàn thiện tài liệu cho SafeRTOS BlynkTimer timer; long last = 0; String s= ""; String b= ""; int value1, value2,i; char c; int n1=0,n2=0,n3=0; void setup() { pinMode(DEN, OUTPUT); Serial.begin(115200); ABC.begin(115200); Blynk.begin(auth, ssid, pass, "64.225.16.22", 80); dht.begin(); timer.setInterval(1000L, loop); last = millis(); } void loop() { String m1= ""; String m2= ""; if(ABC.available()) { c = (char)ABC.read(); s += c; if(c == '\n') { Serial.print(" Nhan gia tri DATA gui tu ARDUINO :"); Serial.println(""); delay(1000); for(i=0; i=2000) { Serial.println(" VUON THONG MINH "); Serial.print("Nhiet độ khong khi: "); Serial.println(t); Serial.print("Độ ẩm khong : "); Serial.println(h); if(t < 30) { digitalWrite(DEN, LOW); Serial.println(" NHIET DO BINH THUONG => DEN BAT "); } else { digitalWrite(DEN, HIGH); Serial.println(" NHIET DO QUA CAO => DEN TAT "); } last = millis(); } } 3.2.3 Code STM32 #include #include #include 31 #include "stm32f4xx.h" #include "FreeRTOS.h" #include "task.h" #include "queue.h" #define USE_SEGGER #define Pump1_Pin GPIO_Pin_14 #define Pump2_Pin GPIO_Pin_13 #define Lamp_Pin GPIO_Pin_12 QueueHandle_t SoilMoistureQueue1 = NULL, SoilMoistureQueue2 = NULL, AirTemperatureQueue = NULL, HumidityQueue = NULL; void Get_Para_Task(void *params); void Garden_1_Task(void *params); void Garden_2_Task(void *params); void Air_Task(void *params); void Heating_Lamp_Off_Task(void *params); void Heating_Lamp_On_Task(void *params); void Water_Pump_1_Off_Task(void *params); void Water_Pump_2_Off_Task(void *params); void Water_Pump_1_On_Task(void *params); void Water_Pump_2_On_Task(void *params); static void prvSetupHardware(void); static void prvSetupUart(void); void prvSetupGpio(void); void printmsg(char *msg); void rtos_delay(uint32_t delay_in_ms); char usr_msg[250]={0}; int main(void) { /*Reset the RCC clock configuration to the default reset state HSI ON, PLL OFF, HSE OFF, system clock = 16MHz, cpu_clock = 16MHz*/ RCC_DeInit(); SystemCoreClockUpdate(); prvSetupHardware(); #ifdef USE_SEGGER 32 DWT->CTRL |= (1