繼昨天完成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); }
張貼留言