色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于STM32的智能糧倉系統設計

DS小龍哥-嵌入式技術 ? 來源:DS小龍哥-嵌入式技術 ? 作者:DS小龍哥-嵌入式技 ? 2023-06-05 09:14 ? 次閱讀

一、項目背景

隨著糧食質量要求的提高和儲存方式的改變,對于糧倉環境的監測和控制也愈發重要。在過去的傳統管理中,通風、防潮等操作需要定期人工進行,精度和效率都較低。而利用嵌入式技術和智能控制算法進行監測和控制,不僅能夠實時掌握環境變化,還可以快速做出響應。

本項目選擇STM32F103RCT6作為主控芯片,采用DHT11溫濕度傳感器和MQ9可燃氣體檢測模塊進行數據采集,在本地利用顯示屏實時顯示出來。WiFi模塊則用于與手機端實現數據通信和遠程控制,方便用戶隨時了解糧倉環境狀況并進行相應的操作。同時,通過連接繼電器控制通風風扇和蜂鳴器報警,實現了智能化的溫濕度檢測和可燃氣體濃度檢測。

image-20230530221719977

image-20230530221802623

二、硬件選型

【1】主控芯片:STM32F103RCT6,這款芯片具有較高性能、低功耗等特點。

【2】溫濕度傳感器:DHT11,DHT11是一種數字溫濕度傳感器,價格便宜。

【3】可燃氣體檢測模塊:MQ9模塊,MQ9模塊對多種可燃氣體具有敏感性,可以精確檢測可燃氣體濃度。

【4】通風風扇:選擇直流電機作為通風風扇,使用繼電器進行控制。

【5】WiFi模塊:ESP8266,ESP8266是一種低成本的高性能WiFi模塊,支持TCP/UDP協議。

【6】顯示屏:采用7針引腳的OLED顯示屏,SPI接口,分辨率128x64,用于顯示當前溫度、濕度、可燃氣體濃度。

三、設計思路

【1】硬件層

通過STM32F103RCT6控制DHT11和MQ9等模塊進行數據采集。在采集到溫濕度和可燃氣體濃度數據之后,對其進行處理,并判斷是否超過了設定的閾值范圍。如果超過了閾值,就控制繼電器打開風扇,并通過蜂鳴器聲音報警。

ESP8266 WiFi模塊用于與手機端進行通信。ESP8266被配置成AP+TCP服務器模式,通過向服務器發送指令,實現遠程控制風扇及設置相應閾值等操作,并能實時接收糧倉環境狀況信息。

【2】軟件層

STM32的控制程序使用C語言編寫,采用keil軟件進行整體項目開發,對外設進行控制并實現數據采集和智能控制。主要分為采集數據、處理數據、數據顯示、控制繼電器和蜂鳴器等功能模塊。

手機APP采用Qt框架開發,實現對應數據界面顯示和邏輯操作,能夠實時顯示和控制糧倉內部的溫濕度和可燃氣體濃度,并能夠對風扇進行控制。同時,APP界面提供了設置選項,允許用戶設置報警閾值參數

四、代碼設計

【1】DHT11采集溫濕度

DHT11是一種數字溫濕度傳感器,能夠通過單總線接口輸出當前環境下的溫度和相對濕度。它由測量模塊及處理電路組成,具有體積小、成本低、響應時間快等特點,被廣泛應用于各種環境監測和自動控制系統中。

下面代碼是通過STM32F103RCT6采集DHT11溫濕度數據通過串口打印輸出(使用HAL庫):

