聚豐項目 > 多功能老式空調遙控器
針對老式空調遙控功能單一、定時功能不方便、缺少自動化的問題,設計了這款提升老式空調使用體驗的遙控器。該作品以AB32VG1開發板為核心,搭配了0.96寸OLED、溫濕度傳感器DTH11、紅外發射二極管。 實現的功能有: 1.檢測并存儲空調的紅外遙控編碼; 2.監控環境溫濕度,根據室內環境情況遙控空調工作。 3.更加自由的定時遙控空調開啟或關閉。 該作品可以增強老式空調的功能,使之更加自動化,給用戶帶來更好的體驗。
hcszheng
分享hcszheng
團隊成員
杭工 學生
RT-Thread使用情況概述:
整個方案涉及的技術棧有:RT-Thread實時操作系統,OLED驅動、紅外遙控編碼等方面。在設計該作品的過程中,我加深了對RT-Thread操作系統的理解和紅外遙控編碼的理解。
內核部分:使用了線程、信號量、郵箱等。
組件部分:使用了串口、傳感器接口、PWM、RTC、定時器等。
軟件包:
dhtxx/multibutton 等
設備驅動:
GPIO/PWM/RTC/IRRX等
該作品通過DHT11溫濕度傳感器獲取室內的溫度和濕度信息,通信協議為一線制通信。0.96寸OLED用于顯示時間、溫濕度、空調狀態等信息,單片機采用軟件模擬IIC方式與OLED通信。使用5mm紅外發射管發送遙控信號,陽極串聯一個限流電阻后接到板上的3.3V,陰極接單片機IO。開發板上的按鈕用于輸入控制信息。利用板上的紅外接收探頭接收空調自帶的遙控器的紅外遙控信號,記錄空調紅外遙控信號的波形。
軟件方面比較簡單較多代碼參考了RT官方的例程,用到了multibutton和dhtxx軟件包。RT-Thread的軟件包和例程十分方便,加快了我的開發進度,十分有利于快速開發一個設備。作品共分為2個工作模式:一個是學習模式,用于接收并記錄空調原始遙控器的紅外遙控信號數據;一個是遙控模式,用于按照用戶預設的室內環境條件、時間條件來遙控空調運行。可實現定時開關機,根據室溫改變空調制冷、制熱模式。
作品的難點和重點是紅外解碼以及發送紅外遙控信號。
記錄紅外信號
大部分紅外遙控信號由38KHz的方波和一段低電平信號組成,如下圖。有無方波的時長代表了碼元'0'和'1'。具有解調功能的紅外接收管接收并解調該信號,解調后的信號可以看作是遙控信號的包絡。
AB32VG1單片機芯片內部集成了一個紅外信號的解碼器,它支持解碼NEC制式的紅外信號。NEC協議如下圖。
符合NEC協議的紅外遙控信號經紅外接收端口解調后傳給解碼器,它可以解出遙控信號的地址和命令數據。但是有一些大廠的空調并不使用NEC協議,而是廠家自己設計了一套通信協議。AB32VG1內部的解碼器無法處理這種自定義的協議。
不過這種自定義的紅外遙控信號仍是使用38KHz的方波作為載波,我可以利用開發板上的紅外接收端口將其解調為一段由高低電平組成的序列。單片機只要復制下特定模式的紅外信號,在滿足我預設的條件時發射出去,即可實現“智能”地遙控空調。
因此,我參照《中科藍訊AB32VG1開發實踐指南》中的軟件解碼方式,利用定時器的輸入捕獲功能,記錄下空調原裝遙控器的紅外信號序列的波形。下圖是單片機記錄的某空調28度制熱時的序列時長,通過串口輸出。每個數字表示序列高/低電平持續的時長,單位為微秒。
對應的遙控器發出的原始信號如下圖。
發射紅外信號
本作品中用到的紅外發射二極管沒有調制功能,單片機利用內部定時器的PWM功能產生一個38KHz的方波,按照記錄下來的原始遙控信號序列,在特定時間輸出或關閉該PWM,復制空調的遙控信號并發送。
流程如下圖。利用TIM1定時器精確控制載波輸出時長(微秒),data是存儲了上述序列高低電平時長的數組。
作品各組件采用杜邦線加洞洞板連接,為了美觀把混亂的走線藏在一個紙盒中,整體照片如圖。
后續完善計劃:
添加wifi模塊,通過網絡更新單片機時間;設計手機APP,更便捷地配置該作品的工作參數和工作模式,比如利用手機設定空調開啟或關閉的條件、時間等信息;根據室內溫度、濕度實時調整空調模式,比如室內溫度與預期值差距較大則加大風速。
程序地址: