【单片机毕业设计选题24005】-基于STM32的智能家居环境监测系统

06-17 1151阅读

系统功能:

此设计采用STM32单片机将采集到的环境环境温湿度,光照强度,火焰传感器状态,烟雾值,空气质量值等数据显示在OLED上,并将这些信息通过上报至手机APP。系统可通过手机蓝牙APP修改各传感器阈值.

蓝牙连接后,如果系统处于自动状态则每隔5秒钟上报一次系统状态。

如果系统处于手动状态下则可通过蓝牙下发控制命令,

发送字符A增加光照设定阈值,

发送字符B减小光照设定阈值,

发送字符C增加MQ2设定阈值,

发送字符D减小MQ2设定阈值,

发送字符E增加MQ135设定阈值,

发送字符F减小MQ135设定阈值。

【单片机毕业设计选题24005】-基于STM32的智能家居环境监测系统

主要功能模块原理图:

电源时钟烧录接口:

【单片机毕业设计选题24005】-基于STM32的智能家居环境监测系统

单片机和按键输入电路:

【单片机毕业设计选题24005】-基于STM32的智能家居环境监测系统

传感器采集电路:

【单片机毕业设计选题24005】-基于STM32的智能家居环境监测系统

资料获取地址

系统主要功能模块代码

初始化代码: 

 /* USER CODE BEGIN 1 */
  /* USER CODE END 1 */
  /* MCU Configuration--------------------------------------------------------*/
  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();
  /* USER CODE BEGIN Init */
    InitVar();
  /* USER CODE END Init */
  /* Configure the system clock */
  SystemClock_Config();
  /* USER CODE BEGIN SysInit */
  /* USER CODE END SysInit */
  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  MX_ADC1_Init();
  /* USER CODE BEGIN 2 */
//在HAL库初始化串口1后调用
    HAL_Delay(100);
    SetUart1RxToInput();
    HAL_Delay(50);
//uart1打开接收中断
    HAL_UART_Receive_IT(&huart1, (uint8_t*)&uart1RecBuff, 1);
    InitOled();
    InitOledDisp();
ResetDHT11();

系统控制代码:

//系统信息更新
void SystemControl(void)
{
    static uint8_t updateCnt = 0;
   
    updateCnt++;   
    if(updateCnt>=SYSTEM_UPDATE_INTER)
    {
        updateCnt = 0;
        if(DHT11ReadData()==0)  //DHT11温湿度读取OK
        {
            ;
        }
        if(bleCtrl==false)
        {
            UpdateBleData();
        }
    }
    ReadSensorVal();
//显示不同页面
    if(dispPageIndex==DISP_PAGE_1)
    {
        OledDispPage1();
    }
    else if(dispPageIndex==DISP_PAGE_2)
    {
        OledDispPage2();
    }
    else if(dispPageIndex==DISP_PAGE_3)
    {
        OledDispPage3();
    }
    else if(dispPageIndex==DISP_PAGE_4)
    {
        OledDispPage4();
    }
}

串口处理蓝牙控制命令代码:

/* USER CODE BEGIN 4 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
    if(USART1== huart->Instance)
    {
//系统在手动模式下才可以远程操作   
        if(bleCtrl==true)
        {
            if(uart1RecBuff=='A')   //增加阈值-page2 
            {
                dispPageIndex = DISP_PAGE_2;
                if(setLightVal>=SET_LIGHT_MAX)
                {
                    setLightVal = SET_LIGHT_MAX;
                }
                else
                {
                    setLightVal += 200;
                }
                printf("setLight:%d\r\n", setLightVal);   
            }
            else if(uart1RecBuff=='B')  //减少阈值-page2 
            {
                dispPageIndex = DISP_PAGE_2; 
                if(setLightVal=SET_MQ2_MAX)
                {
                    setMQ2Val = SET_MQ2_MAX;
                }
                else
                {
                    setMQ2Val += 100;
                }               
                printf("setMQ2:%d\r\n", setMQ2Val);   
            }
            else if(uart1RecBuff=='D')  //减少阈值-page3
            {
                dispPageIndex = DISP_PAGE_3;
                if(setMQ2Val=SET_MQ135_MAX)
                {
                    setMQ135Val = SET_MQ135_MAX;
                }
                else
                {
                    setMQ135Val += 100;
                }                
                printf("setMQ135:%d\r\n", setMQ135Val);            
            }
            else if(uart1RecBuff=='F')  //减少阈值-page4
            {
                dispPageIndex = DISP_PAGE_4;
                if(setMQ135Val
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]