ESP8266 Arduino Nano

Trying to follow this tutorial;

and when I upload the initialisation script I get this in the serial monitor;

Trying to send AT+GMR ...
AR)GS⸮⸮H,Q sY⸮⸮Z⸮K⸮r⸮r⸮r⸮Bj⸮偊⸮⸮⸮⸮⸮⸮⸮҂⸮Ҫ⸮Jj
SDK version:1.5.4(baaeaebb)
cea1:

wtf does this mean

eescashguys:
wtf does this mean

Well depending a little on what you have done already as instructed in the tutorial it can mean a few things, but more than likely it is what your ESP is putting out after it starts up. I had to dig a bit to find that sketch that you should have uploaded, and it is better to just include it in your post in future

/**
 * This program will create a pass-through serial connection to the ESP module. This makes it possible to send AT commands to the device.
 * For a new device, you might have to try several connections speeds! (see comment at line 54: "your esp's baud rate might be different")
 * Open the Serial Monitor (Tools>Serial Monitor) to send AT-commands.
 * 
 * Build circuit as detailed here: https://home.et.utwente.nl/slootenvanf/2018/03/17/connect-esp8266-control-blynk/
 * Make sure the ESP module gets its own separate power supply of 3.3V
 * 
 * In the serial monitor set the speed to 115200 (to match the speed set at line 52).
 * This program will try sending the command AT+GMR first.
 * Does that produce readable information? Then proceed to "Initialize a new device".
 * If not, adjust the speed at line 54, upload again and see what happens.
 * 
 * Initialize a new device:
 * Send:
 * AT+RST                         # Reset
 * AT+UART_DEF=9600,8,1,0,0       # Default baud to 9600,N,8,1,no flow ctl
 * 
 * After this, set the speed at line 54 to 9600 (only if you changed it), and upload again to send the remaining commands:
 * 
 * AT+CWMODE=1                    # Station mode (client)
 * ATE0                           # Command echo off
 * 
 * Other commands (which you do not neeed now!)
 * Show version info: AT+GMR
 * Set it to different speed: AT+UART_DEF=9600,8,1,0,0 (then update sketch) (https://arduino.stackexchange.com/questions/38289/at-command-is-not-responding-on-serial-monitor)
 * Search Access Points: AT+CWLAP
 * Connect to WIFI: AT+CWJAP="Your Wifi Name","Your Wifi Password"
 * Check Allocated Ip: AT+CIFSR
 * 
 * If this returns an error, the module maybe configured as an access point, try searching for Wifi networks on your laptop, it might show up there, eg. as "AI-THINKER_A3ECE2"
 * To turn it into a client and connect to a Wifi network:
 * 
 * http://www.electronicslovers.com/2017/11/learn-how-to-setup-wifi-module-EspSerial.html
 * 
 * Code based on https://forum.arduino.cc/index.php?topic=406354.0
 * AT command reference: https://room-15.github.io/blog/2015/03/26/EspSerial-at-command-reference/
 * 
 */

#include <SoftwareSerial.h>

// Connect the TX line from the ESP module to the Arduino's pin 2
// and the RX line from the ESP module to the Arduino's pin 3
// Emulate EspSerial on pins 2/3 if not present
#ifndef HAVE_HWEspSerial
#include "SoftwareSerial.h"
SoftwareSerial EspSerial(2, 3); // RX, TX
#endif

void setup() {
  Serial.begin(115200);
  delay(2000);
  EspSerial.begin(9600); // your esp's baud rate might be different 9600, 57600, 76800 or 115200
  delay(2000);
  Serial.println("Trying to send AT+GMR ...");
  EspSerial.println("AT+GMR");
}
 
void loop() {
  if(EspSerial.available()) // check if the ESP module is sending a message 
  {
    while(EspSerial.available())
    {
      // The esp has data so display its output to the serial window 
      char c = EspSerial.read(); // read the next character.
      Serial.write(c);
    }  
  }
  
  if(Serial.available()) // check if connection through Serial Monitor from computer is 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();
    }
    EspSerial.println(command); // send the read character to the Esp module
  }
}

This seems like a rather well documented tutorial (which is good since it coming from a university) And normally if you have an issue with a tutorial, you should contact the author. I do not really support the method that they adhere. The ESP is more flexible if you just create and upload your own firmware, rather than using AT commands that are sent by a unit that has a whole lot less memory, but that put aside, i have also an objection to EspSerial.println("AT+GMR");ESP AT commands need to be followed by CR & NL so EspSerial.print("AT+GMR\r\n");would be correct.
And actually rather than doing a passthru, i would start out with using the nano just as a USB to Serial. Easier to switch BAUD rates, same configuration for uploading either other (newer) versions of espressif firmware or your own, and no messing with software serial, which isn’t reliable above 57600kbps.

Thanks for the help. I'm pretty new to this stuff and I'm not entirely sure I understand what is actually happening, just that I'm initialising the esp module.

Deva_Rishi:
This seems like a rather well documented tutorial (which is good since it coming from a university) And normally if you have an issue with a tutorial, you should contact the author. I do not really support the method that they adhere. The ESP is more flexible if you just create and upload your own firmware, rather than using AT commands that are sent by a unit that has a whole lot less memory, but that put aside, i have also an objection to EspSerial.println("AT+GMR");ESP AT commands need to be followed by CR & NL so EspSerial.print("AT+GMR\r\n");would be correct.
And actually rather than doing a passthru, i would start out with using the nano just as a USB to Serial. Easier to switch BAUD rates, same configuration for uploading either other (newer) versions of espressif firmware or your own, and no messing with software serial, which isn't reliable above 57600kbps.

Not sure I understand, sorry.

Deva_Rishi:
The ESP is more flexible if you just create and upload your own firmware, rather than using AT commands that are sent by a unit that has a whole lot less memory, but that put aside, i have also an objection to EspSerial.println("AT+GMR");ESP AT commands need to be followed by CR & NL so EspSerial.print("AT+GMR\r\n");would be correct.

Also don't understand what CR and NL mean, but nevertheless I tried adding \r\n to the script, and this is what i subsequently find from the serial monitor;

Trying to send AT+GMR ...
AR)GS*Ã

q]⸮^⸮⸮rrj
AT version:1.1.0.0(May 11 2016 18:09:56)
SDK vers.epe 0K

CR and NL

Carriage Return and New Line ? never heard of it ?

this is what i subsequently find from the serial monitor;

at what is the baudrate for the swSerial set in the sketch ? It seems to be responding with data, but if swSerial is set at 115200, then that does explain some irregularities.
have a look at this tutorial which explains how to use an Arduino simply as a USB port for the ESP to use., rather than as a pass through. Most ESP's come with firmware that has a 115200 BAUD rate as a default. If you do a pass through using a board with just 1 hwSerial, that means that the ESP is controlled with swSerial (as in your example) But swSerial is not reliable at the baud-rate (at least not for reception, transmission is usually ok) which is not such a big deal, cause you can tell the ESP to switch to 9600 for instance right after startup, but then you sketch needs switch it's baudrate as well, and that takes programming, it is clumsy. Also in the long run, to control an ESP with AT-commands is clumsy compared to creating your own firmware and uploading that.