描述我家有臺大金空調(diào),目前沒有與任何電子設(shè)備鏈接,它僅由紅外線遙控器控制,我現(xiàn)在用ESP8266微控制器使其由wifi控制來模擬紅外遙控器命令,可以將新控制器放置在空調(diào)的射程范圍內(nèi),并且在IOS或者安卓手機(jī)上通過小程序來通話。
細(xì)節(jié)
與往常一樣,該問題不是新問題,也不是新解決方案。但是我將描述它以幫助某人這樣做。
通過這個項目,我為大金空調(diào)制造了一個wifi紅外遙控器。
在這些架構(gòu)中,您可以看到所有涉及的部分。
一些更多的細(xì)節(jié):
普通空調(diào)由紅外遙控器控制(圖片左上方:“ 經(jīng)典遙控器 ”);
一個封閉在一個小盒子里的ESP8266項目(圖片右上角:“ 新的ESP8266 wifi遙控器 ”),可以與您的空調(diào)進(jìn)行紅外通信。
在ESP8266項目中,我添加了一個溫度和濕度傳感器來監(jiān)控室內(nèi)條件;
通過路由器,ESP8266盒子可以連接到互聯(lián)網(wǎng)并與智能手機(jī)中的應(yīng)用程序通話;
經(jīng)典遙控器和新型ESP8266控制器都與空調(diào)單向通信,它接收命令并發(fā)出蜂鳴聲,但不會與遙控器回聲。
知道路由器的IP地址后,我可以通過互聯(lián)網(wǎng)與您的ESP8266通訊;
為了從Internet與您的家庭wifi網(wǎng)絡(luò)中的設(shè)備進(jìn)行通信,我需要在路由器配置中為ESP8266分配一個端口;
基于ESP8266的WIFI控制器的構(gòu)造
這是wifi控制器的架構(gòu)。我使用了Wemos D1 mini,因為它體積小且價格便宜,它基于流行的ESP8266芯片,并且可以與Arduino IDE完美配合。
因此,本文中的術(shù)語ESP8266和Wemos可互換。
像往常一樣,首先我將其構(gòu)建在面包板上,當(dāng)一切正常后,我開始焊接。
引腳D4用于從DHT11傳感器讀取溫度和濕度。
引腳D0用于將信號發(fā)送到紅外燈。它連接到NPN BC547晶體管的基極,該晶體管用作電流放大器。紅外線LED會與脈沖與空調(diào)通話,因此我們可以使用它來驅(qū)動WeMos引腳可以提供的更多電流。一對電阻器用于減少流到晶體管基極的電流(1 Kohm)并限制led電流(100 ohm)*。
* =應(yīng)該寫關(guān)于這兩個電阻的值的幾行(需要幫助)。
(我項目中的DHT11傳感器與模式中的傳感器不同,我使用的是一個已經(jīng)包含10k上拉電阻的模塊,因此可以刪除3.3V和DHT11信號引腳之間的1kohm電阻) **
** =我應(yīng)該更好地理解這一點(需要幫助)
網(wǎng)絡(luò)規(guī)則和互聯(lián)網(wǎng)通話
在Wemos中代碼的Setup()部分中,將啟動一個連接到本地家庭網(wǎng)絡(luò)的wifi客戶端,路由器將為Wemos提供一個本地IP地址。在 Setup()中, 還啟動了一個網(wǎng)絡(luò)服務(wù)器,該服務(wù)器可以應(yīng)答本地網(wǎng)絡(luò)中的http呼叫。
這是一張了解IP如何工作的圖。每個路由器都創(chuàng)建一個專用網(wǎng)絡(luò)。
所有本地地址都具有相同的結(jié)構(gòu),并且僅針對最后一個數(shù)字進(jìn)行更改:192.168.1.x(根據(jù)您的路由器,您可能具有不同的結(jié)構(gòu),例如10.0.0.x等)。
Wemos中的代碼定義了Wemos可以回答以下3個命令:
服務(wù)器。on(“ / onoff”,switchAcOnOff); 服務(wù)器。on(“ / sensor”,sensorData); 服務(wù)器。on(“ / temp”,temperatureSet);
所以,如果。我可以通過http url調(diào)用向ESP8266發(fā)送命令。
但是在本地網(wǎng)絡(luò)之外,ESP8266和其他所有設(shè)備均不可見。
路由器將所有本地網(wǎng)絡(luò)隱藏在外部,可以通過圖中的公用IP地址 121.3.12.133進(jìn)行訪問。
要將命令從我的家庭網(wǎng)絡(luò)外部發(fā)送到ESP8266,我需要配置路由器,這是我的本地網(wǎng)絡(luò)的入口點。根據(jù)您所擁有的路由器,您可能可以通過在瀏覽器的URL中鍵入其地址來訪問路由器的配置面板。路由器的IP地址是第一個,在我的情況下是192.168.0.1。
在配置面板中,我必須將來自Internet的流量轉(zhuǎn)發(fā)到路由器,再到ESP8266設(shè)備。為了配置路由器,我使用了“ 端口轉(zhuǎn)發(fā) ”。
每次進(jìn)行呼叫時,都會通過“端口”發(fā)生。例如,網(wǎng)站使用Internet端口80進(jìn)行呼叫。
要通過路由器將我們的項目流量與正常的網(wǎng)絡(luò)流量分開,最好從端口80移開,因為它受路由器和防火墻的管制。因此,我決定使用端口8080。要使用其他端口(例如8080),在每個http調(diào)用的IP地址后面附加“:8080”就足夠了。因此,打開AC的電話為:192.168.1.3 : 8080/onoff 。
“端口轉(zhuǎn)發(fā)”配置使我可以將來自Internet的流量轉(zhuǎn)發(fā)到我的ESP8266設(shè)備的8080端口(由其本地IP地址指定)從端口8080路由到我的路由器。
最后還有另一種配置,這很有用。由于路由器每次啟動時都會為路由器分配IP地址,因此如果我拔下ESP8266并將其重新連接到電源,則路由器可能會收到與路由器不同的IP地址,因此將不使用端口轉(zhuǎn)發(fā)配置。出于這個原因,我已經(jīng)配置了路由器為ESP8266設(shè)備始終提供相同的IP,在路由器面板中,此配置被稱為“靜態(tài)租約”,因此我指定了具有Mac Address的設(shè)備(這是一個字符串,如下所示: a0:10:a6:16:b8:15)必須始終接收IP 192.168.1.3(這是我的本地網(wǎng)絡(luò)的靜態(tài)IP)。
在loop()內(nèi),我會不斷檢查連接,每3分鐘我會打電話給Google,只是告訴路由器該設(shè)備處于在線狀態(tài)并且可以正常工作,因為我注意到我的路由器如果一段時間沒有任何反應(yīng),它將考慮我的ESP8266已斷開連接,并且沒有消息通過端口8080轉(zhuǎn)發(fā)。
紅外通訊
為了與使用紅外線通信的設(shè)備進(jìn)行對話,我首先嘗試解碼來自遙控器的消息,要完成此任務(wù),您首先必須構(gòu)建一個紅外線接收器并使用它來讀取遙控器發(fā)送的命令控制。
這些命令只是按字節(jié)序列讀取,您可以將其存儲并通過紅外線LED進(jìn)行傳輸。
但是,在執(zhí)行此操作時,我發(fā)現(xiàn)Daikin在命令中隱藏了一些信息,因為每次相同的消息均以不同的字節(jié)序列發(fā)送,因此我搜索了Internet,發(fā)現(xiàn)該庫中的Arduino可以與Daikin AC對話。我已經(jīng)嘗試過并且它可以工作,所以我使用了這個庫。
組成命令的字節(jié)以脈沖序列傳輸,這就是為什么簡單的led可以傳輸帶有字節(jié)的信息的原因,它們是二進(jìn)制編碼的。
DHT11傳感器
我添加了一個溫度和濕度傳感器,首先要讀取房間的溫度,如果您必須遠(yuǎn)程決定打開AC,這是必需的。其次,由于沒有來自AC的任何反饋,因此溫度傳感器可以幫助您了解房間是否正在變冷并且wi-fi遙控器工作正常。
DHT11傳感器不是很好,也不是很準(zhǔn)確(±1°C),DHT22是更好的傳感器,可以讓您更精確地讀取溫度(帶小數(shù)點)。
安全
處理Internet需要一些預(yù)防措施。當(dāng)您打開wifi網(wǎng)絡(luò)以通過應(yīng)用訪問網(wǎng)絡(luò)中的設(shè)備時,最好采取一些預(yù)防措施。
我已經(jīng)決定該應(yīng)用程序和wifi遙控器使用secret關(guān)鍵字來驗證命令,因此,如果有人找到了您設(shè)備的IP及其端口,則他們必須找到正確的url和secret關(guān)鍵字。
還需要更多嗎?有什么建議么?
OTA更新
OTA是Over The Air的首字母縮寫,由于Arduino IDE中提供了一個庫,空中更新是ESP8266微處理器提供的一項非常不錯的功能。使用此庫,您可以更新wifi遙控器的代碼,而無需使用電纜將其連接到計算機(jī),但是您可以通過wifi網(wǎng)絡(luò)上載新代碼。
您的PC必須與設(shè)備位于同一網(wǎng)絡(luò)中。
#包括 《ArduinoOTA.h》
只需包含庫并使用示例中提供的代碼即可。安裝程序中的代碼塊可讓您處理通過wifi網(wǎng)絡(luò)從Arduino IDE發(fā)出的調(diào)用,循環(huán)中的一行保持連接處于活動狀態(tài)以允許OTA。
該應(yīng)用程序
我僅使用HTML,CSS和Javascript制作了該應(yīng)用程序,并使用了 Adobe PhoneGap(該軟件可免費用于1個應(yīng)用程序),創(chuàng)建了APK,并將其安裝在Android設(shè)備上。
該應(yīng)用程序顯示一個用于設(shè)置溫度的簡單用戶界面,以及兩個用于開/關(guān)開關(guān)的按鈕。從wifi遙控器讀取的還有溫度和濕度兩個值。
每次我按下按鈕時,都會通過特定端口將命令發(fā)送到設(shè)備的IP,路由器將命令發(fā)送到ESP,ESP將命令執(zhí)行到AC。
這是應(yīng)用程序:
3D打印盒
ESP8266遙控器包裝在一個盒子中,只能容納Veroboard及其組件。有一個孔讓紅外燈發(fā)送命令,還有一個孔讓濕度/溫度傳感器測量外部空氣
數(shù)量 組件名稱
1個 × 基于ESP8266的WeMos D1 R2或迷你微控制器
1個 × 紅外線LED Led用作向空氣污染源傳輸?shù)脑?/p>
1個 × 晶體管BC547用作放大器以驅(qū)動更多電流到LED
1個 × DHT11溫濕度傳感器用于讀取房間的溫度和濕度
2 × 1k歐姆電阻
1個 × 100歐姆電阻
1個 × 交流/直流5v電源
1個 × 3D打印盒
1個 × android自定義應(yīng)用
評論
查看更多