今天試了一下用51單片機來發送AT指令的方式實現對ESP8266的配置,我配置的是Client的透傳模式,這樣就可以直接傳輸數據了。交流交流~同時本貼我也有一些困惑想問大佬們
圖片里面我用了兩個單片機,實際上只用了小的那個,大的開發板我只用了上面的一些配件(led和按鍵),連接按鍵是因為我把每一條指令和按鍵關聯起來了,只要根據順序按按鍵就可以了,這里一定要注意一下,如果你下載了附件準備試驗,就必須修改代碼(路由器的名稱和密碼,TCP協議的ip地址和端口號)。
其中路由器的名稱和密碼就不用我多說了,然后是TCP協議的ip地址和端口號,發送這條指令的前提是你的手機也連接了同一個的路由器,在手機里面進行配置端口號的時候點擊鏈接會有ip地址的顯示(附件里面有安卓版的軟件),完全從零開始摸的可以先看看我的上一篇帖子~
在寫keil的代碼過程中我發現一個小困惑,如果我想傳送一個字符串到ESP8266里面然后再由單片機接受并處理,我能想到的方式就是:比如字符串“qa”,我在手機上輸入qa后點擊發送,因為串口的傳輸方式是8位一個數據段進行傳輸(一般情況下,ESP8266我想應該也是這種方式進行的傳送,因為之前進行調試的時候,串口調試助手的配置就是如此,而且只有這樣單片機和ESP8266才能進行通信,一個字符一個字符),單片機的接收方式也就是一個字符一個字符進行,然后再用一個字符數組保存這兩個字符‘q’和‘a’,就組成了一個字符串,那么我的困惑就來了,既然傳輸方式是一個字符一個字符進行傳輸,那么就應該有間隔,如果這個要傳輸的字符串有很多個字符,ESP8266從發送第一個字符開始,單片機會有一個SBUF進行保存,如果單片機在處理第一個字符的時候,ESP8266就傳送第三個字符了,這樣的情況下SBUF里面不就是第三個字符的內容嗎,那第二個字符不就被漏掉了嗎???在字符串數組里面不就少了一些字符么???這種情況我還沒試過,所以只是我的一個猜測,如果有大佬路過請幫我理一理,我想知道是不是會存在這樣的問題,還有就是我對ESP8266串口傳輸到單片機是一個字符一個字符的理解是不是對的?
具體操作步驟和細節我就不多寫了,如果是從零開始準備學的伙伴們,你們可以先買一個小的開發板來試一試,建議用ESP-01和ESP-12F,我買的是這兩種,淘寶上都有賣,比較便宜,而且也有免費的資料。
完全從零開始,建議先從AT指令開始走,這也是最簡單的開發方式,搭配外部的MCU,只把ESP8266當成一個無線傳輸的工具。
全部資料51hei下載地址:
lot.zip
(14.59 MB, 下載次數: 480)
2018-8-14 14:09 上傳
點擊文件名下載附件
51+ESP8266 AT指令
|