STM32 液晶螢幕和dh11溫溼度感測器
阿新 • • 發佈:2022-03-09
https://www.electroniclinic.com/stm32-and-dht11-library-circuit-diagram-and-programming-using-arduino-ide/
在 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 板和一些驅動程式。我對此有一個非常詳細的教程,我強烈建議您閱讀這篇文章。現在,讓我們看一下程式設計。
連結: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); }