#include "main.h"
 #include "dht11.h"
 ?
 UART_HandleTypeDef huart1;
 ?
 void SystemClock_Config(void);
 static void MX_GPIO_Init(void);
 static void MX_USART1_UART_Init(void);
 ?
 int main(void)
 {
   HAL_Init();
   SystemClock_Config();
   MX_GPIO_Init();
   MX_USART1_UART_Init();
 ?
   char temp[20];
   char humi[20];
   while (1)
   {
     DHT11_Read_Data(temp, humi); // 讀取DHT11數據
     printf("Temperature: %s C, Humidity: %s %%
", temp, humi); // 打印溫濕度數據
     HAL_Delay(2000); // 延時2秒
   }
 }
 ?
 void SystemClock_Config(void)
 {
   RCC_OscInitTypeDef RCC_OscInitStruct;
   RCC_ClkInitTypeDef RCC_ClkInitStruct;
 ?
   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
   RCC_OscInitStruct.HSEState = RCC_HSE_ON;
   RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
   RCC_OscInitStruct.HSIState = RCC_HSI_OFF;
   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
   RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
   {
     Error_Handler();
   }
   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
   {
     Error_Handler();
   }
 }
 ?
 static 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;
   if (HAL_UART_Init(&huart1) != HAL_OK)
   {
     Error_Handler();
   }
 }
 ?
 void Error_Handler(void)
 {
   __disable_irq();
   while (1)
   {
   }
 }
 ?
 static void MX_GPIO_Init(void)
 {
   GPIO_InitTypeDef GPIO_InitStruct;
 ?
   /* GPIO Ports Clock Enable */
   __HAL_RCC_GPIOC_CLK_ENABLE();
   __HAL_RCC_GPIOD_CLK_ENABLE();
   __HAL_RCC_GPIOA_CLK_ENABLE();
   __HAL_RCC_GPIOB_CLK_ENABLE();
 ?
   /*Configure GPIO pin Output Level */
   HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
 ?
   /*Configure GPIO pin : PC13 */
   GPIO_InitStruct.Pin = GPIO_PIN_13;
   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
   HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
 }
 ?
 void HAL_UART_MspInit(UART_HandleTypeDef *uartHandle)
 {
   GPIO_InitTypeDef GPIO_InitStruct;
   if (uartHandle- >Instance == USART1)
   {
     /* Peripheral clock enable */
     __HAL_RCC_USART1_CLK_ENABLE();
     __HAL_RCC_GPIOA_CLK_ENABLE();
 ?
     /**USART1 GPIO Configuration    
      PA9     ------ > USART1_TX
      PA10     ------ > USART1_RX 
      */
     GPIO_InitStruct.Pin = GPIO_PIN_9 | GPIO_PIN_10;
     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
   }
 }
 ?
 void HAL_UART_MspDeInit(UART_HandleTypeDef *uartHandle)
 {
   if (uartHandle- >Instance == USART1)
   {
     /* Peripheral clock disable */
     __HAL_RCC_USART1_CLK_DISABLE();
 ?
     /**USART1 GPIO Configuration    
      PA9     ------ > USART1_TX
      PA10     ------ > USART1_RX 
      */
     HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9 | GPIO_PIN_10);
   }
 }

s上面代碼里,使用了DHT11讀取函數DHT11_Read_Data(),該函數返回溫度值和濕度值,并將其轉換為字符串形式。通過串口與電腦連接后,可以使用串口調試軟件來查看STM32采集到的溫濕度數據。

【2】采集MQ9有毒氣氣體

MQ9是一種可燃氣體傳感器,可以檢測空氣中的多種可燃氣體,例如甲烷、丙烷、丁烷等。它的工作原理是通過加熱敏感元件,使其產生一個電阻變化,從而實現檢測目標氣體的濃度。MQ9具有高靈敏度、快速響應和穩定性好等特點,廣泛應用于火災報警、室內空氣質量監測、工業生產等領域。需要注意的是,MQ9只能檢測可燃氣體,不能檢測其他氣體,如二氧化碳、氧氣等。

下面代碼是通過STM32F103RCT6采集MQ9可燃氣體轉為濃度通過串口打?。ㄊ褂肏AL庫):

