寒假前就從x寶買了esp-12e以及esp32s,當時似乎是想給自己的藍牙開門升級換代?esp32s拿來過度linux?
寒假放在書包拿回去以為有時間會玩玩,沒想到一直耽擱到現在。前兩天才拿出來,網上搜了搜完全不是那么會事,反映了自己購物的時候多有不理智
不知道為什么,官方最新版本里面直接把esp12e的文檔給刪除了,估計是設計有缺陷?只留下了esp12f,之后再百度文庫有找到12e的文檔。
說下基本配置,東西雖小。內容卻不簡單。
mcu是Tensiliaca L106超低功耗32位微型mcu,主頻支持80M和160M,板載的晶振是40M,有10 bit ADC,UART,SPI,GPIO,IR Remote Control,PWM
內置PLL,穩壓器和電源管理組建
支持標准的IEEE802.11b/g/n協議,完整的TCP/IP協議棧
支持STA/AP/STA+AP 工作模式
支持AT遠程升級以及雲端OTA升級
支持Smart Config功能(Android IOS)
用戶剩余RAM大致36Kb,板載4M spi flash
燒錄固件:
12e出場自帶了最新的安信可AT固件,然后偶然間看到網上有epush這么個網站,他們自己給自己的定位是這樣的:
什么是ESPUSH
ES-PUSH是一個針對 樂鑫公司 http://espressif.com/ 的8266 WIFI物理網芯片開發的推送服務平台,具備實時遠程數據及指令推送,數據收集與整理歸納,雲端自動推送升級等功能。
ESP8266內置低功耗32位芯片,可兼作應用處理器,同時自帶眾多GPIO引腳,設置引腳復用后大大方便控制外部設備電路。這使得我們的物聯網設備或其他需要wifi網絡功能的設備模塊無需額外集成CPU即可實現大部分功能,無疑是開發者的福音。
但ESP8266使用的TCP/IP編程與通常的Socket方式不同,其網絡控制結構 struct espconn 基於對lwip的淺層封裝實現,使用異步回調機制,給開發帶來了諸多不變,往常的大量的基於socket的網絡編程庫與經驗得不到重復使用。故此開發了這樣一個數據推送平台。以期能為開發者分憂。
ES-PUSH只希望解決一個問題,即能在任何有網絡的地方隨時控制處於內網中的WIFI設備,譬如在公司里控制家里的wifi機器人小車,回家的路上使用4G網絡控制家里的熱水器開關、空調器開關等。
有避免重復造輪子的機會為什么不用,況且那些輪子我估計我現在還造不出來23333
他們還做了一個一鍵燒錄工具,傻瓜是操作,“比把大象放進冰箱還簡單”
使用ESPUSH專用刷寫工具
下載ESPUSH固件專屬刷寫工具,無需下載固件,只需要選擇目標串口,即可一鍵完成刷寫。 http://pan.baidu.com/s/1bpwnBiv
注意:下載模式的設置,出了下圖的基本連線,還要把io0接到gnd然后上電以燒錄
燒錄完了,斷開io0與gnd
使用XShell工具而非圖示的secureCRT,則參考如下圖示完成配置:

選擇串口,並為其命名后,點擊 Serial 繼續

配置串口的波特率,留意AT固件一般使用的波特率為115200,NodeMCU使用的波特率為9600,您可以在啟動源碼中自行修改此值。

