A Guide To Using ESP8266 With TEENSY 3

Status
Not open for further replies.
I just thought I'd chime in and mention that I'm using a couple of ESP8266's paried with Teensy 3.1's and have had excellent stability out of the NodeMCU firmware. Instead of using AT commands over serial, you send LUA code. What's more, is that you can put some of your functionality into LUA scripts that reside on the flash of the ESP(e.g. let the ESP handle the basics of serving HTTP) while the IO and CPU-intensive stuff runs on the Teensy.

Food for thought, anyway. NodeMCU seems fairly stable. one of mine has been running w/o a hitch for over a month now... with the Espressif "AT" firmware, it seemed to consistently hang after hours or, at the most, a couple days.

Tetsua, Thanks for that info... I've been resisting trying to figure out the NodeMCU LUA Code process, but like you and also ian, I am finding the current version of the AT commend interface unreliable...
I now have two web servers running in test mode, and neither has made it past 24 hours before hanging up. One thing I noticed is that it will always hang if 2 clients hit it simultaneously. Maybe it time to give NodeMCU a try.
 
Last edited:
NodeMCU is really easy to work with. I'd never touched LUA before, but it's very straightforward as long as you're comfortable w/ its use of closures (follows patterns very similar to javascript. particularly NodeJS).

Get the pre-compiled firmware here:
https://github.com/nodemcu/nodemcu-firmware

and install it just as you would any firmware. Once that's installed, you can execute LUA directly over serial, just as you were sending AT commands. You'll find it's so much more readable than the AT commands. Here's my init.lua

Code:
wifi.setmode(wifi.STATION)
wifi.sta.config("SSID_HERE","WIFI_PASSWD_HERE")
uart.setup(0,115200,8,0,1,1)
-- this loads another file that was placed on the ESP w/ a lua uploader such as https://github.com/kmpm/nodemcu-uploader
dofile("tcpserial.lua")

and here is tcpserial.lua

Code:
-- basic telnet-friendly TCP server
s=net.createServer(net.TCP,180) 
s:listen(2323,function(c) 
    c:on("receive",function(c,l)
      -- pass it on through to the Teensy               
      print(l)           
    end) 
end)

Obviously this is just a dirt-simple example, but you can probably imagine where you can go from here. The tough part is deciding how to divide the labor - what do you want to execute on the ESP and what on the Teensy? The ESP is surprisingly capable. Nothing compared to a Teensy 3.1, but beefier than an 8-bit arduino :)
 
The russian firmware is no good.

If I configure a server to listen on a socket, then a client connects but then disconnects, the firmware will reset the module!

this is the log. I connect using curl, then ctrl-c after the connection

AT+CIPSERVER=1,8000


OK

0,CONNECT