#include "main.h"
 ?
 UART_HandleTypeDef huart1;
 ADC_HandleTypeDef hadc1;
 ?
 void SystemClock_Config(void);
 static void MX_GPIO_Init(void);
 static void MX_USART1_UART_Init(void);
 static void MX_ADC1_Init(void);
 ?
 int main(void)
 {
   HAL_Init();
   SystemClock_Config();
   MX_GPIO_Init();
   MX_USART1_UART_Init();
   MX_ADC1_Init();
 ?
   uint16_t adc_value;
   float voltage;
   float concentration;
   char buffer[20];
 ?
   while (1)
   {
     HAL_ADC_Start(&hadc1); // 啟動ADC轉換
     if (HAL_ADC_PollForConversion(&hadc1, 100) == HAL_OK) // 等待轉換完成
     {
       adc_value = HAL_ADC_GetValue(&hadc1); // 獲取原始ADC值
       voltage = (float)adc_value * 3.3f / 4096.0f; // 轉換為電壓值
       concentration = (float)(2.5f - voltage) / 0.2f; // 根據MQ9傳感器曲線計算濃度值
       sprintf(buffer, "Concentration: %.2f %%
", concentration); // 將濃度值轉換為字符串
       printf("%s", buffer); // 通過串口打印濃度值
     }
     HAL_ADC_Stop(&hadc1); // 停止ADC轉換
     HAL_Delay(2000); // 延時2秒
   }
 }
 ?
 void SystemClock_Config(void)
 {
   RCC_OscInitTypeDef RCC_OscInitStruct;
   RCC_ClkInitTypeDef RCC_ClkInitStruct;
 ?
   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
   RCC_OscInitStruct.HSEState = RCC_HSE_ON;
   RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
   RCC_OscInitStruct.HSIState = RCC_HSI_OFF;
   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
   RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
   {
     Error_Handler();
   }
   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
   {
     Error_Handler();
   }
 }
 ?
 static void MX_ADC1_Init(void)
 {
   ADC_ChannelConfTypeDef sConfig;
 ?
   hadc1.Instance = ADC1;
   hadc1.Init.ScanConvMode = DISABLE;
   hadc1.Init.ContinuousConvMode = DISABLE;
   hadc1.Init.DiscontinuousConvMode = DISABLE;
   hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
   hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
   hadc1.Init.NbrOfConversion = 1;
   if (HAL_ADC_Init(&hadc1) != HAL_OK)
   {
     Error_Handler();
   }
   sConfig.Channel = ADC_CHANNEL_5;
   sConfig.Rank = ADC_REGULAR_RANK_1;
   sConfig.SamplingTime = ADC_SAMPLETIME_55CYCLES5;
   if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
   {
     Error_Handler();
   }
 }
 ?
 static 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;
   if (HAL_UART_Init(&huart1) != HAL_OK)
   {
     Error_Handler();
   }
 }
 ?
 void Error_Handler(void)
 {
   __disable_irq();
   while (1)
   {
   }
 }
 ?
 static void MX_GPIO_Init(void)
 {
   GPIO_InitTypeDef GPIO_InitStruct;
 ?
   /* GPIO Ports Clock Enable */
   __HAL_RCC_GPIOC_CLK_ENABLE();
   __HAL_RCC_GPIOD_CLK_ENABLE();
   __HAL_RCC_GPIOA_CLK_ENABLE();
   __HAL_RCC_GPIOB_CLK_ENABLE();
 ?
   /*Configure GPIO pin Output Level */
   HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
 ?
   /*Configure GPIO pin : PC13 */
   GPIO_InitStruct.Pin = GPIO_PIN_13;
   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
   HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
 }
 ?
 void HAL_UART_MspInit(UART_HandleTypeDef *uartHandle)
 {
   GPIO_InitTypeDef GPIO_InitStruct;
   if (uartHandle- >Instance == USART1)
   {
     /* Peripheral clock enable */
     __HAL_RCC_USART1_CLK_ENABLE();
     __HAL_RCC_GPIOA_CLK_ENABLE();
 ?
     /**USART1 GPIO Configuration    
      PA9     ------ > USART1_TX
      PA10     ------ > USART1_RX 
      */
     GPIO_InitStruct.Pin = GPIO_PIN_9 | GPIO_PIN_10;
     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
   }
 }
 ?
 void HAL_UART_MspDeInit(UART_HandleTypeDef *uartHandle)
 {
   if (uartHandle- >Instance == USART1)
   {
     /* Peripheral clock disable */
     __HAL_RCC_USART1_CLK_DISABLE();
 ?
     /**USART1 GPIO Configuration    
      PA9     ------ > USART1_TX
      PA10     ------ > USART1_RX 
      */
     HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9 | GPIO_PIN_10);
   }
 }

