本文分成四部分:硬件設(shè)計、軟件設(shè)計、APP設(shè)計、多人共享功能,最終實現(xiàn)了熱水器的遠(yuǎn)程控制功能。隨著物聯(lián)網(wǎng)模塊大量普及,各種“云”應(yīng)接不暇,物聯(lián)網(wǎng)進(jìn)入家庭的速度明顯提高。作為電子DIYER,意味著有了可以快速解決家庭實際需求的有力工具,以前的各種奇思妙想,都可以使用物聯(lián)網(wǎng)技術(shù)用較短的時間內(nèi)實現(xiàn)啦。
這不,老婆大人看到我做的門燈控制器,就提出來讓我把家里的熱水器改裝成帶物聯(lián)網(wǎng)遙控的,可以在下班前用手機(jī)打開熱水器,回到家就能有熱水用。最終制作的作品是這樣的:
一、硬件部分1.1 需求分析
我家的熱水器是海爾EC5002-05,它可以設(shè)置好加熱功率檔位和加熱目標(biāo)溫度,打開開關(guān)自動按照預(yù)置功率加熱至目標(biāo)溫度。
它的控制開關(guān)是微動開關(guān),這種開關(guān)按下是需要一定的力度的。
我的主要工作其實就是用物聯(lián)網(wǎng)技術(shù)打開這個開關(guān)就行了,只要能通過手機(jī)控制這個電源開關(guān)打開,回到家就能用上熱水。
1.2 總體設(shè)計
要想控制電源開關(guān)按下,有兩種思路。
第一種,就是設(shè)計一個機(jī)械裝置,模擬人按下開關(guān)的動作;
第二種,就是用電信號控制它打開。
按照以往的工作經(jīng)驗,我覺得可以采用下面幾種方案,每種方案都是用ESP8266進(jìn)行控制的,給出開關(guān)量控制。
(一)使用電磁鐵,給出一個向下的按壓動作。比如下面的這種,它就能產(chǎn)生一個向下按壓的動作,來完成按壓。這種方案的缺點是電磁鐵工作電壓很高,有的220伏,有的是12伏或者是24伏,而且它體積較大,也比較重,專門為它設(shè)計一個支架,也不好設(shè)計。此外,還不知道它的力度好不好控制,萬一這玩意力度太大,把面板給弄壞了。。。。
(二)使用普通舵機(jī)。正好家里有一個普通的舵機(jī),arduino套件里面的SG90舵機(jī),它很小,也很便宜,但是完成點擊的動作是沒問題的。缺點也是需要一個專門的固定架子,此外,還需要專門的供電電源,以及PWM控制信號提供者。我以前做過一個STC計算器,用這個單片機(jī)提供PWM信號也行,不過就是增加了最終作品的體積和復(fù)雜程度。(ESP8266也可以提供PWM,不過沒時間學(xué)它怎么用)
(三)使用直線舵機(jī)。在尋找合適的舵機(jī)的時候,竟然發(fā)現(xiàn)還有這種“直線舵機(jī)”。它其實就是把旋轉(zhuǎn)運(yùn)動利用一個螺桿轉(zhuǎn)換成了直線運(yùn)動,使用起來仍然是PWM控制方式,看上去這個東東比較適合我,如果說有缺點的話,仍然是需要為它設(shè)計支架。
以上三種方案,都是模擬人手按壓微動開關(guān)動作的,都需要設(shè)計安裝支架。而支架安裝到哪里,是個問題,安裝到墻上,可能需要一個龐大的支撐架子,安裝到熱水器上,可能需要打孔或者用強(qiáng)力膠固定。即使固定的問題能夠解決,那么支架呢?當(dāng)然可以用3D打印來解決,當(dāng)然3D打印的設(shè)計過程是需要反復(fù)多次的,當(dāng)然時間是可能會受到批評的,當(dāng)然美觀程度是會受到我家外貌協(xié)會那位質(zhì)疑的。
(四)使用ESP8266直接控制,給出電信號。就是拆開熱水器看看,這個開關(guān)下面的電路板上面,按下之后給控制芯片提供了一個高電平還是低電平,如果按下就是高電平,抬起就是低電平,那么我讓ESP8266直接輸出一個高電平給控制芯片就行了。這樣做的優(yōu)點是ESP8266可以隱藏著熱水器內(nèi)部,外觀上看不出任何痕跡。缺點是ESP8266輸出的電平是3.3伏,而后來測量的熱水器控制板電平是5伏,不可以通用,再加一個電平匹配電路,擔(dān)心時間長了會有安全隱患。不怕一萬,就怕萬一。
(五)使用ESP8266控制繼電器,控制開關(guān)引腳短路。這個思路就是把熱水器控制板上電源開關(guān)按鍵用導(dǎo)線引出來,然后用ESP8266搭建一個電路,控制這兩根導(dǎo)線的通斷,其實根子里,還是模擬按鍵,只不過不用機(jī)械裝置來按壓微動開關(guān)了。
這么做的好處優(yōu)勢很明顯,就是安全,不管外部控制電路發(fā)生什么問題,大不了,就相當(dāng)于熱水器的開關(guān)按下或者打開,不會引起熱水器任何故障。而且這個方案實現(xiàn)速度快,不用大量的機(jī)械加工工作。
當(dāng)然這樣做是需要一定的技術(shù)基礎(chǔ)的,不建議看了帖子的朋友一定要自己動手DIY。生命誠可貴,用電須謹(jǐn)慎。
綜上所述,總體設(shè)計選用第五套方案,這里沒有說軟件,是因為我只會用機(jī)智云,而且機(jī)智云非常好用,還可以生成APP源碼。
1.3 詳細(xì)設(shè)計
1.3.1 熱水器引出控制線
硬件清單:電線若干、連接器接頭若干
制作步驟:
1.斷開電源,打開熱水器控制面板,它用4個螺絲固定,用頭部帶磁性的螺絲刀拆下,防止掉下來找不到了。
2.拆開控制電路板保護(hù)殼
3.拔掉連接排線,取出電路板,可以看到微動開關(guān),按下電源開關(guān),其實就是按下了右下角那個微動開關(guān)SW4。
4.在電源微動開關(guān)背面找到它的引腳,它是4個引腳,兩個一組,組與組之間平時是不導(dǎo)通的,用萬用表確定好引腳有,焊接電線。我用的是非常好的硅膠線,特別柔軟,但是特別可靠。
5.為硅膠線做一個連接器,我不習(xí)慣用膠帶隨便纏一下,老是覺得那種連接不可靠。
6.用膠**固定一下焊接點,防止拉扯導(dǎo)致短路
7.做一個將導(dǎo)線引出熱水器外部的連接線。注意使用熱縮管。
8.將控制板安裝回去,里面空間足夠大,然后把紅色的連接器留在熱水器控制面板外殼里面。
9.安裝完成的效果是這樣的。
1.3.2 ESP8266控制器設(shè)計
硬件清單:ESP8266模塊、殼體、洞洞板、三極管、電阻、繼電器模塊、導(dǎo)線若干
制作步驟:
1.準(zhǔn)備ESP8266模塊,使用到的引腳有三個:VCC,GND和GPIO12(當(dāng)然也可以用其他引腳,只不過編程時需要進(jìn)行初始化)
2.準(zhǔn)備3.3伏轉(zhuǎn)5伏電路。因為ESP8266輸出的IO電平是3.3伏,而手頭的繼電器是5伏才能控制,所以需要加一個電平轉(zhuǎn)換,或者叫做開關(guān)電路,使用的是NPN三極管S8050,原理是下圖。注意,連接基極的電阻最后測試應(yīng)該為1K,集電極帶箭頭的是輸出。這個電路用到的是三極管的開關(guān)功能。實際上三極管原理非常復(fù)雜,模擬電路有專門的課程進(jìn)行學(xué)習(xí),我們這里只用了一個基本的電路,來實現(xiàn)3.3伏驅(qū)動5伏的器件,也就是繼電器(5伏工作電壓)
3.用洞洞板固定單排母(用來插入ESP8266模塊)和三極管電路,給ESP8266供電(5伏),并將GPIO12連接至三極管電路的基極電阻上。洞洞板打3毫米孔,用來固定在殼體上。
4.給殼體開孔,用來向外連接導(dǎo)線。
5.將洞洞板打孔位置、繼電器板安裝孔位置在殼體內(nèi)部確定好,然后想辦法用膠**固定幾個尼龍螺母。有動手經(jīng)驗的人一看就知道怎么安裝的,這里就不再細(xì)細(xì)贅述過程。
6.將VCC、GND和信號線都連接好,同時也連接好繼電器,我手頭只有一個雙路繼電器,其實單路繼電器就夠用了。
7.給ESP8266供電的是USB接口的充電器,現(xiàn)在家里往往都有好幾個閑置的充電器可以用,充電器也是一個專門的學(xué)問,大廠的充電器質(zhì)量還是杠杠滴,用在這里非常合適(省電、可靠),比自己做一個簡單的220轉(zhuǎn)5伏電路可靠多了。
8.繼電器引出的兩根線連接到熱水器控制線上
9.為了提高可靠性,用了多層熱縮管,將熱水器那端的連接器縮住,可以抵抗水汽可能引起的短路(其實短路就相當(dāng)于電源開關(guān)按下,并不會產(chǎn)生危害性后果)。多層熱縮管的作用,有點類似于德國人連接電纜。
用到的工具比較多,最后做出來的作品看上去卻很簡單
硬件部分做好了之后,還需要軟件的配套才能實現(xiàn)控制熱水器開關(guān)的功能。
二、軟件部分2.1 注冊機(jī)智云賬號
在機(jī)智云自助開發(fā)平臺上注冊自己的賬號,以后自己設(shè)計的任何物聯(lián)網(wǎng)設(shè)備都可以放在這個賬號上面。
https://dev.gizwits.com/zh-cn/developer/
2.2 創(chuàng)建新的設(shè)備并生成源代碼
首先創(chuàng)建一個新設(shè)備
然后添加數(shù)據(jù)點
數(shù)據(jù)點是light_onoff,這個名字可以是自己定義的其他字母。
在基本信息里面就會看到這個數(shù)據(jù)點的基本信息,注意Secret要想看到完整的,還需要二次密碼驗證。
選擇MCU開發(fā)
再選擇SOC方案
然后輸入secret,生成代碼包
下載之后發(fā)現(xiàn)這個代碼包跟樂鑫的結(jié)構(gòu)差不多(這句話是說給用過樂鑫官方代碼朋友聽的)
2.3 編譯ESP8266源代碼
上一步生成的源代碼是運(yùn)行在ESP8266模塊內(nèi)部的,怎么編譯和燒寫呢?
下面這個文檔有說明:
https://dwz.date/fpVy
關(guān)于開發(fā)環(huán)境搭建的內(nèi)容:
https://dwz.date/fpVz
關(guān)于ESP8266平臺文件說明:
跟前面學(xué)習(xí)編譯的內(nèi)容都差不多,也是跟樂鑫一樣在D盤新建一個VM文件夾。
然后把所有的文件都放在這個文件夾。我將文件夾名字命名為SoC_ESP8266,這樣短一些,方便輸入。
首先讓linux和windows共享文件夾
輸入用戶密碼:“espressif”,回車確認(rèn)。
這時能夠在VM VirtualBOX虛擬機(jī)里面通過文件夾管理器看到已經(jīng)共享成功了。
本文所要實現(xiàn)的目的是手機(jī)APP控制這個模塊,實現(xiàn)GPIO12的開關(guān),也就是高低電平的轉(zhuǎn)換。
上面的步驟生成的源代碼是不能實現(xiàn)具體引腳的控制的,那么為了實現(xiàn)這個引腳的控制,就需要對代碼進(jìn)行修改。
修改的步驟是在VM文件夾下面,找到相應(yīng)的.c或者.h文件,用記事本或者其他軟件打開并進(jìn)行編輯。
只修改了一點點。
在user_main.c中的keyinit函數(shù)中,添加了初始化GPIO12的代碼。
然后在gizwits_product.c中,添加了讓小燈翻轉(zhuǎn)的代碼。
沒錯,就是這么簡單,就像是51單片機(jī)一樣,對引腳初始化,然后在功能函數(shù)中讓它變成高低電平。
2.4 編譯源代碼并燒寫進(jìn)入ESP8266
接下來開始對這個源代碼進(jìn)行編譯。
下面進(jìn)入app目錄,下面這個界面是運(yùn)行了VM VirtualBOX虛擬機(jī)里面的LX客戶端。模擬的是linux操作系統(tǒng)。
進(jìn)入某個目錄用的是cd命令。
運(yùn)行編譯腳本:./gen_misc.sh
編譯速度很快
接下來開始燒寫
機(jī)智云自動生成的代碼中,有一張圖片,這個圖片說明了該燒寫進(jìn)入哪個地址
下面開始燒寫。
為了方便初學(xué)者看懂,這里說一下硬件連接,ESP8266模塊由上下兩塊組成,其中上面這個就是ESP8266功能板,下面這個其實是一個USB轉(zhuǎn)串口的板子,芯片是CH340,只不過做成了和ESP8266功能板的尺寸一樣了,其實它的功能是和買的那種USB轉(zhuǎn)串口的模塊是一樣的。用一根micro USB數(shù)據(jù)線,也就是目前手機(jī)常用的充電/數(shù)據(jù)線就行了,注意,不是TYPE-C數(shù)據(jù)線。連接電腦之后,會自動安裝驅(qū)動程序,當(dāng)然,要確保電腦是聯(lián)網(wǎng)狀態(tài)。驅(qū)動安裝成功之后,就會在設(shè)備管理器中顯示當(dāng)前串口是COM幾,串口號記下來,在燒寫的時候,選擇這個串口號就行了。
點擊電腦上的燒寫軟件START,然后按下板子上的FLASH按鍵不松手,然后按下RST按鍵,松手,再松開FLASH按鍵。一般情況下可以一次燒寫成功,如果不成功,請再次點擊燒寫START,再次按照FLASH和RST按鍵步驟進(jìn)行燒寫。
燒寫完之后,模塊就能夠使用了。
三、App開發(fā)
工具非常重要,我們所要做的控制器APP,只需要一個開關(guān)按鈕,實現(xiàn)對物聯(lián)網(wǎng)模塊的控制就行了,所以,能用現(xiàn)成的解決方案最好。
好在機(jī)智云可以自動生成代碼,能做的,都做好了。
3.1 登錄機(jī)智云自助開發(fā)平臺:dev.gizwits.com
3.2 首先添加一個新的應(yīng)用
定義一個名稱
這是我們要控制的設(shè)備ID和SECRET
3.3 在線生成APP源碼
選擇安卓源代碼
生成速度很快
生成的代碼中,有AndroidStudio和Eclipse兩種形式的代碼。
推薦選擇Android Studio。注意這個軟件需要前期下載SDK,具體的下載方式請自行網(wǎng)絡(luò)查詢。這方面的知識屬于本文之外的知識,為了保持文章脈絡(luò)一致性,在此就不詳細(xì)描述。如需博主幫助,請留言索取詳細(xì)設(shè)置方式。
編譯好的APP,安裝到手機(jī)上之后的界面如下。這些視覺元素都是機(jī)智云自動生成好的。如果需要進(jìn)行美化等等操作,也需要安卓編程的基礎(chǔ)。在此就不詳細(xì)描述了。通過這個APP,就可以實現(xiàn)手機(jī)對家里熱水器控制模塊的控制了。手機(jī)無論在哪里,只要有網(wǎng)絡(luò),就能夠?qū)崿F(xiàn)對家里熱水器的控制。
這個APP制作出來后,只能在一臺手機(jī)上使用。這是它的一個缺點。總不能誰想用熱水器都給我打個電話讓我來開關(guān)吧,所以還是需要做成多人可控的才行。
給家里的熱水器改造了物聯(lián)網(wǎng)開關(guān)之后,在第三節(jié)中開發(fā)App只能我一個人控制。為了達(dá)到全家人均能遠(yuǎn)程控制熱水器,所以我又制作了設(shè)備二維碼,方便家人也能掃碼控制改造后的智能熱水器。
四、實現(xiàn)產(chǎn)品共享
4.1 首先產(chǎn)品需要開通共享功能
在機(jī)智云開發(fā)者中心“開啟設(shè)備分享功能”
機(jī)智云開發(fā)者中心:dev.gizwtis.com
4.2 在文檔中心搜索“二維碼”
文檔中心:docs.gizwits.com
APP綁定設(shè)備二維碼生成教程
跟著說明走就行了
4.3 注意事項
首先需要授權(quán)
然后才開始進(jìn)行生成。
需要輸入product key,和MAC地址。這個界面跟以前版本的不一樣了,以前直接輸入,現(xiàn)在還要填寫格式才行。我的是HEX格式的。
MAC地址可以從設(shè)備日志進(jìn)行查詢。
返回201,生成成功了。
點擊選擇“查詢所有生成的二維碼”
展開之后,輸入product_key,填寫之后try it out
生成成功了。代碼是200.
下載地址就是機(jī)智云通用地址和生成的地址合起來。
http://qrcode.gizwitsapi.com:1800/static/zipfiles/2XXXXXX.zip
在瀏覽器輸入這個地址之后,再下載。
下載的圖片是這樣的,這個圖片是以MAC地址進(jìn)行命名的。XXXXXXXXc0ce925,以后讓晶掃描二維碼就可以控制家里的熱水器了。
注意,這個二維碼通過機(jī)智云APP就能夠綁定。
機(jī)智云APP可以在應(yīng)用商店搜搜“機(jī)智云”即可下載安裝。
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2903文章
44275瀏覽量
371274 -
熱水器
+關(guān)注
關(guān)注
5文章
214瀏覽量
27059
發(fā)布評論請先 登錄
相關(guān)推薦
評論