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

聚豐項(xiàng)目 > 基于F401的多功能家居輔助系統(tǒng)

基于F401的多功能家居輔助系統(tǒng)

在家居環(huán)境中,離不開對(duì)環(huán)境的感知與調(diào)節(jié)。利用微控器與相應(yīng)的傳感器進(jìn)行組合可以對(duì)環(huán)境的相應(yīng)參數(shù)進(jìn)行檢測(cè)并加以調(diào)節(jié)和控制。從簡(jiǎn)化設(shè)計(jì)的角度出發(fā),合理地選擇開發(fā)板和傳感器功能板可起到事半功倍的效果。在多功能家居輔助系統(tǒng)設(shè)計(jì)中,將STM32F401_NUCLEO開發(fā)板與X-NUCLEO-IKS01A1功能模塊組合在一起就會(huì)有這樣的效果,它可以對(duì)溫濕度、大氣壓及6軸狀態(tài)進(jìn)行檢測(cè),從而為相應(yīng)的控制提供數(shù)據(jù)支持。

jinglixixi jinglixixi

分享
1 喜歡這個(gè)項(xiàng)目
團(tuán)隊(duì)介紹

jinglixixi jinglixixi

團(tuán)隊(duì)成員

李靜 實(shí)驗(yàn)師

分享
項(xiàng)目簡(jiǎn)介
在家居環(huán)境中,離不開對(duì)環(huán)境的感知與調(diào)節(jié)。利用微控器與相應(yīng)的傳感器進(jìn)行組合可以對(duì)環(huán)境的相應(yīng)參數(shù)進(jìn)行檢測(cè)并加以調(diào)節(jié)和控制。從簡(jiǎn)化設(shè)計(jì)的角度出發(fā),合理地選擇開發(fā)板和傳感器功能板可起到事半功倍的效果。在多功能家居輔助系統(tǒng)設(shè)計(jì)中,將STM32F401_NUCLEO開發(fā)板與X-NUCLEO-IKS01A1功能模塊組合在一起就會(huì)有這樣的效果,它可以對(duì)溫濕度、大氣壓及6軸狀態(tài)進(jìn)行檢測(cè),從而為相應(yīng)的控制提供數(shù)據(jù)支持。
硬件說明

該項(xiàng)目的硬件部分主要由STM32F401_NUCLEO開發(fā)板、X-NUCLEO-IKS01A1功能模塊、雙色0.96OLED屏、2.4’TFT彩色屏、軟按鍵、MP3語音模塊等組成。

其中STM32F401_NUCLEO開發(fā)板承擔(dān)數(shù)據(jù)處理、X-NUCLEO-IKS01A1功能模塊承擔(dān)環(huán)境信號(hào)采集、OLED屏用于數(shù)據(jù)顯示;在連接光電隔離繼電器的情況下,可進(jìn)行溫濕度等的控制。

圖片4.png

結(jié)構(gòu)框圖


軟件說明

該項(xiàng)目的軟件開發(fā)平臺(tái)采樣keil5.0,并由C語音進(jìn)行編程,所涉及的功能模塊有OLED屏顯示模塊、RTC讀取與顯示模塊、溫濕度及大氣壓的讀取與顯示模塊。

圖片5.png

功能框圖


OLED屏的初始化函數(shù)為:

void OLED_Init(void)

