我們最近開始研究ESP8266開發板,而今天的項目將基于此WiFi模塊制作一個有趣的項目。我們將搭建一個基于ESP8266的WiFi空調遙控器。雖然此項目可以適應任何使用遙控器的設備,但我們將使用它來控制空調。
通常,每個人離開家時都會關掉家里的所有電器,包括空調。當您回到家中時,溫度將不會被調節,并且空調需要一些時間才能達到所需的溫度。但是,如果您離家只有幾個街區,可以通過手機自動控制空調,會不會很酷?如果您無論身在何處都可以將其關閉,或者離開屋子時仍將其打開?如果可以與手機的位置同步并在家時總將其打開?如果可以與手機的天氣信息同步?這些問題啟發了今天的項目。
空調遙控器是怎么運作的?
空調(AC)通常由遙控器控制,當按下按鈕時,該遙控器會向其發送紅外信號。 空調解釋信號并將其轉換為指令,以提高其溫度或降低其強度,關閉或開啟等。因此,為了能夠使用我們自己的設備進行控制,該設備必須能夠模仿并發送遙控器發送到AC的信號相同,因此,通過按應用程序上的“ ON”按鈕,我們的WiFi遙控器會發送遙控器發出的相同IR信號。
ESP8266將通過MQTT連接到家庭橋接器,通過它,Siri可用于提供控制AC的指令。一旦通過MQTT接收到指令(例如“打開”指令),NodeMCU便將其與相應的IR信號進行匹配,然后信號通過IR指示燈發送至AC。 OLED顯示器用于向用戶提供有關當前狀態的視覺反饋。對于非iPhone用戶,該設備還可以連接到Amazon Alexa。除了可以通過Siri或Apple的家用套件控制空調外,還配備了控制開關。
為了將本項目做的比較完整,該項目添加了以下功能:
√ 待機時顯示NTP時鐘。
√ 簡單的按鈕控制。電源、溫度升高/降低。
√ 可以使用HomeKit控制溫度、擺幅、風扇速度和模式。
√ 根據環境光自動亮度
√ OTA固件升級。
√ 使用HeaterCooler Service(iOS 11+)通過HomeKit進行控制,
√ 使用風扇服務與Amazon Alexa配合使用
在本文的最后,您將了解構建物聯網解決方案和家庭自動化的基礎知識。您還將學習如何攔截基于IR的遙控器發送的信號,創建一個IR發射器,該發射器可用于控制家庭或家庭中所有基于IR遙控器的設備,并構建可以通過Apple的Home工具包控制的設備。
所需的組件
● ESP8266 NodeMCU
● 帶有WiFi加密狗的Raspberry Pi 4,Raspberry Pi 3或Raspberry Pi 2
● Raspberry Pi的鍵盤,顯示器和HDMI電纜或LAN電纜
● Raspberry Pi的2A電源
● SSD1332 OLED顯示屏(256×64)
● 按鈕
● 紅外燈
● 發光二極管
● 跳線
● 面包板
原理圖
如上面所述,項目本身的硬件部分由NodeMCU、IR LED、一些按鈕和OLED顯示器組成,如下圖所示連接組件。
當您不攜帶手機時,這些按鈕提供了另一種控制設備的方式,OLED顯示屏提供了各種信息,包括當前溫度。
準備項目
在為項目編寫代碼之前,我們需要進行一些準備工作。
1.準備針對每個命令將發送到AC的IR信號
2.設置與Homekit的通信
1.解碼IR信號
如上所述,該項目通過模仿IR遙控器,發送基于Homekit的命令生成的IR信號來工作。由于IR信號必須與遙控器發送的信號相同,因此我們需要先獲取每個按鈕的IR代碼。要獲取代碼,我們必須構建一種設備,該設備從遙控器接收紅外信號,對其進行解碼并顯示編碼后的數據,以便我們可以將其復制以供以后使用。
要獲取IR代碼,我們將使用便宜的設備,連接到Nodemcu的高效且流行的TSOP1738紅外接收器,當按下遙控器上的按鈕時,紅外接收器將對其進行拾取,并通過在NodeMCU上運行的解碼草圖,將信號內容打印在串行監視器。此內容將在以后用于控制AC。
原理圖
如下圖所示,將IR接收器連接到NodeMCU:
為了確定何時接收到IR信號并幫助我們進行調試,在原理圖中添加了一個LED,使其僅在接收到IR信號時亮起。
代碼
本篇文章主要基于IRremote ESP8266庫,可以從隨附的鏈接下載該庫。該庫基于標準的Arduino IRremote庫,并帶有解碼的數據(用于一些通用鍵),用于許多流行的遙控器,這意味著您很幸運,并且遙控器的代碼將已經可用。對于那些不太幸運的人,我們將使用IRremote ESP8266庫隨附的示例草圖IRrecvDumpV2以及上面的示意圖來獲取編碼。
安裝庫后,啟動Arduino IDE,轉到示例并選擇IRrecvDumpV2示例。將代碼上傳到NodeMcu,然后按遙控器上的按鈕。每次按下遙控器上的按鈕時,您應該會在串行監視器中看到一組數字。復制并保留每個鍵的陣列,因為它們代表遙控器發送的已解碼IR信號,我們將使用它們為空調復制IR信號。
2.與Homekit進行連接
在編寫代碼之前,我們需要做的第二件事是建立與Homekit的連接。與Homekit的連接使我們能夠使用Siri和Homekit應用程序控制設備。為此,我們將使用安裝在RaspberryPi上的Homebridge-MQTT作為服務器。 Homebridg-MQTT本質上是Homebridge的插件,可讓您通過MQTT協議添加和控制設備。啟動RaspberryPi并打開終端。我們將從更新Pi開始,以確保以后不會遇到任何兼容性問題。
運行以下指令:
Sudo apt-get update
完成此操作后,在pi上為MQTT安裝MOSQUITTO。運行以下指令:
sudo apt-get install mosquitto
完成后,使用以下指令安裝Homebridge-MQTT插件;
sudo npm install -g homebridge-mqtt
接下來,我們需要編輯配置文件。配置文件位于homebridge文件夾(home / .homebridge /config.js)中。切換到目錄并運行;
sudo nano config.js
將platform部分添加到配置文件中,使其現在看起來像這樣;
{
"bridge": {
"name": "Homebridge",
"username": "CC: 22: 3D: E3: CE: 30",
"port": 51826,
"pin": "031-45-154"
},
"description": "This file is a fake accessory and one fake platform.",
"accessories": [{
"accessory": "relay",
"name": "My relay light 1",
"pin": 7
}],
"platforms": [{
"platform": "mqtt",
"name": "mqtt",
"url": "mqtt: //127.0.0.1",
"port": "1883",
"topic_type": "multiple",
"topic_prefix": "homebridge",
"qos": 1
}]
}
保存配置文件并退出。
運行HomeBridge,使用MQTT LENS并將Connection添加到我們的Raspberry Pi,創建一個使用加熱器冷卻器服務的附件,該附件受IOS11的任何版本的IoS支持。將發布設置為;
homebridge / to / add
并將有效載荷設置為;
{
"name": "Smart AC",
"service_name": "smart_ac",
"service": "HeaterCooler",
"manufacturer": "ESP8266",
"firmwarerevision": "1.0.0",
"SwingMode": 1,
"RotationSpeed": {"maxValue": 3, "minValue": 0, "minStep": 3},
"CoolingThresholdTemperature": {"maxValue": 28, "minValue": 18, "minStep": 1}
}
完成所有這些操作后,我們現在可以繼續為該項目編寫代碼。
代碼
今天的項目代碼將使用VScode和platform.io IDE插件進行開發。該代碼非常龐大,對于不習慣使用這些工具對微控制器進行編程的任何人來說可能很難理解,因此我們編寫了有關使用這些工具的簡單教程。
本文主要基于IRremoteESP8266庫,但它也使用了Wifi管理器庫、Arduinojson庫、Arduino OTA庫和NTP庫。這些庫中的每一個都使實現項目的不同部分變得容易。 IRremoteESP8266庫用于將設備的IR信號發送到空調,Wifimanager庫用于輕松更改WiFi憑據,Arduinojson用于解析homekit中的數據,而Arduino OTA庫用于在設備上啟用無線固件更新。使用的其他庫還包括U8g2庫,該庫可輕松處理單色顯示器。它用于顯示構成項目UI的圖形。該項目使用的所有庫都可以通過Arduino庫管理器下載和安裝。
該項目的代碼非常龐大,可能在這里無法解釋,但我們確保對其進行了注釋并附加在zip文件下的zip文件中。zip文件包含一堆文件,包括用于GUI的圖形圖像、庫以及有關項目的所有內容。該代碼位于“ src”文件夾中。 “ src”文件夾還包含不同的代碼,其中大多數是名為main.cpp的主代碼的頭文件。所有其他文件都很重要,并且必須與main.cpp放在同一項目文件夾中,因為它們包含了主文件所需的所有信息。例如,main.h文件包含MQTT聲明,而UI.h文件包含用于UI的所有內容的char值。
外殼
為了使項目看起來令人愉悅,對外殼進行了3D打印。設計是使用Fusion 360完成的。
打印后,將外殼擦洗并上漆以使打印效果更好。最終外殼如下圖所示。
演示效果
確保如上面所示連接并打開設備。它應該如下圖所示。
以上就是本文的全部內容。如開始所說,該項目的應用是無限的。它可以作為一個簡單的盒子來控制房屋中的每個紅外遙控設備。
編輯:hfy
-
遙控器
+關注
關注
18文章
838瀏覽量
66216 -
開發板
+關注
關注
25文章
5067瀏覽量
97588 -
空調遙控器
+關注
關注
0文章
19瀏覽量
7320 -
ESP8266
+關注
關注
50文章
962瀏覽量
45081
發布評論請先 登錄
相關推薦
評論