找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 6691|回復(fù): 11
打印 上一主題 下一主題
收起左側(cè)

STM32+0.91寸oled滾動(dòng)顯示bme680測(cè)得的數(shù)據(jù)(溫濕度、氣壓、空氣質(zhì)量指數(shù))

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:293977 發(fā)表于 2019-9-9 18:18 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
https://v.youku.com/v_show/id_XM ... j.8428770.3416059.1

  1. #include "bme680.h"
  2. uint8_t bme680_data[20]={0};
  3. uint8_t aqi_accuracy;
  4. int16_t temperature,altitude;
  5. uint16_t humidity,aqi;
  6. uint32_t pressure,gas;

  7. void Bme680_Config(void)
  8. {
  9.         GPIO_InitTypeDef GPIO_InitStructure;
  10.         USART_InitTypeDef USART_InitStructure;
  11.         NVIC_InitTypeDef NVIC_InitStructure;
  12.        
  13.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
  14.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA, ENABLE);
  15.        
  16.         GPIO_InitStructure.GPIO_Pin = TXD;
  17.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  18.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  19.         GPIO_Init(GPIOA, &GPIO_InitStructure);
  20.        
  21.         GPIO_InitStructure.GPIO_Pin = RXD;
  22.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  23.         GPIO_Init(GPIOA, &GPIO_InitStructure);
  24.        
  25.         USART_InitStructure.USART_BaudRate = 9600;
  26.         USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  27.         USART_InitStructure.USART_StopBits = USART_StopBits_1;
  28.         USART_InitStructure.USART_Parity = USART_Parity_No;
  29.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  30.         USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;
  31.         USART_Init(USART2, &USART_InitStructure);
  32.        
  33.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  34.         NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
  35.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  36.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  37.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  38.         NVIC_Init(&NVIC_InitStructure);
  39.        
  40.         USART_ITConfig(USART2,USART_IT_RXNE, ENABLE);
  41.         USART_Cmd(USART2,ENABLE);
  42. }

  43. void Bme680_Init(void)
  44. {
  45.         USART_SendData(USART2,0xa5);
  46.         while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==Bit_RESET);
  47.         USART_SendData(USART2,0x55);
  48.         while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==Bit_RESET);
  49.         USART_SendData(USART2,0x3f);
  50.         while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==Bit_RESET);
  51.         USART_SendData(USART2,0x39);
  52.         while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==Bit_RESET);
  53.         Delay_ms(100);
  54.        
  55.         USART_SendData(USART2,0xa5);
  56.         while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==Bit_RESET);
  57.         USART_SendData(USART2,0x56);
  58.         while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==Bit_RESET);
  59.         USART_SendData(USART2,0x02);
  60.         while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==Bit_RESET);
  61.         USART_SendData(USART2,0xfd);
  62.         while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==Bit_RESET);
  63.         Delay_ms(100);
  64. }

  65. void Bme680_Analysis(void)
  66. {
  67.         temperature=(bme680_data[4]<<8)|bme680_data[5];
  68. //        temperature=temperature/100;        //unit:0.01℃
  69.        
  70.         humidity=(bme680_data[6]<<8)|bme680_data[7];
  71. //        humidity=humidity/100;        //unit:0.01%
  72.        
  73.         pressure=(bme680_data[8]<<16)|(bme680_data[9]<<8)|bme680_data[10];        //unit:1Pa
  74.        
  75.         aqi_accuracy=bme680_data[11]>>4;
  76.        
  77.         aqi=((bme680_data[11]&0x0f)<<8)|bme680_data[12];
  78.        
  79.         gas=(bme680_data[13]<<24)|(bme680_data[14]<<16)|(bme680_data[15]<<8)|bme680_data[16];
  80.         //unit:1ohm
  81.        
  82.         altitude=(bme680_data[17]<<8)|bme680_data[18];        //unit:1m
  83. }
復(fù)制代碼

全部資料51hei下載地址:
程序.7z (276.04 KB, 下載次數(shù): 208)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏12 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:245560 發(fā)表于 2019-9-28 10:44 | 只看該作者
串口傳感器模塊。。。。。
回復(fù)

使用道具 舉報(bào)

板凳
ID:639532 發(fā)表于 2019-11-11 10:23 | 只看該作者
終于找到一個(gè)bme680的demo了
回復(fù)

使用道具 舉報(bào)

地板
ID:641369 發(fā)表于 2019-11-13 18:58 | 只看該作者
留 個(gè)記號(hào)。
回復(fù)

使用道具 舉報(bào)

5#
ID:645263 發(fā)表于 2019-11-19 19:09 | 只看該作者

終于找到一個(gè)bme680的demo了
回復(fù)

使用道具 舉報(bào)

6#
ID:168554 發(fā)表于 2019-11-20 09:42 | 只看該作者
分享的是hex文件還是源碼呀
回復(fù)

使用道具 舉報(bào)

7#
ID:261620 發(fā)表于 2020-2-13 18:45 | 只看該作者
這個(gè)程序是串口模塊的,,,,  只是數(shù)據(jù)的解析   不是底層的數(shù)據(jù)處理
回復(fù)

使用道具 舉報(bào)

8#
ID:64016 發(fā)表于 2020-5-15 16:22 | 只看該作者
終于找到一個(gè)bme680的demo了
回復(fù)

使用道具 舉報(bào)

9#
ID:142699 發(fā)表于 2020-7-17 17:38 | 只看該作者
這個(gè)沒(méi)啥用啊,你都已經(jīng)封裝好了,就當(dāng)成串口用了,有啥好研究的,BME的IIC底層驅(qū)動(dòng)實(shí)現(xiàn)才有價(jià)值
回復(fù)

使用道具 舉報(bào)

10#
ID:757976 發(fā)表于 2020-7-17 17:50 | 只看該作者
模塊代碼,很不錯(cuò),謝謝分享
回復(fù)

使用道具 舉報(bào)

11#
ID:107741 發(fā)表于 2022-2-16 21:10 | 只看該作者
用串口讀取一個(gè)內(nèi)解算模塊,問(wèn)題是解算模塊有賣(mài)的嗎?指令集有嗎?
回復(fù)

使用道具 舉報(bào)

12#
ID:1005649 發(fā)表于 2022-2-18 10:25 | 只看該作者
正在學(xué)習(xí)bme680的驅(qū)動(dòng),非常感謝.
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表