上面代碼里,通過ADC采集MQ9可燃氣體濃度。由于MQ9傳感器的輸出信號與濃度值之間不是線性關系,需要根據其曲線進行計算,將電壓轉換為濃度值。

在這里,采用了簡單的公式:Concentration=(2.5?V)/0.2

其中V為MQ9傳感器輸出的電壓值,Concentration為可燃氣體濃度。在主函數里,先調用MX_ADC1_Init()函數中初始化ADC,將輸入通道設置為PA5(也就是ADC_CHANNEL_5)。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2551

    文章

    51208

    瀏覽量

    754536
  • 單片機
    +關注

    關注

    6039

    文章

    44574

    瀏覽量

    636322
  • STM32
    +關注

    關注

    2270

    文章

    10906

    瀏覽量

    356530
  • 蜂鳴器
    +關注

    關注

    12

    文章

    892

    瀏覽量

    45993
  • STM32F103RCT6
    +關注

    關注

    10

    文章

    22

    瀏覽量

    9915
收藏 人收藏

    評論

    相關推薦

    糧倉監控物聯網系統解決方案

    霉爛、保證糧食的存儲質量,減少不必要的浪費。 系統簡介 糧倉監控物聯網系統解決方案,通過物聯網、傳感器、無線通信、云計算等技術,結合糧倉的網絡條件、規模大小等實際需求,部署應用有線/無
    的頭像 發表于 08-08 15:30 ?776次閱讀

    單片機的糧倉多點測溫系統

    單片機的糧倉多點測溫系統
    發表于 08-16 14:16

    如何實現單片機糧倉溫度遠程采集傳送系統設計?

    如何實現單片機糧倉溫度遠程采集傳送系統設計?
    發表于 01-27 07:44

    基于World Wind的三維智能糧倉管理系統

    基于World Wind的智能糧倉管理系統的需求,我們以糧倉管理系統的多方數據為基礎,充分考慮糧倉
    發表于 11-14 10:56 ?11次下載
    基于World Wind的三維<b class='flag-5'>智能</b><b class='flag-5'>糧倉</b>管理<b class='flag-5'>系統</b>

    使用STM32單片機設計實現糧倉環境監測系統的資料說明

    在糧食倉儲過程中,為給糧食提供較好的倉儲環境,往往需要對糧倉環境進行實時的監測,因此設計基于STM32單片機為核心控制單元的實時監測系統,通過傳感器采集環境數據并實時顯示,通過無線模塊實時將數據傳輸至服務器平臺。
    發表于 04-21 08:00 ?31次下載
    使用<b class='flag-5'>STM32</b>單片機設計實現<b class='flag-5'>糧倉</b>環境監測<b class='flag-5'>系統</b>的資料說明

    基于labview的糧倉管理系統

    設計一個項目project,命名為糧倉管理系統; 獨立糧倉要求: 這個糧倉有5個獨立的糧倉,每個糧倉
    發表于 05-16 16:08 ?63次下載

    應用在智慧糧倉系統中的溫度傳感芯片

    智慧糧倉監控管理系統結合當前先進的傳感器技術、數字通信技術、自動化控制技術,將糧倉用濕度、溫度、氮濃度傳感器安裝于糧倉空間,實現對糧倉內部溫
    的頭像 發表于 05-12 09:32 ?672次閱讀
    應用在智慧<b class='flag-5'>糧倉</b><b class='flag-5'>系統</b>中的溫度傳感芯片

    濟南祥控糧倉環境監控系統

    祥控糧倉環境監測系統主要由數據采集終端、現場主機、上位機監控平臺等組成。
    的頭像 發表于 01-31 09:43 ?649次閱讀
    濟南祥控<b class='flag-5'>糧倉</b>環境監控<b class='flag-5'>系統</b>

    智能糧倉監控系統解決方案

    倉儲技術等在糧食倉儲領域的應用,實現“作業流程標準化、信息采集自動化、倉儲管理智能化、業務管理集成化”,全方位提高糧庫的信息化、自動化和智能水平。 智能糧倉監控
    的頭像 發表于 07-05 16:42 ?602次閱讀

    糧倉環境監控系統解決方案

    糧倉,作為糧食存儲的地點,其重要性不言而喻。糧倉的安全與否,于國于民都是影響飯碗的大事,因此需要時刻關注糧倉的安全。 糧倉環境監控系統解決方
    的頭像 發表于 07-14 16:09 ?578次閱讀

    無源智能鎖在智慧糧倉的運用

    無源智能鎖在智慧糧倉的運用
    的頭像 發表于 07-31 23:02 ?569次閱讀
    無源<b class='flag-5'>智能</b>鎖在智慧<b class='flag-5'>糧倉</b>的運用

    基于單片機的糧倉遠程監控系統的設計

    基于單片機的糧倉遠程監控系統的設計(實物)
    發表于 01-02 09:59 ?3次下載

    基于單片機的糧倉遠程監控系統的設計

    電子發燒友網站提供《基于單片機的糧倉遠程監控系統的設計.rar》資料免費下載
    發表于 01-12 10:52 ?15次下載

    基于STM32單片機的糧倉溫濕度控制系統設計

    系統內使用STM32單片機進行主控,系統內可以檢測糧倉的溫濕度,另外通過EEPROM進行溫濕度閾值的保存,當溫度和濕度超過或者低于設定的閾值后就會進行相應的控制和調節。
    的頭像 發表于 06-28 14:26 ?1684次閱讀
    基于<b class='flag-5'>STM32</b>單片機的<b class='flag-5'>糧倉</b>溫濕度控制<b class='flag-5'>系統</b>設計

    糧倉環境智能監控系統組成與功能

    問題,造成巨大的經濟損失。因此,構建一個穩定、可控的糧倉環境,對于保障糧食安全、減少損耗具有重要意義。 糧倉環境智能監控系統,集成自動化控制、智能
    的頭像 發表于 08-30 15:54 ?310次閱讀
    主站蜘蛛池模板: 男人天堂999| 久久精品无码人妻无码AV蜜臀| 黄色毛片a| 午夜国产羞羞视频免费网站| 处xxxx.88| 熟妇内谢69XXXXXA片| 宫交拔不出来了h黑人| 善良的小峓子2在钱中文版女主角 善良的小峓子2在钱免费中文字 | 国产AV无码熟妇人妻麻豆| 伊在香蕉国产在线视频| 久久精品久精品99热| 中文字幕乱码在线人视频| 男女又黄又刺激B片免费网站| se01短视频在线观看| 日本午夜精品一区二区三区电影 | 亚洲精品视频区| 久久无码人妻中文国产| 99久久国产视频| 皮皮色狼网| 国产精品福利电影| 一个人免费视频在线观看高清频道| 捆绑调教网站| XXXchinese国产HD| 在线成 人av影院| 日韩精品一区二区三区色欲AV| 国产精品人妻在线观看| a一级一片免费观看视频| 脱女学小内内摸出水网站免费| 寂寞骚妇女被后入式抽插| 国产成人在线观看网站| 在线免费公开视频| 亚洲国产精品一区二区动图| 老熟女重囗味HDXX| 国产 交换 丝雨 巅峰| 99在线免费观看| 亚洲三级在线观看| 欧美 亚洲 日韩 在线综合| 国产乱码精品AAAAAAAA| 最新国产麻豆精品| 丝袜诱惑qvod| 日韩在线视频www色|