1. Trang chủ
  2. » Giáo Dục - Đào Tạo

(Đồ án tốt nghiệp) thiết kế và thi công bộ điều khiển thiết bị điện cho gia đình

123 12 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 123
Dung lượng 13,53 MB

Nội dung

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM KHOA ĐÀO TẠO CHẤT LƯỢNG CAO ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT MÁY TÍNH THIẾT KẾ VÀ THI CƠNG BỘ ÐIỀU KHIỂN THIẾT BỊ ÐIỆN CHO GIA ÐÌNH GVHD: ThS NGUYỄN ÐÌNH PHÚ SVTH : NGUYỄN DUY HÙNG MSSV : 13119087 SVTH : VŨ CHUNG HIẾU MSSV : 13119194 SKL005030 Tp Hồ Chí Minh, tháng 06/2017 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH KHOA ĐÀO TẠO CHẤT LƯỢNG CAO - ĐỒ ÁN TỐT NGHIỆP Đề tài: THIẾT KẾ VÀ THI CÔNG BỘ ĐIỀU KHIỂN THIẾT BỊ ĐIỆN CHO GIA ĐÌNH GVHD: SVTH : MSSV : SVTH : MSSV : Khóa : Ngành : ThS NGUYỄN ĐÌNH PHÚ NGUYỄN DUY HÙNG 13119087 VŨ CHUNG HIẾU 13119194 2013 CƠNG NGHỆ KỸ THUẬT MÁY TÍNH Tp Hồ Chí Minh, tháng năm 2017 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH KHOA ĐÀO TẠO CHẤT LƯỢNG CAO - ĐỒ ÁN TỐT NGHIỆP Đề tài: THIẾT KẾ VÀ THI CÔNG BỘ ĐIỀU KHIỂN THIẾT BỊ ĐIỆN CHO GIA ĐÌNH GVHD: SVTH : MSSV : SVTH : MSSV : Khóa : Ngành : Th.S NGUYỄN ĐÌNH PHÚ NGUYỄN DUY HÙNG 13119087 VŨ CHUNG HIẾU 13119194 2013 CÔNG NGHỆ KỸ THUẬT MÁY TÍNH Tp Hồ Chí Minh, tháng năm 2017 CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc *** Tp Hồ Chí Minh, ngày 21 tháng năm 2017 NHIỆM VỤ ĐỒ ÁN MÔN HOCC Họ tên sinh viên: Nguyễn Duy Hùng Vũ Chung Hiếu Ngành: Cơng Nghệ Kỹ Thuật Máy Tính Giảng viên hướng dẫn: Th.S Nguyễn Đình Phú Ngày nhâṇ đề tài: 22/2/2017 MSSV: 13119087 MSSV: 13119194 Lớp: 13119CL2 ĐT: 0903982443 Ngày nộp đề tài: 11/7/2017 Tên đề tài: Thiết Kế Và Thi Công Bộ Điều Khiển Thiết Bị Điện Cho Gia Đình Các số liệu, tài liệu ban đầu: Tài liệu Vi điều khiển ARM STM32 Cortex M4, Giáo trình Vi điều khiển PIC, Đồ án mơn học 2: Thiết Kế Và Thi Cơng Mơ Hình Nhà Thơng Minh Nội dung thưcc̣ hiêṇ đềtaì : Thiết kế xây dựng điều khiển thiết bị điện cho nhà Với điều khiển trung tâm phụ trách phân tích, tính tốn tín hiệu vào từ module khác module công suất (dùng để điều khiển thiết bị điện dân dụng gia đình), module cảm biến (dùng để cảnh báo rị rỉ khí gas, cảnh báo nhiệt, báo cháy, ) module mở rộng cần giám sát an ninh qua hình ảnh, chống trộm, điều khiển từ xa qua internet Sản phẩm: Nhóm hồn thành sản phẩm mạch điều khiển trung tâm, mạch điều khiển công suất cho thiết bị điện dân dụng mạch cảm biến nhiệt độ khí gas Tất kết nối liệu với thông qua mạng không dây nội GIẢNG VIÊN HƯỚNG DẪN CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc *** ́́ PHIÊU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN MSSV: 13119087 Họ tên Sinh viên: Nguyễn Duy Hùng MSSV: 13119194 Vũ Chung Hiếu Ngành: Công Nghệ Kỹ Thuật Máy Tính Tên đề tài: Thiết Kế Và Thi Công Bộ Điều Khiển Thiết Bị Điện Cho Gia Đình Họ tên Giáo viên hướng dẫn: Th.S Nguyễn Đình Phú NHẬN XÉT Về nội dung đề tài & khối lượng thực hiện: Ưu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không? Đánh giá loại: Điểm:……………….(Bằng chữ: ) Tp Hồ Chí Minh, ngày tháng năm 2017 Giáo viên hướng dẫn CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc *** ́́ PHIÊU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN Họ tên Sinh viên: Nguyễn Duy Hùng Vũ Chung Hiếu Ngành: Công Nghệ Kỹ Thuật Máy Tính Tên đề tài: Thiết Kế Và Thi Công Bộ Điều Khiển Thiết Bị Điện Cho Gia Đình Họ tên Giáo viên phản biện: NHẬN XÉT Về nội dung đề tài & khối lượng thực hiện: Ưu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không? Đánh giá loại: Điểm:……………….(Bằng chữ: ) Tp Hồ Chí Minh, ngày tháng năm 2017 Giáo viên phản biện ĐỒ ÁN TỐT NGHIỆP _ LỜI CAM ĐOAN Nhóm sinh viên thực đề tài xin cam đoan cơng trình nghiên cứu nhóm Các số liệu, kết nêu luận văn trung thực chưa công bố cơng trình khác Tp Hồ Chí Minh, ngày 20 tháng 07 năm 2017 (Ký tên) _ THIẾT KẾ VÀ THI CÔNG BỘ ĐIỀU KHIỂN THIẾT BỊ ĐIỆN TRONG GIA ĐÌNH Trang i ĐỒ ÁN TỐT NGHIỆP _ LỜI CẢM ƠN Nhóm sinh viên thực xin gửi lời cảm ơn chân thành đến quý thầy cô khoa Đào Tạo Chất Lượng Cao giảng dạy chúng suốt bốn năm học tạo điều kiện thuận lợi để chúng em thực tốt đề tài Cảm ơn gia đình, cha mẹ nguồn động viên to lớn vật chất tinh thần suốt thời gian học hành, để em có tương lai, theo đuổi ước mơ nghiệp Đặc biệt cảm ơn thầy Nguyễn Đình Phú đa ̃tâṇ tınh hướng dẫn vàtaọ điều kiêṇ ̀̀ thuâṇ lơịcho chúng em suốt thời gian thực đồ án tốt nghiệp Chúng em xin phép gửi đến thầy lòng biết ơn lời cảm ơn chân thành sâu sắc Kiến thức, kinh nghiệm tâm nghề nghiệp thầy khơng giúp đỡ chúng em hồn thành tốt đề tài mà gương để chúng em học tập noi theo đường sau Bên cạnh đó, chúng em xin cảm ơn cać anh, chị khóa trước cun ̃ g cać baṇ sinh viên lớp 13119CL2 đa ̃nhiêṭtınh đóng góp ýkiến vàchia se k ̃ inh ̀̀ nghiêṃ đểgiúp chúng em hoàn thành đề tài này Cuối cùng, đề tài hoaǹ thaǹ h kế hoạch vađ̀ ảm bảo thơì haṇ kiến thức hạn hẹp chắn se ̃không tra ́nh khỏi thiếu sót, mong Thầy/Cô vac̀ ać baṇ sinh viên thông cảm Nhóm mong nhâṇ đươcc̣ y ḱ iến nhận xét đóng góp Thầy/Cơ vac̀ ać baṇ sinh viên Chúng em xin chân thành cảm ơn! Nhóm thực đề tài _ THIẾT KẾ VÀ THI CƠNG BỘ ĐIỀU KHIỂN THIẾT BỊ ĐIỆN TRONG GIA ĐÌNH Trang ii ĐỒ ÁN TỐT NGHIỆP _ MỤC LỤC LỜI CAM ĐOAN i LỜI CẢM ƠN ii MỤC LỤC iii DANH MỤC CÁC TỪ VIẾT TẮT v DANH MỤC CÁC HÌNH ẢNH vi DANH MỤC CÁC BẢNG BIỂU viii LỜI MỞ ĐẦU ix Chương 1: GIỚI THIỆU TỔNG QUAN ĐỀ TÀI 1.1 Đặt vấn đề 1.2 Tính cấp thiết đề tài 1.3 Mục tiêu nghiên cứu 1.4 1.5 Nhiệm vu Ccủa nghiên cưu ́ 1.6 Phương pháp nghiên cứu 1.7 Bố cục đề tài Đối tượng phạm vi nghiên cứu Chương 2: CƠ SỞ LÝ THUYẾT LIÊN QUAN 2.1 Internet Of Things 2.1.1 Giới thiệu 2.1.2 Mơ hình 2.2 Vi điều khiển STM32F407VET6 2.2.1 Giới thiệu dòng vi điều khiển STM32 2.2.2 Thông số kĩ thuật 2.3 Module LCD TFT Inch 10 2.4 Module Wifi Esp 8266 12 2.4.1 Giới thiệu 12 2.4.2 Firmware cách nạp 14 2.4.3 Các tập lệnh AT 15 2.5 Adrunio nano 17 2.6 Module sim 800L 18 2.7 Module thời gian thực RTC 21 2.8 Giới thiệu giao thức TCP/IP 22 2.8.1 Khái niệm TCP/IP 22 _ THIẾT KẾ VÀ THI CÔNG BỘ ĐIỀU KHIỂN THIẾT BỊ ĐIỆN TRONG GIA ĐÌNH Trang iii ĐỒ ÁN TỐT NGHIỆP _ 2.8.2 Chức TCP/IP: 2.8.3 Cấu trúc TCP/IP 2.8.4 Phương thức hoạt động giao thức TCP/I 2.8.5 Quá trình đóng mở gói liệu TCP/IP 2.8.6 So sánh TCP/IP với OSI 2.9 Hướng dẫn mở Port Modem Wifi DNS tự động cho IP động 2.9.1 Mở port modem wifi 2.9.2 Cấu hình Chương 3: THIẾT KẾ VÀ THI CÔNG HỆ THỐNG 3.1 Thiết kế vàthi công mạch điều 3.1.1 Sơ đồ khối mạch 3.1.2 3.2 3.2.1 3.2.2 Thiết kế mạch module cảm biến Thiết kếphần mềm va giai thuât ́̀ Ýtương ́ Lưu đồgiai thuât ́ 3.2.3 Thiết kếphần mềm điều khiển tang android ́ Chương 4: VẬN HÀNH VÀ KIỂM TRA KẾT QUẢ 4.1 Kết đạt lý thuyết 4.2 Kết đạt thực hành 4.3 Kết chạy thực tế Chương 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 5.1 Kết luận 5.2 Hướng phát triển PHỤ LỤC CODE CCS DÀNH CHO ARM: CODE DÀNH CHO ADRUNIO NANO: TÀI LIỆU THAM KHẢO _ THIẾT KẾ VÀ THI CÔNG BỘ ĐIỀU KHIỂN THIẾT BỊ ĐIỆN TRONG GIA ĐÌNH Trang iv ĐỒ ÁN TỐT NGHIỆP _ void MX_I2C3_Init(void) { hi2c3.Instance = I2C3; hi2c3.Init.ClockSpeed = 100000; hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; hi2c3.Init.OwnAddress1 = 0; hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; hi2c3.Init.OwnAddress2 = 0; hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; HAL_I2C_Init(&hi2c3); } /* SDIO init function */ void MX_SDIO_SD_Init(void) { hmsd.Instance = SDIO; hmsd.Init.ClockEdge = SDIO_CLOCK_EDGE_RISING; hmsd.Init.ClockBypass = SDIO_CLOCK_BYPASS_DISABLE; hmsd.Init.ClockPowerSave = SDIO_CLOCK_POWER_SAVE_DISABLE; hmsd.Init.BusWide = SDIO_BUS_WIDE_1B; hmsd.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_DISABLE; hmsd.Init.ClockDiv = 0; } /* TIM2 init function */ void MX_TIM2_Init(void) { TIM_ClockConfigTypeDef sClockSourceConfig; TIM_MasterConfigTypeDef sMasterConfig; htim2.Instance = TIM2; htim2.Init.Prescaler = 42000; htim2.Init.CounterMode = TIM_COUNTERMODE_UP; htim2.Init.Period = 3999; htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; HAL_TIM_Base_Init(&htim2); sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig); sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig); } _ THIẾT KẾ VÀ THI CÔNG BỘ ĐIỀU KHIỂN THIẾT BỊ ĐIỆN TRONG GIA ĐÌNH Trang 90 ĐỒ ÁN TỐT NGHIỆP _ /* TIM3 init function */ void MX_TIM3_Init(void) { TIM_ClockConfigTypeDef sClockSourceConfig; TIM_MasterConfigTypeDef sMasterConfig; htim3.Instance = TIM3; htim3.Init.Prescaler = 42000; htim3.Init.CounterMode = TIM_COUNTERMODE_UP; htim3.Init.Period = 1999; htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; HAL_TIM_Base_Init(&htim3); sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig); sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig); } /* USART1 init function */ void MX_USART1_UART_Init(void) { huart1.Instance = USART1; huart1.Init.BaudRate = 115200; huart1.Init.WordLength = UART_WORDLENGTH_8B; huart1.Init.StopBits = UART_STOPBITS_1; huart1.Init.Parity = UART_PARITY_NONE; huart1.Init.Mode = UART_MODE_TX_RX; huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart1.Init.OverSampling = UART_OVERSAMPLING_16; HAL_UART_Init(&huart1); } /* USART2 init function */ void MX_USART2_UART_Init(void) { huart2.Instance = USART2; huart2.Init.BaudRate = 115200; huart2.Init.WordLength = UART_WORDLENGTH_8B; huart2.Init.StopBits = UART_STOPBITS_1; huart2.Init.Parity = UART_PARITY_NONE; huart2.Init.Mode = UART_MODE_TX_RX; huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; _ THIẾT KẾ VÀ THI CÔNG BỘ ĐIỀU KHIỂN THIẾT BỊ ĐIỆN TRONG GIA ĐÌNH Trang 91 ĐỒ ÁN TỐT NGHIỆP _ huart2.Init.OverSampling = UART_OVERSAMPLING_16; HAL_UART_Init(&huart2); } /* USART3 init function */ void MX_USART3_UART_Init(void) { huart3.Instance = USART3; huart3.Init.BaudRate = 115200; huart3.Init.WordLength = UART_WORDLENGTH_8B; huart3.Init.StopBits = UART_STOPBITS_1; huart3.Init.Parity = UART_PARITY_NONE; huart3.Init.Mode = UART_MODE_TX_RX; huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart3.Init.OverSampling = UART_OVERSAMPLING_16; HAL_UART_Init(&huart3); } void MX_USART6_UART_Init(void) { huart6.Instance = USART6; huart6.Init.BaudRate = 115200; huart6.Init.WordLength = UART_WORDLENGTH_8B; huart6.Init.StopBits = UART_STOPBITS_1; huart6.Init.Parity = UART_PARITY_NONE; huart6.Init.Mode = UART_MODE_TX_RX; huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart6.Init.OverSampling = UART_OVERSAMPLING_16; HAL_UART_Init(&huart6); } /** Configure pins as * Analog * Input * Output * EVENT_OUT * EXTI */ void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct; /* GPIO Ports Clock Enable */ HAL_RCC_GPIOE_CLK_ENABLE(); HAL_RCC_GPIOH_CLK_ENABLE(); HAL_RCC_GPIOA_CLK_ENABLE(); HAL_RCC_GPIOB_CLK_ENABLE(); _ THIẾT KẾ VÀ THI CÔNG BỘ ĐIỀU KHIỂN THIẾT BỊ ĐIỆN TRONG GIA ĐÌNH Trang 92 ĐỒ ÁN TỐT NGHIỆP _ HAL_RCC_GPIOC_CLK_ENABLE(); HAL_RCC_GPIOD_CLK_ENABLE(); /*Configure GPIO pins : PE3 PE4 */ / GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_PIN_4; / GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; / GPIO_InitStruct.Pull = GPIO_PULLUP; / HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); /*Configure GPIO pins : PA6 PA7 */ GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6|GPIO_PIN_7, GPIO_PIN_RESET); GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOE, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, 0); /* EXTI interrupt init*/ / HAL_NVIC_SetPriority(EXTI3_IRQn, 5, 0); / HAL_NVIC_EnableIRQ(EXTI3_IRQn); / / HAL_NVIC_SetPriority(EXTI4_IRQn, 6, 0); HAL_NVIC_EnableIRQ(EXTI4_IRQn); } void MX_ADC1_Init(void) { ADC_ChannelConfTypeDef sConfig; /**Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion) */ hadc1.Instance = ADC1; hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV2; hadc1.Init.Resolution = ADC_RESOLUTION_10B; hadc1.Init.ScanConvMode = DISABLE; hadc1.Init.ContinuousConvMode = ENABLE; hadc1.Init.DiscontinuousConvMode = DISABLE; hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; _ THIẾT KẾ VÀ THI CÔNG BỘ ĐIỀU KHIỂN THIẾT BỊ ĐIỆN TRONG GIA ĐÌNH Trang 93 ĐỒ ÁN TỐT NGHIỆP _ hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; hadc1.Init.NbrOfConversion = 1; hadc1.Init.DMAContinuousRequests = DISABLE; hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV; HAL_ADC_Init(&hadc1); /**Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time */ sConfig.Channel = ADC_CHANNEL_10; sConfig.Rank = 1; sConfig.SamplingTime = ADC_SAMPLETIME_144CYCLES; HAL_ADC_ConfigChannel(&hadc1, &sConfig); } /* ADC2 init function */ void MX_ADC2_Init(void) { ADC_ChannelConfTypeDef sConfig; /**Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion) */ hadc2.Instance = ADC2; hadc2.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV2; hadc2.Init.Resolution = ADC_RESOLUTION_12B; hadc2.Init.ScanConvMode = DISABLE; hadc2.Init.ContinuousConvMode = ENABLE; hadc2.Init.DiscontinuousConvMode = DISABLE; hadc2.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; hadc2.Init.DataAlign = ADC_DATAALIGN_RIGHT; hadc2.Init.NbrOfConversion = 1; hadc2.Init.DMAContinuousRequests = DISABLE; hadc2.Init.EOCSelection = ADC_EOC_SINGLE_CONV; HAL_ADC_Init(&hadc2); /**Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time */ sConfig.Channel = ADC_CHANNEL_12; sConfig.Rank = 1; sConfig.SamplingTime = ADC_SAMPLETIME_144CYCLES; HAL_ADC_ConfigChannel(&hadc2, &sConfig); } /** * Enable DMA controller clock */ void MX_DMA_Init(void) _ THIẾT KẾ VÀ THI CÔNG BỘ ĐIỀU KHIỂN THIẾT BỊ ĐIỆN TRONG GIA ĐÌNH Trang 94 ĐỒ ÁN TỐT NGHIỆP _ { /* DMA controller clock enable */ HAL_RCC_DMA1_CLK_ENABLE(); /* DMA interrupt init */ /* DMA1_Stream2_IRQn interrupt configuration */ HAL_NVIC_SetPriority(DMA1_Stream2_IRQn, 0, 0); HAL_NVIC_EnableIRQ(DMA1_Stream2_IRQn); } #ifdef USE_FULL_ASSERT 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 _ THIẾT KẾ VÀ THI CÔNG BỘ ĐIỀU KHIỂN THIẾT BỊ ĐIỆN TRONG GIA ĐÌNH Trang 95 ĐỒ ÁN TỐT NGHIỆP _ CODE DÀNH CHO MODULE CẢM BIẾN: #include SoftwareSerial esp8266(2, 3); // RX | TX #include "DHT.h" const int DHTPIN = 16; //Đọ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); int val,gasval,cel,mv; int gasPin = 21; float h,t; #define TIMEOUT 5000 // mS void cauhinhesp(); String recieve,gui,nhietdo,gas; char recieve2[128]; String IncomingString=""; boolean StringReady = false; int time=0; void setup() { pinMode(13, OUTPUT); pinMode(14, OUTPUT); pinMode(15, OUTPUT); pinMode(12, INPUT); pinMode(7, OUTPUT); // RESET ESP digitalWrite(7,HIGH); Serial.begin(115200); // communication with the host computer //while (!Serial) { ; } / Start the software serial for communication with the ESP8266 esp8266.begin(115200); dht.begin(); // Khởi động cảm biến Serial.println(""); Serial.println("Remember to to set Both NL & CR in the serial monitor."); Serial.println("Ready"); Serial.println(""); // esp8266.println("AT"); _ THIẾT KẾ VÀ THI CÔNG BỘ ĐIỀU KHIỂN THIẾT BỊ ĐIỆN TRONG GIA ĐÌNH Trang 96 ĐỒ ÁN TỐT NGHIỆP _ delay(30); cauhinhesp(); / esp8266.write("AT"); / esp8266.write("\r"); / esp8266.write("\n"); } void cauhinhesp() { esp8266.println("AT\r"); //SendCommand("AT+RST", "Ready"); delay(5000); SendCommand("AT","OK"); SendCommand("AT+CWMODE=1","OK"); SendCommand("AT+CWJAP=\"Pen Kun 3\",\"h032212101995\"","OK"); SendCommand("AT+CIFSR", "OK"); SendCommand("AT+CIPMUX=0","OK"); SendCommand("AT+CIPMODE=0", "OK"); delay(1000); SendCommand("AT+CIPSTART=\"TCP\",\"192.168.1.100\",80","OK"); delay(2000); SendCommand("AT+CIPSTART=\"TCP\",\"192.168.1.100\",80","OK"); delay(2000); gui="SEN1"; send(gui); } String esprecieve () { delay(1000); while (esp8266.available()) { recieve+=(char)esp8266.read(); } return recieve; } void loop() _ THIẾT KẾ VÀ THI CÔNG BỘ ĐIỀU KHIỂN THIẾT BỊ ĐIỆN TRONG GIA ĐÌNH Trang 97 ĐỒ ÁN TỐT NGHIỆP _ { StringReady = false; while(esp8266.available()) { IncomingString=esp8266.readString(); / char c = esp8266->read(); / if (c == '\0') continue; / tmpData += c; StringReady= true; //donhietdogas(); if (StringReady){ Serial.println("Received String: " + IncomingString); } if (IncomingString.indexOf("DO") != -1) { digitalWrite(13,HIGH); donhietdogas(); delay(1000); send(nhietdo); break; } if (IncomingString.indexOf("D8") != -1) { digitalWrite(13,HIGH); digitalWrite(14,LOW); break; } if (IncomingString.indexOf("D9") != -1) { digitalWrite(13,HIGH); digitalWrite(15,LOW); break; } IncomingString=" "; } / IncomingString=" "; donhietdogas(); if(digitalRead(12)==0) { delay(500); if(digitalRead(12)==0) _ THIẾT KẾ VÀ THI CÔNG BỘ ĐIỀU KHIỂN THIẾT BỊ ĐIỆN TRONG GIA ĐÌNH Trang 98 ĐỒ ÁN TỐT NGHIỆP _ Serial.println("Nut da nhan"); Serial.println("AT+CWSTARTSMART\r"); esp8266.println("AT+CWSTARTSMART\r"); delay(20000); //=============== ket noi voi sever SendCommand("AT+CIFSR", "OK"); SendCommand("AT+CIPMUX=0","OK"); SendCommand("AT+CIPMODE=0", "OK"); delay(1000); SendCommand("AT+CIPSTART=\"TCP\",\"192.168.1.100\",80","OK"); delay(2000); SendCommand("AT+CIPSTART=\"TCP\",\"192.168.1.100\",80","OK"); delay(2000); } if(Serial.available()) { / the following delay is required because otherwise the arduino will read the first letter of the command but not the rest / In other words without the delay if you use AT+RST, for example, the Arduino will read the letter A send it, then read the rest and send it / but we want to send everything at the same time delay(1000); String command=""; while(Serial.available()) // read the command character by character { / read one character command+=(char)Serial.read(); } command+=('\r'); esp8266.println(command); // send the read character to the esp8266 } digitalWrite(13,LOW); } void donhietdogas() { / for (time=0;time

Ngày đăng: 27/12/2021, 08:49

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w