+IPD,0,85:GET /test HTTP/1.1
User-Agent: curl/7.33.0
Host: 192.168.1.11:8000
Accept: */*

0,CONNECT FAIL

ets Jan 8 2013,rst cause:4, boot mode:(3,7)

wdt reset
load 0x40100000, len 816, room 16
tail 0
chksum 0x8d
load 0x3ffe8000, len 788, room 8
tail 12
chksum 0xcf
ho 0 tail 12 room 4
load 0x3ffe8314, len 288, room 12
tail 4
chksum 0xcf
csum 0xcf

2nd boot version : 1.2
SPI Speed : 40MHz
SPI Mode : QIO
SPI Flash Size : 4Mbit
jump to run user1

{lŽý
ready


The data 0,CONNECT and 0,CONNECT FAIL are not documented.
I'm going to try to detect the 0,CONNECT FAIL and send an AT+CIPCLOSE=0 to see if that prevents the module from doing a wdt reset.
 
Last edited:
I've played with the NodeMCU firmware but never really tested it. I prefer to stick with the AT stuff as I'm a 'teacher' & my students are getting to grips with C. Introducing LUA might confuse them. I'm not a huge fan of LUA either... I might return to it. For now the thing works 99% of the time which is ok for student labs but not REAL world stuff!
I normally use 115200 baud rate. I've done several tests at 460800 too. Can't say I've noticed a difference...
Wozzy, I can tell you're starting out! :) Everyone seems to have these problems! :(
I've been working on a 'development' board for the ESP8266. I'm happy to share this if anyone is interested.
http://www.cse.dmu.ac.uk/~sexton/ENGD2003/8266_protoboard.html
Have fun!
 
PS The Diptrace Teensy footprint came from someone on this forum. I feel guilty not acknowledging this but I don't remember who it was :(
 
Well this is pretty neat.
Since the ESP8266 is kind of a power hog, my Li-ion battery pack is draining down fairly quickly.
The battery pack is made from 4 18650 batteries in series, running through a buck dc-dc converter regulating to 3.3V.
The battery voltage ranges from 16.8V when fully charged, to 14.8V when it's time to recharge.
It's unwise to run the individual cells to below 3.7V, or you risk damaging them or having a fire.
Anyway, I'm reading the battery voltage through a voltage divider with one of the Teensy ACDs.
I also hacked in a JAVA battery gauge which is served by the Wi-Fi Teensy webserver.
Here's a screen cap of the web-page, and the code. Not really very useful like this, but it has all the components to be.
Battery Gauge.png
Code:
/*
Java HTML Battery Level Gauge
For Teensy 3.x and ESP8266
Using a Teensy 3.1 to Connect an ESP8266 to PC USB Serial *******
Compiled with Arduino 1.60 and Teensyduino 1.21b6
ESP8266 Firmware: AT21SDK95-2015-01-24.bin

Based on ESP8266 Demo code by Ray Wang
Original sketch by Ray Wang @ Rayshobby LLC - http://raysfiles.com/arduino/ESP8266a_arduino.ino
Teensy ACD library by Pedvide     http://forum.pjrc.com/threads/25532-ADC-library-update-now-with-support-for-Teensy-3-1
Java Speedometer Code by Metormote  http://bl.ocks.org/metormote/6392996
*/

#include <ADC.h>

#define BUFFER_SIZE 4096
#define SSID  "NetworkG"                  // change this to match your WiFi SSID
#define PASS  "springsummerautumnwinter"  // change this to match your WiFi password
#define PORT  "15164"                     //  Port 8080 is default webserver port

char buffer[BUFFER_SIZE];
const int readPin = A9; // ADC0
ADC *adc = new ADC(); // adc object
int n = 0;
int value;
float BatteryLevel;

// By default we are looking for OK\r\n
char OKrn[] = "OK\r\n";
byte wait_for_esp_response(int timeout, char* term=OKrn) {
  unsigned long t=millis();
  bool found=false;
  int i=0;
  int len=strlen(term);
  // wait for at most timeout milliseconds
  // or if OK\r\n is found
  while(millis()<t+timeout) {
    if(Serial1.available()) {
      buffer[i++]=Serial1.read();
      if(i>=len) {
        if(strncmp(buffer+i-len, term, len)==0) {
          found=true;
          break;
        }
      }
    }
  }
  buffer[i]=0;
  Serial.print(buffer);
  return found;
}

void setup() {
  
    pinMode(readPin, INPUT); //pin 23 single ended
    Serial.begin(9600);
    adc->setAveraging(50); // set number of averages
    adc->setResolution(12); // set bits of resolution
    adc->setConversionSpeed(ADC_LOW_SPEED); // change the conversion speed
    // setConversionSpeed() can be ADC_VERY_LOW_SPEED, ADC_LOW_SPEED, ADC_MED_SPEED, ADC_HIGH_SPEED_16BITS, ADC_HIGH_SPEED or ADC_VERY_HIGH_SPEED    
    adc->setSamplingSpeed(ADC_LOW_SPEED); // change the sampling speed
    // setSamplingSpeed() can be ADC_VERY_LOW_SPEED, ADC_LOW_SPEED, ADC_MED_SPEED, ADC_HIGH_SPEED or ADC_VERY_HIGH_SPEED
  

  // assume esp8266 operates at 115200 baud rate
  // change if necessary to match your modules' baud rate
  Serial1.begin(115200);  // Teensy Hardware Serial port 1   (pins 0 and 1)
  Serial.begin(115200);   // Teensy USB Serial Port
  
  delay(5000);
  Serial.println("begin.");  
  setupWiFi();

  // print device IP address
  //Serial.print("device ip addr: ");
  //Serial1.println("AT+CIFSR");
  //wait_for_esp_response(1000);
}

