你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【年中粉丝节】 STM32G491 Nucleo-64开发板+AHT10温湿度传感器,实现温湿度检测并在OLED上显示

[复制链接]
xudongqiang 发布时间:2021-6-26 18:09
【年中粉丝节】+STM32G491 Nucleo-64开发板+AHT10温湿度传感器,实现温湿度检测并在OLED上显示。
年中我也来分享一波自己做过的,凑个热闹,搞点积分!!!
开发板用的是STM32G491 Nucleo-64开发板:
QQ截图20210626173508.png
具体参数如下图:
QQ截图20210626173526.png
传感器是奥松的AHT10,IIC接口:
QQ截图20210626173342.png
显示用的是12864的OLED,也是IIC接口。
下面进入程序配置,打开CUBEMX。选择IIC1跟IIC2还有串口跟LED。
QQ截图20210626173825.png
生成程序后用keil打开,修改逻辑部分:
先是OLED,在之前的标准库的例程上修改一下写函数,其他的基本不变:
QQ截图20210626174124.png
串口修改(没有用到):
QQ截图20210626174306.png
接着是AHT10的,由于硬件IIC没有测试成功,采用的模拟IIC:
/**
brief 检查AHT10读温湿度数据
param *temperature:需要读出的温度数据,float指针类型,精度范围+-0.3C
param *humidity:需要读出的湿度数据,u8指针类型,精度范围+-2RH
return 0 读数据正常 1读数据失败
*/
uint8_t AHT10ReadData(float *temperature,uint8_t *humidity)
{
        uint8_t ack;
        uint32_t SRH=0,ST=0;
        uint8_t databuff[6];
        IIC_Start();
        IIC_Send_Byte(AHT10_WRITE);
        IIC_Wait_Ack();
        IIC_Send_Byte(0xac);
        IIC_Wait_Ack();
        IIC_Send_Byte(0x33);
        IIC_Wait_Ack();
        IIC_Send_Byte(0x00);
        IIC_Wait_Ack();
        IIC_Stop();          
        HAL_Delay(80);//延时一会等待数据读出
        IIC_Start();
        IIC_Send_Byte(AHT10_READ);
        IIC_Wait_Ack();
        ack=IIC_Read_Byte(1);
        if((ack&0x40)==0)
        {
                databuff[0]=IIC_Read_Byte(1);
                databuff[1]=IIC_Read_Byte(1);
                databuff[2]=IIC_Read_Byte(1);
                databuff[3]=IIC_Read_Byte(1);
                databuff[4]=IIC_Read_Byte(0);
                IIC_Stop();
                SRH=(databuff[0]<<12)+(databuff[1]<<4)+(databuff[2]>>4);
                ST=((databuff[2]&0X0f)<<16)+(databuff[3]<<8)+(databuff[4]);
                *humidity=(int)(SRH*100.0/1024/1024+0.5);
                *temperature=((int)(ST*2000.0/1024/1024+0.5))/10.0-50;
                return 0;
        }
        IIC_Stop();       
        return 1;
}

. A. [& d4 {! _: X* D1 [
最后在主程序调用和显示即可:
int main(void)
{
  /* USER CODE BEGIN 1 */
        float TEM[1]={0};
        uint8_t HUM[1]={0};
  /* USER CODE END 1 */

7 n: m4 y, ^( U/ T; S' t) }* i
  /* MCU Configuration--------------------------------------------------------*/

0 m1 j* \5 m; h+ ^4 p- T
  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();
6 ^" F  g# _& U# K
  /* USER CODE BEGIN Init */

6 l* w  L. m; K2 N
  /* USER CODE END Init */

- D( Q* }+ m6 o) j, f* {+ a
  /* Configure the system clock */
  SystemClock_Config();

$ e: c) i  w% V+ m
  /* USER CODE BEGIN SysInit */
) j, `: Q  m1 f0 _- _4 Y
  /* USER CODE END SysInit */
4 n* [( @/ @5 j% m. U! T
  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_LPUART1_UART_Init();
//  MX_I2C1_Init();
  MX_I2C2_Init();
  MX_USART1_UART_Init();
  /* USER CODE BEGIN 2 */
  OLED_Init();

, S2 `' ^0 D" T) `. [/ k
        AHT10Init();                        //IIC初始化
//          AHT10Reset();
  /* USER CODE END 2 */

( B1 S5 d6 {" u0 z# x
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */
+ q+ H  X  W  L. n  h) g) ~. `
    /* USER CODE BEGIN 3 */

! J" i' X4 i, i  x9 I2 h: _
        //温度:
        OLED_ShowChinese(0,0,4,16,1);
        OLED_ShowChinese(16,0,5,16,1);
        OLED_ShowChinese(32,0,2,16,1);
        OLED_ShowChinese(48,0,3,16,1);
        OLED_ShowString(64,0,":",16,1);
        OLED_Write_Float(72,0,TEM[0],16,1);
        OLED_ShowChinese(112,0,10,16,1);
        //湿度:
        OLED_ShowChinese(0,20,4,16,1);
        OLED_ShowChinese(16,20,5,16,1);
        OLED_ShowChinese(32,20,11,16,1);
        OLED_ShowChinese(48,20,3,16,1);
        OLED_ShowString(64,20,":",16,1);
        OLED_Write_Int(72,20,HUM[0],16,1);
        OLED_ShowString(112,20,"%",16,1);
        OLED_Refresh();
% M3 a  c% g$ G! F- w
        HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
        AHT10ReadData(TEM,HUM);
        printf("TEM=%0.1f,HUM=%d\n",TEM[0],HUM[0]);
        HAL_Delay(1000);
  }
  /* USER CODE END 3 */
}

2 o2 ?' q; S; `% A3 _/ N
下面是实测图:
QQ截图20210626180502.png
7 I; H9 ]8 o8 ^9 @( x) r
如果对程序有兴趣的可以留言,HAL库的程序确实有点大,传不上来。
分享结束!年中给日天添把火!!!
: ]& z/ X3 ]* d4 A
$ Y# m" `( T; ]" U3 x
收藏 评论1 发布时间:2021-6-26 18:09

举报

1个回答
xudongqiang 回答时间:2021-6-26 18:13:45
为什么截图有些显示不出来9 u. Q* D% E& U* l- B/ }

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版