繼昨天完成LCD1602 的實作後,今天繼續拿出溫濕度感測器DHT-11,想透過Analog Pin讀取感測值。實作過程需要用到 DHT-11 程式庫,可以使用 Arduino 的版本,這和 STM32 相容。以下就來看一下連接的線路及實作的結果。
直接到 Arduino IDE 功能表選單,選擇 [草稿碼 Sketch] → [匯入程式庫 Include Library] → [ 管理程式庫 Manage Libraries...],在出現的視窗搜尋處輸入 DHT11,如以下畫面,按下安裝即可。
[安裝程式庫Library]
本實作需要安裝以下程式庫:直接到 Arduino IDE 功能表選單,選擇 [草稿碼 Sketch] → [匯入程式庫 Include Library] → [ 管理程式庫 Manage Libraries...],在出現的視窗搜尋處輸入 DHT11,如以下畫面,按下安裝即可。
如為下載程式庫(Library)安裝方法請參考另一篇文章: Arduino筆記:安裝 Arduino IDE 程式庫(Library)。
[材料]
- STM32F103C8T6開發板
- USB轉TTL序列傳輸線 CP2102
- LCD1602液晶顯示器
- LCD連接模組I2C介面PCF8574
- DHT-11
- 排線 n 條
[接線圖]
| CP2102 | STM32F103C8T6 | DHT-11 | PCF8574 LCD連接模組 |
|---|---|---|---|
| GND | GND | GND | GND |
| 3V3 | 3.3V | - | - |
| RX | PA9 | - | - |
| TX | PA10 | - | - |
| - | B6 | - | SCL |
| - | B7 | - | SDA |
| 5V | - | VCC | VCC |
| - | A0 | DATA | - |
[程式]
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHTPIN PA0
#define DHTTYPE DHT11
// 設定 LCD 16x2 位址: 0x27
LiquidCrystal_I2C lcd(0x27, 16, 2);
// 初始化 dht 設定接腳及DHT種類
DHT dht(DHTPIN, DHTTYPE);
void setup()
{
dht.begin();
lcd.begin();
lcd.backlight();
lcd.print("DHT11 with STM32");
delay(3000);
lcd.clear();
}
void loop(){
float h = dht.readHumidity(); //取得濕度值
float t = dht.readTemperature(); //取得溫度值
lcd.clear();
lcd.print("Temp: ");
lcd.print(t);
lcd.print(" oC");
lcd.setCursor(0,1);
lcd.print("Humid: ");
lcd.print(h);
lcd.print(" %");
delay(3000);
}



張貼留言