ESP8266 at指令集 學習筆記

2021-10-09 01:20:40 字數 3737 閱讀 6058

1.下面所有的命令,不做特殊說明,命令結尾處都要加/r/n裝換成ascii就是0x0d,0x0a。在程式設計中,這個很重要。我們的這個文件主要針對的也是程式設計過程。

2.at命令,程式設計實現和用串列埠除錯有很大的區別,主要體現在時間的延時上,在程式設計中,很多at命令都需要相對應的延時,有些命令的延時需要長一些,而有一些則需要盡量的短,而這時間和實際環境也相關。所以,程式設計實現esp8266的功能需要大量的時間來除錯。

3.每個人用的模組的硬體電路可能有差異,所以如果對硬體不熟悉,就不能完全照抄別人的**。當然,本質都是一樣的,我們也得學習學習別人寫好的那些除錯**,看他們的思路與設計過程,集眾家之所長。

5.初次除錯時,需要單步除錯,觀察每一步得到的返回字元,看是否正確。

6.文件涉及的命令很少,esp8266本身at命令也不多,主要用的是sta模式和ap模式,最後的目的便是閘道器(也就是esp8266模組)和伺服器的通訊,通訊才是重點,當然,肯定是不會直接通訊的,必須依靠網路傳送協議,也就是mqtt了,對於初次學習,這個協議有些難。

需要:1.usb轉ttl模組

2.esp8266模組

3.杜邦線若干

4.電腦

usb轉ttl模組

usb轉ttl模組與esp8266的連線示意圖:

接電腦上後,這時無線模組的藍燈會閃兩下,紅燈會常亮。用手機搜尋wifi網路,會看到乙個esp8266的無線訊號源,說明模組正常啟動了。

我們這裡的無線訊號為:lm930126    密碼:123456

連線完成後,在電腦的裝置管理器中能看到該串列埠裝置,這時候開啟串列埠助手軟體,這裡使用的是sscom v5.13.1

調整如下圖所示進行波特率的調整

復位分兩種,第一種是由at指令實行:at+rst,延時2s

第二種由硬體執行:此處不做詳細說明,這是各個模組的硬體設計決定的。

我們建議使用第一種。

這個命令不會返回什麼資訊

設定sta模式,延時2.5s。

這個命令發出去之後,會得到返回的資訊:

at+cwmode=1  0x0d 0x0d 0x0a 0x0d 0x0a  ok 0x0d 0x0a

注意:這是一條字串,中間是沒有空格的,0x0d與0x0a是換行和回車的ascii碼,其實就是字元』/r』  『/n』

at+cwmode=1 使我們發出去的命令,但是同樣返回了,這個叫回顯。回顯是可以通過命令關閉的。

不同的裝置可能會有差異,但是成功了肯定是有ok的。

這個命令發出去返回的字串很長

這條命令的意思是列出現在能夠查到的wifi訊號。可以仔細看一看,你的無線訊號都會成字串列在其中。在整個字串的最後,同樣會有ok。

這一步便是連線wifi,延時的時間要長一些,否則會等不到返回的資訊。我們測試時延時18s,成功了會有ok的返回。

你可以將這步的延時時間改了,進入除錯狀態,看儲存器,會發現接收了一半就沒有了,所以這裡延時的時間很重要。

這一命令發出去後,會立刻受到乙個wifi disconnected 的字串,不用急,等一會會有wifi connected 的字串,連上網路是需要一定的時間的。

這一步的引數需要根據自己的ip的位址來設定,成功了會返回ok。延時4秒.

這兩個依次發出去。

第一句的意思是設定為透傳模式,第二句 則是進入透傳模式。進入透傳模式成功,會返回『>』符號。

一旦進入透傳模式,那麼傳送at命令就失效了。

這兩個命令各延時2s,我們建議第一步之後再延時一秒,更加穩定,這裡需要根據自己的**和硬體進行除錯。

uno只有serial無serial1,為實現相關功能必須使用軟串列埠的方式進行連線,這裡我們將digital 的10、11兩個口配置成軟串列埠,10為rx,11為tx口,注意跟模組的針**叉連線。

#include //軟串列埠配置

softwareserial myserial(10, 11); //rx--10;tx--11;兩針**叉連線

第一次使用或者測試的時候僅用上面的程式即可,再往後的學習中可以再加上一些程式用來進行一些常規性的檢測。

在setup函式中的一些初始化設定。

注意波特率的設定值,arduino 的串列埠波特率要與esp8266的wifi模組波特率相同,波特率不一致時會出現亂碼或者丟包現象。

有種特殊的情況是esp8266的wifi模組的出廠預設波特率過高超過了arduino 最高支援的波特率,

執行下面的at指令可修改預設波特率:

at+uart_def=57600,8,1,0,0

void setup() //判斷串列埠是否開啟

// 軟串列埠

myserial.begin(9600);

// myserial.println("at+uart_def=9600,8,1,0,0");//解決特殊情況,或者先連線後在串列埠監視器中輸入at指令

// delay(1000);

while (!myserial) {}//判斷串列埠是否開啟

使用3.3v電源,正常供電後藍燈閃兩下,紅燈常亮,模組正常啟動。直接在arduino ide中的串列埠監視器中進行at指令的傳送,實現程式如下,是將ide的串列埠監視器輸入內容連線到esp8266的串列埠上,將esp8266的列印連線到ide的監視器上。

void loop() // run over and over

//at指令實行:at+rst,延時2s

docmd("at+rst","ok",2000);

這裡需要注意,第一步的復位是退出其他的設定,準備ap設定。

而這一步的復位是必須加的,否則第二步的設定就沒有用。

設定esp8266的熱點名稱和密碼。

const char *ssid="espap";

const char *password="thereisnospoon";

at+cipsto=5000

第一條指令是設定本地埠號,也就是之後連線上這個熱點後,需要設定的乙個埠號。

學習ESP8266 AT指令開發獲取網路時間

用到的指令介紹 at cwmode 配置wifi模式 at rst重啟 at cwjap 連線ap at cipstart 建立tcp連線 遠端端號是80 at cipsend 透傳傳送資料 api介面 具體過程 先配置wifi,esp8266連上路由器 at cwmode 3 at rst at ...

玩轉ESP8266 01 AT指令集

二 設定指令 三 查詢指令 指令返回 atok 指令返回 at rst ok指令 返回at ciobaud baudrate ok預設波特率為115200 引數取值 baudrate 1200 2400 4800 9600 14400 19200 38400 43000 57600 76800 11...

ARM 指令集學習記錄

通用暫存器和狀態暫存器。通用暫存器包括r0 r15,可分為三類,未分組暫存器,分組暫存器及程式計數器。未分組暫存器 r0 r7,儲存資料或位址。分組暫存器 r8 r14,其中r8 r12對應兩個物理暫存器,r13 r14對應多個。r13常用作堆疊指標。r14稱作程式連線暫存器,lr 程式暫存器 pc...