Go Down

Topic: Arduino esp8266 problem with communication (Read 476 times) previous topic - next topic


Mar 06, 2017, 08:10 pm Last Edit: Mar 07, 2017, 05:51 am by JoniSoisalo
I have this project where im trying to get data from my web server to arduino using the esp8266 wifi module. I have watched this tutorial (https://www.youtube.com/watch?v=uwrWkiI6Hg8) and I should have the connection and the code right but when i check my serial monitor it gives me this wierd symbol (ð) and when i try to send AT commands they do nothing and i dont get a response from the esp8266. This only happens when I use this code that I got from the video. When I use a blank file my AT commands work just fine.

Code: [Select]
#include <SoftwareSerial.h>
#define DEBUG true
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()
  esp8266.begin(115200); // your esp's baud rate might be different
  sendData("AT+RST",2000,DEBUG); // reset module
  sendData("AT+CWMODE=2",1000,DEBUG); // configure as access point
  sendData("AT+CIFSR",1000,DEBUG); // get ip address
  sendData("AT+CIPMUX=1",1000,DEBUG); // configure for multiple connections
  sendData("AT+CIPSERVER=1,80",1000,DEBUG); // turn on server on port 80
void loop()
  if(esp8266.available()) // check if the esp is sending a message
     delay(1000); // wait for the serial buffer to fill up (read all the serial data)
     // get the connection id so that we can then disconnect
     int connectionId = esp8266.read()-48; // subtract 48 because the read() function returns
                                           // the ASCII decimal value and 0 (the first decimal number) starts at 48
     esp8266.find("pin="); // advance cursor to "pin="
     int pinNumber = (esp8266.read()-48)*10; // get first number i.e. if the pin 13 then the 1st number is 1, then multiply to get 10
     pinNumber += (esp8266.read()-48); // get second number, i.e. if the pin number is 13 then the 2nd number is 3, then add to the first number
     digitalWrite(pinNumber, !digitalRead(pinNumber)); // toggle pin   
     // make close command
     String closeCommand = "AT+CIPCLOSE=";
     closeCommand+=connectionId; // append connection id
     sendData(closeCommand,1000,DEBUG); // close connection
* Name: sendData
* Description: Function used to send data to ESP8266.
* Params: command - the data/command to send; timeout - the time to wait for a response; debug - print to Serial window?(true = yes, false = no)
* Returns: The response from the esp8266 (if there is a reponse)
String sendData(String command, const int timeout, boolean debug)
    String response = "";
    esp8266.print(command); // send the read character to the esp8266
    long int time = millis();
    while( (time+timeout) > millis())
        // The esp has data so display its output to the serial window
        char c = esp8266.read(); // read the next character.
    return response;


Ou sorry i ment blank file. Sorry for that.


Can SoftwareSerial even handle 115,200 baud? I thought it maxed up to much slower than that. For most communication with the ESP8266, you don't need that much speed, I'm guessing.

Also, why are you even using SoftwareSerial for the ESP8266? Why not use regular serial, which can handle this speed?

Go Up