在本教程中,我將介紹如何將DHT11濕度和溫度傳感器與基于STM32F103C8T6 MCU的STM32 Blue Pill Board接口。DHT11傳感器的值由STM32讀取,并顯示在I2C LCD顯示屏上。
介紹
傳感器是很小的設(shè)備,可以彌合原始模擬世界與MCU的數(shù)字世界之間的鴻溝。傳感器可以非常簡單,例如非常著名的LM35溫度傳感器,也可以是一些復(fù)雜的數(shù)學(xué)單元,例如MPU6050陀螺儀和加速度計(jì)組合傳感器。
簡單或復(fù)雜,傳感器是許多消費(fèi),汽車,機(jī)器人和工業(yè)應(yīng)用中的關(guān)鍵部分,如果不集成適當(dāng)?shù)膫鞲衅骶蜔o法完成某些應(yīng)用。
讓我們從工業(yè)應(yīng)用程序擴(kuò)展到日常項(xiàng)目和業(yè)余愛好者。氣象站是一個(gè)非常普遍且受歡迎的項(xiàng)目,無論是物聯(lián)網(wǎng)應(yīng)用還是常規(guī)字符LCD應(yīng)用。
此類氣象站項(xiàng)目的關(guān)鍵組成部分是能夠檢測與天氣相關(guān)的參數(shù)(如溫度,濕度等)。DHT11濕度和溫度傳感器就是這些類型項(xiàng)目的設(shè)備。
我已經(jīng)在一個(gè)名為“ Arduino上的DHT11濕度傳感器”的Arduino項(xiàng)目中使用了DHT11傳感器(第一條推文)。在該項(xiàng)目中,我已將DHT11傳感器與Arduino接口,計(jì)算了溫度和濕度值,并將其顯示在16×2 LCD顯示器上。我在這里也會(huì)做同樣的事情,但是這次我將把DHT11濕度和溫度傳感器連接到STM32F103C8T6 MCU的接口上。
DHT11溫濕度傳感器
DHT11及其兄弟DHT22是便宜但高度可靠的濕度和溫度傳感器。DHT22的范圍和精度略優(yōu)于DHT11,但這種擴(kuò)展范圍和更嚴(yán)格的精度是有代價(jià)的。除此之外,兩個(gè)傳感器的外觀相似,且引腳和連接性相同。因此,從現(xiàn)在開始,我們將專注于該項(xiàng)目的傳感器,即DHT11。
它是一種超低成本傳感器,具有電阻型濕度測量組件,NTC型溫度測量組件和8位微控制器,可將兩個(gè)測量組件的數(shù)據(jù)轉(zhuǎn)換為數(shù)字值。
在Arduino – DHT11教程中,我談到了傳感器的工作原理以及如何解釋來自串行的數(shù)據(jù)。我建議您參考該項(xiàng)目以獲取有關(guān)此傳感器的更多信息。
另外,在該項(xiàng)目中,我沒有為DHT11濕度和溫度傳感器使用任何專用的庫,而是嘗試了自己的代碼。僅作更改,我將使用Adafruit開發(fā)的DHT庫。
將DHT11濕度和溫度傳感器與STM32F103C8T6連接
在繼續(xù)進(jìn)行操作之前,我必須提醒您DHT11傳感器數(shù)據(jù)表中的某些內(nèi)容。它表示,必須借助5KΩ電阻將DHT11傳感器與微控制器(在這種情況下為STM32)之間的單條數(shù)據(jù)線拉高。
因此,在購買DHT11傳感器時(shí),請嘗試購買包含所述上拉電阻器(甚至是一些通電LED)的模塊。由于不需要任何其他組件,因此使DHT11濕度和溫度傳感器與STM32F103C8T6的連接變得更加容易。
要記住的另一件事是,我使用了I2C LCD,即基于PCF8574模塊的I2C GPIO擴(kuò)展器模塊,具有良好的舊16×2 LCD顯示屏。我已經(jīng)在專用項(xiàng)目“將I2C LCD與STM32F103C8T6接口”中實(shí)現(xiàn)了相同的功能。有關(guān)更多信息,請參考該項(xiàng)目。
所需組件
基于STM32F103C8T6 MCU的STM32藍(lán)色藥丸板
DHT11溫濕度傳感器
16×2液晶顯示器
PCF8574 I2C液晶模塊
5KΩ電阻器(可選,如果DHT11模塊上有電阻,則不需要)
連接線
USB轉(zhuǎn)UART轉(zhuǎn)換器(僅當(dāng)通過UART編程時(shí)才需要)
電路圖
下圖顯示了將DHT11濕度和溫度傳感器與基于STM32F103C8T6 MCU的STM32藍(lán)色藥丸板接口的電路圖。
連接說明
首先,將DHT11 Sensor的VCC和GND引腳分別連接到+ 5V和GND。然后將傳感器的數(shù)據(jù)引腳連接到STM32板的引腳PA1。
來到LCD時(shí),將PCF8574 I2C LCD模塊插入LCD的背面,并將PCF8574模塊的SDA和SCL引腳分別連接到STM32板的PB7和PB6引腳。同樣,將I2C LCD模塊的VCC和GND引腳連接到+ 5V和GND。
編程STM32以連接DHT11
在繼續(xù)之前,請確保您已經(jīng)確定了I2C LCD教程中提到的PCF8574模塊的從站地址。您可以將以下代碼用于相同的代碼。
#include
void setup()
{
Wire.begin();
Serial.begin(9600);
while (!Serial);
}
void loop()
{
byte error, address;
int I2CDevices;
Serial.println(“Scanning for I2C Devices…”);
I2CDevices = 0;
for (address = 1; address < 127; address++ )
{
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
Serial.print(“I2C device found at address 0x”);
if (address < 16)
Serial.print(“0″);
Serial.print(address, HEX);
Serial.println(” !”);
I2CDevices++;
}
else if (error == 4)
{
Serial.print(“Unknown error at address 0x”);
if (address < 16)
Serial.print(“0”);
Serial.println(address, HEX);
}
}
if (I2CDevices == 0)
Serial.println(“No I2C devices found ”);
else
Serial.println(“**** ”);
delay(5000);
}
現(xiàn)在,未來的實(shí)際程序,首先從下載DHT庫這個(gè)鏈接。解壓縮zip文件并將其內(nèi)容復(fù)制到本地Arduino安裝的library文件夾中。該路徑通常是“ C: Program Files(x86) Arduino libraries”。
然后,在程序中,將DHT的數(shù)據(jù)引腳定義為PA1,并將DHT傳感器的類型定義為DHT11或DHT22。通過提及從機(jī)地址,列數(shù)和行數(shù)來聲明具有LiquidCrystal_I2C庫功能的I2C LCD?,F(xiàn)在,您可以使用各自的“開始”功能初始化LCD和DHT11傳感器。
現(xiàn)在,獲取兩個(gè)浮點(diǎn)值,并從傳感器獲取濕度和溫度讀數(shù)。最后,在LCD上打印這些值。
源代碼
#include
#include
#include
#define DHTPIN PA1
#define DHTTYPE DHT11
LiquidCrystal_I2C lcd(0x27, 16, 2);
DHT dht(DHTPIN, DHTTYPE);
byte degree_symbol[8] =
{
0b00111,
0b00101,
0b00111,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000
};
void setup()
{
lcd.begin();
dht.begin();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print(“Electronics Hub”);
lcd.setCursor(0,1);
lcd.print(“DHT11 with STM32”);
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(“Temp = “);
lcd.setCursor(0,1);
lcd.print(“Humid = “);
lcd.createChar(0, degree_symbol);
lcd.setCursor(12,0);
lcd.write(0);
lcd.print(“C”);
lcd.setCursor(14,1);
lcd.print(“%”);
}
void loop()
{
float hum = dht.readHumidity();
float tem = dht.readTemperature();
lcd.setCursor(7,0);
lcd.print(tem);
lcd.setCursor(8,1);
lcd.print(hum);
}
結(jié)論
此處實(shí)現(xiàn)了一個(gè)簡單的項(xiàng)目,用以演示DHT11濕度和溫度傳感器與基于STM32F103C8T6 MCU的STM32 Blue Pill Board的接口。
-
傳感器
+關(guān)注
關(guān)注
2545文章
50448瀏覽量
751085 -
溫度傳感器
+關(guān)注
關(guān)注
48文章
2892瀏覽量
155796 -
STM32
+關(guān)注
關(guān)注
2264文章
10854瀏覽量
354301
原文標(biāo)題:如何將DHT11濕度和溫度傳感器與STM32F103C8T6連接
文章出處:【微信號(hào):aidanpianji,微信公眾號(hào):單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論