1. 程式人生 > 其它 >STM32 液晶螢幕和dh11溫溼度感測器

STM32 液晶螢幕和dh11溫溼度感測器

https://www.electroniclinic.com/stm32-and-dht11-library-circuit-diagram-and-programming-using-arduino-ide/

 

 

STM32F103C8T6 控制器板

DHT11溫溼度模組

SSD1306 OLED顯示模組

 

 

 在 DHT11 溫溼度模組的 VDD 和 DATA 引腳之間連線了一個 10K 歐姆的電阻。VDD 管腳連線到 STM32 微控制器的 3.3V 管腳,DHT11 Sensor 的 Data 管腳連線到 STM32 控制板的 PA2 Analog 管腳,DHT11 感測器的 GND 管腳連線到 GND 管腳STM32微控制器板。

SSD1306 Oled顯示模組電源引腳與STM32單片機板的3.3V和GND引腳相連。Oled顯示模組的SCL和SDA引腳與STM32的B6和B7引腳相連。B6 是 SCL,B7 是 SDA。

為了使用Arduino IDE對STM32 微控制器板進行程式設計,首先您需要重新整理引導載入程式,您還需要安裝STM32 板和一些驅動程式。我對此有一個非常詳細的教程,我強烈建議您閱讀這篇文章現在,讓我們看一下程式設計。

下載 DHT 庫

連結:https://pan.baidu.com/s/1hBDkrntrzYBaQ9MAAQzrPw?pwd=di17
提取碼:di17

 

 

我為 Arduino 編寫的這個程式也適用於 STM32 微控制器板。

我做了一些改變。我添加了stm32版本的SSD1306庫,我也改了這個DHT庫。

最後,我更改了 DHT11 溫溼度感測器所連線的引腳號,其餘程式設計完全相同。所以,這就是現在的全部。

我使用STM32F103C8T6在 Oled 顯示模組上成功顯示了溫度和溼度值

 

/*
 * STM32 and DHT11 Temperature and Humidity sensor
 * DHT11 connected to PA2
 * 
 * Oled connection
 * B6 to SCL of Oled
 * B7 to SDA of Oled
 * 
 * https://www.electroniclinic.com/
 */

#include <Wire.h>      //Library for using I2C 
#include <Adafruit_SSD1306_STM32.h>
#include <DHT.h>                    //Library for using DHT sensor 

#define DHTPIN PA2 
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);     //initilize object dht for class DHT with DHT pin with STM32 and DHT type as DHT11
 float h;
 float t;
// for Oled display ssd1306
#define OLED_RESET -1  
Adafruit_SSD1306 display(OLED_RESET);

void setup()
{
  Serial.begin(9600);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the
  pinMode(DHTPIN, OUTPUT);
  dht.begin();          //Begins to receive Temperature and humidity values.                        

  //Clear the buffer.
  display.clearDisplay();
}

void loop()
{
  h = dht.readHumidity();       //Gets Humidity value
  t = dht.readTemperature();    //Gets Temperature value
  Serial.println(h);
  Serial.println(t);
  DisplayData();
}

void DisplayData()
{

  display.clearDisplay();
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(0,0);
  display.println("Temp:");
  display.setTextSize(1);
  display.setCursor(0,20); // column , row
  display.println(t);
  display.setTextSize(2);
  display.setCursor(0,35);
  display.println("Hum:");
  display.setTextSize(1);
  display.setCursor(0,55); // column , row
  display.println(h);

  display.display();
  delay(100);
  
}