描述
<div>
<p style="line-height: 1.8;"> </p>
<h3 style="line-height: 1.8;">* 1、项目功能介绍</h3>
<hr>
<p style="line-height: 1.8;">1.采用盛思锐传感器作为温湿度传感器模块,高精度、体积小,适合采集周围环境温湿度。</p>
<p style="line-height: 1.8;">2.左上角有一个按键,按下可以使采集到的温度和湿度在数码管上分别闪烁两次。</p>
<p style="line-height: 1.8;">3.具有长时间待机功能。</p>
<p style="line-height: 1.8;"> </p>
<p style="line-height: 1.8;"> </p>
<p style="line-height: 1.8;"> </p>
<h3 style="line-height: 1.8;">*2、项目属性</h3>
<hr>
<p style="line-height: 1.8;"><span style="color: #95a5a6; font-size: 14px;">本项目首次公开,非本人原创项目。项目未曾在别的比赛中获奖。</span></p>
<p style="line-height: 1.8;"> </p>
<p style="line-height: 1.8;"> </p>
<h3 style="line-height: 1.8;">* 3、开源协议</h3>
</div>
<div>克隆温湿度传感器训练营的开源项目。</div>
<div>
<p style="line-height: 1.8;"> </p>
<p style="line-height: 1.8;"> </p>
<p style="line-height: 1.8;"> </p>
<h3 style="line-height: 1.8;">*4、硬件部分</h3>
<hr>
<p style="line-height: 1.8;"><img src="//image.lceda.cn/oshwhub/a17a7d9140814baeb9aea8f0e9358eab.png" alt="原理图" width="1013" height="715"></p>
<p style="line-height: 1.8;"><img src="//image.lceda.cn/oshwhub/bcbe024b654c4d759e975db98df333b4.png" alt="PCB" width="1343" height="784"></p>
<p style="line-height: 1.8;"><img src="//image.lceda.cn/oshwhub/2eb91cf3329644ad855aac58c0fdbc44.png" alt="3D效果" width="1253" height="723"></p>
<h3 style="line-height: 1.8;">*5、软件部分</h3>
<hr>
<div>主要代码如下:</div>
<div> </div>
<div>/* USER CODE BEGIN Header */</div>
<div>/**</div>
<div> ******************************************************************************</div>
<div> * @file : main.c</div>
<div> * @brief : Main program body</div>
<div> ******************************************************************************</div>
<div> * @attention</div>
<div> *</div>
<div> * Copyright (c) 2024 STMicroelectronics.</div>
<div> * All rights reserved.</div>
<div> *</div>
<div> * This software is licensed under terms that can be found in the LICENSE file</div>
<div> * in the root directory of this software component.</div>
<div> * If no LICENSE file comes with this software, it is provided AS-IS.</div>
<div> *</div>
<div> ******************************************************************************</div>
<div> */</div>
<div>/* USER CODE END Header */</div>
<div>/* Includes ------------------------------------------------------------------*/</div>
<div>#include "main.h"</div>
<div>#include "adc.h"</div>
<div>#include "i2c.h"</div>
<div>#include "tim.h"</div>
<div>#include "gpio.h"</div>
<div> </div>
<div>/* Private includes ----------------------------------------------------------*/</div>
<div>/* USER CODE BEGIN Includes */</div>
<div> </div>
<div>/* USER CODE END Includes */</div>
<div> </div>
<div>/* Private typedef -----------------------------------------------------------*/</div>
<div>/* USER CODE BEGIN PTD */</div>
<div> </div>
<div>/* USER CODE END PTD */</div>
<div> </div>
<div>/* Private define ------------------------------------------------------------*/</div>
<div>/* USER CODE BEGIN PD */</div>
<div> </div>
<div>/* USER CODE END PD */</div>
<div> </div>
<div>/* Private macro -------------------------------------------------------------*/</div>
<div>/* USER CODE BEGIN PM */</div>
<div> </div>
<div>/* USER CODE END PM */</div>
<div> </div>
<div>/* Private variables ---------------------------------------------------------*/</div>
<div> </div>
<div>/* USER CODE BEGIN PV */</div>
<div> </div>
<div>/* USER CODE END PV */</div>
<div> </div>
<div>/* Private function prototypes -----------------------------------------------*/</div>
<div>void SystemClock_Config(void);</div>
<div>/* USER CODE BEGIN PFP */</div>
<div> </div>
<div>/* USER CODE END PFP */</div>
<div> </div>
<div>/* Private user code ---------------------------------------------------------*/</div>
<div>/* USER CODE BEGIN 0 */</div>
<div>struct DEVICE_PARAMTER device_paramter = {0};</div>
<div>/* USER CODE END 0 */</div>
<div> </div>
<div>/**</div>
<div> * @brief The application entry point.</div>
<div> * @retval int</div>
<div> */</div>
<div>int main(void)</div>
<div>{</div>
<div> /* USER CODE BEGIN 1 */</div>
<div>float temperature = 0;</div>
<div>float humidity = 0;</div>
<div> /* USER CODE END 1 */</div>
<div> </div>
<div> /* MCU Configuration--------------------------------------------------------*/</div>
<div> </div>
<div> /* Reset of all peripherals, Initializes the Flash interface and the Systick. */</div>
<div> HAL_Init();</div>
<div> </div>
<div> /* USER CODE BEGIN Init */</div>
<div> </div>
<div> /* USER CODE END Init */</div>
<div> </div>
<div> /* Configure the system clock */</div>
<div> SystemClock_Config();</div>
<div> </div>
<div> /* USER CODE BEGIN SysInit */</div>
<div>HAL_DeInit();</div>
<div> /* USER CODE END SysInit */</div>
<div> </div>
<div> /* Initialize all configured peripherals */</div>
<div> MX_GPIO_Init();</div>
<div> MX_ADC1_Init();</div>
<div> MX_I2C1_Init();</div>
<div> MX_TIM14_Init();</div>
<div> /* USER CODE BEGIN 2 */</div>
<div>HAL_Delay(100);</div>
<div> SN74HC595_Send_Data(SN_DIG,0xFF); //¹Ø±ÕÊýÂë¹ÜÏÔʾ</div>
<div> SN74HC595_Send_Data(SN_LED1,0x00);</div>
<div> SN74HC595_Send_Data(SN_LED2,0x00);</div>
<div> </div>
<div> /* USER CODE END 2 */</div>
<div>HAL_SuspendTick();//ÔÝÍ£µÎ´ð¶¨Ê±Æ÷£¬·Àֹͨ¹ýµÎ´ð¶¨Ê±Æ÷Öжϻ½ÐÑ</div>
<div>HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI); /* Ö´ÐÐWFIÖ¸Áî, ½øÈë˯Ãßģʽ */</div>
<div> /* Infinite loop */</div>
<div> /* USER CODE BEGIN WHILE */</div>
<div> while (1)</div>
<div> {</div>
<div> /* USER CODE END WHILE */</div>
<div> </div>
<div> /* USER CODE BEGIN 3 */</div>
<div>if(device_paramter.KeyStatus == KEY_SHAKE_STATE)</div>
<div>{</div>
<div>HAL_Delay(10);</div>
<div>if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_5) == GPIO_PIN_RESET)</div>
<div>{</div>
<div>while(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_5) == GPIO_PIN_RESET);</div>
<div> </div>
<div>SHT40_Read_RHData(&temperature,&humidity);//¶ÁÈ¡ÎÂʪ¶È</div>
<div>device_paramter.Temp = temperature * 10;//·Å´óÎÂʪ¶È</div>
<div>device_paramter.Humi = humidity * 10;</div>
<div>HAL_TIM_Base_Start_IT(&htim14); //¿ªÊ¼¶¨Ê±Æ÷£¬ÏÔʾÁ½´ÎÊý¾Ý </div>
<div>device_paramter.sleepStatus = 0;//Çå³ýÐÝÃß±êÖ¾</div>
<div>device_paramter.KeyStatus = KEY_NO_PRESS;//Çå³ý°´Ï±êÖ¾</div>
<div>}</div>
<div>}</div>
<div>else if(device_paramter.sleepStatus == 1)//ÏÔʾ½áÊø£¬½øÈëÐÝÃß</div>
<div>{</div>
<div>HAL_SuspendTick();//ÔÝÍ£µÎ´ð¶¨Ê±Æ÷£¬·Àֹͨ¹ýµÎ´ð¶¨Ê±Æ÷Öжϻ½ÐÑ</div>
<div>HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI); /* Ö´ÐÐWFIÖ¸Áî, ½øÈë˯Ãßģʽ */</div>
<div>}</div>
<div> }</div>
<div> /* USER CODE END 3 */</div>
<div>}</div>
<div> </div>
<div>/**</div>
<div> * @brief System Clock Configuration</div>
<div> * @retval None</div>
<div> */</div>
<div>void SystemClock_Config(void)</div>
<div>{</div>
<div> RCC_OscInitTypeDef RCC_OscInitStruct = {0};</div>
<div> RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};</div>
<div> </div>
<div> /** Configure the main internal regulator output voltage</div>
<div> */</div>
<div> HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1);</div>
<div> </div>
<div> /** Initializes the RCC Oscillators according to the specified parameters</div>
<div> * in the RCC_OscInitTypeDef structure.</div>
<div> */</div>
<div> RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;</div>
<div> RCC_OscInitStruct.HSIState = RCC_HSI_ON;</div>
<div> RCC_OscInitStruct.HSIDiv = RCC_HSI_DIV1;</div>
<div> RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;</div>
<div> RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;</div>
<div> RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;</div>
<div> RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV1;</div>
<div> RCC_OscInitStruct.PLL.PLLN = 8;</div>
<div> RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;</div>
<div> RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2;</div>
<div> if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)</div>
<div> {</div>
<div> Error_Handler();</div>
<div> }</div>
<div> </div>
<div> /** Initializes the CPU, AHB and APB buses clocks</div>
<div> */</div>
<div> RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK</div>
<div> |RCC_CLOCKTYPE_PCLK1;</div>
<div> RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;</div>
<div> RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;</div>
<div> RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;</div>
<div> </div>
<div> if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)</div>
<div> {</div>
<div> Error_Handler();</div>
<div> }</div>
<div>}</div>
<div> </div>
<div>/* USER CODE BEGIN 4 */</div>
<div> </div>
<div>/* USER CODE END 4 */</div>
<div> </div>
<div>/**</div>
<div> * @brief This function is executed in case of error occurrence.</div>
<div> * @retval None</div>
<div> */</div>
<div>void Error_Handler(void)</div>
<div>{</div>
<div> /* USER CODE BEGIN Error_Handler_Debug */</div>
<div> /* User can add his own implementation to report the HAL error return state */</div>
<div> __disable_irq();</div>
<div> while (1)</div>
<div> {</div>
<div> }</div>
<div> /* USER CODE END Error_Handler_Debug */</div>
<div>}</div>
<div> </div>
<div>#ifdef USE_FULL_ASSERT</div>
<div>/**</div>
<div> * @brief Reports the name of the source file and the source line number</div>
<div> * where the assert_param error has occurred.</div>
<div> * @param file: pointer to the source file name</div>
<div> * @param line: assert_param error line source number</div>
<div> * @retval None</div>
<div> */</div>
<div>void assert_failed(uint8_t *file, uint32_t line)</div>
<div>{</div>
<div> /* USER CODE BEGIN 6 */</div>
<div> /* User can add his own implementation to report the file name and line number,</div>
<div> ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */</div>
<div> /* USER CODE END 6 */</div>
<div>}</div>
<div>#endif /* USE_FULL_ASSERT */</div>
<p> </p>
<p style="line-height: 1.8;"> </p>
<p style="line-height: 1.8;"> </p>
<p style="line-height: 1.8;"> </p>
<h3 style="line-height: 1.8;">*6、BOM清单</h3>
<hr>
<p style="line-height: 1.8;"><img src="//image.lceda.cn/oshwhub/59244f6e3fdd47c6a0975a2e315e56d3.png" alt="" width="1526" height="340"></p>
<p style="line-height: 1.8;"> </p>
<p style="line-height: 1.8;"> </p>
<p style="line-height: 1.8;"> </p>
<h3 style="line-height: 1.8;">*7、大赛LOGO验证</h3>
<hr>
<p style="line-height: 1.8;"><img src="//image.lceda.cn/oshwhub/c2cb1c91686b42239e4136195fa82ed1.png" alt="" width="716" height="572"></p>
<p style="line-height: 1.8;"> </p>
<h3 style="line-height: 1.8;">* 8、演示您的项目并录制成视频上传</h3>
<hr>
<p style="line-height: 1.8;"><img src="//image.lceda.cn/oshwhub/5ab0743627fd4ef68b79f548de03c0dd.jpg" alt="" width="1279" height="1706"></p>
<p style="line-height: 1.8;"> </p>
<p style="line-height: 1.8;"> </p>
<p style="line-height: 1.8;"> </p>
<p style="line-height: 1.8;"> </p>
</div>
评论(0)