2017/2/5

ESP8266 ESP-01s測試(02)利用aduino uno板

ESP8266 ESP-01s測試(02)利用aduino uno

如果沒有USB-TTL轉接模組或轉接線要測試ESP-01s就要用到arduino 模組,我買的是uno板,所以以下說明都是指用uno板。利用arduino測試有很多方法,我也沒有都試過,有的書上寫說拔掉arduino的晶片,但沒有用的拔取器這不建議使用,因拔了幾次晶片的接腳可能就會歪掉或是斷掉,以前玩8051燒錄時都要用拔取器來拔出晶片,但也有一種arduino的版本是晶片製造在PCB板的表面,那也沒晶片可拔。另外也有人說把arduinoreset接腳接地,這樣arduino的序列埠便可用來和ESP-01s溝通。另我記得也試過把arduino放進「空」的程式,也就是在setup{}loop{}的括號內都是空的,將這樣的程式燒進arduino後便可將ESP-01sRx端接arduinoD0(Rx)Tx端接arduinoD1(Tx),再將arduino接上電腦,這樣便可讓電腦和ESP-01s通訊了。但以上的方法都要佔用arduino的序列埠,使得arduino本身被bypass掉,若要上傳程式到arduino還要拔掉ESP-01s的接線,這樣真的不是很方便。
另一個較好的方法是使用software serial,也就是利用軟體來當序列埠,這樣的好處是電腦可以和arduino溝通,而arduino再和ESP-01s溝通,這樣便可方便修改程式後不拆線直接上傳至arduino並執行看結果。其做法如下:
arduino的程式碼裡定義arduino軟體的送收埠,如定義D10為接收,D11為傳送,再把ESP-01s的傳送接腳接至arduinoD10,接收端接至D11,且記得ESP-01sEN接腳要接3.3v,若是由外部獨立電源非arduino3.3v輸出供電,則獨立電源的ground(GND)要和arduinoGND連接,這叫common ground,在電子電路裡很重要不能忽略。如下圖接好線後就可準備上傳程式。

#include <softwareserial.h>
SoftwareSerial ESP8266(10, 11); // RX | TX
void setup() {
Serial.begin(9600);
ESP8266.begin(9600);
}
void loop()
{
    // Keep reading from ESP-01s and send to Arduino Serial Monitor
    if (ESP8266.available())
   {
     Serial.write(ESP8266.read());
    }
     // Keep reading from Arduino Serial Monitor and send to ESP-01s
    if (Serial.available())
    {
      ESP8266.write(Serial.read());
     }
}


此程式相當簡單就只有兩個主要動作,其一是不斷檢查軟體ESP8266埠是否有接收到訊息,若有則轉由序列埠由電腦終端機軟體顯示,另一是不斷檢查序列埠是否有接收到訊息,若有則轉送至ESP8266。檢查一下程式碼沒有錯誤後就可上傳,上傳後便可由arduino IDEserial monitor或者是另外開啟realterm選好arduino COM 埠後便可進行AT command測試。Arduino 的pin 11 (黃 色)也可先接個1k的電阻再接到ESP-01s的Rx端,因Arduino 的操作電壓是5v,而ESP-01s是3.3v。

沒有留言:

張貼留言