2015-06-09 122 views
0

我已連接的Arduino與ESP8266與ESP8266和Arduino的接口

連接到經由分壓器 Arduino的GND連接到ESP的連接到ESP的CH_PD GND Arduino的3v3中連接到ESP的的Rx ESP的的Tx Arduino的銷3

Arduino的銷2

我一直在使用1117穩壓器

當我最初買ESp8266它的工作,但現在它顯示垃圾值源源不斷地供電ESP8266 ...

Arduino的編程用下面的代碼

#include <SoftwareSerial.h> 

SoftwareSerial esp8266(2,3); // make RX Arduino line is pin 2, make TX Arduino line is pin 3. 
          // This means that you need to connect the TX line from the esp to the Arduino's pin 2 
          // and the RX line from the esp to the Arduino's pin 3 
void setup() 
{ 
    Serial.begin(9600); 
    esp8266.begin(9600); // your esp's baud rate might be different 
} 

void loop() 
{ 
    if(esp8266.available()) // check if the esp is sending a message 
    { 
    while(esp8266.available()) 
    { 
     // The esp has data so display its output to the serial window 
     char c = esp8266.read(); // read the next character. 
     Serial.write(c); 
    } 
    } 



    if(Serial.available()) 
    { 
    // the following delay is required because otherwise the arduino will read the first letter of the command but not the rest 
    // In other words without the delay if you use AT+RST, for example, the Arduino will read the letter A send it, then read the rest and send it 
    // but we want to send everything at the same time. 
    delay(1000); 

    String command=""; 

    while(Serial.available()) // read the command character by character 
    { 
     // read one character 
     command+=(char)Serial.read(); 
    } 
    esp8266.println(command); // send the read character to the esp8266 
    } 
} 
+2

你確定這是'C'嗎? –

+0

難道你不知道嗎?Arduino語言僅僅是一套C/C++函數,可以從你的代碼中調用...訪問:http://www.arduino.cc/en/Main/FAQ瞭解更多信息 – AngryBird

+3

@AngryBird在這裏,沒有一種叫做「C/C++」的語言。 Arduino比C的C++更多。 – unwind

回答

1

你esp8266在56000或115200波特率可能的工作,而不是9600這將導致垃圾被讀取。

如果115200不支持softwareSerial的普通數字引腳。

如果舊主板,那麼你可以嘗試更改爲56000: -

esp8266.begin(56000); // your esp's baud rate might be different 

否則,你將需要掛鉤的esp8266到HardwareSerial端口

Serial.begin(115200); 
1

的代碼似乎是好的,但你應該檢查你的ESP8266波特率可能不同。結帳以下內容:

  1. 檢查ESP8266波特率獨自一人,一旦你擁有了它,聲明相同 波特率到您的Arduino。

  2. Checkout的Arduino的模型,一些克隆像納米一個驅動 不同的電壓比原來的一個,

0

上傳的代碼,並檢查串行監控與特定波特率任何迴應,如果你沒有得到任何特定波特率的響應,然後改變波特率直到得到響應。 對於少數模塊,默認波特率爲57600.So根據它進行檢查。

您可以使用上面給定的代碼並更改波特率esp8266.begin(56000); 更改波特率,如9600,56000,112500等,並檢查串行監視器在9600波特率。

Serial.begin(9600); 

您將在顯示器上得到響應,並嘗試通過將3.3v連接到RST引腳1-2秒來重置wifi模塊。 希望它有幫助。

+0

如果可能,請添加一些代碼示例 – Maddy

0

作爲其他答案的補充,嘗試用邏輯電平轉換器替換分壓器,因爲esp具有3.3v邏輯和arduino 5v邏輯。

0

檢出邏輯值,因爲esp8266在3.3v和串口波特率上工作。在少數情況下,ESP8266可能有內部故障併產生垃圾值。至於ESP8266而言,結帳here 它幫了我很多