在「終端」的「VT」選項卡中,務必選中 「New Line Mode」選項,完畢后連接即可。
然后斷電上電
開啟調試控制台,默認波特率BIT_RATE_115200,按以下方式輸入指令:
//注解,以下以 「>」開頭的為輸入行,已「<」開頭的為輸出行,其余為注解;
//AT 命令測試
>AT
<OK
//切換為STATION模式
>AT+CWMODE=1
<OK
//請配置為正確的SSID與密碼,並能連入網絡。
>AT+CWJAP="OUR_SSID","PWD_SSID"
<OK
//查詢網絡連接狀態
>AT+CIPSTA?
<+CIPSTA:"192.168.0.102"
<OK
//查看推送狀態
>AT+PUSH?
<3
<OK
//以下請替換為你自己添加的APPID與APPKEY,不要引號,直接輸入即可, 這里請注意是APPID,非APPNAME,數字的,第一欄的APPID
>AT+PUSH_DEF=APPID,APPKEY
<OK
//若過較長時間仍一直返回3,則無法連接到服務器,請AT+RST后重試
>AT+PUSH?
<2
<OK
//收到來自遠端的數據。
+MSG,20:HELLO,FROM PUSHMSG.
//控制GPIO的指令
>AT+GPIO_LOW=15
<OK
>AT+GPIO_HIGH=12
<OK
在平台 在線設備 https://espush.cn/web/devices/、數據推送 https://espush.cn/web/pushmsg/ 等處,均可向設備發送指令,指令將從串口傳出。
AT指令說明
AT-PUSH固件新增了3個命令,以下做簡要說明 - AT+PUSH,使用AT+PUSH?可查詢當前連接狀態,返回值定義為:
CONNECTING = 0 DNS_LOOKUP = 1 CONNECTED = 2 DISCONNECTED = 3
留意只有返回值為 2 時才代表已連接,其余都是未連接狀態,如連接中,DNS查找中,已斷開等。
- AT+PUSH_DEF=APPID,APPKEY 可連入ES-PUSH系統。命令為異步式,敲入后立即返回,並將推送APP信息包括ID於KEY保存在flash中,下次啟動且進入station模式后,將自動連接平台。APPID與APPKEY均不需要輸入引號,直接鍵入即可,如` AT+PUSH_DEF=123134,25b28f0ffb9711e4a96d4341579b49a1`,且后面不得跟隨多余的空格或其他可見或不可見字符。此條為無效的示例命令,照抄不會連入平台。
- AT+PUSH_CUR=APPID,APPKEY 可連入ES-PUSH系統,與`AT+PUSH_DEF`類似,但不同的是並不會保存推送連接信息,下次啟動后需要重新設置。
可隨時使用AT+PUSH?查詢連接狀態,當處於可連接時,能使用如下命令。 - AT+PUSHMSG,數據推送,距離推送HELLO字符串到服務器可發送指令`AT+PUSHMSG=HELLO`即可。在與服務器正常連接的情況下返回OK,否則返回ERROR。
- AT+N_AP ,使用此命令,開啟AP組網模式,此時模塊將發出名為ESP_AT的SSID,使用密碼espush.cn登入后,網關機器即為模塊地址,此時可配置目標路由器的SSID與密碼
- AT+N_SMC ,使用此命令,開啟SmartConfig組網模式,此時模塊將監聽空中的無線廣播數據,使用官網的ESPTouch APK即可連接並配置模塊的聯網信息,官網APK下載地址:https://github.com/EspressifApp/EsptouchForAndroid
- AT+PUSHCLOSE,使用此命令斷開與服務器的連接,斷開后服務端也將無法推送數據到終端。返回OK。
- +MSG,收到數據后,模塊將向串口寫入以下數據,數據已 +MSG %d: 開頭,其中%d為收到的數據長度
- AT+GPIO_LOW=N ,使用此指令控制指定GPIO口的低電平,可遠程使用此命令。
- AT+GPIO_HIGH=N,同上,使用此命令控制GPIO口的高電平,可遠程使用。可控制的GPIO口參考如下:
//0 ~ 5
{0, FUNC_GPIO0, PERIPHS_IO_MUX_GPIO0_U}, {1, FUNC_GPIO1, PERIPHS_IO_MUX_U0TXD_U}, //串口tx口,請不要使用 {2, FUNC_GPIO2, PERIPHS_IO_MUX_GPIO2_U}, {3, FUNC_GPIO3, PERIPHS_IO_MUX_U0RXD_U}, //串口RX口,請不要使用 {4, FUNC_GPIO4, PERIPHS_IO_MUX_GPIO4_U}, {5, FUNC_GPIO5, PERIPHS_IO_MUX_GPIO5_U}, //9 ~ 10 {9, FUNC_GPIO9, PERIPHS_IO_MUX_SD_DATA2_U}, {10, FUNC_GPIO10, PERIPHS_IO_MUX_SD_DATA3_U}, //12~15 {12, FUNC_GPIO12, PERIPHS_IO_MUX_MTDI_U}, {13, FUNC_GPIO13, PERIPHS_IO_MUX_MTCK_U}, {14, FUNC_GPIO14, PERIPHS_IO_MUX_MTMS_U}, {15, FUNC_GPIO15, PERIPHS_IO_MUX_MTDO_U},
使用范例及方式見下圖


注意,關於GPIO控制指令,你需要知道我的測試結果: 如下口的測試是可以的:0, 2, 4,5,12,13,14,15,其中4,5 比較特殊,對於小黃版,用單獨接LED測試失敗,但板載的LED卻OK。以下GPIO口測試失敗,1,3,9,10,其中1和3 是rx與tx口,使用的話,串口會失去響應,但事實上系統仍然在繼續運轉,你可以從雲端推送 AT+RST 使之重啟。另外9和10導致模塊長時間失去響應,並最終導致無法喂狗而重啟,導致wdt reset,繼而重啟。
至此,基本環境就弄好了,已經可以再有網絡的地方遠程控制12e了,剩下的就交給自己的想法了!!!
REF: