零成本學 Arduino!在 Wokwi 打造你的第一個溫濕度監測站 (Arduino + DHT11 + 1602 LCD)

想學 Arduino 電子實作,卻總是卡在「買零件好貴」、「怕買錯規格」或是「接線接得亂七八糟」這些問題上嗎?
今天這篇文章將帶你完全免費、零成本進入 Arduino 的世界!我們不需要購買任何實體硬體,也不用安裝龐大的開發軟體,只要打開瀏覽器,透過強大的線上模擬器 Wokwi,就能在 10 分鐘內打造一個運作完美的「溫濕度監測站」。
在這個專案中,我們將學習如何將 Arduino UNO、DHT22 溫濕度感測器與 LCD 1602 液晶螢幕結合,這是一個非常經典且實用的入門專題。準備好了嗎?我們開始吧!

對於初學者來說,Wokwi 是目前最強大的 Arduino 線上模擬器。

  • 免安裝:打開網頁就能寫程式。

  • 免花錢:所有零件(馬達、感測器、螢幕)隨你用。

  • 不怕燒壞:接錯線只會報錯,不會有焦味(笑)。

專案準備:我們需要的「虛擬」材料

進入 Wokwi 首頁 後,選擇 Arduino UNO 開啟一個新專案。接著點擊紫色的 + (Add new part) 按鈕,加入以下元件:

  1. Arduino UNO:我們的大腦。

  2. DHT22:溫濕度感測器(Wokwi 中 DHT22 比 DHT11 更常見且精準,操作方式相同)。

  3. LCD 1602 (I2C):顯示數據用。注意:請搜尋 LCD1602 I2C,選用帶有 I2C 模組的版本,這樣我們只需要接 4 條線,而不是痛苦的 16 條線。

第一步:線路連接 (Wiring)

在 Wokwi 中接線非常直覺,滑鼠點擊接腳即可拉線。為了讓程式順利運作,請依照以下方式連接:

1. 連接 DHT22 感測器

  • VCC 接 Arduino 5V

  • GND 接 Arduino GND

  • SDA (數據腳) 接 Arduino Pin 2

2. 連接 LCD 1602 (I2C 介面)

  • GND 接 Arduino GND

  • VCC 接 Arduino 5V

  • SDA 接 Arduino A4 (或 SDA 腳位)

  • SCL 接 Arduino A5 (或 SCL 腳位)

💡 小知識: Arduino UNO 的 I2C 通訊專用腳位就是 A4 (SDA) 和 A5 (SCL),接錯了螢幕是不會亮的喔!


Wokwi_DHT22_LCD1602接線圖

第二步:安裝函式庫 (Libraries)

這是實體操作時新手最頭痛的部分,但在 Wokwi 裡超簡單!
請點選程式碼編輯區上方的 “Library Manager” (通常是一個標籤頁或 Library 按鈕),搜尋並加入以下兩個函式庫:

  1. DHT sensor library (by Adafruit)

  2. LiquidCrystal I2C (by Frank de Brabander)

Wokwi_LibraryManager

第三步:撰寫程式碼

將以下程式碼複製並貼上到你的 Wokwi 編輯區(sketch.ino):

				
					#include <Wire.h> 
#include <LiquidCrystal_I2C.h> // 引用 LCD I2C 函式庫
#include "DHT.h"               // 引用 DHT 函式庫

// 設定 DHT 參數
#define DHTPIN 2     // DHT 資料接腳連到 Arduino Pin 2
#define DHTTYPE DHT22   // 如果你選用 DHT11 請改為 DHT11

// 初始化 DHT
DHT dht(DHTPIN, DHTTYPE);

// 初始化 LCD,設定 I2C 位址為 0x27,螢幕為 16 行 2 列
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  // 啟動序列監控視窗 (除錯用)
  Serial.begin(9600);
  Serial.println("系統啟動中...");

  // 啟動 DHT 感測器
  dht.begin();

  // 啟動 LCD
  lcd.init();
  lcd.backlight(); // 開啟背光,很重要!
  
  // 顯示開機畫面
  lcd.setCursor(0, 0); // 設定游標在第 0 行, 第 0 列
  lcd.print("Weather Station");
  lcd.setCursor(0, 1);
  lcd.print("Starting...");
  delay(2000); // 等待 2 秒
  lcd.clear(); // 清除螢幕
}

void loop() {
  // 讀取溫濕度需要一點時間,這裡設定延遲 2 秒
  delay(2000);

  // 讀取濕度
  float h = dht.readHumidity();
  // 讀取溫度 (攝氏)
  float t = dht.readTemperature();

  // 檢查讀取是否失敗 (例如線沒接好)
  if (isnan(h) || isnan(t)) {
    Serial.println("無法讀取 DHT 感測器!");
    lcd.setCursor(0, 0);
    lcd.print("Sensor Error");
    return;
  }

  // 在序列視窗印出數據 (方便電腦端檢查)
  Serial.print("濕度: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("溫度: ");
  Serial.print(t);
  Serial.println(" *C");

  // --- 顯示於 LCD ---
  
  // 第一行顯示溫度
  lcd.setCursor(0, 0);
  lcd.print("Temp: ");
  lcd.print(t);
  lcd.print(" C");

  // 第二行顯示濕度
  lcd.setCursor(0, 1);
  lcd.print("Humi: ");
  lcd.print(h);
  lcd.print(" %");
}
				
			

第四步:開始模擬與測試

點擊畫面上的 綠色播放鍵 (Start Simulation)

  1. 你會看到 LCD 螢幕亮起,顯示 “Weather Station”。

  2. 兩秒後,螢幕會顯示當前的溫度與濕度。

😲 等等,我要怎麼改變溫度?

這是 Wokwi 最酷的地方!在模擬進行中,請用滑鼠點擊一下畫面上的 DHT22 感測器
這時會彈出一個小視窗,你可以拖拉上面的滑桿來改變環境溫度與濕度,你會發現 LCD 螢幕上的數值也跟著即時變動了!

結語:你省下了 500 元與 3 小時的除錯時間

恭喜你!你已經成功完成了一個微型氣象站的原型。

透過這個練習,你學會了:

  1. Arduino 的基礎 I2C 接線邏輯。

  2. 如何使用 LiquidCrystal_I2C 與 DHT 函式庫。

  3. 如何在 LCD 上定位與顯示資訊。

這就是 Wokwi 的魅力,它讓你專注於「邏輯」與「程式」,而不是被接觸不良的電線搞瘋。如果你對這個專案感興趣,下一步可以嘗試買入實體零件,將這個裝置做出來放在你的書桌上喔!

喜歡這篇教學嗎?歡迎在下方留言分享你的 Wokwi 實作成果連結!

**「專案分享連結 (Share Link)」**

如感到有點手癢,也想實作這專案,也可以參考底下這文章,一步一步帶你完成。連結如下:

Arduino UNO + DHT11 + OLED:溫濕度即時顯示完整教學(含程式碼)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

返回頂端