bool read_till_eol() {
  static int i=0;
  if(Serial1.available()) {
    buffer[i++]=Serial1.read();
    if(i==BUFFER_SIZE)  i=0;
    if(i>1 && buffer[i-2]==13 && buffer[i-1]==10) {
      buffer[i]=0;
      i=0;
      Serial.print(buffer);
      return true;
    }
  }
  return false;
}

void loop() {
  
  // 16.8V to 14.8V 4S Li-Ion Battery Pack to Voltage Divider gives 3.3v to 2.91v
  // Convert to 0 to 100%
  value = adc->analogRead(readPin, ADC_0); 
  BatteryLevel = (((value*3.3/adc->getMaxValue(ADC_0))*254.5455) - 740.00000);
  // Serial.print(value);
  // Serial.print("   ");
  // Serial.println(BatteryLevel);
  delay(20);
  
  int ch_id, packet_len;
  char *pb;  
  if(read_till_eol()) {
    if(strncmp(buffer, "+IPD,", 5)==0) {
      // request: +IPD,ch,len:data
      sscanf(buffer+5, "%d,%d", &ch_id, &packet_len);
      if (packet_len > 0) {
        // read serial until packet_len character received
        // start from :
        pb = buffer+5;
        while(*pb!=':') pb++;
        pb++;
        if (strncmp(pb, "GET /", 5) == 0) {
          wait_for_esp_response(1000);
          Serial.println("-> serveing homepage");
          serve_homepage(ch_id);
        }
      }
    }
  }
}

