iT邦幫忙

2026 iThome 鐵人賽

DAY 23
0
自我挑戰組

無硬體也能玩物聯網!使用 Wokwi 模擬器與 MicroPython 打造 30 天 ESP32 實務系列 第 23 篇

情境 2:自動化智慧溫室——DHT22 監測 + OLED 顯示 + 伺服馬達開窗

  • 分享至 

  • xImage
  •  

今日目標
今天我們要實作第二個經典的IoT綜合實戰情境——自動化智慧溫室系統。
智慧農業中極為關鍵的一環是微氣候調節,我們將結合之前學過的溫濕度感測器、SSD1306 OLED螢幕,以及SG90 Servo伺服馬達。當溫室內部溫度過高時,系統會自動驅動伺服馬達推開通風窗戶進行散熱,並在OLED螢幕上即時呈現當前溫濕度與通風窗狀態。

程式碼
import time
imiprt dht
from machine import Pin,PWM,I2C
import ssd1306

i2c=I2C(0,scl=Pin(22),sda=Pin(21),freq=400000)
oled=ssd1306.SSD1306_I2C(128,64,i2c)

dht_sensor=dht.DHT22(Pin(15))

servo_pwm=PWM(Pin(18),freq=50)

def set_servo_angle(angle):
angle=max(0,min(180,angle))
min_duty,max_duty=26,125
duty_val=int(min_duty+angle/180.0)*(max_duty-min_duty))
servo_pwm.duty(duty_val)

TEMP_THRESHOLD=28.0

print("===智慧溫室自動通風控制系統啟動===")

while True:
try:
dht_sensor.measure()
temp=dht_sensor.temperature()
hum=dht_sensor.humidity()

    if temp>TEMP_THRESHOLD:
        set_servo_angle(90)
        vent_status="OPEN (90 Deg)"
        is_overheat=True
    else:
        set_servo_angle(0)
        vent_status="CLOSED"
        is_overheat=False
        
    oled.fill(0)
    
    oled.text("GREENHOUSE MONITOR",0,0)
    oled.hline(0,11,128,1)
    
    oled.text(f"Temp:{temp:.1f}C",0,18)
    oled.text(f"Humi:{hum:.1f}%,0,32")
    
    oled.hline(0,46,128,1)
    if is_overheat:
        oled.text("Vent:OPEN [ALARM]",0,52)
    else:
        oled.text("Vent:CLOSED",0,52)
    oled.show()
    print(f"【室溫狀態】溫度:{temp:.1f}°C|濕度:{hum:.1f}%|通風窗:{vent_status}")
    
except OSError:
    oled.fill(0)
    oled.text("sensor Error!",10,25)
    oled.show()
    print("DHT22感測器讀取失敗!")
    
time.sleep(2)

心得
今天我們把感測器輸入、邏輯判斷、執行器輸出與視覺回饋四大元件串接起來,這正是現代自動化農業與智慧家居的核心運作機制。


上一篇
情境 1:智慧倒車雷達——超音波測距 + 蜂鳴器不同頻率嗶嗶聲
下一篇
情境 3:智能路燈系統——光敏電阻感應 + PIR 人體感應自動亮燈
系列文
無硬體也能玩物聯網!使用 Wokwi 模擬器與 MicroPython 打造 30 天 ESP32 實務 共 24 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言