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