void serve_homepage(int ch_id) {
 n=n+1;  
String header = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nConnection: close\r\nRefresh: 300\r\n";

  String content="";
    content += "<!DOCTYPE html>";
    content += "<html>";
    content += "<head>";
    content += "<title>Teensy3-ESP8266 Wi-Fi Battery Level</title>";    
    content += " <h1> <font color=#dddddd> TEENSY 3 </font> </h1>";
    content += " <p> <font color=#ff66ff> ESP8266 Wireless Webserver Battery Level </font> </p>";  
    content += " <p> <font color=#ffffff> Teensy server uptime ";
    content += String(millis());
    content += " milliseconds </p>"; 
    content += "<p> This page has been served ";
    content += String(n);
    content += " times since last reboot </font>  </p>";

  
    content += "<link rel='stylesheet' href='http://fonts.googleapis.com/css?family=Play:700,400' type='text/css'>";
    content += "<script type=\"text/javascript\" src=\"http://iop.io/js/vendor/d3.v3.min.js\"></script>";
    content += "<script type=\"text/javascript\" src=\"http://iop.io/js/vendor/polymer/PointerEvents/pointerevents.js\"></script>";
    content += " <script type=\"text/javascript\" src=\"http://iop.io/js/vendor/polymer/PointerGestures/pointergestures.js\"></script>";
    content += "<script type=\"text/javascript\" src=\"http://iop.io/js/iopctrl.js\"></script>";
    content += "<style>";
    content += "body {";
    content += "font: 24px arialbold;";
    content += " background-color: #222222;";
    content += "}";
    content += ".unselectable {";
    content += "-moz-user-select: -moz-none;";
    content += "-khtml-user-select: none;";
    content += "-webkit-user-select: none;";
    content += "-ms-user-select: none;";
    content += "user-select: none;";
    content += "}";    
 //  content += "/* css formats for the gauge */";
    content += ".gauge .domain {";
    content += "stroke-width: 2px;";
    content += "stroke: #fff;";
    content += "}";
    content += ".gauge .tick line {";
    content += "stroke: #fff;";
    content += "stroke-width: 2px;";
    content += "}";
    content += ".gauge line {";
    content += "stroke: #fff;";
    content += "}";
    content += ".gauge .arc, .gauge .cursor {";
    content += "opacity: 0;";
    content += "}";
    content += ".gauge .major {";
    content += "fill: #fff;";
    content += "font-size: 20px;";
    content += "font-family: 'Play', verdana, sans-serif;";
    content += "font-weight: normal;";
    content += "}";
    content += ".gauge .indicator {";
    content += "stroke: #EE3311;";
    content += "fill: #000;";
    content += "stroke-width: 4px;";
    content += "}";
  //  content += "/* css formats for the segment display */";
  //  content += ".segdisplay .on {";
  //  content += "fill: #00FFFF;";
  //  content += "}";
  //  content += ".segdisplay .on {";
  //  content += "fill: #00FFFF;";
  //  content += "opacity: 0.10;";
  //  content += "}";
    content += "</style>";
    content += "</head>";
    content += "<body>";
    content += "<div>";
    content += "<span id=\"speedometer\"></span>";
    content += "</div>";
    
    content += "<script>";
    content += "var svg = d3.select(\"#speedometer\")";
    content += ".append(\"svg:svg\")";
    content += ".attr(\"width\", 400)";
    content += ".attr(\"height\", 400);";
    content += "var gauge = iopctrl.arcslider()";
    content += ".radius(150)";
    content += ".events(false)";
    content += ".indicator(iopctrl.defaultGaugeIndicator);";
    content += "gauge.axis().orient(\"in\")";
    content += ".normalize(true)";
    content += ".ticks(10)";
    content += ".tickSubdivide(9)";
    content += ".tickSize(10, 8, 10)";
    content += ".tickPadding(5)";
    content += ".scale(d3.scale.linear()";
    content += ".domain([0, 100])";
    content += ".range([-3*Math.PI/4, 3*Math.PI/4]));";
   // content += "var segDisplay = iopctrl.segdisplay()";
   // content += ".width(80)";
   // content += ".digitCount(6)";
   // content += ".negative(false)";
   // content += ".decimals(1);";
    //content += "svg.append(\"g\")";
   // content += ".attr(\"class\", \"segdisplay\")";
   // content += ".attr(\"transform\", \"translate(130, 200)\")";
   // content += ".call(segDisplay);";
    content += "svg.append(\"g\")";
    content += ".attr(\"class\", \"gauge\")";
    content += ".call(gauge);";
    //content += "segDisplay.value(";
    //content += String(n*94);
    //content += ");";
    content += "gauge.value(";
    content += String((int)BatteryLevel);
    content += ");";
    content += "</script>";
    

    
    
      
    content += "</body>";
    content += "</html>";
    content += "<br />\n";       
    content += "\r\n";       

  header += "Content-Length:";
  header += (int)(content.length());
  header += "\r\n\r\n";
  Serial1.print("AT+CIPSEND=");
  Serial1.print(ch_id);
  Serial1.print(",");
  Serial1.println(header.length()+content.length());
  if(wait_for_esp_response(2000)) {
   //delay(100);
   Serial1.print(header);
   Serial1.print(content);
  } 
  else {
  Serial1.print("AT+CIPCLOSE=");
  Serial1.println(ch_id);
 }
}

