Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error on sending AT+CWJAP_DEF commands to ESP8266

I am trying to send AT commands to ESP8266 to get connected with internet with the Wifi.

When I am sending AT and AT+RST command on serial monitor then I am getting OK and ready response which seems perfect.

Then I am sending AT+CWLAP to get list of available wifi networks which is also executing correctly.

AT+CWLAP

+CWLAP:(3,"Moto",-42,"a4:70:d6:7a:fa:6c",1,25,0)
+CWLAP:(4,"PRANJAL",-95,"1c:a5:32:3d:f5:c4",1,-16,0)
+CWLAP:(2,"VIHAN",-94,"c8:3a:35:2f:1d:81",1,-21,0)
+CWLAP:(3,"Tenda",-93,"c8:3a:35:20:a9:b1",9,-4,0)

OK

Then I sent AT+CWMODE? which is also perfect.

AT+CWMODE?

+CWMODE:1

OK

Now I am trying to connect ESP8266 with above listed Wifi with this command, it is sending an ERROR on serial monitor.

AT+CWJAP_DEF="Moto","reset1234"

Error

⸮=IRe"Moto","reset1234"

ERROR

Can anyone suggest me what could be the reason of this issue ?

#include "SoftwareSerial.h"

SoftwareSerial esp8266(2, 3); // RX, TX

void setup()
{
  Serial.begin(9600); // serial port used for debugging
  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())
    {
      char c = esp8266.read();  // read the next character.

      Serial.write(c);  // writes data to the serial monitor
    }
  }

  if(Serial.available())
  {
    delay(10);  // wait to let all the input command in the serial buffer

    // read the input command in a string
    String cmd = "";
    while(Serial.available())
    {
      cmd += (char)Serial.read();
    }
    // send to the esp8266
    esp8266.println(cmd); 
  }
}

enter image description here

like image 326
N Sharma Avatar asked May 05 '17 16:05

N Sharma


1 Answers

The current official AT command set seems to be documented on https://github.com/espressif/ESP8266_AT/wiki/AT_Description http://espressif.com/sites/default/files/documentation/4a-esp8266_at_instruction_set_en.pdf

https://www.itead.cc/wiki/ESP8266_Serial_WIFI_Module#AT_Commands

If the module is to be configured as a client, i.e. to connect to an access point, the following AT commands have to be sent (11500 baud 8N1, CR-LF line termination):

  1. AT+RST
  2. AT+CWMODE=3 (1 is "Station" only (wifi client), 3 is mixed mode "Station and Access-Point", both should work)
  3. AT+CWJAP="Moto","reset1234"
    • AT+CWJAP_CUR="Moto","reset1234" (temporary) or
    • AT+CWJAP_DEF="Moto","reset1234" (stored)

For reference, a "success story" (ESP8266 module with USB-UART, Software: HTerm, Access Point with WPA2 (both TKIP / CCMP tested)):

AT<\r><\r><\n><\r><\n>
OK<\r><\n>
AT+RST<\r><\r><\n><\r><\n>
OK<\r><\n>
<\r><\n>
 ets Jan  8 2013,rst cause:2, boot mode:(3,6)<\r><\n>
<\r><\n>
load 0x40100000, len 1856, room 16 <\r><\n>
tail 0<\r><\n>
chksum 0x63<\r><\n>
load 0x3ffe8000, len 776, room 8 <\r><\n>
tail 0<\r><\n>
chksum 0x02<\r><\n>
load 0x3ffe8310, len 552, room 8 <\r><\n>
tail 0<\r><\n>
chksum 0x79<\r><\n>
csum 0x79<\r><\n>
<\r><\n>
2nd boot version : 1.5<\r><\n>
  SPI Speed      : 40MHz<\r><\n>
  SPI Mode       : DIO<\r><\n>
  SPI Flash Size & Map: 32Mbit(512KB+512KB)<\r><\n>
jump to run user1 @ 1000<\r><\n>
<\r><\n>
??r?d?l<18>?<31><\0><\f>?l`<3>??s?l?<28>?<19>?<4><4><4>$ <2>??r?$<4>??<27>?<4><4>ll`<3>r$?<18>?"<\0>????"<4>l?cs|<\f>?`?22???<27>BB<18>c??o??<18>NN?<16><2><\0><2>d$??<2>d??<\0>?<4>d??<\0>ll????d??l`<2>?<2>N?<\0>????"<4>d??<28>p<4><4><2><2>???"b<4>$<4>?"prlrl<\r><\n>
Ai-Thinker Technology Co. Ltd.<\r><\n>
<\r><\n>
ready<\r><\n>
WIFI DISCONNECT<\r><\n>
AT+CWMODE?<\r><\r><\n>+CWMODE:3<\r><\n>
<\r><\n>
OK<\r><\n>
AT+CWJAP_CUR="Moto","reset1234"<\r><\r><\n>
WIFI CONNECTED<\r><\n>
WIFI GOT IP<\r><\n>
<\r><\n>
OK<\r><\n>
AT+CIFSR<\r><\r><\n>+CIFSR:APIP,"0.0.0.0"<\r><\n>
+CIFSR:APMAC,"00:00:00:00:00:00"<\r><\n>
+CIFSR:STAIP,"0.0.0.0"<\r><\n>
+CIFSR:STAMAC,"00:00:00:00:00:00"<\r><\n>
<\r><\n>
OK<\r><\n>
AT+GMR<\r><\r><\n>AT version:1.1.0.0(May 11 2016 18:09:56)<\r><\n>
SDK version:1.5.4(baaeaebb)<\r><\n>
Ai-Thinker Technology Co. Ltd.<\r><\n>
Jun 13 2016 11:29:20<\r><\n>
OK<\r><\n>

This also works with mode=1.


Major rewrite.

Questions and ideas to test:

  • what is your module firmware version?
  • access point issues (e.g. MAC address restrictions)?
  • power supply good?
  • might there be any old configuration or other code running on the module?
  • what is the byte code of in the error message - Is it two bytes 0x2E2E?
  • are you using the Arduino serial monitor for communication?
  • in contrast to my comment, maybe the arduino does have an influence (timing?). Try to rule this out by

    • doing the pass-through character-based instead of line-based, e.g.:

(end of list, no code possible otherwise:)

loop(){
if( esp8266.available() )
  Serial.write(esp8266.read());  
if( Serial.available() )
  esp8266.write(Serial.read());  
}
  • keeping the AVR in reset and connecting the ESP8266 serial lines directly to the USB-UART converter
like image 183
handle Avatar answered Oct 16 '22 01:10

handle