STM32控制OLED显示温湿度并通过串口打印

后端思维 2024-12-31T17:03:14+08:00
0 0 152

引言

在很多电子项目中,显示设备可帮助我们实时观察传感器数据,而串口打印则是一种非常常见的调试方式。本文将介绍如何使用STM32控制0.96 OLED显示屏和DHT11温湿度传感器,并通过串口打印温湿度数据。

准备材料

  • STM32开发板 (本文以STM32F103为例)
  • 0.96 OLED显示屏
  • DHT11温湿度传感器
  • 杜邦线若干

搭建电路

将OLED显示屏、DHT11传感器和STM32开发板按照如下方式连接:

OLED VCC - STM32 3.3V
OLED GND - STM32 GND
OLED SDA - STM32 PB7
OLED SCL - STM32 PB6
DHT11 VCC - STM32 5V
DHT11 GND - STM32 GND
DHT11 DATA - STM32 PB8

配置开发环境

  1. 打开STM32CubeIDE,并创建一个新的STM32工程。
  2. 在工程中加载相应的HAL库和相关库文件。
  3. 配置I2C和GPIO外设以适应OLED显示屏的通信。
  4. 配置串口以便通过串口打印数据。

编写代码

以下为实现上述功能的简要代码示例:

#include "main.h"
#include "stdio.h"
#include "i2c.h"
#include "usart.h"
#include "dht11.h"
#include "ssd1306.h"

#define DHT11_DATA_GPIO GPIO_PIN_8
#define DHT11_GPIO_PORT GPIOB

DHT11_Data_TypeDef dht11_data;

void SystemClock_Config(void);

int main(void)
{
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  MX_I2C1_Init();
  
  if (SSD1306_Init() != SSD1306_OK)
  {
    Error_Handler();
  }
  
  while (1)
  {
    if (DHT11_ReadData(&dht11_data) == DHT11_OK)
    {
      char buffer[20];
      sprintf(buffer, "Temp: %dC", dht11_data.Temperature);
      SSD1306_DisplayString(0, 0, buffer);
      sprintf(buffer, "Humidity: %d%%", dht11_data.Humidity);
      SSD1306_DisplayString(0, 1, buffer);
      HAL_UART_Transmit(&huart1, buffer, strlen(buffer), HAL_MAX_DELAY);
    }
    HAL_Delay(2000);
  }
}

编译和下载

完成代码编写后,编译并下载到STM32开发板中。

结果演示

经过编译和下载后,STM32开发板将通过OLED显示屏显示温湿度数据,并通过串口打印数据。

总结

通过本文的指导,您将学会如何使用STM32控制OLED显示屏和DHT11温湿度传感器,并通过串口打印温湿度数据。这为电子项目的开发和调试提供了重要的功能和便利。

希望本文对您有所帮助,谢谢阅读!

Mardown美化工具

相似文章

    评论 (0)