void setupWiFi() {

  // turn on echo
  Serial1.println("ATE1");
  wait_for_esp_response(1000);
  
  // try empty AT command
  //Serial1.println("AT");
  //wait_for_esp_response(1000);

  // set mode 1 (client)
  Serial1.println("AT+CWMODE=3");
  wait_for_esp_response(1000); 
 
  // reset WiFi module
  Serial1.print("AT+RST\r\n");
  wait_for_esp_response(1500);

   //join AP
  Serial1.print("AT+CWJAP=\"");
  Serial1.print(SSID);
  Serial1.print("\",\"");
  Serial1.print(PASS);
  Serial1.println("\"");
  wait_for_esp_response(5000);

  // start server
  Serial1.println("AT+CIPMUX=1");
   wait_for_esp_response(1000);
  
  //Create TCP Server in 
  Serial1.print("AT+CIPSERVER=1,"); // turn on TCP service
  Serial1.println(PORT);
   wait_for_esp_response(1000);
  
  Serial1.println("AT+CIPSTO=30");  
  wait_for_esp_response(1000);

  Serial1.println("AT+GMR");
  wait_for_esp_response(1000);
  
  Serial1.println("AT+CWJAP?");
  wait_for_esp_response(1000);
  
  Serial1.println("AT+CIPSTA?");
  wait_for_esp_response(1000);
  
  Serial1.println("AT+CWMODE?");
  wait_for_esp_response(1000);
  
  Serial1.println("AT+CIFSR");
  wait_for_esp_response(5000);
  
  Serial1.println("AT+CWLAP");
  wait_for_esp_response(5000);
  
  Serial.println("---------------*****##### READY TO SERVE #####*****---------------");
  
}

I'm still using the AT command language, and haven't yet switched to NodeMCU, as I was having problems compiling and loading the firmware update.
As such, the webserver is not very reliable, and hangs up occasionally.
 
FWIW, here is a teensy 3.1 sketch that uses the AT commands to the ESP8266 to send NTP UDP time query.
https://github.com/manitou48/teensy3/blob/master/espntp.ino
Version (AT+GMR) AT version:0.21.0.0 SDK version:0.9.5 with UART at 115200 baud.

the output
Code:
UDP send
AT+CIPSEND=4,48


OK
13 ms
1433851718
6/9/2015 12:8:38

OK
UDP send
AT+CIPSEND=4,48


OK
13 ms
1433851728
6/9/2015 12:8:48
Serial1.find() didn't work with the binary data from the NTP reply.
 
Last edited:
I have been using the ESP8266 for some time now. I posted a simple web server using teensy 3.1 and ESP8266 ESP-01 version 2. My ESP8266 units identified themselves, at power up as version 0.9.2.4 and with AT+GMR command as 001800902-AI03. The difference between the ESP-01 version 1 and version 2 is the default baud rate. The version 2 after power up uses a value of 9600. The older version 1 uses 115200. Here is a list of the AT commands that work with my ESP8266 ESP-01 version 2 units.
Code:
01. AT-Attention
02. AT+RST-Soft reset
03. AT+GMR-Retrieve firmware version
04. AT+CWMODE-Operation mode selection, 1 = sta, 2 = AP, 3 = both
05. AT+CWJAP-Join network
06. AT+CWLAP-Available network listing
07. AT+CWQAP-Exit network
08. AT+ CWSAP-Setup network name, password, radio channel and security scheme
09. AT+ CWLIF-Listing connected stations, only AP mode
10. AT+ CIPSTATUS-Connection listing
11. AT+CIPSTART-Initiating connection
12. AT+CIPSEND-Sending data
13. AT+CIPCLOSE-Closing connection
14. AT+CIFSR-Displaying IP from access point
15. AT+CIPMUX-Single or multiple connection selection, 0 = single, 1 = multiple
16. AT+CIPSERVER-Socket server on/off,  AT+CIPSERVER=<mode>[,<port>,] mode 0 close, mode 1 up <port #>
17. AT+CIPMODE-Serial port transparent or connecdtion based data output selection
18. AT+CIPSTO-Socket server automatic connection timeout setting
19. +IPD-Serial port connection based data output
20. AT+CIOBAUD - ? gives baud rate setting, =9600 (e.g.)sets a rate
21. ATE# - controls echoing of received commands, #=0 disable, #=1 enable echo

I hope this is a help.
 
Alright, I feel like quite the idiot.

