STM32筆記(3):LCD1602顯示DHT-11溫濕度感測值

繼昨天完成LCD1602 的實作後,今天繼續拿出溫濕度感測器DHT-11,想透過Analog Pin讀取感測值。實作過程需要用到 DHT-11 程式庫,可以使用 Arduino 的版本,這和 STM32 相容。以下就來看一下連接的線路及實作的結果。



[安裝程式庫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 條

[接線圖]

CP2102STM32F103C8T6DHT-11PCF8574 LCD連接模組
GNDGNDGNDGND
3V33.3V--
RXPA9--
TXPA10--
-B6-SCL
-B7-SDA
5V-VCCVCC
-A0DATA-





[程式]

#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);
}

[實作結果]

請參考本文最上方的照片。

Post a Comment

較新的 較舊