{

GPIO_InitTypeDef  GPIO_InitStruct;

__HAL_RCC_GPIOA_CLK_ENABLE();

GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6;     

GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;

GPIO_InitStruct.Pull  = GPIO_PULLUP;

GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;

HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

OLED_SCLK_Set();

OLED_SDIN_Set();

Delay_1ms(800);

OLED_WR_Byte(0xAE,OLED_CMD);

OLED_WR_Byte(0x00,OLED_CMD);

OLED_WR_Byte(0x10,OLED_CMD);

OLED_WR_Byte(0x40,OLED_CMD);  

OLED_WR_Byte(0xB0,OLED_CMD);

OLED_WR_Byte(0x81,OLED_CMD);

OLED_WR_Byte(0xFF,OLED_CMD);   

OLED_WR_Byte(0xA1,OLED_CMD);

OLED_WR_Byte(0xA6,OLED_CMD);

OLED_WR_Byte(0xA8,OLED_CMD);

OLED_WR_Byte(0x3F,OLED_CMD);

OLED_WR_Byte(0xC8,OLED_CMD);

OLED_WR_Byte(0xD3,OLED_CMD);

OLED_WR_Byte(0x00,OLED_CMD);

OLED_WR_Byte(0xD5,OLED_CMD);

OLED_WR_Byte(0x80,OLED_CMD);

OLED_WR_Byte(0xD8,OLED_CMD);

OLED_WR_Byte(0x05,OLED_CMD);

OLED_WR_Byte(0xD9,OLED_CMD);

OLED_WR_Byte(0xF1,OLED_CMD);

OLED_WR_Byte(0xDA,OLED_CMD);

OLED_WR_Byte(0x12,OLED_CMD);

OLED_WR_Byte(0xDB,OLED_CMD);

OLED_WR_Byte(0x30,OLED_CMD);

OLED_WR_Byte(0x8D,OLED_CMD);

OLED_WR_Byte(0x14,OLED_CMD);

OLED_WR_Byte(0xAF,OLED_CMD);

RTC時(shí)鐘顯示函數(shù)為:

static void RTC_Handler(TMsg *Msg)

{

  uint8_t subSec = 0;

  RTC_DateTypeDef sdatestructureget;

  RTC_TimeTypeDef stimestructure;

  if(DataLoggerActive || AutoInit)

  {

    HAL_RTC_GetTime(&RtcHandle, &stimestructure, FORMAT_BIN);

    HAL_RTC_GetDate(&RtcHandle, &sdatestructureget, FORMAT_BIN);

    subSec = ((((((int) RTC_SYNCH_PREDIV) - ((int) stimestructure.SubSeconds)) * 100) / (RTC_SYNCH_PREDIV + 1)) & 0xff);

  }

  if(DataLoggerActive)

  {

    Msg->Data[3] = (uint8_t)stimestructure.Hours;

    Msg->Data[4] = (uint8_t)stimestructure.Minutes;

    Msg->Data[5] = (uint8_t)stimestructure.Seconds;

    Msg->Data[6] = subSec;

  }

    else if(AutoInit)

  {

        sprintf(dataOut, "Time: %d:%d:%d.%d", stimestructure.Hours,

            stimestructure.Minutes, stimestructure.Seconds, subSec);

OLED_ShowString(0,0,dataOut,16);

        sprintf(dataOut, "TimeStamp: %d:%d:%d.%d\n", stimestructure.Hours,

            stimestructure.Minutes, stimestructure.Seconds, subSec);

        HAL_UART_Transmit(&UartHandle, (uint8_t*)dataOut, strlen(dataOut), 5000);

  }

}

氣壓的檢測(cè)與顯示函數(shù)為:

static void Pressure_Sensor_Handler(TMsg *Msg)

{

  int32_t d1, d2;

  if(BSP_PRESSURE_isInitialized())

  {

    BSP_PRESSURE_GetPressure((float *)&PRESSURE_Value);

    floatToInt(PRESSURE_Value, &d1, &d2, 2);

    

    if ( DataLoggerActive )

    {

      if(Sensors_Enabled & PRESSURE_SENSOR)

      {

        Serialize(&Msg->Data[7], d1, 2);

        Serialize(&Msg->Data[9], d2, 2);

      }

    }

    else if ( AutoInit )

    {

      sprintf(dataOut, "PRESS: %d.%02d", (int)d1, (int)d2);

      HAL_UART_Transmit(&UartHandle, (uint8_t*)dataOut, strlen(dataOut), 5000);

OLED_ShowString(0,2,dataOut,16);

    }

  }

  else

  {

    if(AutoInit)

    {

      BSP_PRESSURE_Init();

    }

  }

}

溫濕度的檢測(cè)與顯示函數(shù)為:

static void HumTemp_Sensor_Handler(TMsg *Msg)

{

  int32_t d1, d2, d3, d4;

  if(BSP_HUM_TEMP_isInitialized())

  {

    BSP_HUM_TEMP_GetHumidity((float *)&HUMIDITY_Value);

    BSP_HUM_TEMP_GetTemperature((float *)&TEMPERATURE_Value);

    floatToInt(HUMIDITY_Value, &d1, &d2, 2);

    floatToInt(TEMPERATURE_Value, &d3, &d4, 2);

    if ( DataLoggerActive )

    {

      if(Sensors_Enabled & TEMPERATURE_SENSOR)

      {

        Serialize(&Msg->Data[11], d3, 1);

        Serialize(&Msg->Data[12], d4, 1);

      }

      if(Sensors_Enabled & HUMIDITY_SENSOR)

      {

        Serialize(&Msg->Data[13], d1, 1);

        Serialize(&Msg->Data[14], d2, 1);

      }

    }

    else if ( AutoInit )

    {

sprintf(dataOut, "HUM: %d.%02d", (int)d1, (int)d2);

            OLED_ShowString(0,4,dataOut,16);

sprintf(dataOut, "TEMP: %d.%02d", (int)d3, (int)d4);

            OLED_ShowString(0,6,dataOut,16);

sprintf(dataOut, "HUM: %d.%02d     TEMP: %d.%02d\n", (int)d1, (int)d2, (int)d3, (int)d4);

            HAL_UART_Transmit(&UartHandle, (uint8_t*)dataOut, strlen(dataOut), 5000);

    }

  }

  

  else

  {

    if(AutoInit)

    {

      BSP_HUM_TEMP_Init();

    }

  }

}

演示效果

圖片1.png

時(shí)間及環(huán)境數(shù)據(jù)顯示效果


圖片2.png

圖標(biāo)式界面操作


圖片3.png

串口發(fā)送的檢測(cè)數(shù)據(jù)


預(yù)期的制作效果(限于時(shí)間關(guān)系尚未合成在一起)


main1.rar

main2.rar


評(píng)論區(qū)(0 )
主站蜘蛛池模板: 男人到天堂a线牛叉在线 | 三级黄色在线视频 | 亚洲涩福利高清在线 | 办公室激情在线观看 | 日本妞欧洲 | 伊人久久大香线蕉综合电影网 | 国产a级午夜毛片 | 久久免费黄色 | 99国内精精品久久久久久婷婷 | 日本人添下面的全过程 | 日产国产欧美韩国在线 | 国色天香社区视频免费高清3 | 国产99久久久国产精品免费看 | AV无码国产精品午夜A片麻豆 | 日韩欧美群交P内射捆绑 | 国产欧美日韩亚洲第一页 | 久久伊人中文字幕有码 | 男女作爱在线播放免费网页版观看 | 少妇精品久久久一区二区三区 | 无限好资源免费观看 | 国产成人精品综合在线观看 | 琪琪色原网站ying | 欧美日韩另类在线观看视频 | 大地影院在线播放 | swag合集120部 | 一起碰一起噜一起草视频 | 久久影院一区 | 男人插女人动态 | 亚洲国产精品天堂在线播放 | 亚洲成人日韩 | 中文字幕亚洲视频 | 黄色天堂在线 | 艳鉧动漫1~6全集观看在线 | 啊轻点灬大JI巴又大又粗 | avove旗袍丝袜高跟啪啪 | 在线播放性xxx欧美 在线播放午夜理论片 | 999久久免费高清热精品 | 首页_亚洲AV色老汉影院 | 日本妈妈在线观看中文字幕 | 电影内射视频免费观看 | 国产偷抇久久精品A片蜜臀A |