現在很多大學嵌入式畢設都要求云端控制,本文章就教一下大家如何使用esp8266去連接機智云的app去進行顯示stm32的外設傳感器數據啊,控制一些外設啊等。
因為本文章主要教大家如何移植機智云的代碼到自己的工程,所以前面的一些準備工作(燒錄esp8266的固件,機智云app的使用等)大家可以去其他博主那里參考一下(如果大家有需要可以評論區提出,需求多的話也可以給大家寫出來),但是esp8266的燒錄工具和固件我會放到文章最后的網盤鏈接中,大家自行點贊獲取。
此次演示的機智云app如下:
這里給大家準備了機智云app的下載鏈接
機智云APP(下載鏈接:https://devdocs.gizwits.com/download.html#166419072635445)
大家可以在虛擬設備中用機智云手機app掃碼查看自己創建的設備:
app準備好以后就可以到mcu開發里面去自動生成代碼了,如下圖所示:?
接下來就到了最重要的環節:代碼移植環節?
1.將下載下來的代碼里面的Gizwits和Utils兩個文件復制粘貼到自己的工程文件中
(同時別忘記在自己的keil工程代碼里把這兩個文件的.c和.h文件添加到工程中)
2.接下來首先我們打開工程代碼中的gizwits_product.c,因為我們用的是標準庫函數,所以要把hal庫的內容注釋掉(如果最后按照我的步驟編譯報錯,檢查一下是否有其它的hal庫函數沒注釋干凈)
3.接下來依然在這個代碼里往下滑,替換一行代碼并注釋兩個函數如下圖所示:
NVIC_SystemReset();
4.繼續往下滑,繼續注釋代碼,如下圖所示:
5.接下來繼續往下滑,將hal庫的串口代碼注釋掉換成自己的使用標準庫串口代碼(并不一定要和我一樣用串口3):
USART_SendData(USART3,buf[i]);while(USART_GetFlagStatus(USART3,USART_FLAG_TC) == RESET);if(i>=2&&buf[i] == 0xFF){USART_SendData(USART3,0x55);while(USART_GetFlagStatus(USART3,USART_FLAG_TC) == RESET);}
?6.接下來gizwits_product.h要進行相應的修改,如下圖所示
#include <stm32f10x.h>
7.接下來去你剛剛修改的串口中斷函數里面添加相應的頭文件和一段代碼,如下所示
#include "gizwits_product.h"
gizPutData(&res, 1);
8.接下來開啟一個1ms的定時器,在定時器中斷函數里運行如下代碼:
gizTimerMs();
9.接下來可以對gizwits_product.c內的userHandle(?)?函數進行賦值你想要上傳到app的相應的傳感器數據(下面會解釋這個數據的來源):
10.接下來找到gizwits_product.c內的gizwitsEventProcess函數?,下圖圈出的地方可替換自己想控制的開關變量(這里我演示的是控制PA11口的高低電平,也就是控制一個led的亮滅)。
11.最后是主函數和while循環:初始化的代碼中與esp8266通訊的串口是必須的,另一個串口是測試用的,會打印一些信息到上位機上(方便調試),1ms的定時器是必須的,此外下面的三個函數像我一樣放著就行了。(圖中圈出來的函數是必須的,其他的函數根據你自己的項目添加)
userInit();gizwitsInit();gizwitsSetMode(2);
12.然后是while循環:圈出來的函數是必須有的,此外xinlv和xunyang其實是獲取超聲波的距離,我懶得改變量名就直接用了。
userHandle();gizwitsHandle((dataPoint_t *)¤tDataPoint);
13.至此,代碼就移植完了,接下來就可以燒錄程序到單片機了,然后用手機機智云app去連接esp8266,最重要的是手機和esp8266最好用同一個wifi且必須是2.4G的,沒有的話可以用手機熱點,手機熱點一般是2.4G的,機智云連接流程如下:
14.一鍵配置后就是輸入wifi賬號和密碼(再提示一下要用2.4G的!!!)?
然后按下圖所示點擊即可,
15.點擊完后根據頁面提示點擊我已完成上述操作即可,當進入配對頁面后,我們可以盯著開熱點的手機,如果他的熱點多了一個用戶,大概率就是esp8266連接上了,這時候如果配對還沒結束你也可以不用等了,直接退出就可以看到一個局域網在線的設備,就是你的設備,點擊進去即可。
16.最終顯示的效果如圖所示?,高度1和高度2是兩個超聲波測的值,不過由于while循環的速度很快,手機app數據更新的速度很慢,經常會出現oled上面信息更新了,手機上的數據要過一會才會更新,此外,我也測試了蜂鳴器的開關也是正常的在這里就不給大家演示了?。
?通過網盤分享的文件:esp8266燒錄固件.zip
鏈接: https://pan.baidu.com/s/1ZWBkJq87xvhORIBU87RNBQ?pwd=0531 提取碼: 0531
?如果大家需要我的工程源碼可以一件三連后私聊獲取!