[自製四軸]Arduino+ESP8266

簡單記錄一下Arduino+ESP8266如何接線,Arduino程式只是簡單將ESP8266設定好SSID&password。

接線圖

0

我們可以看到除了ESP8266以外,我們還接了Logic level converter & Voltage Regulator,因為ESP8266為3.3V系統,雖然Arduino也有3.3V power 輸出,但是缺點是使用3.3V達不到ESP8266的電流要求,所以必須透過Arduino 5V power,然後使用Voltage regulator,將電壓5V降壓成3.3V供ESP8266使用,另外再透過Logic level converter將3.3V & 5V的訊號做轉換避免失真

Logic level converter的接法可能要看到買到的logic level converter的pin定義如何,我圖上的元件為fritzing的元件,跟我實際用的不太一樣,原則就是將5V的訊號腳和3.3V的訊號腳要接在對應的地方,以這個例子來說,透過Serial interface有兩隻PIN,所以Arduino Mega的18、19 pin為5V訊號腳接到logic level converter上的HV上,ESP8266的3.3V兩隻pin就接到LV上面,然後可能還要接5V的power & 3.3V到logic level converter上。

Voltage regulator的話,圖片的三根腳,實際上要量看看,我的接法跟網路上查到的接法也不同,到底是中間那根pin當3.3V power給ESP8266,接錯的時候會很燙。

程式的部分:

#define esp8266 Serial2   // use esp8266 to talk to esp8266
#define DEBUG true
#define MYSSID "esp8266"
#define MYPASS "1234567890ab"
#define MYCHANNEL "11"
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.println("connecting esp8266 serial port");
delay(3000);
esp8266.begin(115200);
Serial.println("connected esp8266 serial port");
int i=0;

sendData("AT+RSTrn",3000,DEBUG); // reset module
sendData("AT+CWMODE=2rn",1000,DEBUG); // configure as access point
String cmd="AT+CWSAP="";
cmd+=MYSSID;
cmd+="","";
cmd+=MYPASS;
cmd+="",";
cmd+=MYCHANNEL;
cmd+=",3rn";
sendData(cmd,1000,DEBUG); // configure SSID/password
sendData("AT+CIFSRrn",1000,DEBUG); // get ip address
sendData("AT+CIPMUX=1rn",1000,DEBUG); // configure for multiple connections
sendData("AT+CIPSERVER=1,80rn",1000,DEBUG); // turn on server on port 80

}

主要是要連接MEGA的Serial 2到ESP8266做溝通,然後需要有ESP8266所支援的AT command(這篇很詳細),另外要注意的是,當開機後,ESP8266過電需要一些時間,才能接受AT command,所以如果沒有加上一些delay,會發現怎麼都無法成功下AT command。

Github: Arduino-ESP8266-demo

其他可參考資料:

[Maker][Arduino] ESP8266(Thingspeak) + 溫度感測 + 紅外線遙控

WIFI plant monitoring system based on Arduino MEGA and ESP8266

發佈留言