Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 124 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
124
Dung lượng
5,53 MB
Nội dung
TĨM TẮT Xã hội ngày đại người quan tâm đến vấn đề sức khỏe Vì vậy, nhu cầu sử dụng ứng dụng thông báo mức độ ô nhiễm cho người dùng ngày cao Có nhiều loại cảm biến đo thơng số mơi trường thị trường, nhiên khơng có nhiều nghiên cứu hệ thống đo tích hợp loại khí gây nhiễm thơng báo cho người dùng Hiện xu hướng sử dụng dòng vi điều khiển để điều khiển thiết bị STM32, PIC, Arduino, … phát triển cách mạnh mẽ Nhờ mà việc điều khiển hệ thống trở lên thuận tiện dễ dàng nhiều Nội dung đề tài áp dụng kiến thức học vi điều khiển để thiết kế hệ thống đo nồng độ cảnh báo mức độ nguy hiểm chất khơng khí, cụ thể CO, CO2, bụi UV Hệ thống gồm mạch điện tử kết nối với cảm biến điều khiển điều khiển trung tâm STM32F103C8T6 Khi phát chất CO, CO2, bụi UV, vi điều khiển tiến hành xử lý đưa liệu lên web thông qua SIM808 Thông số nồng độ chất hiển thị trang web, giúp người dùng dễ dàng đọc thơng số có biện pháp để hạn chế tác hại chất nồng độ vượt ngưỡng cho phép Thời gian xử lý liệu vi điều khiển nhanh nên người dùng liên tục cập nhập mức độ ảnh hưởng chất môi trường MỤC LỤC MỤC LỤC Chương 1.1 ĐẶT VẤN ĐỀ .1 1.2 MỤC TIÊU 1.3 NỘI DUNG NGHIÊN CỨU 1.4 GIỚI HẠN .2 1.5 BỐ CỤC Chương 2.1 GIỚI THIỆU PHẦN CỨNG 2.1.1 Khí CO 2.1.1.1 Tổng quan CO .4 2.1.1.2 Cách nhận biết 2.1.1.3 Cảm biến MQ - 2.1.2 Bụi 2.1.2.1 Tổng quan bụi 2.1.2.2 Cách nhận biết 2.1.2.3 Cảm biến GP2Y1010AU0F .9 2.1.3 Tia UV 12 2.1.3.1 Tổng quan UV 12 2.1.3.2 Cách nhận biết 13 2.1.3.3 Cảm biến ML8511 13 2.1.4 Khí CO2 .16 2.1.4.1 Tổng quan CO2 16 2.1.4.2 Cách nhận biết 17 2.1.4.3 Cảm biến hồng ngoại CO2 17 2.1.5 Module SIM808 19 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH MỤC LỤC 2.1.5.1 Tổng quan Module SIM808 19 2.1.5.2 Sơ đồ chân 19 2.1.5.3 Thông số kỹ thuật 22 2.1.5.4 Nguyên lý hoạt động 23 2.1.6 Vi điều khiển STM32F103C8T6 23 2.2 CHUẨN GIAO TIẾP UART 27 Chương .29 3.1 GIỚI THIỆU .29 3.2 TÍNH TỐN VÀ THIẾT KẾ HỆ THỐNG 29 3.2.1 Thiết kế sơ đồ khối hệ thống 29 3.2.2 Tính toán thiết kế mạch 30 3.2.2.1 Tính tốn thiết kế khối cảm biến .30 3.2.2.2 Thiết kế khối định vị - gửi liệu 40 3.2.3 Sơ đồ nguyên lý toàn mạch 44 3.2.4 Thiết kế khối nguồn 45 Chương .56 4.1 GIỚI THIỆU .56 4.2 THI CÔNG HỆ THỐNG 56 4.2.1 Thi công bo mạch 56 4.2.2 Lắp ráp kiểm tra 60 a Lắp ráp kiểm tra nguồn 60 b Lắp ráp kiểm tra vi điều khiển STM32F103C8T6 60 c Lắp ráp kiểm tra khối cảm biến .60 d Lắp ráp kiểm tra SIM808 60 e Mạch sau kết nối linh kiện .60 4.3 ĐÓNG GÓI VÀ THI CƠNG MƠ HÌNH 61 4.3.1 Đóng gói điều khiển .61 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH MỤC LỤC 4.3.2 Thi cơng mơ hình 62 4.4 LẬP TRÌNH HỆ THỐNG 63 4.4.1 Lưu đồ giải thuật .63 4.4.1.1 Chương trình .63 4.4.1.2 Chương trình 64 4.4.2 Phần mềm STM32CUBEMX VÀ KEIL C 74 4.4.2.1 Giới thiệu phần mềm 74 4.4.2.1 Các thao tác với phần mềm STM32CubeMX Keil 75 4.4.3 Phần mềm SUBLIME TEXT 79 4.4.3.1 Giới thiệu phần mềm 79 4.4.3.2 Các thao tác với phần mềm 79 4.5 VIẾT TÀI LIỆU HƯỚNG DẪN SỬ DỤNG 82 Chương .84 5.1 GIỚI THIỆU .84 5.2 KẾT QUẢ ĐẠT ĐƯỢC .84 5.3 KẾT QUẢ CHẠY HỆ THỐNG 84 5.4 NHẬN XÉT-ĐÁNH GIÁ 85 Chương .87 6.1 KẾT LUẬN 87 6.2 HƯỚNG PHÁT TRIỂN 87 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH LIỆT KÊ BẢNG LIỆT KÊ BẢNG Bảng Thông số kỹ thuật MQ7 Bảng 2 Sơ đồ chân MQ7 .7 Bảng Thông số kỹ thuật GP2Y101AU0F Bảng Kết nối chân cảm biến GP2Y1010AU0F 10 Bảng Quan hệ giá trị điện áp nồng độ bụi 12 Bảng Thông số kỹ thuật ML8511 .14 Bảng Kết nối chân ML8511 .15 Bảng Thông số kỹ thuật 17 Bảng Kết nối chân cảm biến .18 Bảng 10 Chức chân module SIM808 20 Bảng 11 Thông số kỹ thuật 22 Bảng Bảng tọa độ điểm khí CO 33 Bảng Dòng điện điện áp làm việc linh kiện 45 Bảng 3 Thông số kỹ thuật IC LM2596 46 Bảng Bảng lựa chọn giá trị tụ Cout 48 Bảng Thông số kỹ thuật IC LM2596 – ADJ 51 Bảng Bảng giá trị Cout .52 Bảng Thông số kỹ thuật LM1117 .54 Bảng Danh sách linh kiện 56 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH LIỆT KÊ HÌNH VẼ LIỆT KÊ HÌNH VẼ Hình Sơ đồ mạch đo thơng số điện áp cảm biến MQ7 Hình 2 Đường cong đặc tính độ nhạy cảm biến MQ7 với số khí gas Hình Đồ thị biểu diễn phụ thuộc cảm biến MQ7 với nhiệt độ độ ẩm Hình Cảm biến MQ7 Hình Tín hiệu ngõ RL Hình Sơ đồ chân cảm biến GP2Y1010AU0F .9 Hình Cấu trúc bên cảm biến GP2Y1010AU0F 10 Hình Thời gian lấy mẫu xung đầu .11 Hình Mối tương quan điện áp đầu với mật độ bụi 12 Hình 10 Sơ đồ chân cảm biến ML8511 .14 Hình 11 Mối quan hệ điện áp mức độ tia UV 15 Hình 12 Cấu trúc chân cảm biến 18 Hình 13 Module SIM808 .19 Hình 14 Sơ đồ chân module SIM808 19 Hình 15 Kiến trúc vi xử lý ARM 23 Hình 16 STM32F103C8T6 24 Hình 17 Cấu trúc chân I/O .26 Hình 18 Kết nối UART 28 Hình 19 Khung truyền giao tiếp UART 28 Hình Sơ đồ khối hệ thống đo cảnh báo thơng số mơi trường……………29 Hình Sơ đồ nguyên lý cảm biến MQ7 .30 Hình 3 Đồ thị đường cong đặc tính cảm biến MQ .32 Hình Cơng cụ WebPlotDigitizer .33 Hình Đồ thị mối tương quan điện áp mức độ tia cực tím 36 Hình Đồ thị mối tương quan điện áp nồng độ CO2 37 Hình Sơ đồ nguyên lý kết nối STM32F1 với cảm biến MQ7 38 Hình Sơ đồ nguyên lý kết nối STM32F1 với cảm biến GP2Y1010AU0F 39 Hình Cấu tạo bên cảm biến GP2Y1010AU0F 39 Hình 10 Sơ đồ kết nối STM32F1 với cảm biến ML8511 .40 Hình 11 Sơ đồ nguyên lý khối định vị - kết nối liệu .41 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH LIỆT KÊ HÌNH VẼ Hình 12 Sơ đồ kết nối chân VBAT .41 Hình 13 ON/OFF module dùng transistor 42 Hình 14 Sơ đồ kết nối chân TXD RXD 42 Hình 15 Sơ đồ kết nối chân STATUS NETLIGHT 43 Hình 16 Sơ đồ kết nối SIM Card 43 Hình 17 Sơ đồ nguyên lý toàn mạch 44 Hình 18 Adapter 12V – 3A 46 Hình 19 IC LM2596 – 5V 46 Hình 20 Sơ đồ nguyên lý mạch hạ áp 5V 47 Hình 21 Lựa chọn giá trị cuộn cảm 47 Hình 22 Lựa chọn giá trị Cin .49 Hình 23 Sơ đồ kết nối chân ON/OFF 49 Hình 24 Sơ đồ nguyên lý mạch hạ áp 5V hoàn chỉnh 50 Hình 25 IC LM2596 – ADJ 50 Hình 26 Sơ đồ nguyên lý mạch hạ áp 4.1V 51 Hình 27 Lựa chọn giá trị cuộn cảm 52 Hình 28 Sơ đồ nguyên lý mạch hạ áp 4.1V hồn chỉnh 53 Hình 29 LM1117 54 Hình 30 Sơ đồ nguyên lý mạch hạ áp 3.3V hoàn chỉnh 54 Hình 31 Sơ đồ nguyên lý khối nguồn 55 Hình Mặt mạch PCB 58 Hình Mặt mạch PCB 59 Hình Sơ đồ bố trí linh kiện .59 Hình 4 Mặt mạch sau lắp ráp hàn linh kiện 60 Hình Mặt mạch sau lắp ráp hàn linh kiện .61 Hình KW - 121 61 Hình Mạch sau đóng gói 62 Hình Lưu đồ điều khiển hệ thống đo cảnh báo thông số môi trường 63 Hình Lưu đồ chương trình ngắt UART .64 Hình 10 Lưu đồ SIM_init() 65 Hình 11 Lưu đồ TinhToanGiaTriCamBien() .66 Hình 12 Lưu đồ Get_GPS_Control() 67 BỘ MÔN ĐIỆN TỬ CƠNG NGHIỆP – Y SINH LIỆT KÊ HÌNH VẼ Hình 13 Lưu đồ PostData_control() 68 Hình 14 Lưu đồ Update_Timer() 69 Hình 15 Lưu đồ DebuggingSystem() 70 Hình 16 Lưu đồ Ngat_Timer() .71 Hình 17 Lưu đồ Ngat_Timer1 .72 Hình 18 Lưu đồ Ngat_Timer4 .73 Hình 19 Lưu đồ Get_ADC_CO() 74 Hình 20 Biểu tượng phần mềm STM32CubeMX 75 Hình 21 Biểu tượng phần mềm Keil uVision5 .75 Hình 22 Tạo project STM32CubeMx 76 Hình 23 Cấu hình chip STM32CubeMx .76 Hình 24 Cấu hình xung nhịp STM32CubeMX .77 Hình 25 Cấu hình ngoại vi STM32CubeMX 77 Hình 26 Tạo code STM32CubeMX 78 Hình 27 Giao diện phần mềm lập trình Keil C 78 Hình 28 Buid nạp code lên chip .79 Hình 29 Biểu tượng phần mềm Sublime text .79 Hình 30 Giao diện sublime text khởi động .80 Hình 31 Đoạn mã code để cài đặt Package Control cho Sublime text .80 Hình 32 Mở Package Control sau cài đặt .81 Hình 33 Tạo File 81 Hình 34 Chọn ngơn ngữ lập trình sublime text 82 Hình 35 Lưu file sublime text .82 Hình Giao diện hiển thị web 85 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH TÓM TẮT TÓM TẮT Xã hội ngày đại người quan tâm đến vấn đề sức khỏe Vì vậy, nhu cầu sử dụng ứng dụng thơng báo mức độ ô nhiễm cho người dùng ngày cao Có nhiều loại cảm biến đo thông số môi trường thị trường, nhiên khơng có nhiều nghiên cứu hệ thống đo tích hợp loại khí gây nhiễm thông báo cho người dùng Hiện xu hướng sử dụng dòng vi điều khiển để điều khiển thiết bị STM32, PIC, Arduino, … phát triển cách mạnh mẽ Nhờ mà việc điều khiển hệ thống trở lên thuận tiện dễ dàng nhiều Nội dung đề tài áp dụng kiến thức học vi điều khiển để thiết kế hệ thống đo nồng độ cảnh báo mức độ nguy hiểm chất không khí, cụ thể CO, CO2, bụi UV Hệ thống gồm mạch điện tử kết nối với cảm biến điều khiển điều khiển trung tâm STM32F103C8T6 Khi phát chất CO, CO2, bụi UV, vi điều khiển tiến hành xử lý đưa liệu lên web thông qua SIM808 Thông số nồng độ chất hiển thị trang web, giúp người dùng dễ dàng đọc thông số có biện pháp để hạn chế tác hại chất nồng độ vượt ngưỡng cho phép Thời gian xử lý liệu vi điều khiển nhanh nên người dùng liên tục cập nhập mức độ ảnh hưởng chất mơi trường BỘ MƠN ĐIỆN TỬ CƠNG NGHIỆP – Y SINH CHƢƠNG TỔNG QUAN Chƣơng TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ Hiện nay, với phát triển dân số gia tăng nhanh phương tiện giao thông, đặc biệt Việt Nam tỉ lệ lưu thông xe gắn máy, xe giới xe thô sơ cao Ở thành phố lớn Thành phố Hồ Chí Minh Hà Nội, ngày có lượng xe đơng đúc lưu thơng đường vấn đề nhiễm khơng khí nghiêm trọng Vấn đề khơng ảnh hưởng tới mơi trường mà tác động trực tiếp đến sức khỏe người Vì vậy, người cần có giải pháp để biết yếu tố tác động mức độ để chủ động phòng tránh hạn chế gây tác động xấu đến môi trường Có nhiều nghiên cứu sinh viên luận văn thạc sĩ làm vấn đề môi trường Chẳng hạn, luận văn Trịnh Minh Phương nghiên cứu đề tài “Nghiên cứu ứng dụng IoT cho giám sát môi trường”, sử dụng Raspberry Pi giao tiếp với cảm biến ánh sáng BH1750, DHT22 Sử dụng ngôn ngữ lập trình Python để đọc liệu từ cảm biến ánh sáng, nhiệt độ độ ẩm sau hiển thị lên Web Hay luận văn khác thạc sĩ Nguyễn Văn Long “Nghiên cứu thiết kế hệ thống đo ô nhiễm không khí (PM10, SOx, NOx)”, sử dụng module cảm biến để đo đạc tính tốn số chất lượng khơng khí AQI theo tiêu chuẩn hành Với mong muốn tìm giải pháp thiết kế đo lường chất lượng khơng khí, liên tục theo dõi cảnh báo cho người dùng nồng độ chất nhiễm khơng khí, nhóm chúng em chọn đề tài “Thiết kế thi công hệ thống đo cảnh báo nồng độ thông số môi trƣờng (CO, CO2, bụi mịn tia UV) Hệ thống thiết kế với kích thước nhỏ, dễ dàng lắp đặt vị trí để theo dõi chất lượng khơng khí Các cảm biến đo đạc có chi phí thấp bán phổ biến thị trường cảm biến CO, PM2.5, tia UV, dòng cảm biến khác … Bên cạnh đó, hệ thống cho phép giao tiếp với nhiều hiển thị BỘ MƠN ĐIỆN TỬ CƠNG NGHIỆP – Y SINH thơng báo cho người dùng PHỤ LỤC { CO_count++; HAL_ADC_Start_DMA(&hadc1, (uint32_t*)ADC_value, 3); ADC_CO += ADC_value[0]; } if(timer_CO < 60000) HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_3, 1000); else if (timer_CO == 150000) timer_CO = 0; else HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_3, 280); } if(htim->Instance == TIM4) // T = 10us { timer_PM++; if(timer_PM < 33) HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_RESET); else if (timer_PM == 1000) timer_PM = 0; else HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_SET); if (timer_PM == 100) // 1ms = 100 x 10us { PM_count++; UV_count++; HAL_ADC_Start_DMA(&hadc1, (uint32_t*)ADC_value, 3); ADC_PM += ADC_value[2]; ADC_UV += ADC_value[1]; } } } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP PHỤ LỤC void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { if(huart->Instance == USART2) { HAL_UART_Receive_IT(&huart2,(uint8_t*)buffer2,sizeof(buffer2)); } } /* USER CODE END */ /** * @brief This function is executed in case of error occurrence * @retval None */ void Error_Handler(void) { /* USER CODE BEGIN Error_Handler_Debug */ /* User can add his own implementation to report the HAL error return state */ disable_irq(); while (1) { } /* USER CODE END Error_Handler_Debug */ } #ifdef USE_FULL_ASSERT /** * @brief Reports the name of the source file and the source line number * where the assert_param error has occurred * @param file: pointer to the source file name * @param line: assert_param error line source number * @retval None */ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP PHỤ LỤC void assert_failed(uint8_t *file, uint32_t line) { /* USER CODE BEGIN */ /* User can add his own implementation to report the file name and line number, ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ /* USER CODE END */ } #endif /* USE_FULL_ASSERT */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ Code debugControl #include "debugControl.h" extern extern extern extern extern extern extern uint8_t uint8_t uint8_t uint8_t uint8_t uint8_t uint8_t debug_string; debug; SIM_active; GPRS_active; HTTP_active; enable_GPS; getVDD; extern char status[50]; extern char buffer2[500]; extern extern extern extern uint16_t uint16_t uint16_t uint16_t timer1_ms; timer1_min; debugging_PreTimer; debuggingTime; void DebuggingSystem(void) { if(debug) { /*Debugging the system*/ SIM808_init(); /*Set the debugging duration, if an error occured, the duration/2*/ if(!GPRS_active||!SIM_active) debuggingTime = 1; //minutes else debuggingTime = 2; //minutes debug = 0; // debugging_PreTimer = timer1_ms; debugging_PreTimer = timer1_min; } } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP PHỤ LỤC void SIM808_init(void) { if(debug_string) strcpy(status,"Check SIM"); else strcpy(status,"Debugging "); SIM_active = Check_SIM_activated(); if(debug_string) strcpy(status,"Check GPRS"); GPRS_active = Check_GPRS_connection(); if(debug_string) strcpy(status,"Check HTTP"); HTTP_active = Check_HTTP_Service(); if(SIM_active&&GPRS_active&&HTTP_active) { /*If everything run smoothly our work is done*/ /*Last check for GPS activation, and HTTP_PARA*/ if(enable_GPS) { if(!Check_GPS_activated()) { if(debug_string) { strcpy(status,"Enable GPS"); HAL_Delay(2000); } Send_Command_SIM(GPS_On,OK,1000,1); } } else { if(Check_GPS_activated()) Send_Command_SIM(GPS_Off,OK,1000,1); } Send_Command_SIM(HTTP_TERM,OK,1000,1); Init_HTTP(); strcpy(status,"System OK 1!"); return; } /*If SIM have a problem*/ if(!SIM_active) { if(!getVDD) { strcpy(status,"ERROR:VDD=0"); return; } Start_SIM(); } /*If couldnt connected to GPRS*/ if(!GPRS_active) { if(!Send_Command_SIM("AT+CPIN?\r\n",OK,1000,1)) { strcpy(status,"Check SIM card connection"); HAL_Delay(2000); Reset_SIM(); HAL_Delay(8000); } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP PHỤ LỤC Activate_GPRS(); } /*Check again*/ SIM_active = Check_SIM_activated(); GPRS_active = Check_GPRS_connection(); HTTP_active = Check_HTTP_Service(); if(SIM_active) { if(GPRS_active) { Send_Command_SIM(HTTP_TERM,OK,1000,1); if(Init_HTTP()) { HTTP_active = 1; if(debug_string) { strcpy(status,"HTTP init succeed"); HAL_Delay(2000); } } else { HTTP_active = 0; if(debug_string) { strcpy(status,"HTTP fail"); HAL_Delay(2000); } } strcpy(status,"System OK 2!"); } else strcpy(status,"ERROR:GPRS offline"); if(enable_GPS) { if(!Check_GPS_activated()) { if(debug_string) { strcpy(status,"Enable GPS"); HAL_Delay(2000); } Send_Command_SIM(GPS_On,OK,1000,1); } } else { if(Check_GPS_activated()) Send_Command_SIM(GPS_Off,OK,1000,1); } } else { SIM_active = 0; GPRS_active = 0; HTTP_active = 0; strcpy(status,"ERROR:SIM808 offline"); } } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP PHỤ LỤC Code SIM808 #include "SIM808.h" #include "string.h" #include "stdio.h" /*EXTERN FROM MAIN*/ extern UART_HandleTypeDef huart2; extern char buffer2[500]; extern char status[50]; extern char debug_string; extern uint8_t debug; extern uint8_t postData; extern uint8_t getData; extern uint8_t getGPS; extern uint8_t getSMS; char lengh[100]; void Power_On(void) { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET); // RST_SIM muc HAL_GPIO_WritePin(CS_SIM_GPIO_Port,CS_SIM_Pin,GPIO_PIN_SET); if(debug_string) strcpy(status,"Power on"); HAL_Delay(2000); HAL_GPIO_WritePin(CS_SIM_GPIO_Port,CS_SIM_Pin,GPIO_PIN_RESET); } void Power_Off(void) { HAL_GPIO_WritePin(CS_SIM_GPIO_Port,CS_SIM_Pin,GPIO_PIN_SET); if(debug_string) { strcpy(status,"Power off"); HAL_Delay(2000); } HAL_GPIO_WritePin(CS_SIM_GPIO_Port,CS_SIM_Pin,GPIO_PIN_RESET); } void Reset_SIM(void) { HAL_GPIO_WritePin(RST_SIM_GPIO_Port,RST_SIM_Pin,GPIO_PIN_RESET); if(debug_string) strcpy(status,"Reset SIM"); HAL_Delay(100); HAL_GPIO_WritePin(RST_SIM_GPIO_Port,RST_SIM_Pin,GPIO_PIN_SET); } uint8_t Send_Command_SIM(char* command,char* responce,uint32_t timeout,uint8_t clear_buffer) { uint32_t time; uint8_t length; length=strlen(command); time=timeout; if(HAL_UART_Transmit(&huart2,(uint8_t*)command,length,500) != HAL_OK) return 0; while(strstr(buffer2,(const char*)responce)==NULL) { BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP PHỤ LỤC if(time==0) { if(clear_buffer) Clear_Buffer2(); return 0; } time ; HAL_Delay(1); } if(clear_buffer) Clear_Buffer2(); return 1; } uint8_t Check_SIM_activated(void) { if(Send_Command_SIM(AT,OK,1000,1)) return 1; else if(Send_Command_SIM(AT,"ERROR",1000,1)) return 1; return 0; } uint8_t Check_GPS_activated(void) { if(Send_Command_SIM(GPS_Query,"+CGNSPWR: 1",1000,1)) return 1; else return 0; } void Start_SIM(void) { Power_On(); HAL_Delay(8000); if(debug_string) strcpy(status,"Send ATE0"); Send_Command_SIM(ATE0,OK,1000,1); } uint8_t Check_GPRS_connection(void) { if(Send_Command_SIM(SAPBR4,"+SAPBR: 1,1,",2000,1)) { HAL_Delay(800); Clear_Buffer2(); return 1; } else return 0; } void Activate_GPRS(void) { if(debug_string) strcpy(status,"Set connection type is GPRS"); if(!Send_Command_SIM(SAPBR1,OK,1000,1)) { /*If the system take too long to reconnect,*/ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP PHỤ LỤC /*meanning something has went wrong, Its no point for waiting*/ /*return the Function*/ HAL_Delay(1000); if(!Send_Command_SIM(SAPBR1,OK,1000,1)) return; } if(debug_string) strcpy(status,"Set APN"); if(!Send_Command_SIM(SAPBR2,OK,1000,1)) { HAL_Delay(1000); if(!Send_Command_SIM(SAPBR2,OK,1000,1)) return; } if(debug_string) strcpy(status,"Set USER"); if(!Send_Command_SIM(SAPBR2_1,OK,1000,1)) { HAL_Delay(1000); if(!Send_Command_SIM(SAPBR2_1,OK,1000,1)) return; } if(debug_string) strcpy(status,"Set PWD"); if(!Send_Command_SIM(SAPBR2_2,OK,1000,1)) { HAL_Delay(1000); if(!Send_Command_SIM(SAPBR2_2,OK,1000,1)) return; } if(debug_string) strcpy(status,"Enable GPRS"); if(!Send_Command_SIM(SAPBR3,OK,1300,1)) { HAL_Delay(1000); if(!Send_Command_SIM(SAPBR3,OK,1300,1)) return; } if(debug_string) strcpy(status,"Get IP"); if(!Send_Command_SIM(SAPBR4,OK,1300,1)) { HAL_Delay(1000); if(!Send_Command_SIM(SAPBR4,OK,1300,1)) return; } if(debug_string) strcpy(status,"Define PDP"); if(!Send_Command_SIM(CGDCONT,OK,1000,1)) { HAL_Delay(1000); if(!Send_Command_SIM(CGDCONT,OK,1000,1)) return; } if(debug_string) strcpy(status,"Attach to GPRS"); if(!Send_Command_SIM(GPRS_ATTACH,OK,1000,1)) { HAL_Delay(1000); if(!Send_Command_SIM(GPRS_ATTACH,OK,1000,1)) return; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP PHỤ LỤC } } uint8_t Init_HTTP(void) { if(debug_string) strcpy(status,"Setup HTTP"); Send_Command_SIM(HTTP_INIT,OK,1000,1); HAL_Delay(500); Send_Command_SIM(HTTPSSL_ON,OK,1000,1); HAL_Delay(500); if(debug_string) strcpy(status,"Set HTTP_PARA1"); Send_Command_SIM(HTTP_PARA1,OK,1000,1); HAL_Delay(500); if(debug_string) strcpy(status,"Set HTTP_PARA2"); Send_Command_SIM(HTTP_PARA2,OK,1000,1); HAL_Delay(500); if(Send_Command_SIM(QUERY_HTTPINIT,OK,1000,1)) { HAL_Delay(500); return 1; } else { HAL_Delay(500); return 0; } } uint8_t Check_HTTP_Service(void) { if(Send_Command_SIM(QUERY_HTTPINIT,OK,1000,1)) return 1; else return 0; } uint8_t Post_HTTP_Data(char *data, char* HTTP_PARA3) { if(debug_string) strcpy(status,"Set HTTP_PARA1"); Send_Command_SIM(HTTP_PARA1,OK,1000,1); if(debug_string) strcpy(status,"Set HTTP_PARA2"); Send_Command_SIM(HTTP_PARA2,OK,1000,1); if(debug_string) strcpy(status,"Set HTTP_PARA3"); if(!Send_Command_SIM(HTTP_PARA3,OK,1000,1)) return 0; if(debug_string) strcpy(status,"DOWNLOAD DATA"); sprintf(lengh,"AT+HTTPDATA=%d,%d\r\n",strlen(data),10000); Send_Command_SIM(lengh,"DOWNLOAD",1000,1); Send_Command_SIM(data,"OK",1000,1); if(debug_string) strcpy(status,"POST DATA"); if(!Send_Command_SIM(HTTP_POST,"+HTTPACTION: 1,20",3500,1)) return 0; return 1; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP PHỤ LỤC } void Clear_Buffer2(void) { unsigned short _size = sizeof(buffer2); huart2.RxXferCount = _size; huart2.pRxBuffPtr=(uint8_t *)&buffer2[0]; memset(buffer2,0,_size); } Code timerControl #include "timerControl.h" extern uint16_t timer1_ms; extern uint16_t timer1_min; extern uint16_t debugging_PreTimer; extern extern extern extern extern extern extern extern uint16_t debuggingTime; uint16_t GetGPS_PreTimer; uint16_t PostData_PreTimer; uint16_t Sensor_PreTimer; uint8_t debug; uint8_t postData; uint8_t getGPS; uint8_t flagSensor; // Other void updateTimer() { if(timer1_Check(&timer1_min,&debugging_PreTimer,debuggingTime)) debug = 1; /*Control the time GET GPS data*/ if(timer1_Check(&timer1_ms,&GetGPS_PreTimer,5000)) getGPS = 1; /*Control the time POST data*/ if(timer1_Check(&timer1_ms,&PostData_PreTimer,5000)) postData = 1; // Other } uint8_t timer1_Check(uint16_t *timer1_,uint16_t *timer1_previous,uint16_t duration_time) { if(*timer1_ > *timer1_previous) { if(*timer1_ - *timer1_previous >= duration_time) return 1; } if(*timer1_ < *timer1_previous) { if((60000 - (*timer1_previous - *timer1_)) >= duration_time) return 1; } return 0; } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP PHỤ LỤC Diệu Tuyền Thông số môi
CO
CO2
DoBui
UV
KinhDo
ViDo
GVHD:Hà A ThồiSVTH:Huỳnh Thị Mỹ Diệu: 16141124 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP PHỤ LỤC Đinh Thị Thanh Tuyền: 16141331 Chương trình lấy liệu từ firebase cảnh báo var val_CO; var val_CO2; var val_UV; var val_DoBui; var data = firebase.database().ref().child("data"); data.on('value', function (r) { r.forEach(function (item) { entry = item.val(); console.log(entry); val_CO = entry.CO; val_CO2 = entry.CO2; val_UV = entry.UV; val_DoBui = entry.DoBui; }); document.getElementById('CO').innerHTML = entry.CO+"ppm"; document.getElementById('CO2').innerHTML = entry.CO2 +"ppm" ; document.getElementById('tiaUV').innerHTML entry.UV+"mW/cm2" ; = document.getElementById('DoBui').innerHTML = entry.DoBui +"mg/m3"; document.getElementById('KinhDo').innerHTML entry.KinhDo+" " ; document.getElementById('ViDo').innerHTML "; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP = = entry.ViDo +" PHỤ LỤC if(val_CO-0>100) playsound1(); if(val_CO2-0>400) playsound1(); if(val_UV-0>7) playsound1(); if(val_DoBui-0>0.1) playsound1(); }); //firebase.database().ref().child("/").set(null); function playsound1() { var audio = new Audio('WARNING.mp3'); audio.play(); } Chương trình xử lý màu khoảng cách đối tượng giao diện .main{ width: 550px; margin: 0px auto; border-left: 2px solid blue; border-right: 2px solid blue; border-bottom: 2px solid blue; } h1{ color: blue; text-align: center; border: 2px solid blue; margin: 0px; padding: 10px 10px; background-color: rgb(194, 255, 251); } ul li{ margin: 0px; padding: 0px; list-style: none; font-size: 30px; } notice{ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP PHỤ LỤC margin-left: 60px; } air{ padding: 0px; margin: 0px; float: left; } khi{ width: 150px; } val{ text-align: center; } value{ padding: 0px; margin: 0px; } #text1{ color: maroon; font-size: 50px; } text2{ color: maroon; font-size: 25px; margin: 30px; clear: left; } nds{ font-size: 30px; margin: 60px; } #das{ margin-left: 20px; } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP ... pháp thi? ??t kế đo lường chất lượng khơng khí, liên tục theo dõi cảnh báo cho người dùng nồng độ chất nhiễm khơng khí, nhóm chúng em chọn đề tài ? ?Thi? ??t kế thi công hệ thống đo cảnh báo nồng độ thông. .. TỐN VÀ THI? ??T KẾ HỆ THỐNG 29 3.2.1 Thi? ??t kế sơ đồ khối hệ thống 29 3.2.2 Tính tốn thi? ??t kế mạch 30 3.2.2.1 Tính tốn thi? ??t kế khối cảm biến .30 3.2.2.2 Thi? ??t kế khối... khối nguồn thi? ??t kế sơ đồ nguyên lý mạch cho hệ thống đo nồng độ cảnh báo thông số môi trường Chƣơng 4: Thi công hệ thống Nội dung chương trình bày tóm tắt bước q trình thi cơng hệ thống hồn