上一次我們初步認識了SDK程式設計和透傳,給模組更新FW。這一次我們直接用一個開源平臺實現我們最終的目的,用一個APP遠端控制模組開關。我們使用的平臺是機智雲提供的開發平臺。開始之前我們先把硬體搭建起來,大概規劃一下成品的樣子電路規劃示意圖
產品線路規劃
1.模組焊接中,請忽略我凌亂的桌面
製作中
2.電源焊接中,使用了一個電源母頭插座和三顆AMS11173.3給裝置供電,為什麼使用了三顆晶片呢,主要是因為第一這個晶片很便宜第二為了保持穩定,給模組供電使用一顆,還有兩顆繼電器各自使用一顆,單獨供電
正面使用了電源插頭母座
背面就是AMS11173.3了可以看到一共三顆
背面三顆LDO晶片
模組除錯還是使用的可調電源
除錯中
最後成品的初步規劃,使用了一個常見的LED燈的驅動器外殼,正好可以放進去。那兩顆藍色就是繼電器,規格是5V低電平驅動,輸出端一個接燈作為燈的開關,一個接NAS的開機按鈕
成品規劃
電路搭建完後,我們開始進行軟體的製作,為了減少工作量。我們直接使用開源平臺的程式碼生成功能來完成程式碼搭建,最後再根據需求簡單修改一部分我們使用的開原始碼是機智雲提供的,機智雲也是目前比較熱門的物聯網平臺之一首先我們開啟機智雲的官網,在開發者中心註冊賬號:
註冊賬號
註冊完後登入開發者中心建立產品
按照下圖所示建立產品,名字寫你自己想要的名字
儲存後進入產品,
基本資訊
選擇資料點,按照下圖建立資料點,在這個產品我們只用到前兩個資料點,所以只建立前兩個就可以,後面的幾個可以不用建立
資料點
選擇MCU開發,按下圖所示,生成程式碼
生成程式碼
然後下載程式碼
然後解壓開下載的壓縮包,開啟ESP8266_SoC_User_Guide _V0.5.pdf
我們去看紅線標識的這個檔案
由於我們這個專案只使用了LED1 和PC的功能,所以我們只需要在這兩個函式下的if後面的//user handle下面寫上我們要處理的資訊即可,那麼要寫什麼呢?還記得我們電路設計圖吧,不記得了的去看一下我們第一張圖,我們在GPIO的12和13口接了兩個繼電器,那麼在這裡我們就要在接收的指令後,讓12和13口輸出相應的電平。我們使用的是低電平觸發的繼電器,所以當我們輸出低電平給繼電器時,繼電器會動作閉合,相對於開啟開關,當輸出高電平給繼電器時,繼電器會斷開,相當於關閉開關。知道了這些後我們就知道了怎麼操作了。我們的燈接在12口那麼當我們給出了開燈的指令時,就需要12口輸出低電平。當給出關燈的命令時,12口就要輸出高電平NAS接到了13口當我們給出了開機指令時,13口要給出低電平,但是開機按鈕按下時一個短時間動作,如果一直按下的話,NAS會不斷的重啟,所以當我們按下半秒鐘要自動鬆開開關,所以我們延時500ms後,讓13口輸出高電平,那APP的開機指令給出後APP會保持開機狀態,所以我們要把APP給出關機指令,那收到這個指令後我們都不需要做,這個指令只是讓APP復位而已。了解了這裡,我們去寫程式碼,寫程式碼之前,我們還是先要去看SDK,看看怎麼操作GPIO口那部分。
可以看到SDK裡面的說明,在操作GPIO輸出前要先做一個 管腳功能選擇,然後就可以操作輸出了,使能函式裡的引數都在我們從機智雲下的壓縮包裡
由於我們只使用12和13腳,其他的我們就先不管了,參考SDK的說明,我們先給12和13腳做功能選擇PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U, FUNC_GPIO12);PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTCK_U, FUNC_GPIO13);然後做輸入高電平和低電平,由於SDK裡定義的方式太麻煩,實際上在gpio.h和eagle_soc.h裡定義了了一個簡單的函式GPIO_OUTPUT_SET(GPIO_ID_PIN(12),0); 12口輸出低電平GPIO_OUTPUT_SET(GPIO_ID_PIN(12),1); 12口輸出高電平GPIO_OUTPUT_SET(GPIO_ID_PIN(13),0); 13口輸出低電平GPIO_OUTPUT_SET(GPIO_ID_PIN(13),1); 13口輸出高電平我們還要用到兩個函式delay_ms();毫秒延時函式system_soft_wdt_feed();喂狗函式(SDK裡第三頁有說明)
知道了這些我們去修改gizwits_product.c 修改為
修改完之後我們去編譯這個程式,因為是使用的機智雲提供的程式,所以我們要看機智雲推薦的編譯方法去搭建開發環境
按照說明一步步來,最後生成我們需要的檔案
然後我們再回到我們從機智雲下載的的壓縮包解壓後的資料夾,按照燒錄說明進行燒錄
這些bin檔案都在bin資料夾下,user1.4096.new.6.bin檔案在bin資料夾下的upgrade資料夾內
到這裡我們的硬體程式設計部分已經告一段落,我們以及鞥可以使用機智雲的公版APP進行遠端控制我們的開關了。首先我們去機智雲的下載中心去下載一個公版APP,安裝在手機上
安裝後開啟APP註冊賬號
登入APP
點右上角的加號,選擇一鍵配置
輸入你的wifi和密碼
選擇樂鑫模組,並點確定,同時給模組上電:出現新增裝置的標誌,等待一會就出出現新裝置
就出現了我們定義好的6個數據點,由於我們只用了第一個和第二個,後面的四個都沒有反應。
此時如果你的繼電器都已經連線好了,
按下APP上的第一個開關,接在12口的繼電器會閉合,關閉第一個開關,12口的繼電器斷開
按下PC的開關,13口的繼電器閉合半秒後自動斷開,關閉第二個開關13口繼電器是不響應的
到現在我們已經順利實現了遠端控制WIFI開關的功能。使用的時候我們會發現一個問題
公版APP可能會出現記不住賬號,每次都需要輸入賬號密碼APP介面不夠美觀和個性化那麼下一次我們再來利用機智雲的開源APP定製一個個性化的APP。