找回密碼
 立即註冊
    查看: 268|回覆: 0

    【ESP32 實作】自製萬用紅外線收發器:把電視、音響、電扇、投影機接進 HA

    [複製鏈接]

    !lvup!   100%

    386

    主題

    27

    回帖

    2200萬

    積分

    管理員

    積分
    22006063
    發表於 2026-9-21 13:14:38 | 顯示全部樓層 |閱讀模式
    這篇從「什麼都還沒買」開始,做到一台 ESP32 紅外線收發器上線,能學會家裡任何一支紅外線遙控器的碼,並在 Home Assistant 裡按鈕重播。

    每一步都有「你會看到什麼」。做完第三步能自己確認第三步成功了,才走第四步。

    這篇從「什麼都還沒買」開始,做到一台 ESP32 紅外線收發器上線,能學會家裡任何一支紅外線遙控器的碼,並在 Home Assistant

    做完這篇你會有什麼


    • 一台插著 USB 電源的 ESP32,同時具備紅外線接收與發射
    • 一個「學碼模式」:拿任何遙控器對著它按,日誌就印出協定名稱與碼
    • Home Assistant 裡一整排按鈕:電視開關、音量、電扇切換、投影機開關機
    • 一個下拉選單,可以切換「這台發射器現在要控制哪一台機器」


    為什麼要自己做

    市售萬用遙控器(小米、BroadLink 那類)要連原廠雲端,廠商收掉服務你的東西就變磚。自己做的這台只跟你家的 Home Assistant 講話,斷網也還在,而且成本兩百多塊。

    ---

    第一步:買零件

    一台的總成本大約 250~350 元。括號裡是台灣賣場(蝦皮、露天、台北光華商場的電子材料行)常見的搜尋關鍵字。


    • ESP32 開發板 ×1(搜「ESP32 DevKit V1」或「ESP32-WROOM-32 開發板 38pin」,約 150~250 元)
    • 紅外線接收模組 ×1(搜「VS1838B 紅外線接收器」或「紅外線接收模組 1838」,約 15~30 元。想買好一點的搜「TSOP4838」,約 40~60 元)
    • 紅外線發射 LED 940nm ×2(搜「940nm 紅外線發射二極體 5mm」,約 5~10 元一顆。一定要買 940nm,不要買 850nm)
    • NPN 電晶體 ×1(搜「S8050」或「2N2222」,約 2~5 元。多買幾顆,一包十顆也才二十塊)
    • 電阻 470Ω ×1、電阻 33Ω 或 39Ω ×1(搜「1/4W 金屬膜電阻包」,整包 300 種阻值約 100 元,長期一定用得到)
    • 麵包板 ×1(搜「麵包板 830 孔」,約 50 元)
    • 杜邦線 公對公 + 公對母(搜「杜邦線 40pin 三色」,約 80 元)
    • USB 電源供應器 5V/1A(舊手機充電器就可以)


    為什麼一定要 940nm 而不是 850nm

    家用遙控器的接收晶片(VS1838B、TSOP 系列)內部濾光片的中心波長就是 940nm。850nm 的 LED 肉眼看得到明顯紅光(常用在監視器補光),接收端的靈敏度會掉很多,症狀是「近距離勉強可以、拿遠一點就完全沒反應」,而且你會以為是電路沒接好。

    為什麼選 VS1838B

    它便宜、到處買得到、而且模組上通常已經幫你做好上拉電阻與濾波電容。缺點是在有省電燈泡或 LED 燈的房間裡,內部自動增益控制會把門檻拉高,變得比較「耳背」。

    如果你家的燈會造成干擾(症狀:學碼時有一搭沒一搭),換 TSOP4838。順帶一提,Vishay 官方文件明講 TSOP48../TSOP22.. 系列是「為了相容舊設計才保留」,新設計建議用 TSOP44../TSOP24.. 系列(內部是較新的 AGC4 電路),抗干擾更好。

    為什麼要電晶體,不能直接接 LED

    ESP32 的腳位在資料表的「建議操作條件」裡是每腳最大 40mA,預設驅動強度大約 20mA。而紅外線發射 LED 要打得遠,靠的是瞬間大電流 —— TSAL6200 這類 LED 的峰值突波規格是 1.5A。

    直接接的結果是:亮度只有該有的五分之一,射程大概三十公分,你會以為是協定學錯了。

    射程大概三十公分

    ---

    第二步:接線

    先接接收器(三隻腳)

    VS1838B 是一顆黑色小方塊,平的那一面朝自己,三隻腳從左到右依序是:


    • 最左邊 = OUT(訊號)
    • 中間 = GND(接地)
    • 最右邊 = VCC(電源)


    ⚠ 買到的如果是「已經焊在小板子上的模組」,不要用上面這個順序 —— 模組廠商會重排。看板子上的絲印(白色印刷字),通常寫 S 或 OUT / GND / VCC 或 +。絲印永遠優先於任何人的照片。

    接法:


    • 接收器的 OUT → ESP32 的 GPIO14
    • 接收器的 GND → ESP32 的 GND
    • 接收器的 VCC → ESP32 的 3V3


    接發射電路(電晶體 + 兩顆電阻)

    S8050 這類 TO-92 包裝的電晶體,平的那一面朝自己、腳朝下,由左至右是 E(射極)、B(基極)、C(集極)。

    ⚠ 2N2222 的腳位順序是相反的(E、B、C 中的 E 在右邊),而且市面上還有金屬罐裝的 2N2222A 腳位又不一樣。買哪一顆就查哪一顆的資料表,不要套用別人的圖。辨認不出來的話用三用電表的二極體檔測:B 對 E、B 對 C 都會通(約 0.6~0.7V),反過來都不通,那一隻就是 B。

    接法:


    • ESP32 的 GPIO4 → 470Ω 電阻 → 電晶體的 B(基極)
    • ESP32 的 5V(VIN) → 33Ω 電阻 → IR LED 的長腳(正極)
    • IR LED 的短腳(負極) → 電晶體的 C(集極)
    • 電晶體的 E(射極) → ESP32 的 GND


    LED 哪一腳是正極:長腳是正極;如果腳被剪過,看 LED 側面,有一個切平的缺口那一側是負極。

    兩顆電阻是算出來的,不是抄的

    33Ω(限流電阻)怎麼算:

    TSAL6200 這類 940nm LED 的順向壓降 VF 在 100mA 時約 1.35V,電晶體飽和時的 C-E 壓降 VCE(sat) 約 0.2V。電源是 5V,目標電流 100mA:
    1. R = (5V - 1.35V - 0.2V) / 0.1A = 34.5Ω  →  取標準值 33Ω
    2. 功率 = (0.1A)^2 x 33Ω = 0.33W  →  用 1/2W 的電阻比較保險
    複製代碼

    只有 1/4W 的電阻怎麼辦:紅外線是脈衝發射,載波佔空比 50%、一次傳輸只有幾十毫秒,平均功率遠低於 0.33W,實務上 1/4W 不會燒。但如果你要做「連續發射測試」,換 1/2W。

    470Ω(基極電阻)怎麼算:

    要讓電晶體完全導通(飽和),基極電流要有集極電流的 1/20 左右:
    1. I_B = 100mA / 20 = 5mA
    2. R = (3.3V - 0.7V) / 0.005A = 520Ω  →  取標準值 470Ω
    複製代碼

    那個 0.7V 是 B-E 接面的壓降,矽電晶體都是這個數字。330Ω 到 680Ω 都可以用,太大的話電晶體進不了飽和區、亮度不足;太小的話 ESP32 那一腳要吐的電流會超過建議值。

    以下還有約 81% 的內容
    登入後即可閱讀完整教學

    登入繼續閱讀使用 Google 登入
    您需要登入後纔可以回帖 登入 | 立即註冊

    本版積分規則

    延伸閱讀

    加入惟家 LINE 群 QR Code加入惟家 LINE 群

    Archiver|手機版|惟家的智能論壇

    GMT+8, 2026-11-10 00:37 , Processed in 0.129103 second(s), 25 queries .

    快速回覆 返回頂部 返回列表