I bought an ESP8266-12E (actually several), soldered wires to the twenty or so little pin pads, hooked up VCC to 3.1 V (2 x 1.5 V AAA batteries), GND, CHIP_EN to VCC and GPIO15 to GND and... nothing. The blue led flashes for an instant when I apply power but I can get no serial output when TX/RX are connected to Teensy 3.1 pins 0 and 1 as per the sketch at the top of this thread. My plan was to use this purchased module to learn how to use the ESP8266, especially upload firmware and program it, then get my own ESP8266 design to work. But I can't even get an AT ACK from the thing. What could I be doing wrong?

Maybe I should just start with the mod-01...
 
Reading on esp forum the other day I saw a note about evil blue blink, apparently red lighted ones are more affable.

If you came across that it might help you onehorse

This may be what I saw: http://www.esp8266.com/viewtopic.php?f=6&t=811&p=18960&hilit=blue+red#p18960
though maybe not what you need :: ESP-07 "blue light of death"

One poster Final note was - swapped Tx/Rx and it worked.

When you get it working - please post where you got yours - and details on the connects. I put some 12's in my eBay cart - but they weren't noted as 12E's
 
Last edited:
Have you put GPIO0 to VCC? Has it been programmed? It could be a simple as it hasn't had a firmware upload.

Download NodeMCU flasher https://github.com/nodemcu/nodemcu-flasher Connect GPIO0 to GND and connect either a FTDI cable to TX/RX and see if thenodemcu-flasher reads it.
If you haven't got a FTDI cable, you can use the Teensy as a passthrough, with the following code change the defines to your particular ports attached to CH_EN(WIFIEN),GPIO0(WIFIPROG) and RESET(WIFIRST)
Code:
#define WIFIPROG 14
#define WIFIEN   2
#define WIFIRST  24

long count;

void setup() {
  Serial.begin(115200);
  Serial1.begin(115200);
  pinMode(WIFIPROG,OUTPUT);
  pinMode(WIFIEN,OUTPUT);
  pinMode(WIFIRST,OUTPUT);
  pinMode(LED_BUILTIN,OUTPUT);
  digitalWriteFast(WIFIPROG,0);
  digitalWriteFast(WIFIRST,0);
  digitalWriteFast(WIFIEN,1);
  delay(100);
  digitalWriteFast(WIFIRST,1);
}

void loop() {
  if (Serial.available()) {
    Serial1.write(Serial.read());
  }
  if (Serial1.available()) {
    Serial.write(Serial1.read());
  }
  count++;
  if (count==240000) digitalWriteFast(LED_BUILTIN,1);
  if (count==480000) {
    digitalWriteFast(LED_BUILTIN,0);
    count=0;
  }
}
 
I have tried this but no luck. When I connect the 3V3 FTDI port to GND, TX, RX and the ESP12E to 3V3, GND, GPIO0 = GND, CHIPEN = VCC, GPIO15 = GND NodeMCU says Waiting MAC and I get the same blue flash from the LED then nothing. Maybe the crystal is installed wrong or maybe these ESP12E are defective. I will assemble my own board this week and try it. At least I won't have to worry that there is something wrong with the hardware!
 
How are you powering the unit?

I started powering mine from my USB port on the PC and my 3v3 was up and down, until I realized that the Teensy was reporting back to the PC that it would only require 1unit of power (100ma), Where as the ESP + Teensy needs 0.11a. So when I upted or put both on an external PSU it worked.

Other than that, look over the board for any shorts, maybe look for any tin wiskers.
 
I am using two AAA batteries for power. The ESP12E is encased with a metal cap. I can't even see inside. I suppose i could remove it to see what the problem is but it will be easier just to make my own tomorrow and try that. It's a bit confusing since the data sheet says RESET and GPIO0 are pulled up internally. I guess I need to pull down GPIO15, set CHiPEN HIGH and maybe GPIO2 HIGH for good measure. And then for loading firmware, set GPIO0 = GND.

At least my led stays on. I added another one on the ESP8266' TX line to see if the chip is alive. And with GPIO15 broken out, I can ground it and maybe get my latest board design to work. My board has a 3V3 regulator so I will just power it via a LiPo battery. I'll report tomorrow.
 
Well, it took me a little while, but i finally assembled my new ESP82566 board and had partial success. Here is what the new board looks like:

ESP8266.pic3.jpg

And here is how I am attempting to talk with it:



ESP8266.pic1.jpg

It looks like I was able to flash new firmware using the ESP8266 flasher. When I hooked it up with GPIO0 grounded and hit flash on the tool, mac addresses showed up, the progress bar scanned from left to right, the FTDI board lit up and the flasher claimed success when finished.

When I ran LuaLoader (with GPIO0 set to HIGH or floating, tried it both ways) it finds the COM port (4, in this case) but there is no prompt, none of the buttons result in any output, AT entered in the window produces no response. I am at somewhat of a loss to know how to proceed.

Can anyone offer me some advice? Thanks in advance!
 
There are examples of it working as a web server (see above) but I would characterize the thing as so unstable in that application as being functionally unusable for anything other than in-home use (i.e. Where you can strictly limit the number of connection requests, can reset the thing by walking over, etc). I'd look to a more proven platform for serving pages, i.e. Something like a pi.

To me, the ESP8266 is potentially a great way to lob payloads into orbit, never saw it being good enough to be a server.
 
I could use some help.

I assembled a new version of the ESP8266 add on with a 500 mA LDO voltage regulator; it should have plenty of power. I have GPIO 0 and 2 pulled up to 3V3 and GPIO 15 pulled down by default. When I connect GPIO 0 to GND, I can flash the AT21SDK95-2015-01-24.bin file starting at 0x00000 using the NODEMCU FIRMWARE PROGRAMMER and a 3v3 FTDI to serial converter. The FTDI RX and the on-board TX leds light up and flicker as the progress bar on the NODEMCU flasher moves to the right, I get a successful flash, I get AP MAC and STA MAC addresses and a green check mark. So all looks OK. However, I can get no AT response and none of the Teensy programs at the top of this thread produce anything out on the serial monitor except begin, etc. When I type in AT or AT+GMR into the command bar at the top of the serial monitor and press send, I get nothing in return.

This is essentially the same behavior I experienced before and I am at a loss for what to do about it.
 
I could use some help.

I assembled a new version of the ESP8266 add on with a 500 mA LDO voltage regulator; it should have plenty of power. I have GPIO 0 and 2 pulled up to 3V3 and GPIO 15 pulled down by default. When I connect GPIO 0 to GND, I can flash the AT21SDK95-2015-01-24.bin file starting at 0x00000 using the NODEMCU FIRMWARE PROGRAMMER and a 3v3 FTDI to serial converter. The FTDI RX and the on-board TX leds light up and flicker as the progress bar on the NODEMCU flasher moves to the right, I get a successful flash, I get AP MAC and STA MAC addresses and a green check mark. So all looks OK. However, I can get no AT response and none of the Teensy programs at the top of this thread produce anything out on the serial monitor except begin, etc. When I type in AT or AT+GMR into the command bar at the top of the serial monitor and press send, I get nothing in return.

This is essentially the same behavior I experienced before and I am at a loss for what to do about it.

Which baudrate do you use? I forgot which speed is the default, so try the stdards, 9600 19200 and 115200
On power on, the esp prints some info. So you sould see something. After the inital info, it switches to a different baudrate.
When you can see the startup-info, everything is ok.
And you should see the led on the tx line blinking as sign of pprinting this initial text.
 
And swicth the gpios from flashing mode to run mode!
Sry for the not exact info, im not at my computer at the moment and the last time i fiddled with this is some months ago.
 
Yes, I did all of the obvious things. I bought these ESP8266 chips from aliexpress.com. I am beginning to wonder if they are bad or something.

When using one of the Teensy programs I get a z or an r on start up depending on the baud rate, but no response from any AT command.
 
Status
Not open for further replies.
Back
Top